Browse Source

Uploaded source code

main
Nova 5 months ago
parent
commit
c054f14671
  1. 79
      AUTHORS
  2. 504
      COPYING
  3. 570
      ChangeLog
  4. 18
      EXPAT
  5. 169
      HACKING
  6. 72
      INSTALL
  7. 18
      README
  8. 3
      README.md
  9. 1
      README.md
  10. 100
      TODO
  11. 45
      TRANSLATE
  12. 153
      configure
  13. 14
      data/autosuggestcontrol.css
  14. 314
      data/autosuggestcontrol.js
  15. 3
      data/com.nokia.midori.service
  16. 79
      data/error.html
  17. 2
      data/extensions/adblock/config
  18. 150
      data/logo-shade.svg
  19. 14
      data/midori.desktop.in
  20. BIN
      data/midori.ico
  21. 2
      data/midori.rc
  22. 313
      data/mootools.js
  23. 28
      data/search
  24. 516
      data/speeddial-head.html
  25. 1
      data/speeddial.json
  26. 36
      docs/api/wscript_build
  27. 114
      docs/user/midori.css
  28. 255
      docs/user/midori.txt
  29. 1503
      extensions/adblock.c
  30. 1588
      extensions/addons.c
  31. 212
      extensions/colorful-tabs.c
  32. 1188
      extensions/cookie-manager/cookie-manager-page.c
  33. 47
      extensions/cookie-manager/cookie-manager-page.h
  34. 337
      extensions/cookie-manager/cookie-manager.c
  35. 50
      extensions/cookie-manager/cookie-manager.h
  36. 45
      extensions/cookie-manager/main.c
  37. 107
      extensions/copy-tabs.c
  38. 335
      extensions/feed-panel/feed-atom.c
  39. 25
      extensions/feed-panel/feed-atom.h
  40. 901
      extensions/feed-panel/feed-panel.c
  41. 51
      extensions/feed-panel/feed-panel.h
  42. 273
      extensions/feed-panel/feed-parse.c
  43. 85
      extensions/feed-panel/feed-parse.h
  44. 268
      extensions/feed-panel/feed-rss.c
  45. 25
      extensions/feed-panel/feed-rss.h
  46. 531
      extensions/feed-panel/main.c
  47. 547
      extensions/formhistory.c
  48. 257
      extensions/history-list.vala
  49. 311
      extensions/mouse-gestures.c
  50. 185
      extensions/page-holder.c
  51. 323
      extensions/shortcuts.c
  52. 185
      extensions/status-clock.c
  53. 151
      extensions/statusbar-features.c
  54. 636
      extensions/tab-panel.c
  55. 88
      extensions/tabs-minimized.c
  56. 615
      extensions/toolbar-editor.c
  57. 485
      extensions/web-cache.c
  58. 40
      extensions/wscript_build
  59. BIN
      icons/16x16/extension.png
  60. BIN
      icons/16x16/midori.png
  61. BIN
      icons/16x16/news-feed.png
  62. BIN
      icons/22x22/extension.png
  63. BIN
      icons/22x22/midori.png
  64. BIN
      icons/22x22/news-feed.png
  65. 199
      icons/scalable/extension.svg
  66. 230
      icons/scalable/midori.svg
  67. 280
      icons/scalable/news-feed.svg
  68. 44
      icons/wscript_build
  69. 504
      katze/katze-array.c
  70. 99
      katze/katze-array.h
  71. 807
      katze/katze-arrayaction.c
  72. 59
      katze/katze-arrayaction.h
  73. 467
      katze/katze-http-auth.c
  74. 42
      katze/katze-http-auth.h
  75. 336
      katze/katze-http-cookies.c
  76. 42
      katze/katze-http-cookies.h
  77. 732
      katze/katze-item.c
  78. 145
      katze/katze-item.h
  79. 306
      katze/katze-net.c
  80. 78
      katze/katze-net.h
  81. 425
      katze/katze-preferences.c
  82. 70
      katze/katze-preferences.h
  83. 934
      katze/katze-scrolled.c
  84. 59
      katze/katze-scrolled.h
  85. 134
      katze/katze-separatoraction.c
  86. 43
      katze/katze-separatoraction.h
  87. 977
      katze/katze-throbber.c
  88. 94
      katze/katze-throbber.h
  89. 1561
      katze/katze-utils.c
  90. 144
      katze/katze-utils.h
  91. 27
      katze/katze.h
  92. 1933
      midori/gtkiconentry.c
  93. 145
      midori/gtkiconentry.h
  94. 2241
      midori/main.c
  95. 11
      midori/marshal.list
  96. 1227
      midori/midori-app.c
  97. 84
      midori/midori-app.h
  98. 866
      midori/midori-array.c
  99. 37
      midori/midori-array.h
  100. 7088
      midori/midori-browser.c

79
AUTHORS

@ -0,0 +1,79 @@
This file is licensed under the terms of the expat license, see the file EXPAT.
Developers:
Christian Dywan <christian@twotoasts.de>
Contributors:
Ori Bernstein <ori@eigenstate.org>
Przemek Sitek <el.pescado@gazeta.pl>
Enrico Tröger <enrico.troeger@uvena.de>
Arnaud Renevier <arenevier@fdn.fr>
Dale Whittaker <dayul@users.sf.net>
Anders F Björklund <afb@macports.org>
Alexander Hesse <alex@phicode.de>
Brian Vuyk <brian@brianvuyk.com>
Nick Schermer <nick@xfce.org>
Matthias Kruk <mkruk@matthiaskruk.de>
Johannes Reinhardt <jreinhardt@ist-dein-freund.de>
Jean-François Guchens <zcx000@gmail.com>
Jérôme Geulfucci <jeromeg@xfce.org>
Alexander Butenko <a.butenka@gmail.com>
Graphics:
extension: Nancy Runge <nancy@twotoasts.de>
midori: Nancy Runge <nancy@twotoasts.de>
news-feed: Nancy Runge <nancy@twotoasts.de>
logo-shade: Nancy Runge <nancy@twotoasts.de>
Translations:
cs: David Stancl <dstancl@dstancl.cz>
da: Per Kongstad <p_kongstad@op.pl>
de: Enrico Tröger <enrico.troeger@uvena.de>
de: Christian Dywan <christian@twotoasts.de>
el: Evaggelos Balaskas <ebalaskas@ebalaskas.gr>
en_GB: Bastien Nocera <hadess@hadess.net>
en_GB: Abigail Brady <morwen@evilmagic.org>
es: Miguel Anxo Bouzada <mbouzada@gmail.com>
es: Antonio Sanchez <introlinux@gmail.com>
es: Christian Dywan <christian@twotoasts.de>
es: Elega <elega@elega.com.ar>
et: Kristjan Siimson <epost@ksiimson.se>
fi: Elias Julkunen <elias.julkunen@gmail.com>
fr: Christian Dywan <christian@twotoasts.de>
fr: Adrien Nader <camaradetux@gmail.com>
fr: Robert-André Mauchin <zebob.m@pengzone.org>
fr: Pascal Gervais <pggervais@yahoo.ca>
fr: Jérôme Geulfucci <jeromeg@xfce.org>
gl: Miguel Anxo Bouzada <mbouzada@gmail.com>
he: Shlomi Israel <sijproject@gmail.com>
hu: SZERVÁC Attila <sas@321.hu>
id: Andhika Padmawan <andhika.padmawan@gmail.com>
it: Sergio Durzu <sergio.durzu@ildeposito.org>
it: Luca Perri <kurama_luka@yahoo.it>
ja: Masato Hashimoto <cabezon.hashimoto@gmail.com>
nl: Vincent Tunru <projects@vinnl.nl>
no: Olav Andreas Lindekleiv <olalinde@gmail.com>
pl: Przemysław Sitek <el.pescado@gazeta.pl>
pl: Lukasz Romanowicz <romanowicz88@gmail.com>
pt_PT: Sérgio Marques <smarquespt@gmail.com>
pt_BR: Rogério Brito <rbrito@ime.usp.br>
ro: Igor Știrbu <igor.stirbu@gmail.com>
ro: Mișu Moldovan <dumol@gnome.ro>
ru: Troitskiy Nikita <niktr@mail.ru>
ru: Anton Shestakov <engored@ya.ru>
sk: Robert Hartl <hartl.robert@gmail.com>
sr: Miloš Popović <gpopac@gmail.com>
sv: Mikael Magnusson <mikachu@comhem.se>
tr: Mirat Can Bayrak <MiratCanBayrak@gmail.com>
tr: Gökmen Görgen <gkmngrgn@gmail.com>
uk: Dmitry Nikitin <luckas_fb@mail.ru>
zh_CN: Stanley Zhang <yatzhang@gmail.com>
zh_TW: Wei-Lun Chao <william.chao@ossii.com.tw>
Code from other projects:
GTK+/ GdkPixbuf, Matthias Clasen <mclasen@redhat.com>
GTK+/ GtkEntry, Copyright (C) 1995-1997 Peter Mattis, Spencer Kimball and Josh MacDonald
GTK+/ GtkToolbar, Copyright (C) 1995-1997 Peter Mattis, Spencer Kimball and Josh MacDonald
Modified by the GTK+ Team and others 1997-2000
libSoup/ CookieJarText, Copyright (C) 2008 Xan Lopez <xan@gnome.org>, Dan Winship <danw@gnome.org>
libSylph, Copyright 1999-2008 Hiroyuki Yamamoto, Copyright 2006-2009 Enrico Tröger <enrico.troeger@uvena.de>

