Also three strings are marked untranslatable since they never
appear in the user interface and 'Unhandled settings value'
is reworded to 'Invalid configuration value'.
This resolves various indirections, and since we are always
using the action anyway, we finally move all logic to one
place. There should be room for optimizations now.
Incidentally this also keeps the completion intact if
the entry needs to be recreated.
intltool automatically embeds comments in the po template
if they are directly before a translatable string. From
now on we will try to avoid leaving accidental comments
and instead put descriptive comments for translators
before strings, starting with 'i18n'.
For the moment, a define in the code decides whether items
are sorted based on when they were added or how often
a page was visited. The 'visits' property and respective
database column is unused (we keep it for compatibility).
It turns out it's enough to store that information in
the tree model.
The visit based sorting is not enabled because it is
simply delaying startup incredibly. It will have to be
decided whether to introduce a preference, or always use
a visited based sorting once the startup delay is fixed.
History items are also deleted from the tree model now
if they are too old, according to the preference.
Some refactoring in KatzeArrayAction and the addition
of a function to create arbitrary bookmark tool items
allows us to easily revamp the bookmarkbar so that
it finally reflectls changes to the bookmarks,
including adding and removing items.
KatzeNet can from now on be used where
URIs are handled and one would have used
libSoup and/ or local file handling as
appropriate, whereas KatzeNet does both.
Since we are displaying icons in several
places KatzeNet also provides an icon
loader that saves us from doublicating
even more code.
All bookmarks and also history items have
icons now, since KatzeNet makes that
incredibly easy.
Search engines are also using favicons
now, and right now custom icons don't
work, we still need to fix that.
Note that only icons are cached, nothing
else and the code is known to have a
hidden, hard to reproduce crasher which
may appear when an icon is newly loaded.
The previous code relied on GIO implementing HTTP
with libsoup, so this is effectively not a new
dependency. And since many people don't have GVfs
and even if they do, somehow GIO doesn't work as
good as one should expect, direct use of libsoup
is actually an improvement. Plus the new code
caches icons on disk which we didn't do before.
Property name localization is only useful if the
strings are meant to be used in a user interface,
such as is the case with WebSettings, or for
graphical interface builders, which are not of
our concern, since we don't use Glade and friends
and nobody else is going to use our widgets.
In short, make translation work much easier.
We are not literally undoing in the sense of
reverting, this is actually about undoing
the individual parts of the last refactoring
that implemented the socket/ plug logic.
As turned out, the idea was nice but the
implementation was absolutely not, embedding
of processes in a graphical way is not
at all reliable enough for complex use cases.
Naturally this change should solve all sorts
of peculiar issues, including actual
regressions in functionality. Relieving.
Finally the trash, which was the last item that
needed to be implemented as an action, is an
action, a KatzeArrayAction to be exact.
This simplifies more code and also makes Window
and RecentlyVisited generically implementable.
Incidentally this change also fixes a bug where
the browser tried to add a new tab when the last
one was closed, even while destroying itself.
Furthermore sokoke_image_menu_item_ellipsized
and sokoke_widget_popup were promoted to Katze.
We're still keeping the old functions for now.
Something in the stack seems to magically turn
empty strings into about:blank, which is a problem
if we want to be able to start typing right away
when opening blank tabs.
We simply enforce the desired behaviour now.
The implementation relies on KatzeArray for the
most part and only does the storage with sqlite
behind the scenes. The change includes a working
History panel. Changes to the database are
committed in realtime.
Remove Page setup, Print preview, Undo, Redo
and Tab overview. We still can't implement any
of these items, so let's just keep focussing on
what we *can* implement.
Implement font properties, web features,
Middle click opens selection,
Open tabs in the background and proxy.
While we are at it, remove Tab label size.
The approach is rather plump, Midori can be
run in a plug mode that creates a GtkPlug,
while the normal instance knows how to embed it.
Communication between browser and tabs is
done via named pipes which are portable.
The feature is not complete right now, there
are expected regressions, but it works.
As a bonus, we implement Not found pages.
The idea is that if you hide the statusbar and the
location you don't usually need it, but progress
is something you are still interested in. So show
the navigationbar during progress changes and hide it
normally otherwise.
We have more powerful options in the form of
addon panels by now. If someone uses it they may
keep their preference or clear it, but otherwise
we don't show the widget anymore.
Originally menu items could in some cases become as wide as
the whole screen, making working with menus rather hard.
Now we ellipsize at 50 characters in the middle of the string.
The idea is, since we have KatzeItem, KatzeList and KatzeArray
now, except for KatzeXbelItem's loading and saving XBEL the
interface is obsolete.
As a bonus, we actually save the trash again.