504
COPYING

@ -0,0 +1,504 @@
GNU LESSER GENERAL PUBLIC LICENSE
Version 2.1, February 1999
Copyright (C) 1991, 1999 Free Software Foundation, Inc.
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
Everyone is permitted to copy and distribute verbatim copies
of this license document, but changing it is not allowed.
[This is the first released version of the Lesser GPL. It also counts
as the successor of the GNU Library Public License, version 2, hence
the version number 2.1.]
Preamble
The licenses for most software are designed to take away your
freedom to share and change it. By contrast, the GNU General Public
Licenses are intended to guarantee your freedom to share and change
free software--to make sure the software is free for all its users.
This license, the Lesser General Public License, applies to some
specially designated software packages--typically libraries--of the
Free Software Foundation and other authors who decide to use it. You
can use it too, but we suggest you first think carefully about whether
this license or the ordinary General Public License is the better
strategy to use in any particular case, based on the explanations below.
When we speak of free software, we are referring to freedom of use,
not price. Our General Public Licenses are designed to make sure that
you have the freedom to distribute copies of free software (and charge
for this service if you wish); that you receive source code or can get
it if you want it; that you can change the software and use pieces of
it in new free programs; and that you are informed that you can do
these things.
To protect your rights, we need to make restrictions that forbid
distributors to deny you these rights or to ask you to surrender these
rights. These restrictions translate to certain responsibilities for
you if you distribute copies of the library or if you modify it.
For example, if you distribute copies of the library, whether gratis
or for a fee, you must give the recipients all the rights that we gave
you. You must make sure that they, too, receive or can get the source
code. If you link other code with the library, you must provide
complete object files to the recipients, so that they can relink them
with the library after making changes to the library and recompiling
it. And you must show them these terms so they know their rights.
We protect your rights with a two-step method: (1) we copyright the
library, and (2) we offer you this license, which gives you legal
permission to copy, distribute and/or modify the library.
To protect each distributor, we want to make it very clear that
there is no warranty for the free library. Also, if the library is
modified by someone else and passed on, the recipients should know
that what they have is not the original version, so that the original
author's reputation will not be affected by problems that might be
introduced by others.
Finally, software patents pose a constant threat to the existence of
any free program. We wish to make sure that a company cannot
effectively restrict the users of a free program by obtaining a
restrictive license from a patent holder. Therefore, we insist that
any patent license obtained for a version of the library must be
consistent with the full freedom of use specified in this license.
Most GNU software, including some libraries, is covered by the
ordinary GNU General Public License. This license, the GNU Lesser
General Public License, applies to certain designated libraries, and
is quite different from the ordinary General Public License. We use
this license for certain libraries in order to permit linking those
libraries into non-free programs.
When a program is linked with a library, whether statically or using
a shared library, the combination of the two is legally speaking a
combined work, a derivative of the original library. The ordinary
General Public License therefore permits such linking only if the
entire combination fits its criteria of freedom. The Lesser General
Public License permits more lax criteria for linking other code with
the library.
We call this license the "Lesser" General Public License because it
does Less to protect the user's freedom than the ordinary General
Public License. It also provides other free software developers Less
of an advantage over competing non-free programs. These disadvantages
are the reason we use the ordinary General Public License for many
libraries. However, the Lesser license provides advantages in certain
special circumstances.
For example, on rare occasions, there may be a special need to
encourage the widest possible use of a certain library, so that it becomes
a de-facto standard. To achieve this, non-free programs must be
allowed to use the library. A more frequent case is that a free
library does the same job as widely used non-free libraries. In this
case, there is little to gain by limiting the free library to free
software only, so we use the Lesser General Public License.
In other cases, permission to use a particular library in non-free
programs enables a greater number of people to use a large body of
free software. For example, permission to use the GNU C Library in
non-free programs enables many more people to use the whole GNU
operating system, as well as its variant, the GNU/Linux operating
system.
Although the Lesser General Public License is Less protective of the
users' freedom, it does ensure that the user of a program that is
linked with the Library has the freedom and the wherewithal to run
that program using a modified version of the Library.
The precise terms and conditions for copying, distribution and
modification follow. Pay close attention to the difference between a
"work based on the library" and a "work that uses the library". The
former contains code derived from the library, whereas the latter must
be combined with the library in order to run.
GNU LESSER GENERAL PUBLIC LICENSE
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
0. This License Agreement applies to any software library or other
program which contains a notice placed by the copyright holder or
other authorized party saying it may be distributed under the terms of
this Lesser General Public License (also called "this License").
Each licensee is addressed as "you".
A "library" means a collection of software functions and/or data
prepared so as to be conveniently linked with application programs
(which use some of those functions and data) to form executables.
The "Library", below, refers to any such software library or work
which has been distributed under these terms. A "work based on the
Library" means either the Library or any derivative work under
copyright law: that is to say, a work containing the Library or a
portion of it, either verbatim or with modifications and/or translated
straightforwardly into another language. (Hereinafter, translation is
included without limitation in the term "modification".)
"Source code" for a work means the preferred form of the work for
making modifications to it. For a library, complete source code means
all the source code for all modules it contains, plus any associated
interface definition files, plus the scripts used to control compilation
and installation of the library.
Activities other than copying, distribution and modification are not
covered by this License; they are outside its scope. The act of
running a program using the Library is not restricted, and output from
such a program is covered only if its contents constitute a work based
on the Library (independent of the use of the Library in a tool for
writing it). Whether that is true depends on what the Library does
and what the program that uses the Library does.
1. You may copy and distribute verbatim copies of the Library's
complete source code as you receive it, in any medium, provided that
you conspicuously and appropriately publish on each copy an
appropriate copyright notice and disclaimer of warranty; keep intact
all the notices that refer to this License and to the absence of any
warranty; and distribute a copy of this License along with the
Library.
You may charge a fee for the physical act of transferring a copy,
and you may at your option offer warranty protection in exchange for a
fee.
2. You may modify your copy or copies of the Library or any portion
of it, thus forming a work based on the Library, and copy and
distribute such modifications or work under the terms of Section 1
above, provided that you also meet all of these conditions:
a) The modified work must itself be a software library.
b) You must cause the files modified to carry prominent notices
stating that you changed the files and the date of any change.
c) You must cause the whole of the work to be licensed at no
charge to all third parties under the terms of this License.
d) If a facility in the modified Library refers to a function or a
table of data to be supplied by an application program that uses
the facility, other than as an argument passed when the facility
is invoked, then you must make a good faith effort to ensure that,
in the event an application does not supply such function or
table, the facility still operates, and performs whatever part of
its purpose remains meaningful.
(For example, a function in a library to compute square roots has
a purpose that is entirely well-defined independent of the
application. Therefore, Subsection 2d requires that any
application-supplied function or table used by this function must
be optional: if the application does not supply it, the square
root function must still compute square roots.)
These requirements apply to the modified work as a whole. If
identifiable sections of that work are not derived from the Library,
and can be reasonably considered independent and separate works in
themselves, then this License, and its terms, do not apply to those
sections when you distribute them as separate works. But when you
distribute the same sections as part of a whole which is a work based
on the Library, the distribution of the whole must be on the terms of
this License, whose permissions for other licensees extend to the
entire whole, and thus to each and every part regardless of who wrote
it.
Thus, it is not the intent of this section to claim rights or contest
your rights to work written entirely by you; rather, the intent is to
exercise the right to control the distribution of derivative or
collective works based on the Library.
In addition, mere aggregation of another work not based on the Library
with the Library (or with a work based on the Library) on a volume of
a storage or distribution medium does not bring the other work under
the scope of this License.
3. You may opt to apply the terms of the ordinary GNU General Public
License instead of this License to a given copy of the Library. To do
this, you must alter all the notices that refer to this License, so
that they refer to the ordinary GNU General Public License, version 2,
instead of to this License. (If a newer version than version 2 of the
ordinary GNU General Public License has appeared, then you can specify
that version instead if you wish.) Do not make any other change in
these notices.
Once this change is made in a given copy, it is irreversible for
that copy, so the ordinary GNU General Public License applies to all
subsequent copies and derivative works made from that copy.
This option is useful when you wish to copy part of the code of
the Library into a program that is not a library.
4. You may copy and distribute the Library (or a portion or
derivative of it, under Section 2) in object code or executable form
under the terms of Sections 1 and 2 above provided that you accompany
it with the complete corresponding machine-readable source code, which
must be distributed under the terms of Sections 1 and 2 above on a
medium customarily used for software interchange.
If distribution of object code is made by offering access to copy
from a designated place, then offering equivalent access to copy the
source code from the same place satisfies the requirement to
distribute the source code, even though third parties are not
compelled to copy the source along with the object code.
5. A program that contains no derivative of any portion of the
Library, but is designed to work with the Library by being compiled or
linked with it, is called a "work that uses the Library". Such a
work, in isolation, is not a derivative work of the Library, and
therefore falls outside the scope of this License.
However, linking a "work that uses the Library" with the Library
creates an executable that is a derivative of the Library (because it
contains portions of the Library), rather than a "work that uses the
library". The executable is therefore covered by this License.
Section 6 states terms for distribution of such executables.
When a "work that uses the Library" uses material from a header file
that is part of the Library, the object code for the work may be a
derivative work of the Library even though the source code is not.
Whether this is true is especially significant if the work can be
linked without the Library, or if the work is itself a library. The
threshold for this to be true is not precisely defined by law.
If such an object file uses only numerical parameters, data
structure layouts and accessors, and small macros and small inline
functions (ten lines or less in length), then the use of the object
file is unrestricted, regardless of whether it is legally a derivative
work. (Executables containing this object code plus portions of the
Library will still fall under Section 6.)
Otherwise, if the work is a derivative of the Library, you may
distribute the object code for the work under the terms of Section 6.
Any executables containing that work also fall under Section 6,
whether or not they are linked directly with the Library itself.
6. As an exception to the Sections above, you may also combine or
link a "work that uses the Library" with the Library to produce a
work containing portions of the Library, and distribute that work
under terms of your choice, provided that the terms permit
modification of the work for the customer's own use and reverse
engineering for debugging such modifications.
You must give prominent notice with each copy of the work that the
Library is used in it and that the Library and its use are covered by
this License. You must supply a copy of this License. If the work
during execution displays copyright notices, you must include the
copyright notice for the Library among them, as well as a reference
directing the user to the copy of this License. Also, you must do one
of these things:
a) Accompany the work with the complete corresponding
machine-readable source code for the Library including whatever
changes were used in the work (which must be distributed under
Sections 1 and 2 above); and, if the work is an executable linked
with the Library, with the complete machine-readable "work that
uses the Library", as object code and/or source code, so that the
user can modify the Library and then relink to produce a modified
executable containing the modified Library. (It is understood
that the user who changes the contents of definitions files in the
Library will not necessarily be able to recompile the application
to use the modified definitions.)
b) Use a suitable shared library mechanism for linking with the
Library. A suitable mechanism is one that (1) uses at run time a
copy of the library already present on the user's computer system,
rather than copying library functions into the executable, and (2)
will operate properly with a modified version of the library, if
the user installs one, as long as the modified version is
interface-compatible with the version that the work was made with.
c) Accompany the work with a written offer, valid for at
least three years, to give the same user the materials
specified in Subsection 6a, above, for a charge no more
than the cost of performing this distribution.
d) If distribution of the work is made by offering access to copy
from a designated place, offer equivalent access to copy the above
specified materials from the same place.
e) Verify that the user has already received a copy of these
materials or that you have already sent this user a copy.
For an executable, the required form of the "work that uses the
Library" must include any data and utility programs needed for
reproducing the executable from it. However, as a special exception,
the materials to be distributed need not include anything that is
normally distributed (in either source or binary form) with the major
components (compiler, kernel, and so on) of the operating system on
which the executable runs, unless that component itself accompanies
the executable.
It may happen that this requirement contradicts the license
restrictions of other proprietary libraries that do not normally
accompany the operating system. Such a contradiction means you cannot
use both them and the Library together in an executable that you
distribute.
7. You may place library facilities that are a work based on the
Library side-by-side in a single library together with other library
facilities not covered by this License, and distribute such a combined
library, provided that the separate distribution of the work based on
the Library and of the other library facilities is otherwise
permitted, and provided that you do these two things:
a) Accompany the combined library with a copy of the same work
based on the Library, uncombined with any other library
facilities. This must be distributed under the terms of the
Sections above.
b) Give prominent notice with the combined library of the fact
that part of it is a work based on the Library, and explaining
where to find the accompanying uncombined form of the same work.
8. You may not copy, modify, sublicense, link with, or distribute
the Library except as expressly provided under this License. Any
attempt otherwise to copy, modify, sublicense, link with, or
distribute the Library is void, and will automatically terminate your
rights under this License. However, parties who have received copies,
or rights, from you under this License will not have their licenses
terminated so long as such parties remain in full compliance.
9. You are not required to accept this License, since you have not
signed it. However, nothing else grants you permission to modify or
distribute the Library or its derivative works. These actions are
prohibited by law if you do not accept this License. Therefore, by
modifying or distributing the Library (or any work based on the
Library), you indicate your acceptance of this License to do so, and
all its terms and conditions for copying, distributing or modifying
the Library or works based on it.
10. Each time you redistribute the Library (or any work based on the
Library), the recipient automatically receives a license from the
original licensor to copy, distribute, link with or modify the Library
subject to these terms and conditions. You may not impose any further
restrictions on the recipients' exercise of the rights granted herein.
You are not responsible for enforcing compliance by third parties with
this License.
11. If, as a consequence of a court judgment or allegation of patent
infringement or for any other reason (not limited to patent issues),
conditions are imposed on you (whether by court order, agreement or
otherwise) that contradict the conditions of this License, they do not
excuse you from the conditions of this License. If you cannot
distribute so as to satisfy simultaneously your obligations under this
License and any other pertinent obligations, then as a consequence you
may not distribute the Library at all. For example, if a patent
license would not permit royalty-free redistribution of the Library by
all those who receive copies directly or indirectly through you, then
the only way you could satisfy both it and this License would be to
refrain entirely from distribution of the Library.
If any portion of this section is held invalid or unenforceable under any
particular circumstance, the balance of the section is intended to apply,
and the section as a whole is intended to apply in other circumstances.
It is not the purpose of this section to induce you to infringe any
patents or other property right claims or to contest validity of any
such claims; this section has the sole purpose of protecting the
integrity of the free software distribution system which is
implemented by public license practices. Many people have made
generous contributions to the wide range of software distributed
through that system in reliance on consistent application of that
system; it is up to the author/donor to decide if he or she is willing
to distribute software through any other system and a licensee cannot
impose that choice.
This section is intended to make thoroughly clear what is believed to
be a consequence of the rest of this License.
12. If the distribution and/or use of the Library is restricted in
certain countries either by patents or by copyrighted interfaces, the
original copyright holder who places the Library under this License may add
an explicit geographical distribution limitation excluding those countries,
so that distribution is permitted only in or among countries not thus
excluded. In such case, this License incorporates the limitation as if
written in the body of this License.
13. The Free Software Foundation may publish revised and/or new
versions of the Lesser General Public License from time to time.
Such new versions will be similar in spirit to the present version,
but may differ in detail to address new problems or concerns.
Each version is given a distinguishing version number. If the Library
specifies a version number of this License which applies to it and
"any later version", you have the option of following the terms and
conditions either of that version or of any later version published by
the Free Software Foundation. If the Library does not specify a
license version number, you may choose any version ever published by
the Free Software Foundation.
14. If you wish to incorporate parts of the Library into other free
programs whose distribution conditions are incompatible with these,
write to the author to ask for permission. For software which is
copyrighted by the Free Software Foundation, write to the Free
Software Foundation; we sometimes make exceptions for this. Our
decision will be guided by the two goals of preserving the free status
of all derivatives of our free software and of promoting the sharing
and reuse of software generally.
NO WARRANTY
15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO
WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW.
EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR
OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY
KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE
LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME
THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN
WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY
AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU
FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR
CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE
LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING
RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A
FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF
SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
DAMAGES.
END OF TERMS AND CONDITIONS
How to Apply These Terms to Your New Libraries
If you develop a new library, and you want it to be of the greatest
possible use to the public, we recommend making it free software that
everyone can redistribute and change. You can do so by permitting
redistribution under these terms (or, alternatively, under the terms of the
ordinary General Public License).
To apply these terms, attach the following notices to the library. It is
safest to attach them to the start of each source file to most effectively
convey the exclusion of warranty; and each file should have at least the
"copyright" line and a pointer to where the full notice is found.
<one line to give the library's name and a brief idea of what it does.>
Copyright (C) <year> <name of author>
This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public
License as published by the Free Software Foundation; either
version 2.1 of the License, or (at your option) any later version.
This library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public
License along with this library; if not, write to the Free Software
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
Also add information on how to contact you by electronic and paper mail.
You should also get your employer (if you work as a programmer) or your
school, if any, to sign a "copyright disclaimer" for the library, if
necessary. Here is a sample; alter the names:
Yoyodyne, Inc., hereby disclaims all copyright interest in the
library `Frob' (a library for tweaking knobs) written by James Random Hacker.
<signature of Ty Coon>, 1 April 1990
Ty Coon, President of Vice
That's all there is to it!

570
ChangeLog

@ -0,0 +1,570 @@
This file is licensed under the terms of the expat license, see the file EXPAT.
v0.2.9
+ Add 'Identify As' to Statusbar Features
+ Don't restrict length of HTTP login passwords
+ Implement Find Links by number with '.'
+ Reflect security in icon tooltip
+ Use GIO to determine special URI schemes
+ Upgrade waf (addresses threading issues)
+ Allow clearing HTML5 databases and form history
+ Add --help-execute command line switch
+ Improve private mode, with search and hotkeys
+ Support no-desktop-files and internal Open With
+ Support x-scheme-handler spec
+ Infobar for location and HTML5 database
+ Optimise cookie storing, reduce wakeups
+ Avoid deprecated GTK+ interfaces
+ Remove console in favour of Inspector
+ Simplify and explain cookie preferences
+ Fix Google Reader incompatibility
v0.2.8
+ Re-implement Bookmarks menu and toolbar button
+ Show transferbar even if statusbar is hidden
+ Smart case for inline search while typing
+ Use Alt+Shift+Right instead of Ctrl+Right for Next Page
+ Adding, edit and delete buttons for user scripts/ styles
+ Rename 'Minimize Tab' to 'Show Tab Icon Only'
+ Delete key in completion deletes items
+ Don't show homepage in bookmarkbar
+ Fix crash when using location arrow button
v0.2.7
+ Multiple word completion in location
+ Database backed bookmarks
+ Search bookmark panel and drag bookmarks
+ Bookmarks in address completion
+ Removed bookmarks and history from menubar
+ Add 'Minimize New Tabs' and 'Copy Addresses of Tabs'
+ Refactorings and optimisations in the core
+ Adblock compatibility improvements and speedup
+ Changeable speed dial size
+ Delayed pages at startup, or after a crash
v0.2.6
+ Show a dialogue when quitting while downloading
+ Render icons in errors/ speed dial properly
+ Fix a build error with API documentation
+ Fix error pages in frames, and a related crash
+ Allow more shortcuts or columns in speed dial
+ Add 'Copy All' button to Console panel
v0.2.5
+ Keyboard access in speed dial
+ Panels adapt to system icon style
+ Revamp tab focus handling
+ Use new GTK+ 2.20 spinner (throbber) widget
+ Userscripts and -styles can be (de)activated
+ Warn if trying to download with few space
+ Support right button in Mouse Gestures
+ Add (unfinished) 'External Applications' extension
+ Vala support for extensions and tests
+ Yellow location for valid SSL, red for invalid
+ Render XML as source code
+ Provide tools/midori-dev and check-style scripts
+ Implement MIDORI_ADBLOCK for Adblock testing
+ Fix https URI support in Adblock
+ Change 'Autodetect proxy' into 'Proxy type'
+ Update use of deprecated GTK+ API
+ Implement --blocked-uris for kiosk usage
+ Implement --inactivity-reset for kiosk usage
+ Fix typing with dead keys and NumLock
+ Improve parsing in the Feed Panel
+ Add preference 'Allow scripts to open popups'
+ Spawn web apps and private mode with same executable
+ Base Colourful Tabs on icon colours
+ Add Status Clock extension
+ Resolve hosts before trying a search
+ Allow page icons for https
+ Improve handling of special pages
+ Protect against recursive external URI handlers
v0.2.4
+ Prevent completion from overlapping
+ Fix tab order when restoring session
+ Ignore accidentally middle click search
+ Implement bookmark export to XBEL
+ Provide scroll hotkeys, default to Vim
+ Store and complete search in location
+ Fix opening externally with multiple windows
+ Only use icons in panel buttons
+ Fix build with different GTK+ versions
+ Omit micro version and arch from ident string
v0.2.3
+ Improve relocatability for Win32
+ Implement 'Close other tabs' menu item
+ Use new GTK+ accessors where available
+ Allow searching freely in History panel
+ Re-implement completion based on sqlite
+ Re-implement completion suggestion popup
+ Simplify sqlite use towards efficient calls
+ Move panel icons to the bottom
+ Merge Netscape Plugins and Extensions panels
+ Implement 'about:version' special page
+ Implement 'Preferred languages' preference
+ Improve window raising behaviour
+ Allow Ctrl+Right-click to suppress javascript menu
+ Add 'Open link as web app' in context menu
+ Add 'Block image' menu item to Adblock
+ Location progress and compat code refactored
+ Implement 'Paste and proceed' in location
+ Move DNS prefetching into the core
+ Allow selecting and deleting multiple cookies
+ Support attaching/ detaching web inspector
+ Always enable web inspector
+ --diagnostic-dialog command line switch
+ Faster file existence checks
+ Simplified, faster adblock implementation
v0.2.2
+ Turn libnotify into a proper build-time dependency
+ Use Ctrl + Return to open tabs from the location entry
+ Support right-click on bookmark menu items
+ Support -e in midori -a and with multiple commands
+ Make Middle click open selection search if needed
+ Make Ctrl+C work as expected again
+ Fix order of History, Trash and Recently opened pages
+ Revise Shortcuts dialogue to fix oddities
+ Perform Form history completion case insensitive
+ Add 'Web Cache' to Delete Private data dialogue
+ Load accels from /etc/xdg if present
+ Improve XBEL format compatibility and performance
+ Fix inline find by correcting key handling
+ Add option to open panels in separate windows
+ Support Portrait orientation in Fremantle
+ Support Hildon MIME and URI handling
+ Check status before caching in Web Cache
+ Show popup menu on news feed icon if needed
+ Support Colourful Tabs with Tab Panel
+ Tweak sqlite and dbus handling for Win32
+ 'Run as web app' and 'Show in toolbar' for bookmarks
+ Add 'Small icons' toolbar style
+ Fix build with Glib < 2.20 and GTK+ < 2.12
+ Add Import bookmarks for XBEL, Opera and RDF
+ Add Open Link in Foreground/ Background Tab menu
+ Allow closing all tabs
+ Hildon file chooser support
v0.2.1
+ Fix Mouse Gestures to work after activation
+ Explicitly link to X11 to support gold
+ Implement various Hildon specific features
+ Hide the navigationbar in fullscreen
+ Implement permanent storage of form history
+ Support keyboard shortcuts like Ctrl+Tab or "a"
+ Handle SIGHUP, SIGINT, SIGTERM and SIGQUIT
+ Make creation of new windows fast
+ Introduce the Tab History List extension
+ Load icons laziy at startup to speed up startup
+ Introduce a Web Cache extension
+ Refactor and tweak the Preferences dialogue
+ Implement combos to choose external applications
v0.2.0
+ (Kinetic) drag scrolling on touchscreen devices
+ Workaround a speed dial crasher
+ Faster Adblock with element blocking, for all WebKitGTK+ versions
+ Stripped menu, toolbar and tap on hold on Maemo, and 5.0 menu support
+ Add a DNS prefetching extension
+ Better IDN handling
+ Add a form history extension
+ Restore scrolling positions from the session
+ Keep typed address when switching tabs
+ Avoid storing duplicate history items per day
+ Fix multiple duplicate HTTP authentication dialogs
+ Pass mailto: links to the email client
+ Improve context menu with WebKitGTK+ 1.1.15
+ Checkbox "Remember password" in HTTP authentication
+ Fix a crasher when modifying bookmarks
+ Support page icons other than favicon.ico
+ iPhone identity in Network preferences
v0.1.10:
+ Fix freezing when opening multiple windows
+ Revamp Adblock with WebKitGTK+ 1.1.14 API
+ Greatly improve the address completion
+ Always show news feed icon
+ Better handling of feeds in the feed panel
+ Add Gtk+ and WebKit version to the About dialog
+ Improve tab panel and support minimized tabs
+ Implement disabling of extensions in crahs dialog
+ Don't make the web inspector transient
+ Tidy up the Preferences a bit
+ Load default bookmarks and config from /etc
+ Do not use xprop at runtime
+ Use GNOME proxy server if libsoup-gnome is installed
+ Integrate Save As with transfers
+ Save HTTP logins in a text file
+ Support Undo and Redo with WebKitGTK+ 1.1.14
v0.1.9:
+ Preserve navigation history with new tabs
+ Implement clearing private data when quitting
+ Ellipsize and show close icons in the tab panel
+ Allow hiding panel operating controls
+ Integrate Tools with the compact menu
+ Fix User scripts, User styles and Plugins panel
+ Remove the bookmarkbar popup
+ Add New Tab to the tab context menu
+ Implement minimizing tabs
v0.1.8:
+ Initial support for extension unit tests
+ Set a "browser" role on browser windows
+ Support typing search tokens to open websites
+ Fix focus loss when switching search engines
+ Rewrite Netscape Plugins panel backed by javascript
+ Implement a compact menu if menubar is hidden
+ Provide a context menu for tab labels
+ Implement Tab Panel as a tabbar replacement
+ Remember the last active tab
+ Read and write XBEL metadata internally
+ Implement -e, --execute to perform commands
+ Support socket based single instance
+ Move Go button inside the location entry
+ Fix the ident string after Midori updates
+ Bind Alt + n to switching to the n-th tab
+ Revisit conflicting mnemonics
+ Add a Toolbar Editor extension
+ Add a Shortcut Editor extension
+ Implement context menu in the Transfers panel
+ Simplified Extensions and Addons panels with tick marks
+ Fix Mouse Gestures often ignoreing gestures
+ Use one cookie manager model in all windows
+ Support building Midori for Win32
+ Add an entry to specify Fixed-Width font size
+ Implement Save As in the download dialog
+ Use one history model in all windows
v0.1.7:
+ Save the activation status of extensions
+ Catch and ignore mouse buttons meant for horizontal scrolling
+ Improve panel detaching and how panels handle it
+ Add a Feed Panel extension
+ Add a Fixed-width Font Family preference
+ Support spell checking
+ Implement (optional) Speed dial feature
+ Support nicer error pages with WebKitGTK+ 1.1.6
+ Implement middle click to open menu items in tabs
+ Implement -s, --snapshot command line switch
+ Use libnotify (runtime dependency) for finished transfers
+ Add a Go button to the address entry
+ Always append tabs opened via middle/ double click on the tab bar
+ Implement Open new pages in: New window preference
+ Implement inline find with direct '.' and '/' hotkeys
+ Add basic support for @-moz-document in user styles
v0.1.6:
+ Add Delete All to transferbar
+ Show search in context menu
+ Implement 'Default' search engine
+ Show only icons in Statusbar Features
+ Implement Clear private data
+ Support News Feed icon and external aggregator
+ Fix reloading of Not found pages
+ Fixup spaces when middle click opening
+ Fix possibly wrong identificaton string
+ Optionally search engines in completion
+ Optionally Gtk 2.16 entry progress and icon
+ Experimental panel detaching
+ Support external download manager again
+ Implement '-a', '--app' argument
+ Implement '-c', '--config' argument
+ Fix a bookmark saving issue
+ Support data: URIs in the address entry
+ Several performance and memory leak fixes
+ Load cookies idle to accelerate startup
+ Support mailto: links
+ Save tab reordering in the session
+ Add a Cookie Manager extension
+ Fix crashers in Colourful Tabs
v0.1.5:
+ Add a Colorful Tabs extension
+ Support downloading with WebKitGTK+ 1.1.3
+ Load and save settings of extensions
+ Drop internal source view
+ Require WebKitGTK+ 1.1.1, Glib 2.16 and libsoup 2.25.2
v0.1.4:
+ Automatic inline find can be disabled
+ Implement an Encoding menu
+ Add Open all in Tabs for bookmarks and history
+ Bookmarks can be moved to other folders
+ Fix blank page 'loading' and HTTP authentication
+ Display history dates in the local format
+ Allow editing of completion items
v0.1.3:
+ Sidepanel can be aligned on the right
+ Bookmarks can be organized in folders
+ Support find as you type
+ Support international domain names
+ Tweak location completion
+ Provide default search engines
+ Integrate with Maemo if available
+ Implement Mouse Gestures extension
+ Implement a Plugins panel
+ Editing the toolbar via a context menu
+ Introduce Zoom Text and Images preference
v0.1.2:
+ Open new tabs by clicking on the tabbar
+ Refactor and speed up location completion
+ Show a Crash dialog after crashes
+ Dynamically save files when needed
+ Support Back/ Forward mouse buttons
+ Support javascript: bookmarklets
+ Implement Proxy and Identification string
+ Implement cookie storage on disk
+ Remove autotooled build system
+ Add a new Extensions panel
+ Implement opening of new windows
+ Display tooltips in Preferences
v0.1.1:
+ Reimplement page holder as an extension
+ Introduce a C extension interface
+ Introduce unit tests for automated testing
+ Implement history based location completion
+ Support the Web Inspector in new WebKit versions
+ Bookmarkbar properly reflects changes
+ Improve overall OS X integration
+ Add a Text Editor Preference
+ Add a Compat sidebar Preference
+ Add an Open external pages in Preference
+ Implement source view and cached favicons with libsoup
v0.1.0:
+ Allow for hiding the menubar
+ Make the navigationbar customizable
+ Implement a History panel
+ Remove the HTTP Proxy hack
+ Add an Always Show Tabbar Preference
+ Implement 404 error pages
+ Remove the Primary Clipboard hack
+ Provide user documentation
+ Display Not found errors when possible
+ Remove Stylesheet and Zoom Stepping preferences
+ Make dialogs more compact
+ Ellipsize extremely long menu items
+ Save the trash again when quitting
+ Implement enabling/ disabling addons
v0.0.21:
+ Update some translations
+ Show progress in location when statusbar is hidden
+ Alt + Enter in location should issue a new tab
+ Warn at configure time if GVfs is not installed
+ Remove GVfs code that could caused huge problems
+ Update wad to 1.4.4 to fix building on some systems
v0.0.20:
+ Single instance support using Unique
+ Make it clear that WAF is preferred
+ Provide an 'extension' icon
+ Load user styles from ~/.local/share/midori/styles
+ Use Ctrl+Shift+T for Undo Close Tab
+ Add "open-tabs-next-to-current" preference
+ Use rsvg-convert instead of imagemagick's convert
+ @name in the meta data of userscripts is recognized
+ Remove "small-toolbar" preference
v0.0.19:
+ Improved Greasemonkey compatibility
+ Improve multiple window support
+ Use WAF buildscripts, still keeping autotools
+ Install and use Midori logo
+ Support zooming and printing
+ Enhance Gjs functionality
+ Refactor in some places, particularly Web Search
+ Implement favicons and source view with GIO
+ Introduce new fancy location entry
+ Detect and show news feeds on web sites
+ Save the session as needed, not only on quit
+ Reintroduce Download Manager preference
v0.0.18:
+ First attempt at userscripts and extensions.
+ Show hidden location/ web search temporarily when needed.
+ Turn prefs into MidoriPreferences
+ Fix background tabs, strings and new tab focus.
+ Switch configuration to MidoriWebSettings.
+ Remove 'External programs' logic
+ Append the closed tabs items as a proper submenu.
+ The location is empty and focused by default
+ Implement proper menu positioning.
+ Implement the Console panel for script messages.
+ Implement localization via Gettext.
+ Initial refactoring work, regressions expected
+ Build fix: Webkit's header and pkgconfig name have changed.
+ Implement Fullscreen mode
v0.0.17:
+ Add a preference to choose a user stylesheet.
+ Implement a few preferences with new settings API in WebKit
+ Implement Add Bookmark and a small panel toolbar
+ Escape search engine name and description.
+ Cleanup and WebKit API update
+ Make sure selection actions have a widget.
+ Allow Find Next and Find Previous when the findbox is hidden.
+ Fixed the header of the KatzeThrobber
+ Move XBEL implementation to katze.
+ Implement a throbber widget.
+ Always enable Select All if an editable widget is focussed.
+ Previous/ next tab menu items should be disabled when not needed.
+ Handle the context menu on button press, not release.
+ Open the default page only if there is no session and no uri on the cli.
v0.0.16:
+ Implement editing menu items for the web view.
+ Implement the bookmarks panel with editing capabilities.
+ Prevent repeated checks for the desktop environment.
+ Fix coding style in sokoke.c/ sokoke.h, particularly variable names.
+ Don't update the remembered window size when maximized.
+ Don't remember the window position but the size only.
+ Command line uris should replace the default page.
+ More effective status updates and less entry flickering
+ Enable inline find for websites
+ Make the progressbar work properly again
+ Build fix: Adapt WebKit api changes
+ Add Tab Size to preferences dialog
v0.0.15:
+ Build fix: Remove search api
v0.0.14:
+ FIX Reopening a tab from the trash causes a crash
+ FIX An untitled website keeps the previous title
+ FIX When switching tabs the location/ title isn't updated correctly
+ FIX Issues with the preferences dialog
+ Disable location completion for now
+ Save tabtrash to file
+ Restructure some code
+ Remove color picker and throbber
+ Change the license to LGPL
v0.0.13:
+ Adapt WebKit api change, remove engine wrappers, remove dialog hack
+ Improve XBEL loading and saving
+ Show dialog and backup files on startup errors
+ Rearranged and removed some menus
v0.0.12:
+ FIX Improve flawed window creation
+ Build with and eliminate all compiler warnings
+ Implement clipboard handling menus
+ Allow editing of search engines
+ Update search engines properly
+ Implement bookmarks saving
+ Implement session saving and loading
+ Cleaned up and revised most code
+ Remove legacy webi code
v0.0.11:
+ FIX Back/ forward and initial check menu item states
+ Remove rather useless debugging helpers
+ Improvements on the preferences
+ First attempt at websearch
+ Preserve typed uri on tab switch
+ First attempt at bookmarks, readonly for now
+ Add an animated throbber
v0.0.10:
+ FIX Can crash on context menu or new protocol
+ FIX Location isn't updated on tab switch
+ Remember last window position and size
+ Implement Open menu item
+ Allow using location and web search if hidden
v0.0.9:
+ FIX Close tab not insensitive for only one tab
+ FIX Debug output is broken
+ Display uri when hovering a link
+ Implement link uri related part of context menu
+ Implement alt/ middle/ shift click link
+ First attempt at external protocol handlers
+ Initial download manager integration
+ Adapt WebKit api prefix change
+ More code reorganization and cleanup
v0.0.8:
+ FIX Crash when invoking document context menu via keyboard
+ FIX Can't build with debug = yes on GTK+2.12
+ Changes related to icons in the gui
+ Reorganize code by splitting into several files
+ Switch from WebkitGdk to WebkitGtk
v0.0.7:
+ FIX Make settings finally work flawlessly
+ FIX Can crash when settings are opened
+ Handle all panels in a general way
+ Install xdg compliant desktop file
+ Implement location and web search menu items
+ Display a loading icon on tabs again
+ Changed the settings dialog again
v0.0.6:
+ FIX Closing an individual tab doesn't work correctly.
+ FIX Doesn't build with gtkwebcore.
+ Reimplement menus and and navibar with GtkUIManager.
+ Improve document handling in general.
+ Finished tab trash menu.
+ Implement searchbox default text.
+ Remove some gtkwebcore code.
+ Use Xfce style dialog in Xfce.
+ Implement a few settings.
+ Change the panel's look.
+ Implement a 'pageholder' panel.
v0.0.5:
+ Implement a few more signals for WebkitGdk.
+ Add tooltips to navigation toolbar buttons.
+ First attempt on a settings dialog.
+ Reimplemented color picker.
+ Autocompletion for location and searchbox.
+ Changed menu items and incremental findbar.
+ Implement tab switching via keyboard.
v0.0.4:
+ FIX Midori segfaults when quitting.
+ FIX Config loading and saving is broken.
+ Switch WebkitGdk to gtk api and make it the build default.
+ Register custom stock icons instead of icon theme magic.
+ Implement dynamic window menu.
+ First attempt on resizable panels.
+ Add about dialog.
v0.0.3:
+ FIX Refresh via menu or shortcut crashes the browser.
+ FIX Assertions with and visibility of the progressbar.
+ FIX Tabs are not reorderable.
+ Package versions in ./configure result and --version output.
+ Improve view menu and add tools menu.
+ Replace deprecated functions and macros.
+ Implement settings saving and loading.
+ Fill the common context menu with items
+ Allow multiple homepages, seperated by '|'.
+ Make code typesafe and C++ friendly.
+ Initially support WebkitGdk directly.
+ Urlify location inputs automatically.
v0.0.2:
+ Dynamic tab trash menu.
+ Update UI when page is changed.
+ Enhanced WebkitGtk support.
+ New function sokoke_dialog_run_modeless.
+ Finished on_document_request_script_prompt.
+ One name and version, visible in the user agent.
+ Changed some accelerators and menu items.
+ Create and destroy color picker properly.
+ Ctrl + Wheel resets the zoom level.
+ Escape in the location entry resets the uri.
+ Use gtk-webcore prefix instead of osb now.
+ Save keybindings on quit.
+ Fancy autotools build setup.
v0.0.1:
+ Initial release

18
EXPAT

@ -0,0 +1,18 @@
Permission is hereby granted, free of charge, to any person obtaining
a copy of this software and associated documentation files (the
"Software"), to deal in the Software without restriction, including
without limitation the rights to use, copy, modify, merge, publish,
distribute, sublicense, and/or sell copies of the Software, and to
permit persons to whom the Software is furnished to do so, subject to
the following conditions:
The above copyright notice and this permission notice shall be included
in all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

169
HACKING

@ -0,0 +1,169 @@
This file is licensed under the terms of the expat license, see the file EXPAT.
+ Hacking guide for Midori +
- How to contribute
- Coding style
- Source files in the project
- Examplary source code
+++ How to contribute +++
There are several ways to contribute to the project:
For translating, have a look at the file TRANSLATE.
For helping with testing and triaging bug reports, you should registers with the bug tracker at http://www.twotoasts.de/bugs and join #midori on irc.freenode.net where a lot of problems are discussed. You can start right away by trying to reproduce bug reports and comment with your findings.
If you are interested in contributing code, there are a few options. You can join #midori to discuss a particular problem you would like to look into, or a feature you would want to implement. Opening a bug report or feature request if there isn't already one is the next step. To attract some attention, if you attached a patch or have questions, ask in #midori.
+++ Coding style +++
Indentation is 4 spaces, no tabs, preferrably at 80 to 120 columns per line to
avoid automated line-breaks. Trailing whitespace is not desirable.
Declarations go to the beginning of a block, not inline. Variables of one plain
type may be grouped in one declaration, pointer types may not be grouped. The
asterisk goes next to the type.
Variables should be ordered in the order they are used.
Comments explain functionality, they should not state facts. The appropriate
style is always C style /* */, not C++ style.
Variable and function names should be animal, animal_shelter or animalsc in
case it would otherwise be very long. Loop counters may be single letters.
Type names should be Animal, AnimalShelter or AnimalSC. No prefixes from third
party projects should be used, such as GTK or WebKit, while underlines may be
used but do not have a particular meaning.
There is a space between functions or keywords and round brackets, and curly
brackets always go on separate lines, at the indentation level of the
function, conditional or loop expression. Curly brackets are left out for single
statement conditionals and loops unless they notably help readability.
The type of a function goes on a separate line before the function.
Preprocessor instructions are indented with the code they relate to.
Code history is precious, so one should avoid renaming a lot of functions at
once or moving whole paragraphs only to add or remove a level of indentation.
Moving blocks of code around is also undesriable because it makes patches less
readable since the result looks like new code.
+++ Source files in the project +++
Core:
Files prefixed with "midori-" in the folder "midori" make up the core. They
are essential to running the browser and mostly tailored to the browser.
All header files prefixed with "midori-" are considered supported API and
can be used to implement extensions.
"sokoke" is a collection of very specialized helper functions which change
from time to time as needed. In the past some of the code was moved to
"katze" when it was considered generally useful.
"socket" is a socket implementation with no dependency on other parts of
the core, which is used if Midori is built without an external single
instance support library.
Panels:
Files in the "panels" folder are classes that implement MidoriViewable and
which are loaded into the MidoriPanel at startup. These panels are in
principle optional.
Katze:
Re-usable classes and utility functions that don't depend on the core and
some of that code indeed found its way into other projects.
Extensions:
These are extensions, written in C, which are loaded optionally if the user
so chooses. Extensions can use API from "midori-" and "katze-" headers. Each
module consists of either a single .c file or a folder with .c files.
Tests:
Unit tests are run regularly to verify possible regressions or measure
performance of implementations. Except for select cases code changes should
not cause failure of unit tests.
+++ Examplary source code +++
/*
Copyright
LICENSE TEXT
*/
#include "foo.h"
#include "bar.h"
#include <glib.h>
void
foobar (FooEnum bar, const gchar* foo)
{
gint n, i;
if (!foo)
return;
#ifdef BAR_STRICT
if (bar == FOO_N)
{
g_print ("illegal value for 'bar'.\n");
return;
}
#endif
/* this is an example */
switch (bar)
{
case FOO_FOO:
n = bar + 1;
break;
case FOO_BAR:
n = bar + 10;
break;
default:
n = 1;
}
for (i = 0; i < n; i++)
{
g_print ("%s\n", foo);
}
}
Header file example:
/*
Copyright
LICENSE TEXT
*/
#ifndef __FOO_H__
#define __FOO_H__ 1
#ifdef HAVE_BAR_H
#define BAR_STRICT
#endif
/* Types */
typedef enum
{
FOO_FOO,
FOO_BAR,
FOO_N
} FooEnum;
typedef struct
{
FooEnum foo_bar;
} FooStruct;
/* Declarations */
void
foo_bar (FooEnum bar,
const gchar* foo);
const gchar*
foo_foo (FooStruct foo_struct,
guint number,
gboolean flag);
#endif /* !__FOO_H__ */

72
INSTALL

@ -0,0 +1,72 @@
This file is licensed under the terms of the expat license, see the file EXPAT.
+++ Installing Midori +++
Building and installing Midori is straightforward.
Make sure you have Python 2.4 or higher installed.
Change to the Midori folder on your hard disk in a terminal.
Run './waf configure'
Run './waf build'
You can now run Midori from the build folder like so
'./waf build --run'
Using --run as shown above will make sure extensions as well as
localizations are used from the build folder.
You can install it with './waf install'
If you need to do a clean rebuild, you can do either './waf clean'
in order to remove binaries or './waf distclean' which deletes generated
configuration files as well.
For further options run './waf --help'
+++ Debugging Midori +++
Run './waf configure -d full' from the Midori folder.
Run './waf build'
Midori is now built with debugging symbols.
Make sure you have installed 'gdb', the GNU Debugger.
Run Midori as 'gdb _build_/default/midori/midori'.
Inside gdb, type 'run'.
Try to reproduce a crash that you experienced earlier,
this time Midori will freeze at the point of the crash.
Switch to your terminal, type bt ('backtrace') and hit Return.
What you obtained now is a backtrace that should include
function names and line numbers.
If the problem is a warning and not a crash, try this:
'G_DEBUG=all gdb _build_/default/midori/midori'
If you are interested in HTTP communication, try this:
'MIDORI_SOUP_DEBUG=2 _build_/default/midori/midori'
Where '2' can be a level between 0 and 3.
If you are interested in (non-) touchscreen behaviour, try this:
'MIDORI_TOUCHSCREEN=1 _build_/default/midori/midori', or
'MIDORI_TOUCHSCREEN=0 _build_/default/midori/midori'
If you want to "dry run" without WebKitGTK+ rendering, try this:
'MIDORI_UNARMED=1 _build_/default/midori/midori'
For further information a tutorial for gdb and
reading up on how you can install debugging
symbols for libraries used by Midori are recommended.

18
README

@ -0,0 +1,18 @@
# Midori Web Browser - Legacy
Midori is a lightweight web browser.
- Full integration with GTK+2.
- Fast rendering with WebKit.
- Tabs, windows and session management.
- Flexibly configurable Web Search.
- User scripts and user styles support.
- Straightforward bookmark management.
- Customizable and extensible interface.
- Extensions written in C.
Requirements: GTK+ 2.10, WebkitGTK+ 1.1.1, libXML2, libsoup 2.25.2, sqlite 3.0
Optional: Unique 0.9, libidn, docutils, libnotify, Vala
For installation instructions read INSTALL.

3
README.md

@ -1,3 +0,0 @@
# org.midori_browser.Midori.legacy
Midori Web Browser - legacy

1
README.md

@ -0,0 +1 @@
README

100
TODO

@ -0,0 +1,100 @@
This file is licensed under the terms of the expat license, see the file EXPAT.
TODO:
. Detect opensearch engines on sites: http://searchplugins.net/pluginlist.aspx
. Request network if not connected and re-open the url on success
. Make cookie manager horizontal if the window is wide
. Handle SSL like SSH: confirm any cert on first connection, warn about any change in subsequent connections
. Open on startup: Ask (Last open pages, Blank, Homepage, [x] Don't ask anymore)
. Support @run-at document-start: http://dev.chromium.org/developers/design-documents/user-scripts
. Add an 'install' button to addons
. Dragging a link onto the web view to open it
. Extension: Ask Google if an address cannot be found, ie. typo
. View source is not always equal to Save As
. Show New Window icon in statusbar for new-window links
. Validate search engine tokens
. Easily register stock items in extensions (mouse gestures, input-mouse)
. Show graphical error when a bookmarklet fails to run
. Unit test katze array action
. There is no way to reset the toolbar
. Estimate download speed
. Implement no_proxy, https_proxy
. Make it possible to use extra C or C++ libraries in extensions
. Add icon cache size preference
. Fix icons with white background to be transparent?
. Visually indicate that a tab is being opened even if outside the visible tabs
. gget/ eatmonkey/ Transmission dbus in Transfers
. Add Midori to autostart, and remove it if it's quit, optionally disabled
. Use @include and @exclude with userstyles
. Support -moz-document domain: http://userstyles.org/styles/22837
. Need a throbber with invisible menubar: make compact-menu throbb?
. Implement live bookmarks, see http://johnbokma.com/firefox/rss-and-live-bookmarks.html
. Add a dialog (right-cick) to Addons, to edit @include and @exclude
. Show URI in css overlay tooltips if statusbar is hidden
. "Menu" tool buttons aren't depressed while a menu is open
. Statusbar doesn't show right-click menu
. Consider pango_layout_set_auto_dir
. Make it possible to change ident string for particular domains
. Support max-age for Flash cookies
. Update speed dial thumbnail when loading the according page from speed dial
. Implement "Open image" which opens an image with an external application
. Add custom actions extension; example Set Wallpaper
. Offer restoring session after crash, if session isn't opened at startup AND crash dialogue is enabled
. Vi extension, modelled after vimprobable
. Show loading tabs in the tab panel extension
. Let extensions add preferences
. Show syntax errors in userscripts/ styles
. Add HTTP_PRAGMA: no-cache when Ctrl+Shift+R
. Honor HTTP_PRAGMA: no-cache in web cache
. Switching browser window: Ctrl+Shift+PageUp/PageDown
. Switching panel: Ctrl+Alt+PageUp/PageDown
. Bookmark folder context menu, "Sort by Name"
. Adblock Block image: dialog to edit regex before adding
. KatzeArrayAction should support "activate" signal
. Remove extra inner panel border
. Move statusbar_contents below panel if statusbar is hidden
. Teplace "disable plugins" with showing a "load plugins automatically", where unchecking that keeps a placeholder that can be clicked to play
. Show "Type an address or keywords to search" in empty location even when focussed
. Show "Search hostname" in (can't resolve) error page, www.heyarnold.twotoastsde == typo?
. Enable extensions in private (app) mode
. Allow -e Set setting or so
. Remember if inspector was attached or not
. Icon in empty entry to paste from clipboard
. Show suggestions in error page, ie. missing www. or www. not existing for a domain: http://www.svcl.org/
. Warn when closing tab with unsubmitted form
. Always allow popups, keep hidden, show icon to ask whether to show popups
. Make Shift + Click download the link
. Use an update timeout in KatzePropertyProxy instead of only focus-out
. Show a loading mouse pointer
. Export of the bookmarks file, or using one from a specific path
. Custom context menu actions, like in Thunar or Epiphany
. Analogus to blocked popups, blocked scripts moving layers on load (extension)
. Per-site blocking of individual elements on a page
. Statusbar icon 'cookies blocked', icon 'popups blocked'
. Per-site settings accessible via statusbar icons, ie. cookies, popups, plugins
. CookieSafe like, a list of cookies, with type, block, allow
. Automatic update checks (browser, extensions)?
. Auto-group tabs by opener, with colors?
. Mark (dogear) a selection so that it isn't cleared implicitly, multiply on one page
. Check specific bookmarks for updates automatically (extension)
. Mark "new" as well as "actually modified" tabs specially (even over sessions)
. Save screenshot of a document?
. Right-click a textbox in a search form and choose 'add to websearch'
. Honor design principle "no warnings but undo of backups"?
. Support widgets 1.0 spec in tool windows and standalone?
. Protected tabs prompt when attempting to close them
. Provide a 'sleep mode' after a crash where open documents are loaded manually
. Option to run plugins or scripts only on demand, like NoScript, per-site
. Optional http redirection manually or on timeout via SoupMessage::restarted
. Style: none, compatible (b/w), default, [styles], "media", ["media" styles]
. Mouse pointer coordinates in the status bar (extension)
. Draw rectangle with the mouse, x/y/x2/y2 in the statusbar (extension)
. Shared bookmarks and config
. Prevent dead tabs: download, aborted page
BOOKMARK ISSUES:
. Bookmark menu is not populated
. Bookmark toolbar is broken
. Import is broken
. Integration with locationbar search
. Remove separator from submenu before showing it

45
TRANSLATE

@ -0,0 +1,45 @@
This file is licensed under the terms of the expat license, see the file EXPAT.
+++ Translating Midori +++
The recommended tool for translating Midori is Transifex, which is what all
Xfce projects use. It makes the life of translators and developers easier.
That said, it is also possible to manually create or update a .po file and
send a .po or .diff file via email or Flyspray.
Either way the following instructions should get you started.
There is no template in the repository. To create a localization template:
./waf build --update-po
You can use the same command in the future to update the template. It is
recommended to do that always before you update localizations.
If you want to add a new language 'aa', create it like this:
cd po
msginit -l aa_CC -o aa.po -i midori.pot
sed -i 's/PACKAGE/midori/g' aa.po
To check your language 'aa' for errors, do this:
msgfmt -c --check-accelerators=_ aa.po
To test your changes, run Midori like so:
./waf build --run
This is a convenience command that will setup localization in
the build folder so you don't need to install translations.
To run Midori in a particular language, run it like this:
LANG=fr_FR.utf8 ./waf build --run
As a general rule, your localization should be based off of the
current git repository or the latest midori.pot in git.
Some strings have comments, starting with 'i18n', which are meant
to describe the role of a string to translators.
Please don't hesitate to ask for additional descriptive comments
for any unclear strings that you are uncertain about.

153
configure

@ -0,0 +1,153 @@
#! /bin/sh
# waf configure wrapper
# Fancy colors used to beautify the output a bit.
#
if [ "$NOCOLOR" ] ; then
NORMAL=""
BOLD=""
RED=""
YELLOW=""
GREEN=""
else
NORMAL="\033[0m"
BOLD="\033[1m"
RED="\033[91m"
YELLOW="\033[01;93m"
GREEN="\033[92m"
fi
EXIT_SUCCESS=0
EXIT_FAILURE=1
EXIT_ERROR=2
EXIT_BUG=10
CUR_DIR=$PWD
#possible relative path
WORKINGDIR=`dirname $0`
cd $WORKINGDIR
#abs path
WORKINGDIR=`pwd`
cd $CUR_DIR
# Checks for Python interpreter. Honours $PYTHON if set. Stores path to
# interpreter in $PYTHON.
#
checkPython()
{
if [ -z "$PYTHON" ] ; then
PYTHON=`which python 2>/dev/null`
fi
printf "Checking for Python\t\t\t: "
if [ ! -x "$PYTHON" ] ; then
printf $RED"not found!"$NORMAL"\n"
echo "Please make sure that the Python interpreter is available in your PATH"
echo "or invoke configure using the PYTHON flag, e.g."
echo "$ PYTHON=/usr/local/bin/python configure"
exit $EXIT_FAILURE
fi
printf $GREEN"$PYTHON"$NORMAL"\n"
}
# Checks for WAF. Honours $WAF if set. Stores path to 'waf' in $WAF.
# Requires that $PYTHON is set.
#
checkWAF()
{
printf "Checking for WAF\t\t\t: "
#installed miniwaf in sourcedir
if [ -z "$WAF" ] ; then
if [ -f "${WORKINGDIR}/waf" ] ; then
WAF="${WORKINGDIR}/waf"
if [ ! -x "$WAF" ] ; then
chmod +x $WAF
fi
fi
fi
if [ -z "$WAF" ] ; then
if [ -f "${WORKINGDIR}/waf-light" ] ; then
${WORKINGDIR}/waf-light --make-waf
WAF="${WORKINGDIR}/waf"
fi
fi
#global installed waf with waf->waf.py link
if [ -z "$WAF" ] ; then
WAF=`which waf 2>/dev/null`
fi
# neither waf nor miniwaf could be found
if [ ! -x "$WAF" ] ; then
printf $RED"not found"$NORMAL"\n"
echo "Go to http://code.google.com/p/waf/"
echo "and download a waf version"
exit $EXIT_FAILURE
else
printf $GREEN"$WAF"$NORMAL"\n"
fi
}
# Generates a Makefile. Requires that $WAF is set.
#
generateMakefile()
{
cat > Makefile << EOF
#!/usr/bin/make -f
# Waf Makefile wrapper
WAF_HOME=$CUR_DIR
all:
@$WAF build
all-debug:
@$WAF -v build
all-progress:
@$WAF -p build
install:
@if test -n "\$(DESTDIR)"; then \\
$WAF install --destdir="\$(DESTDIR)"; \\
else \\
$WAF install; \\
fi;
.PHONY: install
uninstall:
@if test -n "\$(DESTDIR)"; then \\
$WAF uninstall --destdir="\$(DESTDIR)"; \\
else \\
$WAF uninstall; \\
fi;
clean:
@$WAF clean
distclean:
@$WAF distclean
@-rm -rf _build_
@-rm -f Makefile
check:
@$WAF check
dist:
@$WAF dist
EOF
}
checkPython
checkWAF
echo "calling waf configure with parameters"
$WAF configure $* || exit $EXIT_ERROR
if [ -f "Makefile" ] ; then
echo ""
else
generateMakefile
fi
exit $EXIT_SUCCESS

14
data/autosuggestcontrol.css

@ -0,0 +1,14 @@
div.suggestions {
-webkit-appearance: listbox;
text-align: left;
position: absolute;
z-index: 999;
}
div.suggestions div {
cursor: default;
padding: 0px 3px;
}
div.suggestions div.current {
background-color: #3366cc;
color: white;
}

314
data/autosuggestcontrol.js

@ -0,0 +1,314 @@
/**
* An autosuggest textbox control.
* from Nicholas C. Zakas (Author) example: http://www.nczonline.net/
* Adopted for Midori by Alexander V. Butenko <a.butenka@gmail.com>
*/
function AutoSuggestControl(oTextbox /*:HTMLInputElement*/,
oProvider /*:SuggestionProvider*/) {
/**
* The currently selected suggestions.
* @scope private
*/
this.cur /*:int*/ = -1;
/**
* The dropdown list layer.
* @scope private
*/
this.layer = null;
/**
* Suggestion provider for the autosuggest feature.
* @scope private.
*/
this.provider /*:SuggestionProvider*/ = oProvider;
/**
* The textbox to capture.
* @scope private
*/
this.textbox /*:HTMLInputElement*/ = oTextbox;
//initialize the control
this.init();
}
/**
* Autosuggests one or more suggestions for what the user has typed.
* If no suggestions are passed in, then no autosuggest occurs.
* @scope private
* @param aSuggestions An array of suggestion strings.
* @param bTypeAhead If the control should provide a type ahead suggestion.
*/
AutoSuggestControl.prototype.autosuggest = function (aSuggestions /*:Array*/) {
if (aSuggestions.length > 0) {
this.showSuggestions(aSuggestions);
} else {
this.hideSuggestions();
}
};
/**
* Creates the dropdown layer to display multiple suggestions.
* @scope private
*/
AutoSuggestControl.prototype.createDropDown = function () {
var sDiv = document.getElementById("suggestions_box");
if (sDiv) {
this.layer = sDiv;
return;
}
this.layer = document.createElement("div");
this.layer.className = "suggestions";
this.layer.id = "suggestions_box";
this.layer.style.visibility = "hidden";
this.layer.style.width =