Merge branch 'upstream-unstable'
This commit is contained in:
commit
459dd9dffe
60 changed files with 20903 additions and 20191 deletions
24
ChangeLog
24
ChangeLog
|
@ -1,5 +1,29 @@
|
||||||
This file is licensed under the terms of the expat license, see the file EXPAT.
|
This file is licensed under the terms of the expat license, see the file EXPAT.
|
||||||
|
|
||||||
|
v0.4.0:
|
||||||
|
+ Provide buttons to choose how to startup after crash
|
||||||
|
+ Fix crash on corrupted datbase
|
||||||
|
+ Never delay URIs given as command line arguments
|
||||||
|
+ Space at the bottom of the page: Go to next page
|
||||||
|
+ Initialize session in app/ private before adding URIs
|
||||||
|
+ Add 'Last open tabs' option to Clear Private Data
|
||||||
|
+ Show kinetic scrolling option regardless of Hildon
|
||||||
|
+ Interpret Shift+Backspace as going forward
|
||||||
|
+ Advertise SVG images as a supported MIME type
|
||||||
|
+ Zoom in steps of 10% and support Ctr+=
|
||||||
|
+ Fix a crasher on invalid geo: links
|
||||||
|
+ Integrate Adblock and History List options in list
|
||||||
|
+ Skip empty lines, ignore subdocument rules in Adblock
|
||||||
|
+ Respect VALAC at configuration time
|
||||||
|
+ URL cache, faster JS generator, inline parsing in Adblock
|
||||||
|
+ Reuse source of webview instead of redownloading
|
||||||
|
+ Remove the description field from bookmark dialog
|
||||||
|
+ Add --log-file/ -l switch to log to a file
|
||||||
|
+ Pass through javascript: URIS from the command line
|
||||||
|
+ Tab and Window items in Unity Quicklist
|
||||||
|
+ Adjust the preferences dialog
|
||||||
|
+ Require WebKitGTK+ 1.1.17 and Vala 0.10
|
||||||
|
|
||||||
v0.3.6:
|
v0.3.6:
|
||||||
+ Track selected search engine per window
|
+ Track selected search engine per window
|
||||||
+ Improve preference dialogue size and alignments
|
+ Improve preference dialogue size and alignments
|
||||||
|
|
4
README
4
README
|
@ -11,9 +11,9 @@ Midori is a lightweight web browser.
|
||||||
* Customizable and extensible interface.
|
* Customizable and extensible interface.
|
||||||
* Extensions written in C.
|
* Extensions written in C.
|
||||||
|
|
||||||
Requirements: GTK+ 2.10, WebkitGTK+ 1.1.1, libXML2, libsoup 2.25.2, sqlite 3.0
|
Requirements: GTK+ 2.10, WebkitGTK+ 1.1.17, libXML2, libsoup 2.25.2, sqlite 3.0, Vala 0.10
|
||||||
|
|
||||||
Optional: Unique 0.9, libidn, docutils, libnotify, Vala
|
Optional: Unique 0.9, libidn, libnotify
|
||||||
|
|
||||||
For installation instructions read INSTALL.
|
For installation instructions read INSTALL.
|
||||||
|
|
||||||
|
|
|
@ -68,10 +68,12 @@ description {
|
||||||
<h1>{title}</h1>
|
<h1>{title}</h1>
|
||||||
<p id="message">{message}</p>
|
<p id="message">{message}</p>
|
||||||
<p id="description">{description}</p>
|
<p id="description">{description}</p>
|
||||||
<button onclick="location.reload()">
|
<form method="GET" action="{uri}">
|
||||||
|
<button type="submit" onclick="location.reload(); return false;">
|
||||||
<img src="{stock}/gtk-refresh"/>
|
<img src="{stock}/gtk-refresh"/>
|
||||||
<span>{tryagain}</span>
|
<span>{tryagain}</span>
|
||||||
</button>
|
</button>
|
||||||
|
</form>
|
||||||
</div>
|
</div>
|
||||||
<br style="clear: both;"/>
|
<br style="clear: both;"/>
|
||||||
</div>
|
</div>
|
||||||
|
|
|
@ -5,23 +5,23 @@
|
||||||
<head>
|
<head>
|
||||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
||||||
<title>midori:faq</title>
|
<title>midori:faq</title>
|
||||||
<meta name="generator" content="DokuWiki" />
|
<meta name="generator" content="DokuWiki"/>
|
||||||
<meta name="robots" content="index,follow" />
|
<meta name="robots" content="index,follow"/>
|
||||||
<meta name="date" content="2011-05-05T22:28:18+0200" />
|
<meta name="date" content="2011-05-05T22:28:18+0200"/>
|
||||||
<meta name="keywords" content="midori,faq" />
|
<meta name="keywords" content="midori,faq"/>
|
||||||
<link rel="search" type="application/opensearchdescription+xml" href="/lib/exe/opensearch.php" title="Xfce Wiki" />
|
<link rel="search" type="application/opensearchdescription+xml" href="/lib/exe/opensearch.php" title="Xfce Wiki"/>
|
||||||
<link rel="start" href="/" />
|
<link rel="start" href="/"/>
|
||||||
<link rel="contents" href="/midori/faq?do=index" title="Sitemap" />
|
<link rel="contents" href="/midori/faq?do=index" title="Sitemap"/>
|
||||||
<link rel="alternate" type="application/rss+xml" title="Recent Changes" href="/feed.php" />
|
<link rel="alternate" type="application/rss+xml" title="Recent Changes" href="/feed.php"/>
|
||||||
<link rel="alternate" type="application/rss+xml" title="Current Namespace" href="/feed.php?mode=list&ns=midori" />
|
<link rel="alternate" type="application/rss+xml" title="Current Namespace" href="/feed.php?mode=list&ns=midori"/>
|
||||||
<link rel="alternate" type="text/html" title="Plain HTML" href="/_export/xhtml/midori/faq" />
|
<link rel="alternate" type="text/html" title="Plain HTML" href="/_export/xhtml/midori/faq"/>
|
||||||
<link rel="alternate" type="text/plain" title="Wiki Markup" href="/_export/raw/midori/faq" />
|
<link rel="alternate" type="text/plain" title="Wiki Markup" href="/_export/raw/midori/faq"/>
|
||||||
<link rel="canonical" href="http://wiki.xfce.org/midori/faq" />
|
<link rel="canonical" href="http://wiki.xfce.org/midori/faq"/>
|
||||||
<link rel="stylesheet" type="text/css" href="faq.css" />
|
<link rel="stylesheet" type="text/css" href="faq.css" />
|
||||||
<script type="text/javascript" ><!--//--><![CDATA[//><!--
|
<script type="text/javascript"><!--//--><![CDATA[//><!--
|
||||||
var NS='midori';var SIG=' --- //[[christian@twotoasts.de|Christian Dywan]] 2011/05/16 01:12//';var JSINFO = {"id":"midori:faq","namespace":"midori"};
|
var NS='midori';var JSINFO = {"id":"midori:faq","namespace":"midori"};
|
||||||
//--><!]]></script>
|
//--><!]]></script>
|
||||||
<script type="text/javascript" charset="utf-8" src="/lib/exe/js.php?tseed=1305397590" ></script>
|
<script type="text/javascript" charset="utf-8" src="/lib/exe/js.php?tseed=1306663866"></script>
|
||||||
</head>
|
</head>
|
||||||
<body>
|
<body>
|
||||||
<div class="dokuwiki export">
|
<div class="dokuwiki export">
|
||||||
|
@ -71,6 +71,9 @@ var NS='midori';var SIG=' --- //[[christian@twotoasts.de|Christian Dywan]] 2011/
|
||||||
<p>
|
<p>
|
||||||
This is a list of frequently asked questions about the Midori Web Browser. Anyone feel free to improve and/ or extend this page, but keep it clean and easy to read for other Xfce users.
|
This is a list of frequently asked questions about the Midori Web Browser. Anyone feel free to improve and/ or extend this page, but keep it clean and easy to read for other Xfce users.
|
||||||
</p>
|
</p>
|
||||||
|
<p>
|
||||||
|
This is a snapshot of Frequently Asked Questions designated for offline viewing. The most recent version of this document can be found <a href="http://wiki.xfce.org/midori/faq">in the Xfce wiki</a>.
|
||||||
|
<p/>
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
<!-- EDIT1 SECTION "Midori - Frequently asked questions" [1-289] -->
|
<!-- EDIT1 SECTION "Midori - Frequently asked questions" [1-289] -->
|
||||||
|
@ -275,7 +278,7 @@ You need to have GStreamer plugins installed which implement the codecs.
|
||||||
</li>
|
</li>
|
||||||
<li class="level1"><div class="li"> With Arch Linux, you may need to install liboil explicitly if it is not installed already (see <a href="https://bugs.archlinux.org/task/20945" class="urlextern" title="https://bugs.archlinux.org/task/20945" rel="nofollow">this</a> bug report).</div>
|
<li class="level1"><div class="li"> With Arch Linux, you may need to install liboil explicitly if it is not installed already (see <a href="https://bugs.archlinux.org/task/20945" class="urlextern" title="https://bugs.archlinux.org/task/20945" rel="nofollow">this</a> bug report).</div>
|
||||||
</li>
|
</li>
|
||||||
<li class="level1"><div class="li"> You need plugins for Theora, gstreamer0.10-base and <acronym title="Motion Picture Experts Group">MPEG</acronym>-4 incluing aac (e.g. gst-plugins-faad), gstreamer0.10-bad. For WebM, you'll need plugins for vorbis (-base), matroska (-good), and vp8 (-bad). Have a look at <a href="http://www.gstreamer.net/documentation/plugins.html" class="urlextern" title="http://www.gstreamer.net/documentation/plugins.html" rel="nofollow">http://www.gstreamer.net/documentation/plugins.html</a> for details.</div>
|
<li class="level1"><div class="li"> You need plugins for Theora, gstreamer0.10-base and <acronym title="Moving Picture Experts Group">MPEG</acronym>-4 incluing aac (e.g. gst-plugins-faad), gstreamer0.10-bad. For WebM, you'll need plugins for vorbis (-base), matroska (-good), and vp8 (-bad). Have a look at <a href="http://www.gstreamer.net/documentation/plugins.html" class="urlextern" title="http://www.gstreamer.net/documentation/plugins.html" rel="nofollow">http://www.gstreamer.net/documentation/plugins.html</a> for details.</div>
|
||||||
</li>
|
</li>
|
||||||
<li class="level1"><div class="li"> For Youtube or Vimeo, you need WebKitGTK+ 1.1.20 or newer.</div>
|
<li class="level1"><div class="li"> For Youtube or Vimeo, you need WebKitGTK+ 1.1.20 or newer.</div>
|
||||||
</li>
|
</li>
|
||||||
|
|
|
@ -5,17 +5,27 @@ _Name=Midori
|
||||||
_GenericName=Web Browser
|
_GenericName=Web Browser
|
||||||
_Comment=Lightweight web browser
|
_Comment=Lightweight web browser
|
||||||
Categories=GTK;Network;WebBrowser;
|
Categories=GTK;Network;WebBrowser;
|
||||||
MimeType=text/html;application/xhtml+xml;x-scheme-handler/http;x-scheme-handler/https;x-scheme-handler/geo;
|
MimeType=text/html;application/xhtml+xml;x-scheme-handler/http;x-scheme-handler/https;x-scheme-handler/geo;image/svg+xml;
|
||||||
Exec=midori %u
|
Exec=midori %U
|
||||||
Icon=midori
|
Icon=midori
|
||||||
Terminal=false
|
Terminal=false
|
||||||
StartupNotify=true
|
StartupNotify=true
|
||||||
X-Osso-Type=application/x-executable
|
X-Osso-Type=application/x-executable
|
||||||
X-Osso-Service=midori
|
X-Osso-Service=midori
|
||||||
X-Ayatana-Desktop-Shortcuts=Private
|
X-Ayatana-Desktop-Shortcuts=TabNew;WindowNew;Private
|
||||||
|
|
||||||
|
[TabNew Shortcut Group]
|
||||||
|
Name=New _Tab
|
||||||
|
Exec=midori -e TabNew
|
||||||
|
TargetEnvironment=Unity
|
||||||
|
|
||||||
|
[WindowNew Shortcut Group]
|
||||||
|
Name=New _Window
|
||||||
|
Exec=midori -e WindowNew
|
||||||
|
TargetEnvironment=Unity
|
||||||
|
|
||||||
[Private Shortcut Group]
|
[Private Shortcut Group]
|
||||||
Name=P_rivate Browsing
|
Name=New P_rivate Browsing Window
|
||||||
Exec=midori --private
|
Exec=midori --private
|
||||||
TargetEnvironment=Unity
|
TargetEnvironment=Unity
|
||||||
|
|
||||||
|
|
|
@ -20,8 +20,6 @@
|
||||||
#include <unistd.h>
|
#include <unistd.h>
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#define HAVE_WEBKIT_RESOURCE_REQUEST WEBKIT_CHECK_VERSION (1, 1, 14)
|
|
||||||
|
|
||||||
#define SIGNATURE_SIZE 8
|
#define SIGNATURE_SIZE 8
|
||||||
#define USE_PATTERN_MATCHING 1
|
#define USE_PATTERN_MATCHING 1
|
||||||
#define CUSTOM_LIST_NAME "custom.list"
|
#define CUSTOM_LIST_NAME "custom.list"
|
||||||
|
@ -41,8 +39,10 @@
|
||||||
|
|
||||||
static GHashTable* pattern;
|
static GHashTable* pattern;
|
||||||
static GHashTable* keys;
|
static GHashTable* keys;
|
||||||
static gchar* blockcss = NULL;
|
static GHashTable* optslist;
|
||||||
static gchar* blockcssprivate = NULL;
|
static GHashTable* urlcache;
|
||||||
|
static GString* blockcss;
|
||||||
|
static GString* blockcssprivate;
|
||||||
static gchar* blockscript = NULL;
|
static gchar* blockscript = NULL;
|
||||||
#ifdef G_ENABLE_DEBUG
|
#ifdef G_ENABLE_DEBUG
|
||||||
static guint debug;
|
static guint debug;
|
||||||
|
@ -81,7 +81,8 @@ adblock_build_js (const gchar* style,
|
||||||
}
|
}
|
||||||
|
|
||||||
static gchar *
|
static gchar *
|
||||||
adblock_fixup_regexp (gchar* src);
|
adblock_fixup_regexp (const gchar* prefix,
|
||||||
|
gchar* src);
|
||||||
|
|
||||||
static void
|
static void
|
||||||
adblock_init_db ()
|
adblock_init_db ()
|
||||||
|
@ -92,8 +93,18 @@ adblock_init_db ()
|
||||||
keys = g_hash_table_new_full (g_str_hash, g_str_equal,
|
keys = g_hash_table_new_full (g_str_hash, g_str_equal,
|
||||||
(GDestroyNotify)g_free,
|
(GDestroyNotify)g_free,
|
||||||
(GDestroyNotify)g_regex_unref);
|
(GDestroyNotify)g_regex_unref);
|
||||||
katze_assign (blockcss, g_strdup ("z-non-exist"));
|
optslist = g_hash_table_new_full (g_str_hash, g_str_equal,
|
||||||
katze_assign (blockcssprivate, g_strdup (""));
|
NULL,
|
||||||
|
(GDestroyNotify)g_free);
|
||||||
|
urlcache = g_hash_table_new_full (g_str_hash, g_str_equal,
|
||||||
|
(GDestroyNotify)g_free,
|
||||||
|
(GDestroyNotify)g_free);
|
||||||
|
if (blockcss && blockcss->len > 0)
|
||||||
|
g_string_free (blockcss, TRUE);
|
||||||
|
if (blockcssprivate && blockcssprivate->len > 0)
|
||||||
|
g_string_free (blockcssprivate, TRUE);
|
||||||
|
blockcss = g_string_new ("z-non-exist");
|
||||||
|
blockcssprivate = g_string_new ("");
|
||||||
}
|
}
|
||||||
|
|
||||||
#if WEBKIT_CHECK_VERSION (1, 1, 2)
|
#if WEBKIT_CHECK_VERSION (1, 1, 2)
|
||||||
|
@ -106,7 +117,7 @@ adblock_download_notify_status_cb (WebKitDownload* download,
|
||||||
return;
|
return;
|
||||||
|
|
||||||
adblock_parse_file (path);
|
adblock_parse_file (path);
|
||||||
katze_assign (blockscript, adblock_build_js (blockcss, blockcssprivate));
|
katze_assign (blockscript, adblock_build_js (blockcss->str, blockcssprivate->str));
|
||||||
g_free (path);
|
g_free (path);
|
||||||
/* g_object_unref (download); */
|
/* g_object_unref (download); */
|
||||||
}
|
}
|
||||||
|
@ -189,13 +200,9 @@ adblock_reload_rules (MidoriExtension* extension,
|
||||||
}
|
}
|
||||||
g_strfreev (filters);
|
g_strfreev (filters);
|
||||||
|
|
||||||
katze_assign (blockscript, adblock_build_js (blockcss, blockcssprivate));
|
katze_assign (blockscript, adblock_build_js (blockcss->str, blockcssprivate->str));
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
|
||||||
adblock_browser_populate_tool_menu_cb (MidoriBrowser* browser,
|
|
||||||
GtkWidget* menu,
|
|
||||||
MidoriExtension* extension);
|
|
||||||
static void
|
static void
|
||||||
adblock_preferences_render_tick_cb (GtkTreeViewColumn* column,
|
adblock_preferences_render_tick_cb (GtkTreeViewColumn* column,
|
||||||
GtkCellRenderer* renderer,
|
GtkCellRenderer* renderer,
|
||||||
|
@ -561,8 +568,7 @@ adblock_get_preferences_dialog (MidoriExtension* extension)
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
adblock_menu_configure_filters_activate_cb (GtkWidget* menuitem,
|
adblock_open_preferences_cb (MidoriExtension* extension)
|
||||||
MidoriExtension* extension)
|
|
||||||
{
|
{
|
||||||
static GtkWidget* dialog = NULL;
|
static GtkWidget* dialog = NULL;
|
||||||
|
|
||||||
|
@ -577,20 +583,6 @@ adblock_menu_configure_filters_activate_cb (GtkWidget* menuitem,
|
||||||
gtk_window_present (GTK_WINDOW (dialog));
|
gtk_window_present (GTK_WINDOW (dialog));
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
|
||||||
adblock_browser_populate_tool_menu_cb (MidoriBrowser* browser,
|
|
||||||
GtkWidget* menu,
|
|
||||||
MidoriExtension* extension)
|
|
||||||
{
|
|
||||||
GtkWidget* menuitem;
|
|
||||||
|
|
||||||
menuitem = gtk_menu_item_new_with_mnemonic (_("Configure _Advertisement filters..."));
|
|
||||||
g_signal_connect (menuitem, "activate",
|
|
||||||
G_CALLBACK (adblock_menu_configure_filters_activate_cb), extension);
|
|
||||||
gtk_widget_show (menuitem);
|
|
||||||
gtk_menu_shell_append (GTK_MENU_SHELL (menu), menuitem);
|
|
||||||
}
|
|
||||||
|
|
||||||
static inline gboolean
|
static inline gboolean
|
||||||
adblock_check_filter_options (GRegex* regex,
|
adblock_check_filter_options (GRegex* regex,
|
||||||
const gchar* opts,
|
const gchar* opts,
|
||||||
|
@ -612,16 +604,18 @@ adblock_is_matched_by_pattern (const gchar* req_uri,
|
||||||
const gchar* page_uri)
|
const gchar* page_uri)
|
||||||
{
|
{
|
||||||
GHashTableIter iter;
|
GHashTableIter iter;
|
||||||
gpointer opts, regex;
|
gpointer patt, regex;
|
||||||
|
gchar* opts;
|
||||||
|
|
||||||
if (USE_PATTERN_MATCHING == 0)
|
if (USE_PATTERN_MATCHING == 0)
|
||||||
return FALSE;
|
return FALSE;
|
||||||
|
|
||||||
g_hash_table_iter_init (&iter, pattern);
|
g_hash_table_iter_init (&iter, pattern);
|
||||||
while (g_hash_table_iter_next (&iter, &opts, ®ex))
|
while (g_hash_table_iter_next (&iter, &patt, ®ex))
|
||||||
{
|
{
|
||||||
if (g_regex_match_full (regex, req_uri, -1, 0, 0, NULL, NULL))
|
if (g_regex_match_full (regex, req_uri, -1, 0, 0, NULL, NULL))
|
||||||
{
|
{
|
||||||
|
opts = g_hash_table_lookup (optslist, patt);
|
||||||
if (opts && adblock_check_filter_options (regex, opts, req_uri, page_uri) == TRUE)
|
if (opts && adblock_check_filter_options (regex, opts, req_uri, page_uri) == TRUE)
|
||||||
return FALSE;
|
return FALSE;
|
||||||
else
|
else
|
||||||
|
@ -635,8 +629,7 @@ adblock_is_matched_by_pattern (const gchar* req_uri,
|
||||||
}
|
}
|
||||||
|
|
||||||
static inline gboolean
|
static inline gboolean
|
||||||
adblock_is_matched_by_key (const gchar* opts,
|
adblock_is_matched_by_key (const gchar* req_uri,
|
||||||
const gchar* req_uri,
|
|
||||||
const gchar* page_uri)
|
const gchar* page_uri)
|
||||||
{
|
{
|
||||||
gchar* uri;
|
gchar* uri;
|
||||||
|
@ -644,16 +637,19 @@ adblock_is_matched_by_key (const gchar* opts,
|
||||||
int pos = 0;
|
int pos = 0;
|
||||||
GList* regex_bl = NULL;
|
GList* regex_bl = NULL;
|
||||||
|
|
||||||
uri = adblock_fixup_regexp ((gchar*)req_uri);
|
uri = adblock_fixup_regexp ("", (gchar*)req_uri);
|
||||||
len = strlen (uri);
|
len = strlen (uri);
|
||||||
for (pos = len - SIGNATURE_SIZE; pos >= 0; pos--)
|
for (pos = len - SIGNATURE_SIZE; pos >= 0; pos--)
|
||||||
{
|
{
|
||||||
gchar* sig = g_strndup (uri + pos, SIGNATURE_SIZE);
|
gchar* sig = g_strndup (uri + pos, SIGNATURE_SIZE);
|
||||||
GRegex* regex = g_hash_table_lookup (keys, sig);
|
GRegex* regex = g_hash_table_lookup (keys, sig);
|
||||||
|
gchar* opts;
|
||||||
|
|
||||||
if (regex && !g_list_find (regex_bl, regex))
|
if (regex && !g_list_find (regex_bl, regex))
|
||||||
{
|
{
|
||||||
if (g_regex_match_full (regex, req_uri, -1, 0, 0, NULL, NULL))
|
if (g_regex_match_full (regex, req_uri, -1, 0, 0, NULL, NULL))
|
||||||
{
|
{
|
||||||
|
opts = g_hash_table_lookup (optslist, sig);
|
||||||
g_free (sig);
|
g_free (sig);
|
||||||
if (opts && adblock_check_filter_options (regex, opts, req_uri, page_uri))
|
if (opts && adblock_check_filter_options (regex, opts, req_uri, page_uri))
|
||||||
{
|
{
|
||||||
|
@ -679,26 +675,39 @@ adblock_is_matched_by_key (const gchar* opts,
|
||||||
}
|
}
|
||||||
|
|
||||||
static gboolean
|
static gboolean
|
||||||
adblock_is_matched (const gchar* opts,
|
adblock_is_matched (const gchar* req_uri,
|
||||||
const gchar* req_uri,
|
|
||||||
const gchar* page_uri)
|
const gchar* page_uri)
|
||||||
{
|
{
|
||||||
|
gchar* value;
|
||||||
|
|
||||||
if (adblock_is_matched_by_key (opts, req_uri, page_uri) == TRUE)
|
if ((value = g_hash_table_lookup (urlcache, req_uri)))
|
||||||
return TRUE;
|
{
|
||||||
|
if (value[0] == '0')
|
||||||
|
return FALSE;
|
||||||
else
|
else
|
||||||
return adblock_is_matched_by_pattern (req_uri, page_uri);
|
return TRUE;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (adblock_is_matched_by_key (req_uri, page_uri))
|
||||||
|
{
|
||||||
|
g_hash_table_insert (urlcache, g_strdup (req_uri), g_strdup("1"));
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (adblock_is_matched_by_pattern (req_uri, page_uri))
|
||||||
|
{
|
||||||
|
g_hash_table_insert (urlcache, g_strdup (req_uri), g_strdup("1"));
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
|
g_hash_table_insert (urlcache, g_strdup (req_uri), g_strdup("0"));
|
||||||
|
return FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
#if HAVE_WEBKIT_RESOURCE_REQUEST
|
|
||||||
static gchar*
|
static gchar*
|
||||||
adblock_prepare_urihider_js (GList* uris)
|
adblock_prepare_urihider_js (GList* uris)
|
||||||
{
|
{
|
||||||
GList* li = NULL;
|
GList* li = NULL;
|
||||||
gchar* out;
|
GString* js = g_string_new (
|
||||||
gchar* cmd = g_strdup ("");
|
|
||||||
gchar* tmp;
|
|
||||||
const char *js =
|
|
||||||
"(function() {"
|
"(function() {"
|
||||||
"function getElementsByAttribute (strTagName, strAttributeName, arrAttributeValue) {"
|
"function getElementsByAttribute (strTagName, strAttributeName, arrAttributeValue) {"
|
||||||
" var arrElements = document.getElementsByTagName (strTagName);"
|
" var arrElements = document.getElementsByTagName (strTagName);"
|
||||||
|
@ -724,20 +733,14 @@ adblock_prepare_urihider_js (GList* uris)
|
||||||
" oElements[i].style.height = '0';"
|
" oElements[i].style.height = '0';"
|
||||||
" }"
|
" }"
|
||||||
"};"
|
"};"
|
||||||
"var uris=new Array ();"
|
"var uris=new Array ();");
|
||||||
"%s"
|
|
||||||
"hideElementBySrc (uris);"
|
|
||||||
"})();";
|
|
||||||
|
|
||||||
for (li = uris; li != NULL; li = g_list_next (li))
|
for (li = uris; li != NULL; li = g_list_next (li))
|
||||||
{
|
g_string_append_printf (js, "uris.push ('%s');", (gchar*)li->data);
|
||||||
tmp = g_strdup_printf ("uris.push ('%s');%s", (gchar*)li->data, cmd);
|
|
||||||
katze_assign (cmd, tmp);
|
|
||||||
}
|
|
||||||
out = g_strdup_printf (js, cmd);
|
|
||||||
g_free (cmd);
|
|
||||||
|
|
||||||
return out;
|
g_string_append (js, "hideElementBySrc (uris);})();");
|
||||||
|
|
||||||
|
return g_string_free (js, FALSE);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
|
@ -779,8 +782,7 @@ adblock_resource_request_starting_cb (WebKitWebView* web_view,
|
||||||
if (debug == 2)
|
if (debug == 2)
|
||||||
g_test_timer_start ();
|
g_test_timer_start ();
|
||||||
#endif
|
#endif
|
||||||
/* TODO: opts should be defined */
|
if (adblock_is_matched (req_uri, page_uri))
|
||||||
if (adblock_is_matched (NULL, req_uri, page_uri))
|
|
||||||
{
|
{
|
||||||
blocked_uris = g_object_get_data (G_OBJECT (web_view), "blocked-uris");
|
blocked_uris = g_object_get_data (G_OBJECT (web_view), "blocked-uris");
|
||||||
blocked_uris = g_list_prepend (blocked_uris, g_strdup (req_uri));
|
blocked_uris = g_list_prepend (blocked_uris, g_strdup (req_uri));
|
||||||
|
@ -793,39 +795,7 @@ adblock_resource_request_starting_cb (WebKitWebView* web_view,
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
}
|
}
|
||||||
#else
|
|
||||||
static void
|
|
||||||
adblock_session_request_queued_cb (SoupSession* session,
|
|
||||||
SoupMessage* msg)
|
|
||||||
{
|
|
||||||
SoupURI* soup_uri;
|
|
||||||
gchar* req_uri;
|
|
||||||
gchar* page_uri;
|
|
||||||
|
|
||||||
if (msg->method && !strncmp (msg->method, "POST", 4))
|
|
||||||
return;
|
|
||||||
|
|
||||||
soup_uri = soup_message_get_uri (msg);
|
|
||||||
req_uri = soup_uri_to_string (soup_uri, FALSE);
|
|
||||||
|
|
||||||
page_uri = NULL; /* FIXME */
|
|
||||||
|
|
||||||
if (!page_uri || !strcmp (page_uri, "about:blank"))
|
|
||||||
page_uri = req_uri;
|
|
||||||
|
|
||||||
if (adblock_is_matched (NULL, req_uri, page_uri))
|
|
||||||
{
|
|
||||||
soup_uri = soup_uri_new ("http://.invalid");
|
|
||||||
soup_message_set_uri (msg, soup_uri);
|
|
||||||
soup_uri_free (soup_uri);
|
|
||||||
g_free (req_uri);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
g_free (req_uri);
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if WEBKIT_CHECK_VERSION (1, 1, 15)
|
|
||||||
static void
|
static void
|
||||||
adblock_custom_block_image_cb (GtkWidget* widget,
|
adblock_custom_block_image_cb (GtkWidget* widget,
|
||||||
MidoriExtension* extension)
|
MidoriExtension* extension)
|
||||||
|
@ -926,15 +896,12 @@ adblock_populate_popup_cb (WebKitWebView* web_view,
|
||||||
g_signal_connect (menuitem, "activate",
|
g_signal_connect (menuitem, "activate",
|
||||||
G_CALLBACK (adblock_custom_block_image_cb), extension);
|
G_CALLBACK (adblock_custom_block_image_cb), extension);
|
||||||
}
|
}
|
||||||
#endif
|
|
||||||
|
|
||||||
#if HAVE_WEBKIT_RESOURCE_REQUEST
|
|
||||||
static void
|
static void
|
||||||
adblock_load_finished_cb (WebKitWebView *web_view,
|
adblock_load_finished_cb (WebKitWebView *web_view,
|
||||||
WebKitWebFrame *web_frame,
|
WebKitWebFrame *web_frame,
|
||||||
gpointer user_data)
|
gpointer user_data)
|
||||||
{
|
{
|
||||||
JSContextRef js_context = webkit_web_frame_get_global_context (web_frame);
|
|
||||||
GList* uris = g_object_get_data (G_OBJECT (web_view), "blocked-uris");
|
GList* uris = g_object_get_data (G_OBJECT (web_view), "blocked-uris");
|
||||||
gchar* script;
|
gchar* script;
|
||||||
GList* li;
|
GList* li;
|
||||||
|
@ -944,14 +911,12 @@ adblock_load_finished_cb (WebKitWebView *web_view,
|
||||||
|
|
||||||
script = adblock_prepare_urihider_js (uris);
|
script = adblock_prepare_urihider_js (uris);
|
||||||
webkit_web_view_execute_script (web_view, script);
|
webkit_web_view_execute_script (web_view, script);
|
||||||
sokoke_js_script_eval (js_context, script, NULL);
|
|
||||||
li = NULL;
|
li = NULL;
|
||||||
for (li = uris; li != NULL; li = g_list_next (li))
|
for (li = uris; li != NULL; li = g_list_next (li))
|
||||||
uris = g_list_remove (uris, li->data);
|
uris = g_list_remove (uris, li->data);
|
||||||
g_free (script);
|
g_free (script);
|
||||||
g_object_set_data (G_OBJECT (web_view), "blocked-uris", uris);
|
g_object_set_data (G_OBJECT (web_view), "blocked-uris", uris);
|
||||||
}
|
}
|
||||||
#endif
|
|
||||||
|
|
||||||
static void
|
static void
|
||||||
adblock_window_object_cleared_cb (WebKitWebView* web_view,
|
adblock_window_object_cleared_cb (WebKitWebView* web_view,
|
||||||
|
@ -959,7 +924,7 @@ adblock_window_object_cleared_cb (WebKitWebView* web_view,
|
||||||
JSContextRef js_context,
|
JSContextRef js_context,
|
||||||
JSObjectRef js_window)
|
JSObjectRef js_window)
|
||||||
{
|
{
|
||||||
webkit_web_view_execute_script (web_view, blockscript);
|
g_free (sokoke_js_script_eval (js_context, blockscript, NULL));
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
|
@ -968,22 +933,17 @@ adblock_add_tab_cb (MidoriBrowser* browser,
|
||||||
MidoriExtension* extension)
|
MidoriExtension* extension)
|
||||||
{
|
{
|
||||||
GtkWidget* web_view = midori_view_get_web_view (view);
|
GtkWidget* web_view = midori_view_get_web_view (view);
|
||||||
#if HAVE_WEBKIT_RESOURCE_REQUEST
|
|
||||||
GtkWidget* image = g_object_get_data (G_OBJECT (browser), "status-image");
|
GtkWidget* image = g_object_get_data (G_OBJECT (browser), "status-image");
|
||||||
#endif
|
|
||||||
|
|
||||||
g_signal_connect (web_view, "window-object-cleared",
|
g_signal_connect (web_view, "window-object-cleared",
|
||||||
G_CALLBACK (adblock_window_object_cleared_cb), 0);
|
G_CALLBACK (adblock_window_object_cleared_cb), 0);
|
||||||
#if WEBKIT_CHECK_VERSION (1, 1, 15)
|
|
||||||
g_signal_connect_after (web_view, "populate-popup",
|
g_signal_connect_after (web_view, "populate-popup",
|
||||||
G_CALLBACK (adblock_populate_popup_cb), extension);
|
G_CALLBACK (adblock_populate_popup_cb), extension);
|
||||||
#endif
|
|
||||||
#if HAVE_WEBKIT_RESOURCE_REQUEST
|
|
||||||
g_signal_connect (web_view, "resource-request-starting",
|
g_signal_connect (web_view, "resource-request-starting",
|
||||||
G_CALLBACK (adblock_resource_request_starting_cb), image);
|
G_CALLBACK (adblock_resource_request_starting_cb), image);
|
||||||
g_signal_connect (web_view, "load-finished",
|
g_signal_connect (web_view, "load-finished",
|
||||||
G_CALLBACK (adblock_load_finished_cb), image);
|
G_CALLBACK (adblock_load_finished_cb), image);
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
|
@ -1018,24 +978,25 @@ adblock_app_add_browser_cb (MidoriApp* app,
|
||||||
(GtkCallback)adblock_add_tab_foreach_cb, extension);
|
(GtkCallback)adblock_add_tab_foreach_cb, extension);
|
||||||
g_signal_connect (browser, "add-tab",
|
g_signal_connect (browser, "add-tab",
|
||||||
G_CALLBACK (adblock_add_tab_cb), extension);
|
G_CALLBACK (adblock_add_tab_cb), extension);
|
||||||
g_signal_connect (browser, "populate-tool-menu",
|
g_signal_connect (extension, "open-preferences",
|
||||||
G_CALLBACK (adblock_browser_populate_tool_menu_cb), extension);
|
G_CALLBACK (adblock_open_preferences_cb), extension);
|
||||||
g_signal_connect (extension, "deactivate",
|
g_signal_connect (extension, "deactivate",
|
||||||
G_CALLBACK (adblock_deactivate_cb), browser);
|
G_CALLBACK (adblock_deactivate_cb), browser);
|
||||||
g_object_unref (statusbar);
|
g_object_unref (statusbar);
|
||||||
}
|
}
|
||||||
|
|
||||||
static gchar *
|
static gchar *
|
||||||
adblock_fixup_regexp (gchar* src)
|
adblock_fixup_regexp (const gchar* prefix,
|
||||||
|
gchar* src)
|
||||||
{
|
{
|
||||||
gchar* dst;
|
gchar* dst;
|
||||||
GString* str;
|
GString* str;
|
||||||
int len;
|
int len = 0;
|
||||||
|
|
||||||
if (!src)
|
if (!src)
|
||||||
return NULL;
|
return NULL;
|
||||||
|
|
||||||
str = g_string_new ("");
|
str = g_string_new (prefix);
|
||||||
|
|
||||||
/* lets strip first .* */
|
/* lets strip first .* */
|
||||||
if (src[0] == '*')
|
if (src[0] == '*')
|
||||||
|
@ -1049,47 +1010,40 @@ adblock_fixup_regexp (gchar* src)
|
||||||
{
|
{
|
||||||
case '*':
|
case '*':
|
||||||
g_string_append (str, ".*");
|
g_string_append (str, ".*");
|
||||||
|
len += 2;
|
||||||
break;
|
break;
|
||||||
/*case '.':
|
/*case '.':
|
||||||
g_string_append (str, "\\.");
|
g_string_append (str, "\\.");
|
||||||
break;*/
|
break;*/
|
||||||
case '?':
|
case '?':
|
||||||
g_string_append (str, "\\?");
|
g_string_append (str, "\\?");
|
||||||
|
len += 2;
|
||||||
break;
|
break;
|
||||||
case '|':
|
case '|':
|
||||||
g_string_append (str, "");
|
|
||||||
break;
|
|
||||||
/* FIXME: We actually need to match :[0-9]+ or '/'. Sign means
|
/* FIXME: We actually need to match :[0-9]+ or '/'. Sign means
|
||||||
"here could be port number or nothing". So bla.com^ will match
|
"here could be port number or nothing". So bla.com^ will match
|
||||||
bla.com/ or bla.com:8080/ but not bla.com.au/ */
|
bla.com/ or bla.com:8080/ but not bla.com.au/ */
|
||||||
case '^':
|
case '^':
|
||||||
g_string_append (str, "");
|
|
||||||
break;
|
|
||||||
case '+':
|
case '+':
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
g_string_append_printf (str,"%c", *src);
|
g_string_append_printf (str,"%c", *src);
|
||||||
|
len++;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
src++;
|
src++;
|
||||||
}
|
}
|
||||||
while (*src);
|
while (*src);
|
||||||
|
|
||||||
dst = g_strdup (str->str);
|
dst = g_string_free (str, FALSE);
|
||||||
g_string_free (str, TRUE);
|
|
||||||
/* We dont need .* in the end of url. Thats stupid */
|
/* We dont need .* in the end of url. Thats stupid */
|
||||||
len = strlen (dst);
|
|
||||||
if (dst && dst[len-1] == '*' && dst[len-2] == '.')
|
if (dst && dst[len-1] == '*' && dst[len-2] == '.')
|
||||||
{
|
|
||||||
dst[len-2] = '\0';
|
dst[len-2] = '\0';
|
||||||
}
|
|
||||||
return dst;
|
return dst;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
adblock_compile_regexp (GHashTable* tbl,
|
adblock_compile_regexp (gchar* patt,
|
||||||
GHashTable* keystbl,
|
|
||||||
gchar* patt,
|
|
||||||
gchar* opts)
|
gchar* opts)
|
||||||
{
|
{
|
||||||
GRegex* regex;
|
GRegex* regex;
|
||||||
|
@ -1097,6 +1051,9 @@ adblock_compile_regexp (GHashTable* tbl,
|
||||||
int pos = 0;
|
int pos = 0;
|
||||||
gchar *sig;
|
gchar *sig;
|
||||||
|
|
||||||
|
if (!patt)
|
||||||
|
return;
|
||||||
|
|
||||||
/* TODO: Play with optimization flags */
|
/* TODO: Play with optimization flags */
|
||||||
regex = g_regex_new (patt, G_REGEX_OPTIMIZE,
|
regex = g_regex_new (patt, G_REGEX_OPTIMIZE,
|
||||||
G_REGEX_MATCH_NOTEMPTY, &error);
|
G_REGEX_MATCH_NOTEMPTY, &error);
|
||||||
|
@ -1111,81 +1068,95 @@ adblock_compile_regexp (GHashTable* tbl,
|
||||||
{
|
{
|
||||||
int len = strlen (patt);
|
int len = strlen (patt);
|
||||||
int signature_count = 0;
|
int signature_count = 0;
|
||||||
|
|
||||||
for (pos = len - SIGNATURE_SIZE; pos >= 0; pos--) {
|
for (pos = len - SIGNATURE_SIZE; pos >= 0; pos--) {
|
||||||
sig = g_strndup (patt + pos, SIGNATURE_SIZE);
|
sig = g_strndup (patt + pos, SIGNATURE_SIZE);
|
||||||
if (!g_regex_match_simple ("[\\*]", sig, G_REGEX_UNGREEDY, G_REGEX_MATCH_NOTEMPTY) &&
|
if (!g_regex_match_simple ("[\\*]", sig, G_REGEX_UNGREEDY, G_REGEX_MATCH_NOTEMPTY) &&
|
||||||
!g_hash_table_lookup (keystbl, sig))
|
!g_hash_table_lookup (keys, sig))
|
||||||
{
|
{
|
||||||
adblock_debug ("sig: %s %s", sig, patt);
|
adblock_debug ("sig: %s %s", sig, patt);
|
||||||
g_hash_table_insert (keystbl, sig, regex);
|
g_hash_table_insert (keys, sig, regex);
|
||||||
|
g_hash_table_insert (optslist, sig, g_strdup (opts));
|
||||||
signature_count++;
|
signature_count++;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
if (g_regex_match_simple ("^\\*", sig, G_REGEX_UNGREEDY, G_REGEX_MATCH_NOTEMPTY) &&
|
if (g_regex_match_simple ("^\\*", sig, G_REGEX_UNGREEDY, G_REGEX_MATCH_NOTEMPTY) &&
|
||||||
!g_hash_table_lookup (tbl, opts))
|
!g_hash_table_lookup (pattern, patt))
|
||||||
{
|
{
|
||||||
adblock_debug ("patt2: %s %s", sig, patt);
|
adblock_debug ("patt2: %s %s", sig, patt);
|
||||||
g_hash_table_insert (tbl, opts, regex);
|
g_hash_table_insert (pattern, patt, regex);
|
||||||
|
g_hash_table_insert (optslist, patt, g_strdup (opts));
|
||||||
}
|
}
|
||||||
g_free (sig);
|
g_free (sig);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (signature_count > 1 && g_hash_table_lookup (tbl, opts))
|
if (signature_count > 1 && g_hash_table_lookup (pattern, patt))
|
||||||
g_hash_table_steal (tbl, opts);
|
g_hash_table_steal (pattern, patt);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
adblock_debug ("patt: %s%s", patt, "");
|
adblock_debug ("patt: %s%s", patt, "");
|
||||||
/* Pattern is a regexp chars */
|
/* Pattern is a regexp chars */
|
||||||
g_hash_table_insert (tbl, opts, regex);
|
g_hash_table_insert (pattern, patt, regex);
|
||||||
|
g_hash_table_insert (optslist, patt, g_strdup (opts));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static gchar*
|
static inline gchar*
|
||||||
adblock_add_url_pattern (gchar* format,
|
adblock_add_url_pattern (gchar* prefix,
|
||||||
gchar* type,
|
gchar* type,
|
||||||
gchar* line)
|
gchar* line)
|
||||||
{
|
{
|
||||||
gchar** data;
|
gchar** data;
|
||||||
gchar* patt;
|
gchar* patt;
|
||||||
gchar* fixed_patt;
|
|
||||||
gchar* format_patt;
|
gchar* format_patt;
|
||||||
gchar* opts;
|
gchar* opts;
|
||||||
|
|
||||||
data = g_strsplit (line, "$", -1);
|
data = g_strsplit (line, "$", -1);
|
||||||
if (data && data[0] && data[1] && data[2])
|
if (!data || !data[0])
|
||||||
|
return NULL;
|
||||||
|
|
||||||
|
if (data[1] && data[2])
|
||||||
{
|
{
|
||||||
patt = g_strdup_printf ("%s%s", data[0], data[1]);
|
patt = g_strconcat (data[0], data[1], NULL);
|
||||||
opts = g_strdup_printf ("type=%s,regexp=%s,%s", type, patt, data[2]);
|
opts = g_strconcat (type, ",", data[2], NULL);
|
||||||
|
g_strfreev (data);
|
||||||
}
|
}
|
||||||
else if (data && data[0] && data[1])
|
else if (data[1])
|
||||||
{
|
{
|
||||||
patt = g_strdup (data[0]);
|
patt = data[0];
|
||||||
opts = g_strdup_printf ("type=%s,regexp=%s,%s", type, patt, data[1]);
|
opts = g_strconcat (type, ",", data[1], NULL);
|
||||||
|
g_free (data[1]);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
patt = g_strdup (data[0]);
|
patt = data[0];
|
||||||
opts = g_strdup_printf ("type=%s,regexp=%s", type, patt);
|
opts = g_strdup (type);
|
||||||
}
|
}
|
||||||
|
|
||||||
fixed_patt = adblock_fixup_regexp (patt);
|
if (g_regex_match_simple ("subdocument", opts,
|
||||||
format_patt = g_strdup_printf (format, fixed_patt);
|
G_REGEX_CASELESS, G_REGEX_MATCH_NOTEMPTY))
|
||||||
|
{
|
||||||
|
g_free (patt);
|
||||||
|
g_free (opts);
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
format_patt = adblock_fixup_regexp (prefix, patt);
|
||||||
|
|
||||||
adblock_debug ("got: %s opts %s", format_patt, opts);
|
adblock_debug ("got: %s opts %s", format_patt, opts);
|
||||||
adblock_compile_regexp (pattern, keys, format_patt, opts);
|
adblock_compile_regexp (format_patt, opts);
|
||||||
|
|
||||||
g_strfreev (data);
|
g_free (opts);
|
||||||
g_free (patt);
|
g_free (patt);
|
||||||
g_free (fixed_patt);
|
|
||||||
return format_patt;
|
return format_patt;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static inline void
|
||||||
adblock_frame_add (gchar* line)
|
adblock_frame_add (gchar* line)
|
||||||
{
|
{
|
||||||
gchar* new_blockcss;
|
const gchar* separator = " , ";
|
||||||
|
|
||||||
(void)*line++;
|
(void)*line++;
|
||||||
(void)*line++;
|
(void)*line++;
|
||||||
|
@ -1196,15 +1167,14 @@ adblock_frame_add (gchar* line)
|
||||||
{
|
{
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
new_blockcss = g_strdup_printf ("%s, %s", blockcss, line);
|
g_string_append (blockcss, separator);
|
||||||
katze_assign (blockcss, new_blockcss);
|
g_string_append (blockcss, line);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static inline void
|
||||||
adblock_frame_add_private (const gchar* line,
|
adblock_frame_add_private (const gchar* line,
|
||||||
const gchar* sep)
|
const gchar* sep)
|
||||||
{
|
{
|
||||||
gchar* new_blockcss;
|
|
||||||
gchar** data;
|
gchar** data;
|
||||||
data = g_strsplit (line, sep, 2);
|
data = g_strsplit (line, sep, 2);
|
||||||
|
|
||||||
|
@ -1226,17 +1196,15 @@ adblock_frame_add_private (const gchar* line,
|
||||||
domains = g_strsplit (data[0], ",", -1);
|
domains = g_strsplit (data[0], ",", -1);
|
||||||
for (i = 0; domains[i]; i++)
|
for (i = 0; domains[i]; i++)
|
||||||
{
|
{
|
||||||
new_blockcss = g_strdup_printf ("%s;\nsites['%s']+=',%s'",
|
g_string_append_printf (blockcssprivate, ";sites['%s']+=',%s'",
|
||||||
blockcssprivate, g_strstrip (domains[i]), data[1]);
|
g_strstrip (domains[i]), data[1]);
|
||||||
katze_assign (blockcssprivate, new_blockcss);
|
|
||||||
}
|
}
|
||||||
g_strfreev (domains);
|
g_strfreev (domains);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
new_blockcss = g_strdup_printf ("%s;\nsites['%s']+=',%s'",
|
g_string_append_printf (blockcssprivate, ";sites['%s']+=',%s'",
|
||||||
blockcssprivate, data[0], data[1]);
|
data[0], data[1]);
|
||||||
katze_assign (blockcssprivate, new_blockcss);
|
|
||||||
}
|
}
|
||||||
g_strfreev (data);
|
g_strfreev (data);
|
||||||
}
|
}
|
||||||
|
@ -1257,6 +1225,10 @@ adblock_parse_line (gchar* line)
|
||||||
if (line[0] == '[')
|
if (line[0] == '[')
|
||||||
return NULL;
|
return NULL;
|
||||||
|
|
||||||
|
/* Skip garbage */
|
||||||
|
if (line[0] == ' ' || !line[0])
|
||||||
|
return NULL;
|
||||||
|
|
||||||
/* Got CSS block hider */
|
/* Got CSS block hider */
|
||||||
if (line[0] == '#' && line[1] == '#' )
|
if (line[0] == '#' && line[1] == '#' )
|
||||||
{
|
{
|
||||||
|
@ -1285,14 +1257,14 @@ adblock_parse_line (gchar* line)
|
||||||
{
|
{
|
||||||
(void)*line++;
|
(void)*line++;
|
||||||
(void)*line++;
|
(void)*line++;
|
||||||
return adblock_add_url_pattern ("%s", "fulluri", line);
|
return adblock_add_url_pattern ("", "fulluri", line);
|
||||||
}
|
}
|
||||||
if (line[0] == '|')
|
if (line[0] == '|')
|
||||||
{
|
{
|
||||||
(void)*line++;
|
(void)*line++;
|
||||||
return adblock_add_url_pattern ("^%s", "fulluri", line);
|
return adblock_add_url_pattern ("^", "fulluri", line);
|
||||||
}
|
}
|
||||||
return adblock_add_url_pattern ("%s", "uri", line);
|
return adblock_add_url_pattern ("", "uri", line);
|
||||||
}
|
}
|
||||||
|
|
||||||
static gboolean
|
static gboolean
|
||||||
|
@ -1304,7 +1276,7 @@ adblock_parse_file (gchar* path)
|
||||||
if ((file = g_fopen (path, "r")))
|
if ((file = g_fopen (path, "r")))
|
||||||
{
|
{
|
||||||
while (fgets (line, 2000, file))
|
while (fgets (line, 2000, file))
|
||||||
g_free (adblock_parse_line (line));
|
adblock_parse_line (line);
|
||||||
fclose (file);
|
fclose (file);
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
@ -1317,24 +1289,18 @@ adblock_deactivate_tabs (MidoriView* view,
|
||||||
MidoriExtension* extension)
|
MidoriExtension* extension)
|
||||||
{
|
{
|
||||||
GtkWidget* web_view = midori_view_get_web_view (view);
|
GtkWidget* web_view = midori_view_get_web_view (view);
|
||||||
#if HAVE_WEBKIT_RESOURCE_REQUEST
|
|
||||||
GtkWidget* image = g_object_get_data (G_OBJECT (browser), "status-image");
|
GtkWidget* image = g_object_get_data (G_OBJECT (browser), "status-image");
|
||||||
#endif
|
|
||||||
|
|
||||||
g_signal_handlers_disconnect_by_func (
|
g_signal_handlers_disconnect_by_func (
|
||||||
browser, adblock_add_tab_cb, extension);
|
browser, adblock_add_tab_cb, extension);
|
||||||
g_signal_handlers_disconnect_by_func (
|
g_signal_handlers_disconnect_by_func (
|
||||||
web_view, adblock_window_object_cleared_cb, 0);
|
web_view, adblock_window_object_cleared_cb, 0);
|
||||||
#if WEBKIT_CHECK_VERSION (1, 1, 15)
|
|
||||||
g_signal_handlers_disconnect_by_func (
|
g_signal_handlers_disconnect_by_func (
|
||||||
web_view, adblock_populate_popup_cb, extension);
|
web_view, adblock_populate_popup_cb, extension);
|
||||||
#endif
|
|
||||||
#if HAVE_WEBKIT_RESOURCE_REQUEST
|
|
||||||
g_signal_handlers_disconnect_by_func (
|
g_signal_handlers_disconnect_by_func (
|
||||||
web_view, adblock_resource_request_starting_cb, image);
|
web_view, adblock_resource_request_starting_cb, image);
|
||||||
g_signal_handlers_disconnect_by_func (
|
g_signal_handlers_disconnect_by_func (
|
||||||
web_view, adblock_load_finished_cb, image);
|
web_view, adblock_load_finished_cb, image);
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
|
@ -1343,14 +1309,8 @@ adblock_deactivate_cb (MidoriExtension* extension,
|
||||||
{
|
{
|
||||||
MidoriApp* app = midori_extension_get_app (extension);
|
MidoriApp* app = midori_extension_get_app (extension);
|
||||||
|
|
||||||
#if !HAVE_WEBKIT_RESOURCE_REQUEST
|
|
||||||
g_signal_handlers_disconnect_matched (webkit_get_default_session (),
|
|
||||||
G_SIGNAL_MATCH_FUNC,
|
|
||||||
g_signal_lookup ("request-queued", SOUP_TYPE_SESSION), 0,
|
|
||||||
NULL, adblock_session_request_queued_cb, NULL);
|
|
||||||
#endif
|
|
||||||
g_signal_handlers_disconnect_by_func (
|
g_signal_handlers_disconnect_by_func (
|
||||||
browser, adblock_browser_populate_tool_menu_cb, extension);
|
browser, adblock_open_preferences_cb, extension);
|
||||||
g_signal_handlers_disconnect_by_func (
|
g_signal_handlers_disconnect_by_func (
|
||||||
extension, adblock_deactivate_cb, browser);
|
extension, adblock_deactivate_cb, browser);
|
||||||
g_signal_handlers_disconnect_by_func (
|
g_signal_handlers_disconnect_by_func (
|
||||||
|
@ -1359,9 +1319,14 @@ adblock_deactivate_cb (MidoriExtension* extension,
|
||||||
browser, adblock_add_tab_cb, extension);
|
browser, adblock_add_tab_cb, extension);
|
||||||
midori_browser_foreach (browser, (GtkCallback)adblock_deactivate_tabs, browser);
|
midori_browser_foreach (browser, (GtkCallback)adblock_deactivate_tabs, browser);
|
||||||
|
|
||||||
katze_assign (blockcss, NULL);
|
if (blockcss)
|
||||||
katze_assign (blockcssprivate, NULL);
|
g_string_free (blockcss, TRUE);
|
||||||
|
if (blockcssprivate)
|
||||||
|
g_string_free (blockcssprivate, TRUE);
|
||||||
|
blockcssprivate = blockcss = NULL;
|
||||||
g_hash_table_destroy (pattern);
|
g_hash_table_destroy (pattern);
|
||||||
|
g_hash_table_destroy (optslist);
|
||||||
|
g_hash_table_destroy (urlcache);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
|
@ -1373,12 +1338,6 @@ adblock_activate_cb (MidoriExtension* extension,
|
||||||
#endif
|
#endif
|
||||||
KatzeArray* browsers;
|
KatzeArray* browsers;
|
||||||
MidoriBrowser* browser;
|
MidoriBrowser* browser;
|
||||||
#if !HAVE_WEBKIT_RESOURCE_REQUEST
|
|
||||||
SoupSession* session = webkit_get_default_session ();
|
|
||||||
|
|
||||||
g_signal_connect (session, "request-queued",
|
|
||||||
G_CALLBACK (adblock_session_request_queued_cb), NULL);
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifdef G_ENABLE_DEBUG
|
#ifdef G_ENABLE_DEBUG
|
||||||
debug_mode = g_getenv ("MIDORI_ADBLOCK");
|
debug_mode = g_getenv ("MIDORI_ADBLOCK");
|
||||||
|
@ -1452,28 +1411,28 @@ test_adblock_pattern (void)
|
||||||
adblock_parse_file (filename);
|
adblock_parse_file (filename);
|
||||||
|
|
||||||
g_test_timer_start ();
|
g_test_timer_start ();
|
||||||
g_assert (adblock_is_matched (NULL, "http://www.engadget.com/_uac/adpage.html", ""));
|
g_assert (adblock_is_matched ("http://www.engadget.com/_uac/adpage.html", ""));
|
||||||
g_assert (adblock_is_matched (NULL, "http://test.dom/test?var=1", ""));
|
g_assert (adblock_is_matched ("http://test.dom/test?var=1", ""));
|
||||||
g_assert (adblock_is_matched (NULL, "http://ads.foo.bar/teddy", ""));
|
g_assert (adblock_is_matched ("http://ads.foo.bar/teddy", ""));
|
||||||
g_assert (!adblock_is_matched (NULL, "http://ads.fuu.bar/teddy", ""));
|
g_assert (!adblock_is_matched ("http://ads.fuu.bar/teddy", ""));
|
||||||
g_assert (adblock_is_matched (NULL, "https://ads.bogus.name/blub", ""));
|
g_assert (adblock_is_matched ("https://ads.bogus.name/blub", ""));
|
||||||
g_assert (adblock_is_matched (NULL, "http://ads.bla.blub/kitty", ""));
|
g_assert (adblock_is_matched ("http://ads.bla.blub/kitty", ""));
|
||||||
g_assert (adblock_is_matched (NULL, "http://ads.blub.boing/soda", ""));
|
g_assert (adblock_is_matched ("http://ads.blub.boing/soda", ""));
|
||||||
g_assert (!adblock_is_matched (NULL, "http://ads.foo.boing/beer", ""));
|
g_assert (!adblock_is_matched ("http://ads.foo.boing/beer", ""));
|
||||||
g_assert (adblock_is_matched (NULL, "https://testsub.engine.adct.ru/test?id=1", ""));
|
g_assert (adblock_is_matched ("https://testsub.engine.adct.ru/test?id=1", ""));
|
||||||
if (USE_PATTERN_MATCHING)
|
if (USE_PATTERN_MATCHING)
|
||||||
g_assert (adblock_is_matched (NULL, "http://test.ltd/addyn/test/test?var=adtech;&var2=1", ""));
|
g_assert (adblock_is_matched ("http://test.ltd/addyn/test/test?var=adtech;&var2=1", ""));
|
||||||
g_assert (adblock_is_matched (NULL, "http://add.doubleclick.net/pfadx/aaaa.mtvi", ""));
|
g_assert (adblock_is_matched ("http://add.doubleclick.net/pfadx/aaaa.mtvi", ""));
|
||||||
g_assert (!adblock_is_matched (NULL, "http://add.doubleclick.net/pfadx/aaaa.mtv", ""));
|
g_assert (!adblock_is_matched ("http://add.doubleclick.net/pfadx/aaaa.mtv", ""));
|
||||||
g_assert (adblock_is_matched (NULL, "http://objects.tremormedia.com/embed/xml/list.xml?r=", ""));
|
g_assert (adblock_is_matched ("http://objects.tremormedia.com/embed/xml/list.xml?r=", ""));
|
||||||
g_assert (!adblock_is_matched (NULL, "http://qq.videostrip.c/sub/admatcherclient.php", ""));
|
g_assert (!adblock_is_matched ("http://qq.videostrip.c/sub/admatcherclient.php", ""));
|
||||||
g_assert (adblock_is_matched (NULL, "http://qq.videostrip.com/sub/admatcherclient.php", ""));
|
g_assert (adblock_is_matched ("http://qq.videostrip.com/sub/admatcherclient.php", ""));
|
||||||
g_assert (adblock_is_matched (NULL, "http://qq.videostrip.com/sub/admatcherclient.php", ""));
|
g_assert (adblock_is_matched ("http://qq.videostrip.com/sub/admatcherclient.php", ""));
|
||||||
g_assert (adblock_is_matched (NULL, "http://br.gcl.ru/cgi-bin/br/test", ""));
|
g_assert (adblock_is_matched ("http://br.gcl.ru/cgi-bin/br/test", ""));
|
||||||
g_assert (!adblock_is_matched (NULL, "https://bugs.webkit.org/buglist.cgi?query_format=advanced&short_desc_type=allwordssubstr&short_desc=&long_desc_type=substring&long_desc=&bug_file_loc_type=allwordssubstr&bug_file_loc=&keywords_type=allwords&keywords=&bug_status=UNCONFIRMED&bug_status=NEW&bug_status=ASSIGNED&bug_status=REOPENED&emailassigned_to1=1&emailtype1=substring&email1=&emailassigned_to2=1&emailreporter2=1&emailcc2=1&emailtype2=substring&email2=&bugidtype=include&bug_id=&votes=&chfieldfrom=&chfieldto=Now&chfieldvalue=&query_based_on=gtkport&field0-0-0=keywords&type0-0-0=anywordssubstr&value0-0-0=Gtk%20Cairo%20soup&field0-0-1=short_desc&type0-0-1=anywordssubstr&value0-0-1=Gtk%20Cairo%20soup%20autoconf%20automake%20autotool&field0-0-2=component&type0-0-2=equals&value0-0-2=WebKit%20Gtk", ""));
|
g_assert (!adblock_is_matched ("https://bugs.webkit.org/buglist.cgi?query_format=advanced&short_desc_type=allwordssubstr&short_desc=&long_desc_type=substring&long_desc=&bug_file_loc_type=allwordssubstr&bug_file_loc=&keywords_type=allwords&keywords=&bug_status=UNCONFIRMED&bug_status=NEW&bug_status=ASSIGNED&bug_status=REOPENED&emailassigned_to1=1&emailtype1=substring&email1=&emailassigned_to2=1&emailreporter2=1&emailcc2=1&emailtype2=substring&email2=&bugidtype=include&bug_id=&votes=&chfieldfrom=&chfieldto=Now&chfieldvalue=&query_based_on=gtkport&field0-0-0=keywords&type0-0-0=anywordssubstr&value0-0-0=Gtk%20Cairo%20soup&field0-0-1=short_desc&type0-0-1=anywordssubstr&value0-0-1=Gtk%20Cairo%20soup%20autoconf%20automake%20autotool&field0-0-2=component&type0-0-2=equals&value0-0-2=WebKit%20Gtk", ""));
|
||||||
g_assert (!adblock_is_matched (NULL, "http://www.engadget.com/2009/09/24/google-hits-android-rom-modder-with-a-cease-and-desist-letter/", ""));
|
g_assert (!adblock_is_matched ("http://www.engadget.com/2009/09/24/google-hits-android-rom-modder-with-a-cease-and-desist-letter/", ""));
|
||||||
g_assert (!adblock_is_matched (NULL, "http://karibik-invest.com/es/bienes_raices/search.php?sqT=19&sqN=&sqMp=&sqL=0&qR=1&sqMb=&searchMode=1&action=B%FAsqueda", ""));
|
g_assert (!adblock_is_matched ("http://karibik-invest.com/es/bienes_raices/search.php?sqT=19&sqN=&sqMp=&sqL=0&qR=1&sqMb=&searchMode=1&action=B%FAsqueda", ""));
|
||||||
g_assert (!adblock_is_matched (NULL, "http://google.com", ""));
|
g_assert (!adblock_is_matched ("http://google.com", ""));
|
||||||
|
|
||||||
g_print ("Search took %f seconds\n", g_test_timer_elapsed ());
|
g_print ("Search took %f seconds\n", g_test_timer_elapsed ());
|
||||||
|
|
||||||
|
|
|
@ -843,7 +843,7 @@ addons_get_directories (AddonsKind kind)
|
||||||
{
|
{
|
||||||
path = g_build_path (G_DIR_SEPARATOR_S, *datadirs,
|
path = g_build_path (G_DIR_SEPARATOR_S, *datadirs,
|
||||||
PACKAGE_NAME, folder_name, NULL);
|
PACKAGE_NAME, folder_name, NULL);
|
||||||
if (g_access (path, X_OK) == 0)
|
if (g_slist_find (directories, path) == NULL && g_access (path, X_OK) == 0)
|
||||||
directories = g_slist_prepend (directories, path);
|
directories = g_slist_prepend (directories, path);
|
||||||
else
|
else
|
||||||
g_free (path);
|
g_free (path);
|
||||||
|
@ -888,6 +888,7 @@ addons_get_files (AddonsKind kind)
|
||||||
if (g_str_has_suffix (filename, file_extension))
|
if (g_str_has_suffix (filename, file_extension))
|
||||||
{
|
{
|
||||||
fullname = g_build_filename (dirname, filename, NULL);
|
fullname = g_build_filename (dirname, filename, NULL);
|
||||||
|
if (g_slist_find (files, fullname) == NULL)
|
||||||
files = g_slist_prepend (files, fullname);
|
files = g_slist_prepend (files, fullname);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -21,36 +21,36 @@
|
||||||
#include <unistd.h>
|
#include <unistd.h>
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef G_OS_WIN32
|
|
||||||
#define LIBPREFIX ""
|
|
||||||
#else
|
|
||||||
#define LIBPREFIX "lib"
|
|
||||||
#endif
|
|
||||||
|
|
||||||
static GHashTable* global_keys;
|
static GHashTable* global_keys;
|
||||||
static gchar* jsforms;
|
static gchar* jsforms;
|
||||||
|
|
||||||
static gboolean
|
static gboolean
|
||||||
formhistory_prepare_js ()
|
formhistory_prepare_js ()
|
||||||
{
|
{
|
||||||
gchar* data_name;
|
|
||||||
gchar* data_path;
|
gchar* data_path;
|
||||||
gchar* autosuggest;
|
gchar* autosuggest;
|
||||||
gchar* style;
|
gchar* style;
|
||||||
guint i;
|
guint i;
|
||||||
gchar* file;
|
gchar* file;
|
||||||
|
|
||||||
data_name = g_build_filename (PACKAGE_NAME, "res", NULL);
|
data_path = g_build_filename (PACKAGE_NAME, "res", "autosuggestcontrol.js", NULL);
|
||||||
data_path = sokoke_find_data_filename (data_name);
|
file = sokoke_find_data_filename (data_path);
|
||||||
g_free (data_name);
|
|
||||||
file = g_build_filename (data_path, G_DIR_SEPARATOR_S, "autosuggestcontrol.js",NULL);
|
|
||||||
if (!g_file_get_contents (file, &autosuggest, NULL, NULL))
|
if (!g_file_get_contents (file, &autosuggest, NULL, NULL))
|
||||||
|
{
|
||||||
|
g_free (data_path);
|
||||||
|
g_free (file);
|
||||||
return FALSE;
|
return FALSE;
|
||||||
|
}
|
||||||
g_strchomp (autosuggest);
|
g_strchomp (autosuggest);
|
||||||
|
|
||||||
file = g_build_filename (data_path, G_DIR_SEPARATOR_S, "autosuggestcontrol.css",NULL);
|
katze_assign (data_path, g_build_filename (PACKAGE_NAME, "res", "autosuggestcontrol.css", NULL));
|
||||||
if(!g_file_get_contents (file, &style, NULL, NULL))
|
katze_assign (file, sokoke_find_data_filename (data_path));
|
||||||
|
if (!g_file_get_contents (file, &style, NULL, NULL))
|
||||||
|
{
|
||||||
|
g_free (data_path);
|
||||||
|
g_free (file);
|
||||||
return FALSE;
|
return FALSE;
|
||||||
|
}
|
||||||
g_strchomp (style);
|
g_strchomp (style);
|
||||||
i = 0;
|
i = 0;
|
||||||
while (style[i])
|
while (style[i])
|
||||||
|
@ -191,7 +191,6 @@ formhistory_update_main_hash (gchar* key,
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
#if WEBKIT_CHECK_VERSION (1, 1, 4)
|
|
||||||
static gboolean
|
static gboolean
|
||||||
formhistory_navigation_decision_cb (WebKitWebView* web_view,
|
formhistory_navigation_decision_cb (WebKitWebView* web_view,
|
||||||
WebKitWebFrame* web_frame,
|
WebKitWebFrame* web_frame,
|
||||||
|
@ -251,50 +250,6 @@ formhistory_navigation_decision_cb (WebKitWebView* web_view,
|
||||||
}
|
}
|
||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
#else
|
|
||||||
static void
|
|
||||||
formhistory_feed_keys (GHashTable* keys,
|
|
||||||
gpointer db)
|
|
||||||
{
|
|
||||||
GHashTableIter iter;
|
|
||||||
gchar* key;
|
|
||||||
gchar* value;
|
|
||||||
|
|
||||||
g_hash_table_iter_init (&iter, keys);
|
|
||||||
while (g_hash_table_iter_next (&iter, (gpointer)&key, (gpointer)&value))
|
|
||||||
{
|
|
||||||
if (formhistory_update_main_hash (key, value))
|
|
||||||
formhistory_update_database (db, key, value);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
static void
|
|
||||||
formhistory_session_request_queued_cb (SoupSession* session,
|
|
||||||
SoupMessage* msg,
|
|
||||||
MidoriExtension* extension)
|
|
||||||
{
|
|
||||||
gchar* method = katze_object_get_string (msg, "method");
|
|
||||||
if (method && !strncmp (method, "POST", 4))
|
|
||||||
{
|
|
||||||
SoupMessageBody* body = msg->request_body;
|
|
||||||
if (soup_message_body_get_accumulate (body))
|
|
||||||
{
|
|
||||||
SoupBuffer* buffer;
|
|
||||||
GHashTable* keys;
|
|
||||||
gpointer db;
|
|
||||||
|
|
||||||
buffer = soup_message_body_flatten (body);
|
|
||||||
keys = soup_form_decode (body->data);
|
|
||||||
|
|
||||||
db = g_object_get_data (G_OBJECT (extension), "formhistory-db");
|
|
||||||
formhistory_feed_keys (keys, db);
|
|
||||||
soup_buffer_free (buffer);
|
|
||||||
g_hash_table_destroy (keys);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
g_free (method);
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
static void
|
static void
|
||||||
formhistory_window_object_cleared_cb (WebKitWebView* web_view,
|
formhistory_window_object_cleared_cb (WebKitWebView* web_view,
|
||||||
|
@ -316,13 +271,8 @@ formhistory_add_tab_cb (MidoriBrowser* browser,
|
||||||
GtkWidget* web_view = midori_view_get_web_view (view);
|
GtkWidget* web_view = midori_view_get_web_view (view);
|
||||||
g_signal_connect (web_view, "window-object-cleared",
|
g_signal_connect (web_view, "window-object-cleared",
|
||||||
G_CALLBACK (formhistory_window_object_cleared_cb), NULL);
|
G_CALLBACK (formhistory_window_object_cleared_cb), NULL);
|
||||||
#if WEBKIT_CHECK_VERSION (1, 1, 4)
|
|
||||||
g_signal_connect (web_view, "navigation-policy-decision-requested",
|
g_signal_connect (web_view, "navigation-policy-decision-requested",
|
||||||
G_CALLBACK (formhistory_navigation_decision_cb), extension);
|
G_CALLBACK (formhistory_navigation_decision_cb), extension);
|
||||||
#else
|
|
||||||
g_signal_connect (webkit_get_default_session (), "request-queued",
|
|
||||||
G_CALLBACK (formhistory_session_request_queued_cb), extension);
|
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
|
@ -358,13 +308,8 @@ formhistory_deactivate_tabs (MidoriView* view,
|
||||||
GtkWidget* web_view = midori_view_get_web_view (view);
|
GtkWidget* web_view = midori_view_get_web_view (view);
|
||||||
g_signal_handlers_disconnect_by_func (
|
g_signal_handlers_disconnect_by_func (
|
||||||
web_view, formhistory_window_object_cleared_cb, NULL);
|
web_view, formhistory_window_object_cleared_cb, NULL);
|
||||||
#if WEBKIT_CHECK_VERSION (1, 1, 4)
|
|
||||||
g_signal_handlers_disconnect_by_func (
|
g_signal_handlers_disconnect_by_func (
|
||||||
web_view, formhistory_navigation_decision_cb, extension);
|
web_view, formhistory_navigation_decision_cb, extension);
|
||||||
#else
|
|
||||||
g_signal_handlers_disconnect_by_func (
|
|
||||||
webkit_get_default_session (), formhistory_session_request_queued_cb, extension);
|
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
|
@ -491,21 +436,6 @@ formhistory_activate_cb (MidoriExtension* extension,
|
||||||
</html> */
|
</html> */
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
static void
|
|
||||||
formhistory_clear_database_cb (void)
|
|
||||||
{
|
|
||||||
gchar* filename = g_build_filename (sokoke_set_config_dir (NULL),
|
|
||||||
"extensions", LIBPREFIX "formhistory." G_MODULE_SUFFIX, "forms.db", NULL);
|
|
||||||
sqlite3* db;
|
|
||||||
if (sqlite3_open (filename, &db) == SQLITE_OK)
|
|
||||||
{
|
|
||||||
sqlite3_exec (db, "DELETE FROM forms", NULL, NULL, NULL);
|
|
||||||
sqlite3_close (db);
|
|
||||||
}
|
|
||||||
g_free (filename);
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
MidoriExtension*
|
MidoriExtension*
|
||||||
extension_init (void)
|
extension_init (void)
|
||||||
{
|
{
|
||||||
|
@ -539,9 +469,5 @@ extension_init (void)
|
||||||
g_signal_connect (extension, "activate",
|
g_signal_connect (extension, "activate",
|
||||||
G_CALLBACK (formhistory_activate_cb), NULL);
|
G_CALLBACK (formhistory_activate_cb), NULL);
|
||||||
|
|
||||||
/* i18n: Data entered into web forms by the user */
|
|
||||||
sokoke_register_privacy_item ("formhistory", _("_Form History"),
|
|
||||||
G_CALLBACK (formhistory_clear_database_cb));
|
|
||||||
|
|
||||||
return extension;
|
return extension;
|
||||||
}
|
}
|
||||||
|
|
|
@ -14,21 +14,35 @@ using Gdk;
|
||||||
using WebKit;
|
using WebKit;
|
||||||
using Midori;
|
using Midori;
|
||||||
|
|
||||||
enum TabTreeCells {
|
namespace HistoryList {
|
||||||
|
enum TabTreeCells {
|
||||||
TREE_CELL_PIXBUF,
|
TREE_CELL_PIXBUF,
|
||||||
TREE_CELL_STRING,
|
TREE_CELL_STRING,
|
||||||
TREE_CELL_POINTER,
|
TREE_CELL_POINTER,
|
||||||
TREE_CELL_COUNT
|
TREE_CELL_COUNT
|
||||||
}
|
}
|
||||||
|
|
||||||
private abstract class HistoryWindow : Gtk.Window {
|
enum TabClosingBehavior {
|
||||||
|
NONE,
|
||||||
|
LAST,
|
||||||
|
NEW
|
||||||
|
}
|
||||||
|
|
||||||
|
enum TabClosingBehaviorModel {
|
||||||
|
TEXT,
|
||||||
|
VALUE
|
||||||
|
}
|
||||||
|
|
||||||
|
private abstract class HistoryWindow : Gtk.Window {
|
||||||
public Midori.Browser browser { get; construct set; }
|
public Midori.Browser browser { get; construct set; }
|
||||||
protected Gtk.TreeView? treeview = null;
|
protected Gtk.TreeView? treeview = null;
|
||||||
|
|
||||||
public HistoryWindow (Midori.Browser browser) {
|
public HistoryWindow (Midori.Browser browser) {
|
||||||
GLib.Object (type: Gtk.WindowType.POPUP,
|
GLib.Object (type: Gtk.WindowType.POPUP,
|
||||||
window_position: Gtk.WindowPosition.CENTER,
|
window_position: Gtk.WindowPosition.CENTER,
|
||||||
browser: browser);
|
browser: browser);
|
||||||
}
|
}
|
||||||
|
|
||||||
public virtual void walk (int step) {
|
public virtual void walk (int step) {
|
||||||
Gtk.TreePath? path;
|
Gtk.TreePath? path;
|
||||||
Gtk.TreeViewColumn? column;
|
Gtk.TreeViewColumn? column;
|
||||||
|
@ -46,12 +60,16 @@ private abstract class HistoryWindow : Gtk.Window {
|
||||||
path = new Gtk.TreePath.from_indices (new_index);
|
path = new Gtk.TreePath.from_indices (new_index);
|
||||||
this.treeview.set_cursor (path, column, false);
|
this.treeview.set_cursor (path, column, false);
|
||||||
}
|
}
|
||||||
public abstract void make_update ();
|
|
||||||
}
|
|
||||||
|
|
||||||
private class TabWindow : HistoryWindow {
|
public abstract void make_update ();
|
||||||
|
public abstract void clean_up ();
|
||||||
|
}
|
||||||
|
|
||||||
|
private class TabWindow : HistoryWindow {
|
||||||
protected Gtk.HBox? hbox;
|
protected Gtk.HBox? hbox;
|
||||||
protected Gtk.VBox? vbox;
|
protected Gtk.VBox? vbox;
|
||||||
|
protected bool is_dirty = false;
|
||||||
|
|
||||||
protected void store_append_row (GLib.PtrArray list, Gtk.ListStore store, out Gtk.TreeIter iter) {
|
protected void store_append_row (GLib.PtrArray list, Gtk.ListStore store, out Gtk.TreeIter iter) {
|
||||||
for (var i = list.len; i > 0; i--) {
|
for (var i = list.len; i > 0; i--) {
|
||||||
Midori.View view = list.index (i - 1) as Midori.View;
|
Midori.View view = list.index (i - 1) as Midori.View;
|
||||||
|
@ -67,6 +85,7 @@ private class TabWindow : HistoryWindow {
|
||||||
TabTreeCells.TREE_CELL_POINTER, view);
|
TabTreeCells.TREE_CELL_POINTER, view);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
protected virtual void insert_rows (Gtk.ListStore store) {
|
protected virtual void insert_rows (Gtk.ListStore store) {
|
||||||
Gtk.TreeIter iter;
|
Gtk.TreeIter iter;
|
||||||
unowned GLib.PtrArray list = this.browser.get_data<GLib.PtrArray> ("history-list-tab-history");
|
unowned GLib.PtrArray list = this.browser.get_data<GLib.PtrArray> ("history-list-tab-history");
|
||||||
|
@ -74,6 +93,7 @@ private class TabWindow : HistoryWindow {
|
||||||
store_append_row (list, store, out iter);
|
store_append_row (list, store, out iter);
|
||||||
store_append_row (list_new, store, out iter);
|
store_append_row (list_new, store, out iter);
|
||||||
}
|
}
|
||||||
|
|
||||||
public TabWindow (Midori.Browser browser) {
|
public TabWindow (Midori.Browser browser) {
|
||||||
base (browser);
|
base (browser);
|
||||||
|
|
||||||
|
@ -121,7 +141,10 @@ private class TabWindow : HistoryWindow {
|
||||||
|
|
||||||
this.show_all ();
|
this.show_all ();
|
||||||
}
|
}
|
||||||
|
|
||||||
public override void make_update () {
|
public override void make_update () {
|
||||||
|
this.is_dirty = true;
|
||||||
|
|
||||||
Gtk.TreePath? path;
|
Gtk.TreePath? path;
|
||||||
Gtk.TreeViewColumn? column;
|
Gtk.TreeViewColumn? column;
|
||||||
|
|
||||||
|
@ -136,44 +159,173 @@ private class TabWindow : HistoryWindow {
|
||||||
model.get (iter, TabTreeCells.TREE_CELL_POINTER, out view);
|
model.get (iter, TabTreeCells.TREE_CELL_POINTER, out view);
|
||||||
this.browser.set ("tab", view);
|
this.browser.set ("tab", view);
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
private class NewTabWindow : TabWindow {
|
public override void clean_up () {
|
||||||
|
if(this.is_dirty) {
|
||||||
|
Gtk.TreePath? path;
|
||||||
|
Gtk.TreeViewColumn? column;
|
||||||
|
|
||||||
|
this.treeview.get_cursor (out path, out column);
|
||||||
|
|
||||||
|
path = new Gtk.TreePath.from_indices (0);
|
||||||
|
this.treeview.set_cursor (path, column, false);
|
||||||
|
|
||||||
|
this.make_update ();
|
||||||
|
this.is_dirty = false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private class NewTabWindow : TabWindow {
|
||||||
|
protected bool old_tabs = false;
|
||||||
protected bool first_step = true;
|
protected bool first_step = true;
|
||||||
|
|
||||||
protected override void insert_rows (Gtk.ListStore store) {
|
protected override void insert_rows (Gtk.ListStore store) {
|
||||||
Gtk.TreeIter iter;
|
Gtk.TreeIter iter;
|
||||||
unowned GLib.PtrArray list = this.browser.get_data<GLib.PtrArray> ("history-list-tab-history-new");
|
unowned GLib.PtrArray list = this.browser.get_data<GLib.PtrArray> ("history-list-tab-history-new");
|
||||||
store_append_row (list, store, out iter);
|
store_append_row (list, store, out iter);
|
||||||
|
|
||||||
if ((int)list.len == 0) {
|
if ((int)list.len == 0) {
|
||||||
|
this.old_tabs = true;
|
||||||
var label = new Gtk.Label (_("There are no unvisited tabs"));
|
var label = new Gtk.Label (_("There are no unvisited tabs"));
|
||||||
this.vbox.pack_start (label, true, true, 0);
|
this.vbox.pack_start (label, true, true, 0);
|
||||||
unowned GLib.PtrArray list_old = this.browser.get_data<GLib.PtrArray> ("history-list-tab-history");
|
unowned GLib.PtrArray list_old = this.browser.get_data<GLib.PtrArray> ("history-list-tab-history");
|
||||||
store_append_row (list_old, store, out iter);
|
store_append_row (list_old, store, out iter);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public override void walk (int step) {
|
public override void walk (int step) {
|
||||||
if (this.first_step == false || step != 1) {
|
if (this.first_step == false || step != 1) {
|
||||||
base.walk (step);
|
base.walk (step);
|
||||||
}
|
}
|
||||||
this.first_step = false;
|
this.first_step = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public override void clean_up () {
|
||||||
|
if(this.is_dirty) {
|
||||||
|
if(this.old_tabs) {
|
||||||
|
base.clean_up ();
|
||||||
|
} else {
|
||||||
|
unowned GLib.PtrArray list = this.browser.get_data<GLib.PtrArray> ("history-list-tab-history");
|
||||||
|
Midori.View view = list.index (list.len - 1) as Midori.View;
|
||||||
|
this.browser.set ("tab", view);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
public NewTabWindow (Midori.Browser browser) {
|
public NewTabWindow (Midori.Browser browser) {
|
||||||
base (browser);
|
base (browser);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private class PreferencesDialog : Dialog {
|
||||||
|
protected Manager hl_manager;
|
||||||
|
protected ComboBox closing_behavior;
|
||||||
|
|
||||||
|
public PreferencesDialog (Manager manager) {
|
||||||
|
this.hl_manager = manager;
|
||||||
|
|
||||||
|
this.title = _("Preferences for %s").printf( _("History-List"));
|
||||||
|
this.has_separator = false;
|
||||||
|
this.border_width = 5;
|
||||||
|
this.set_modal (true);
|
||||||
|
this.set_default_size (350, 100);
|
||||||
|
this.create_widgets ();
|
||||||
|
|
||||||
|
this.response.connect (response_cb);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void response_cb (Dialog source, int response_id) {
|
||||||
|
switch (response_id) {
|
||||||
|
case ResponseType.APPLY:
|
||||||
|
int value;
|
||||||
|
TreeIter iter;
|
||||||
|
|
||||||
|
this.closing_behavior.get_active_iter (out iter);
|
||||||
|
var model = this.closing_behavior.get_model ();
|
||||||
|
model.get (iter, TabClosingBehaviorModel.VALUE, out value);
|
||||||
|
|
||||||
|
this.hl_manager.set_integer ("TabClosingBehavior", value);
|
||||||
|
this.hl_manager.preferences_changed ();
|
||||||
|
|
||||||
|
this.destroy ();
|
||||||
|
break;
|
||||||
|
case ResponseType.CANCEL:
|
||||||
|
this.destroy ();
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void create_widgets () {
|
||||||
|
ListStore model;
|
||||||
|
TreeIter iter;
|
||||||
|
TreeIter? active_iter = null;
|
||||||
|
|
||||||
|
var table = new Table (1, 2, true);
|
||||||
|
var renderer = new CellRendererText ();
|
||||||
|
|
||||||
|
var label = new Label ( _("Tab closing behavior"));
|
||||||
|
table.attach_defaults (label, 0, 1, 0, 1);
|
||||||
|
|
||||||
|
var tab_closing_behavior = this.hl_manager.get_integer ("TabClosingBehavior");
|
||||||
|
|
||||||
|
model = new ListStore (2, typeof (string), typeof (int));
|
||||||
|
|
||||||
|
model.append (out iter);
|
||||||
|
model.set (iter, TabClosingBehaviorModel.TEXT, _("Do nothing"),
|
||||||
|
TabClosingBehaviorModel.VALUE, TabClosingBehavior.NONE);
|
||||||
|
if (TabClosingBehavior.NONE == tab_closing_behavior)
|
||||||
|
active_iter = iter;
|
||||||
|
|
||||||
|
model.append (out iter);
|
||||||
|
model.set (iter, TabClosingBehaviorModel.TEXT, _("Switch to last view tab"),
|
||||||
|
TabClosingBehaviorModel.VALUE, TabClosingBehavior.LAST);
|
||||||
|
if (TabClosingBehavior.LAST == tab_closing_behavior)
|
||||||
|
active_iter = iter;
|
||||||
|
|
||||||
|
model.append (out iter);
|
||||||
|
model.set (iter, TabClosingBehaviorModel.TEXT, _("Switch to newest tab"),
|
||||||
|
TabClosingBehaviorModel.VALUE, TabClosingBehavior.NEW);
|
||||||
|
if (TabClosingBehavior.NEW == tab_closing_behavior)
|
||||||
|
active_iter = iter;
|
||||||
|
|
||||||
|
this.closing_behavior = new ComboBox.with_model (model);
|
||||||
|
this.closing_behavior.set_active_iter (active_iter);
|
||||||
|
this.closing_behavior.pack_start (renderer, true);
|
||||||
|
this.closing_behavior.set_attributes (renderer, "text", 0);
|
||||||
|
|
||||||
|
table.attach_defaults (this.closing_behavior, 1, 2, 0, 1);
|
||||||
|
|
||||||
|
this.vbox.pack_start (table, false, true, 0);
|
||||||
|
|
||||||
|
this.add_button (Gtk.STOCK_CANCEL, ResponseType.CANCEL);
|
||||||
|
this.add_button (Gtk.STOCK_APPLY, ResponseType.APPLY);
|
||||||
|
|
||||||
|
this.show_all ();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private class Manager : Midori.Extension {
|
||||||
|
public signal void preferences_changed ();
|
||||||
|
|
||||||
private class HistoryList : Midori.Extension {
|
|
||||||
protected uint escKeyval;
|
protected uint escKeyval;
|
||||||
protected uint modifier_count;
|
protected uint modifier_count;
|
||||||
|
protected int closing_behavior;
|
||||||
protected HistoryWindow? history_window;
|
protected HistoryWindow? history_window;
|
||||||
protected ulong[] tmp_sig_ids = new ulong[2];
|
protected ulong[] tmp_sig_ids = new ulong[2];
|
||||||
|
protected bool ignoreNextChange = false;
|
||||||
|
|
||||||
|
public void preferences_changed_cb () {
|
||||||
|
this.closing_behavior = this.get_integer ("TabClosingBehavior");
|
||||||
|
}
|
||||||
|
|
||||||
public bool key_press (Gdk.EventKey event_key) {
|
public bool key_press (Gdk.EventKey event_key) {
|
||||||
if (event_key.is_modifier > 0) {
|
if (event_key.is_modifier > 0) {
|
||||||
this.modifier_count++;
|
this.modifier_count++;
|
||||||
}
|
}
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
public bool key_release (Gdk.EventKey event_key, Browser browser) {
|
public bool key_release (Gdk.EventKey event_key, Browser browser) {
|
||||||
if (event_key.is_modifier > 0) {
|
if (event_key.is_modifier > 0) {
|
||||||
this.modifier_count--;
|
this.modifier_count--;
|
||||||
|
@ -185,12 +337,14 @@ private class HistoryList : Midori.Extension {
|
||||||
this.history_window.make_update ();
|
this.history_window.make_update ();
|
||||||
} else {
|
} else {
|
||||||
this.modifier_count = 0;
|
this.modifier_count = 0;
|
||||||
|
this.history_window.clean_up ();
|
||||||
}
|
}
|
||||||
this.history_window.destroy ();
|
this.history_window.destroy ();
|
||||||
this.history_window = null;
|
this.history_window = null;
|
||||||
}
|
}
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void walk (Gtk.Action action, Browser browser, Type type, int step) {
|
public void walk (Gtk.Action action, Browser browser, Type type, int step) {
|
||||||
Midori.View? view = null;
|
Midori.View? view = null;
|
||||||
view = browser.get_data<Midori.View?> ("history-list-last-change");
|
view = browser.get_data<Midori.View?> ("history-list-last-change");
|
||||||
|
@ -225,6 +379,14 @@ private class HistoryList : Midori.Extension {
|
||||||
var hw = this.history_window as HistoryWindow;
|
var hw = this.history_window as HistoryWindow;
|
||||||
hw.walk (step);
|
hw.walk (step);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void special_function (Gtk.Action action, Browser browser) {
|
||||||
|
if (this.history_window != null) {
|
||||||
|
this.ignoreNextChange = true;
|
||||||
|
this.history_window.make_update ();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
void browser_added (Midori.Browser browser) {
|
void browser_added (Midori.Browser browser) {
|
||||||
ulong sidTabNext, sidTabPrevious;
|
ulong sidTabNext, sidTabPrevious;
|
||||||
var acg = new Gtk.AccelGroup ();
|
var acg = new Gtk.AccelGroup ();
|
||||||
|
@ -265,6 +427,16 @@ private class HistoryList : Midori.Extension {
|
||||||
action.set_accel_group (acg);
|
action.set_accel_group (acg);
|
||||||
action.connect_accelerator ();
|
action.connect_accelerator ();
|
||||||
|
|
||||||
|
action = new Gtk.Action ("HistoryListSpecialFunction",
|
||||||
|
_("Display tab in background (History List)"),
|
||||||
|
_("Display the current selected tab in background"), null);
|
||||||
|
action.activate.connect ((a) => {
|
||||||
|
this.special_function (a, browser);
|
||||||
|
});
|
||||||
|
action_group.add_action_with_accel (action, "<Ctrl>3");
|
||||||
|
action.set_accel_group (acg);
|
||||||
|
action.connect_accelerator ();
|
||||||
|
|
||||||
browser.set_data<ulong> ("history-list-sid-tab-next", sidTabNext);
|
browser.set_data<ulong> ("history-list-sid-tab-next", sidTabNext);
|
||||||
browser.set_data<ulong> ("history-list-sid-tab-previous", sidTabPrevious);
|
browser.set_data<ulong> ("history-list-sid-tab-previous", sidTabPrevious);
|
||||||
|
|
||||||
|
@ -280,8 +452,10 @@ private class HistoryList : Midori.Extension {
|
||||||
browser.remove_tab.connect (tab_removed);
|
browser.remove_tab.connect (tab_removed);
|
||||||
browser.notify["tab"].connect (this.tab_changed);
|
browser.notify["tab"].connect (this.tab_changed);
|
||||||
}
|
}
|
||||||
|
|
||||||
void browser_removed (Midori.Browser browser) {
|
void browser_removed (Midori.Browser browser) {
|
||||||
string[] callbacks = { "HistoryListNextNewTab", "HistoryListPreviousNewTab" };
|
string[] callbacks = { "HistoryListNextNewTab", "HistoryListPreviousNewTab",
|
||||||
|
"HistoryListSpecialFunction" };
|
||||||
ulong sidTabNext, sidTabPrevious;
|
ulong sidTabNext, sidTabPrevious;
|
||||||
sidTabNext = browser.get_data<ulong> ("history-list-sid-tab-next");
|
sidTabNext = browser.get_data<ulong> ("history-list-sid-tab-next");
|
||||||
sidTabPrevious = browser.get_data<ulong> ("history-list-sid-tab-previous");
|
sidTabPrevious = browser.get_data<ulong> ("history-list-sid-tab-previous");
|
||||||
|
@ -307,24 +481,37 @@ private class HistoryList : Midori.Extension {
|
||||||
browser.remove_tab.disconnect (tab_removed);
|
browser.remove_tab.disconnect (tab_removed);
|
||||||
browser.notify["tab"].disconnect (this.tab_changed);
|
browser.notify["tab"].disconnect (this.tab_changed);
|
||||||
}
|
}
|
||||||
|
|
||||||
void tab_added (Midori.Browser browser, Midori.View view) {
|
void tab_added (Midori.Browser browser, Midori.View view) {
|
||||||
unowned GLib.PtrArray list = browser.get_data<GLib.PtrArray> ("history-list-tab-history-new");
|
unowned GLib.PtrArray list = browser.get_data<GLib.PtrArray> ("history-list-tab-history-new");
|
||||||
list.add (view);
|
list.add (view);
|
||||||
}
|
}
|
||||||
|
|
||||||
void tab_removed (Midori.Browser browser, Midori.View view) {
|
void tab_removed (Midori.Browser browser, Midori.View view) {
|
||||||
unowned GLib.PtrArray list = browser.get_data<GLib.PtrArray> ("history-list-tab-history");
|
unowned GLib.PtrArray list = browser.get_data<GLib.PtrArray> ("history-list-tab-history");
|
||||||
unowned GLib.PtrArray list_new = browser.get_data<GLib.PtrArray> ("history-list-tab-history-new");
|
unowned GLib.PtrArray list_new = browser.get_data<GLib.PtrArray> ("history-list-tab-history-new");
|
||||||
list.remove (view);
|
list.remove (view);
|
||||||
list_new.remove (view);
|
list_new.remove (view);
|
||||||
|
|
||||||
|
if (this.closing_behavior == TabClosingBehavior.LAST || this.closing_behavior == TabClosingBehavior.NEW) {
|
||||||
browser.set_data<Midori.View?> ("history-list-last-change", null);
|
browser.set_data<Midori.View?> ("history-list-last-change", null);
|
||||||
|
|
||||||
if ((int) list.len > 0 || (int) list_new.len > 0) {
|
if ((int) list.len > 0 || (int) list_new.len > 0) {
|
||||||
var hw = new TabWindow (browser);
|
TabWindow hw;
|
||||||
|
if (this.closing_behavior == TabClosingBehavior.LAST)
|
||||||
|
hw = new TabWindow (browser);
|
||||||
|
else
|
||||||
|
hw = new NewTabWindow (browser);
|
||||||
hw.make_update ();
|
hw.make_update ();
|
||||||
hw.destroy ();
|
hw.destroy ();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
void tab_changed (GLib.Object window, GLib.ParamSpec pspec) {
|
void tab_changed (GLib.Object window, GLib.ParamSpec pspec) {
|
||||||
|
if(this.ignoreNextChange) {
|
||||||
|
this.ignoreNextChange = false;
|
||||||
|
} else {
|
||||||
Midori.Browser browser = window as Midori.Browser;
|
Midori.Browser browser = window as Midori.Browser;
|
||||||
Midori.View view = null;
|
Midori.View view = null;
|
||||||
Midori.View last_view = null;
|
Midori.View last_view = null;
|
||||||
|
@ -337,6 +524,8 @@ private class HistoryList : Midori.Extension {
|
||||||
}
|
}
|
||||||
browser.set_data<Midori.View?> ("history-list-last-change", view);
|
browser.set_data<Midori.View?> ("history-list-last-change", view);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
void tab_list_resort (Midori.Browser browser, Midori.View view) {
|
void tab_list_resort (Midori.Browser browser, Midori.View view) {
|
||||||
unowned GLib.PtrArray list = browser.get_data<GLib.PtrArray> ("history-list-tab-history");
|
unowned GLib.PtrArray list = browser.get_data<GLib.PtrArray> ("history-list-tab-history");
|
||||||
unowned GLib.PtrArray list_new = browser.get_data<GLib.PtrArray> ("history-list-tab-history-new");
|
unowned GLib.PtrArray list_new = browser.get_data<GLib.PtrArray> ("history-list-tab-history-new");
|
||||||
|
@ -344,31 +533,46 @@ private class HistoryList : Midori.Extension {
|
||||||
list_new.remove (view);
|
list_new.remove (view);
|
||||||
list.add (view);
|
list.add (view);
|
||||||
}
|
}
|
||||||
|
|
||||||
void activated (Midori.App app) {
|
void activated (Midori.App app) {
|
||||||
|
this.preferences_changed ();
|
||||||
foreach (var browser in app.get_browsers ())
|
foreach (var browser in app.get_browsers ())
|
||||||
browser_added (browser);
|
browser_added (browser);
|
||||||
app.add_browser.connect (browser_added);
|
app.add_browser.connect (browser_added);
|
||||||
}
|
}
|
||||||
|
|
||||||
void deactivated () {
|
void deactivated () {
|
||||||
var app = get_app ();
|
var app = get_app ();
|
||||||
foreach (var browser in app.get_browsers ())
|
foreach (var browser in app.get_browsers ())
|
||||||
browser_removed (browser);
|
browser_removed (browser);
|
||||||
app.add_browser.disconnect (browser_added);
|
app.add_browser.disconnect (browser_added);
|
||||||
}
|
}
|
||||||
internal HistoryList () {
|
|
||||||
|
void show_preferences () {
|
||||||
|
var dialog = new PreferencesDialog (this);
|
||||||
|
dialog.show ();
|
||||||
|
}
|
||||||
|
|
||||||
|
internal Manager () {
|
||||||
GLib.Object (name: _("History List"),
|
GLib.Object (name: _("History List"),
|
||||||
description: _("Switch tabs with Ctrl+Tab sorted by last usage"),
|
description: _("Move to the last used tab when switching or closing tabs"),
|
||||||
version: "0.3",
|
version: "0.4",
|
||||||
authors: "André Stösel <andre@stoesel.de>");
|
authors: "André Stösel <andre@stoesel.de>");
|
||||||
activate.connect (activated);
|
|
||||||
deactivate.connect (deactivated);
|
this.install_integer ("TabClosingBehavior", TabClosingBehavior.LAST);
|
||||||
|
|
||||||
|
this.activate.connect (activated);
|
||||||
|
this.deactivate.connect (deactivated);
|
||||||
|
this.open_preferences.connect (show_preferences);
|
||||||
|
this.preferences_changed.connect (preferences_changed_cb);
|
||||||
}
|
}
|
||||||
construct {
|
construct {
|
||||||
this.escKeyval = Gdk.keyval_from_name ("Escape");
|
this.escKeyval = Gdk.keyval_from_name ("Escape");
|
||||||
}
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public Midori.Extension extension_init () {
|
public Midori.Extension extension_init () {
|
||||||
return new HistoryList ();
|
return new HistoryList.Manager ();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -189,6 +189,26 @@ proxy_entry_focus_out_event_cb (GtkEntry* entry,
|
||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
proxy_days_changed_cb (GtkComboBox* combo,
|
||||||
|
GObject* object)
|
||||||
|
{
|
||||||
|
gint active = gtk_combo_box_get_active (combo);
|
||||||
|
const gchar* property = g_object_get_data (G_OBJECT (combo), "property");
|
||||||
|
gint max_age;
|
||||||
|
switch (active)
|
||||||
|
{
|
||||||
|
case 0: max_age = 0; break;
|
||||||
|
case 1: max_age = 1; break;
|
||||||
|
case 2: max_age = 7; break;
|
||||||
|
case 3: max_age = 30; break;
|
||||||
|
case 4: max_age = 365; break;
|
||||||
|
default:
|
||||||
|
max_age = 30;
|
||||||
|
}
|
||||||
|
g_object_set (object, property, max_age, NULL);
|
||||||
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
proxy_spin_button_changed_cb (GtkSpinButton* button,
|
proxy_spin_button_changed_cb (GtkSpinButton* button,
|
||||||
GObject* object)
|
GObject* object)
|
||||||
|
@ -480,6 +500,9 @@ g_icon_to_string (GIcon *icon)
|
||||||
* Since 0.3.6 the following hints are also supported:
|
* Since 0.3.6 the following hints are also supported:
|
||||||
* "address": the widget will be particularly suitable for typing
|
* "address": the widget will be particularly suitable for typing
|
||||||
* a valid URI or IP address and highlight errors.
|
* a valid URI or IP address and highlight errors.
|
||||||
|
* Since 0.4.0 the following hints are also supported:
|
||||||
|
* "days": the widget will be particularly suitable for choosing
|
||||||
|
* a period of time in days.
|
||||||
*
|
*
|
||||||
* Any other values for @hint are silently ignored.
|
* Any other values for @hint are silently ignored.
|
||||||
*
|
*
|
||||||
|
@ -788,6 +811,30 @@ katze_property_proxy (gpointer object,
|
||||||
g_signal_connect (widget, "value-changed",
|
g_signal_connect (widget, "value-changed",
|
||||||
G_CALLBACK (proxy_spin_button_changed_cb), object);
|
G_CALLBACK (proxy_spin_button_changed_cb), object);
|
||||||
}
|
}
|
||||||
|
else if (type == G_TYPE_PARAM_INT && _hint == I_("days"))
|
||||||
|
{
|
||||||
|
gint value = katze_object_get_int (object, property);
|
||||||
|
gint active;
|
||||||
|
widget = gtk_combo_box_new_text ();
|
||||||
|
gtk_combo_box_append_text (GTK_COMBO_BOX (widget), _("1 hour"));
|
||||||
|
gtk_combo_box_append_text (GTK_COMBO_BOX (widget), _("1 day"));
|
||||||
|
gtk_combo_box_append_text (GTK_COMBO_BOX (widget), _("1 week"));
|
||||||
|
gtk_combo_box_append_text (GTK_COMBO_BOX (widget), _("1 month"));
|
||||||
|
gtk_combo_box_append_text (GTK_COMBO_BOX (widget), _("1 year"));
|
||||||
|
switch (value)
|
||||||
|
{
|
||||||
|
case 0: active = 0; break;
|
||||||
|
case 1: active = 1; break;
|
||||||
|
case 7: active = 2; break;
|
||||||
|
case 30: active = 3; break;
|
||||||
|
case 365: active = 4; break;
|
||||||
|
default:
|
||||||
|
active = 3;
|
||||||
|
}
|
||||||
|
gtk_combo_box_set_active (GTK_COMBO_BOX (widget), active);
|
||||||
|
g_signal_connect (widget, "changed",
|
||||||
|
G_CALLBACK (proxy_days_changed_cb), object);
|
||||||
|
}
|
||||||
else if (type == G_TYPE_PARAM_INT)
|
else if (type == G_TYPE_PARAM_INT)
|
||||||
{
|
{
|
||||||
gint value = katze_object_get_int (object, property);
|
gint value = katze_object_get_int (object, property);
|
||||||
|
|
352
midori/main.c
352
midori/main.c
|
@ -61,6 +61,12 @@
|
||||||
#include <gdk/gdkx.h>
|
#include <gdk/gdkx.h>
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#ifdef G_OS_WIN32
|
||||||
|
#define LIBPREFIX ""
|
||||||
|
#else
|
||||||
|
#define LIBPREFIX "lib"
|
||||||
|
#endif
|
||||||
|
|
||||||
static gchar*
|
static gchar*
|
||||||
build_config_filename (const gchar* filename)
|
build_config_filename (const gchar* filename)
|
||||||
{
|
{
|
||||||
|
@ -420,13 +426,11 @@ midori_history_initialize (KatzeArray* array,
|
||||||
char** errmsg)
|
char** errmsg)
|
||||||
{
|
{
|
||||||
sqlite3* db;
|
sqlite3* db;
|
||||||
gboolean has_day;
|
gboolean has_day = FALSE;
|
||||||
sqlite3_stmt* stmt;
|
sqlite3_stmt* stmt;
|
||||||
gint result;
|
gint result;
|
||||||
gchar* sql;
|
gchar* sql;
|
||||||
|
|
||||||
has_day = FALSE;
|
|
||||||
|
|
||||||
if (sqlite3_open (filename, &db) != SQLITE_OK)
|
if (sqlite3_open (filename, &db) != SQLITE_OK)
|
||||||
{
|
{
|
||||||
if (errmsg)
|
if (errmsg)
|
||||||
|
@ -593,7 +597,10 @@ midori_session_add_delay (KatzeArray* session)
|
||||||
{
|
{
|
||||||
KatzeItem* item;
|
KatzeItem* item;
|
||||||
KATZE_ARRAY_FOREACH_ITEM (item, session)
|
KATZE_ARRAY_FOREACH_ITEM (item, session)
|
||||||
|
{
|
||||||
|
if (katze_item_get_meta_integer (item, "delay") == -1)
|
||||||
katze_item_set_meta_integer (item, "delay", 1);
|
katze_item_set_meta_integer (item, "delay", 1);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
|
@ -717,25 +724,6 @@ midori_browser_show_preferences_cb (MidoriBrowser* browser,
|
||||||
gtk_box_pack_start (GTK_BOX (page), scrolled, TRUE, TRUE, 4);
|
gtk_box_pack_start (GTK_BOX (page), scrolled, TRUE, TRUE, 4);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
|
||||||
midori_preferences_delete_cookies_changed_cb (GtkComboBox* combo,
|
|
||||||
MidoriWebSettings* settings)
|
|
||||||
{
|
|
||||||
gint active = gtk_combo_box_get_active (combo);
|
|
||||||
gint max_age;
|
|
||||||
switch (active)
|
|
||||||
{
|
|
||||||
case 0: max_age = 0; break;
|
|
||||||
case 1: max_age = 1; break;
|
|
||||||
case 2: max_age = 7; break;
|
|
||||||
case 3: max_age = 30; break;
|
|
||||||
case 4: max_age = 365; break;
|
|
||||||
default:
|
|
||||||
max_age = 30;
|
|
||||||
}
|
|
||||||
g_object_set (settings, "maximum-cookie-age", max_age, NULL);
|
|
||||||
}
|
|
||||||
|
|
||||||
static void
|
static void
|
||||||
midori_browser_privacy_preferences_cb (MidoriBrowser* browser,
|
midori_browser_privacy_preferences_cb (MidoriBrowser* browser,
|
||||||
KatzePreferences* preferences,
|
KatzePreferences* preferences,
|
||||||
|
@ -744,34 +732,13 @@ midori_browser_privacy_preferences_cb (MidoriBrowser* browser,
|
||||||
MidoriWebSettings* settings = midori_browser_get_settings (browser);
|
MidoriWebSettings* settings = midori_browser_get_settings (browser);
|
||||||
GtkWidget* button;
|
GtkWidget* button;
|
||||||
GtkWidget* label;
|
GtkWidget* label;
|
||||||
gint max_age = katze_object_get_int (settings, "maximum-cookie-age");
|
|
||||||
guint active;
|
|
||||||
gchar* markup;
|
gchar* markup;
|
||||||
|
|
||||||
katze_preferences_add_category (preferences, _("Privacy"), GTK_STOCK_INDEX);
|
katze_preferences_add_category (preferences, _("Privacy"), GTK_STOCK_INDEX);
|
||||||
katze_preferences_add_group (preferences, NULL);
|
katze_preferences_add_group (preferences, NULL);
|
||||||
button = katze_property_label (settings, "maximum-cookie-age");
|
button = katze_property_label (settings, "maximum-cookie-age");
|
||||||
katze_preferences_add_widget (preferences, button, "indented");
|
katze_preferences_add_widget (preferences, button, "indented");
|
||||||
button = gtk_combo_box_new_text ();
|
button = katze_property_proxy (settings, "maximum-cookie-age", "days");
|
||||||
gtk_combo_box_append_text (GTK_COMBO_BOX (button), _("Delete old cookies after 1 hour"));
|
|
||||||
gtk_combo_box_append_text (GTK_COMBO_BOX (button), _("Delete old cookies after 1 day"));
|
|
||||||
gtk_combo_box_append_text (GTK_COMBO_BOX (button), _("Delete old cookies after 1 week"));
|
|
||||||
gtk_combo_box_append_text (GTK_COMBO_BOX (button), _("Delete old cookies after 1 month"));
|
|
||||||
gtk_combo_box_append_text (GTK_COMBO_BOX (button), _("Delete old cookies after 1 year"));
|
|
||||||
|
|
||||||
switch (max_age)
|
|
||||||
{
|
|
||||||
case 0: active = 0; break;
|
|
||||||
case 1: active = 1; break;
|
|
||||||
case 7: active = 2; break;
|
|
||||||
case 30: active = 3; break;
|
|
||||||
case 365: active = 4; break;
|
|
||||||
default:
|
|
||||||
active = 3;
|
|
||||||
}
|
|
||||||
gtk_combo_box_set_active (GTK_COMBO_BOX (button), active);
|
|
||||||
g_signal_connect (button, "changed",
|
|
||||||
G_CALLBACK (midori_preferences_delete_cookies_changed_cb), settings);
|
|
||||||
katze_preferences_add_widget (preferences, button, "spanned");
|
katze_preferences_add_widget (preferences, button, "spanned");
|
||||||
|
|
||||||
markup = g_strdup_printf ("<span size=\"smaller\">%s</span>",
|
markup = g_strdup_printf ("<span size=\"smaller\">%s</span>",
|
||||||
|
@ -781,29 +748,19 @@ midori_browser_privacy_preferences_cb (MidoriBrowser* browser,
|
||||||
gtk_label_set_markup (GTK_LABEL (label), markup);
|
gtk_label_set_markup (GTK_LABEL (label), markup);
|
||||||
g_free (markup);
|
g_free (markup);
|
||||||
katze_preferences_add_widget (preferences, label, "filled");
|
katze_preferences_add_widget (preferences, label, "filled");
|
||||||
#if WEBKIT_CHECK_VERSION (1, 1, 13)
|
|
||||||
button = katze_property_proxy (settings, "enable-offline-web-application-cache", NULL);
|
button = katze_property_proxy (settings, "enable-offline-web-application-cache", NULL);
|
||||||
katze_preferences_add_widget (preferences, button, "indented");
|
katze_preferences_add_widget (preferences, button, "indented");
|
||||||
#endif
|
|
||||||
#if WEBKIT_CHECK_VERSION (1, 1, 8)
|
|
||||||
button = katze_property_proxy (settings, "enable-html5-local-storage", NULL);
|
button = katze_property_proxy (settings, "enable-html5-local-storage", NULL);
|
||||||
katze_preferences_add_widget (preferences, button, "spanned");
|
katze_preferences_add_widget (preferences, button, "spanned");
|
||||||
#if !WEBKIT_CHECK_VERSION (1, 1, 14)
|
|
||||||
button = katze_property_proxy (settings, "enable-html5-database", NULL);
|
|
||||||
katze_preferences_add_widget (preferences, button, "indented");
|
|
||||||
#endif
|
|
||||||
#endif
|
|
||||||
#if HAVE_LIBSOUP_2_27_90
|
#if HAVE_LIBSOUP_2_27_90
|
||||||
button = katze_property_proxy (settings, "strip-referer", NULL);
|
button = katze_property_proxy (settings, "strip-referer", NULL);
|
||||||
katze_preferences_add_widget (preferences, button, "indented");
|
katze_preferences_add_widget (preferences, button, "indented");
|
||||||
#endif
|
#endif
|
||||||
katze_preferences_add_group (preferences, NULL);
|
katze_preferences_add_widget (preferences, gtk_label_new (NULL), "indented");
|
||||||
button = katze_property_label (settings, "maximum-history-age");
|
button = katze_property_label (settings, "maximum-history-age");
|
||||||
katze_preferences_add_widget (preferences, button, "indented");
|
katze_preferences_add_widget (preferences, button, "indented");
|
||||||
button = katze_property_proxy (settings, "maximum-history-age", NULL);
|
button = katze_property_proxy (settings, "maximum-history-age", "days");
|
||||||
katze_preferences_add_widget (preferences, button, "spanned");
|
katze_preferences_add_widget (preferences, button, "spanned");
|
||||||
label = gtk_label_new (_("days"));
|
|
||||||
katze_preferences_add_widget (preferences, label, "spanned");
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
|
@ -827,11 +784,9 @@ midori_app_add_browser_cb (MidoriApp* app,
|
||||||
midori_panel_append_page (MIDORI_PANEL (panel), MIDORI_VIEWABLE (addon));
|
midori_panel_append_page (MIDORI_PANEL (panel), MIDORI_VIEWABLE (addon));
|
||||||
|
|
||||||
/* Transfers */
|
/* Transfers */
|
||||||
#if WEBKIT_CHECK_VERSION (1, 1, 3)
|
|
||||||
addon = g_object_new (MIDORI_TYPE_TRANSFERS, "app", app, NULL);
|
addon = g_object_new (MIDORI_TYPE_TRANSFERS, "app", app, NULL);
|
||||||
gtk_widget_show (addon);
|
gtk_widget_show (addon);
|
||||||
midori_panel_append_page (MIDORI_PANEL (panel), MIDORI_VIEWABLE (addon));
|
midori_panel_append_page (MIDORI_PANEL (panel), MIDORI_VIEWABLE (addon));
|
||||||
#endif
|
|
||||||
|
|
||||||
/* Extensions */
|
/* Extensions */
|
||||||
g_signal_connect (browser, "show-preferences",
|
g_signal_connect (browser, "show-preferences",
|
||||||
|
@ -954,18 +909,6 @@ soup_session_settings_notify_http_proxy_cb (MidoriWebSettings* settings,
|
||||||
midori_soup_session_set_proxy_uri (session, NULL);
|
midori_soup_session_set_proxy_uri (session, NULL);
|
||||||
}
|
}
|
||||||
|
|
||||||
#if !WEBKIT_CHECK_VERSION (1, 1, 11)
|
|
||||||
static void
|
|
||||||
soup_session_settings_notify_ident_string_cb (MidoriWebSettings* settings,
|
|
||||||
GParamSpec* pspec,
|
|
||||||
SoupSession* session)
|
|
||||||
{
|
|
||||||
gchar* ident_string = katze_object_get_string (settings, "user-agent");
|
|
||||||
g_object_set (session, "user-agent", ident_string, NULL);
|
|
||||||
g_free (ident_string);
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
static void
|
static void
|
||||||
midori_soup_session_settings_accept_language_cb (SoupSession* session,
|
midori_soup_session_settings_accept_language_cb (SoupSession* session,
|
||||||
SoupMessage* msg,
|
SoupMessage* msg,
|
||||||
|
@ -1036,7 +979,7 @@ midori_load_soup_session (gpointer settings)
|
||||||
{
|
{
|
||||||
SoupSession* session = webkit_get_default_session ();
|
SoupSession* session = webkit_get_default_session ();
|
||||||
|
|
||||||
#if WEBKIT_CHECK_VERSION (1, 1, 14) && defined (HAVE_LIBSOUP_2_29_91)
|
#if defined (HAVE_LIBSOUP_2_29_91)
|
||||||
const gchar* certificate_files[] =
|
const gchar* certificate_files[] =
|
||||||
{
|
{
|
||||||
"/etc/pki/tls/certs/ca-bundle.crt",
|
"/etc/pki/tls/certs/ca-bundle.crt",
|
||||||
|
@ -1074,17 +1017,13 @@ midori_load_soup_session (gpointer settings)
|
||||||
g_signal_connect (settings, "notify::proxy-type",
|
g_signal_connect (settings, "notify::proxy-type",
|
||||||
G_CALLBACK (soup_session_settings_notify_http_proxy_cb), session);
|
G_CALLBACK (soup_session_settings_notify_http_proxy_cb), session);
|
||||||
|
|
||||||
#if !WEBKIT_CHECK_VERSION (1, 1, 11)
|
|
||||||
soup_session_settings_notify_ident_string_cb (settings, NULL, session);
|
|
||||||
g_signal_connect (settings, "notify::user-agent",
|
|
||||||
G_CALLBACK (soup_session_settings_notify_ident_string_cb), session);
|
|
||||||
#endif
|
|
||||||
|
|
||||||
g_signal_connect (session, "request-queued",
|
g_signal_connect (session, "request-queued",
|
||||||
G_CALLBACK (midori_soup_session_settings_accept_language_cb), settings);
|
G_CALLBACK (midori_soup_session_settings_accept_language_cb), settings);
|
||||||
|
|
||||||
midori_soup_session_debug (session);
|
midori_soup_session_debug (session);
|
||||||
|
|
||||||
|
g_object_set_data (G_OBJECT (session), "midori-session-initialized", (void*)1);
|
||||||
|
|
||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1098,22 +1037,6 @@ button_modify_preferences_clicked_cb (GtkWidget* button,
|
||||||
gtk_widget_destroy (dialog);
|
gtk_widget_destroy (dialog);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
|
||||||
button_reset_session_clicked_cb (GtkWidget* button,
|
|
||||||
KatzeArray* session)
|
|
||||||
{
|
|
||||||
gchar* config_file = build_config_filename ("session.old.xbel");
|
|
||||||
GError* error = NULL;
|
|
||||||
if (!midori_array_to_file (session, config_file, "xbel", &error))
|
|
||||||
{
|
|
||||||
g_warning (_("The session couldn't be saved. %s"), error->message);
|
|
||||||
g_error_free (error);
|
|
||||||
}
|
|
||||||
g_free (config_file);
|
|
||||||
katze_array_clear (session);
|
|
||||||
gtk_widget_set_sensitive (button, FALSE);
|
|
||||||
}
|
|
||||||
|
|
||||||
static void
|
static void
|
||||||
button_disable_extensions_clicked_cb (GtkWidget* button,
|
button_disable_extensions_clicked_cb (GtkWidget* button,
|
||||||
MidoriApp* app)
|
MidoriApp* app)
|
||||||
|
@ -1122,25 +1045,23 @@ button_disable_extensions_clicked_cb (GtkWidget* button,
|
||||||
gtk_widget_set_sensitive (button, FALSE);
|
gtk_widget_set_sensitive (button, FALSE);
|
||||||
}
|
}
|
||||||
|
|
||||||
static GtkWidget*
|
static MidoriStartup
|
||||||
midori_create_diagnostic_dialog (MidoriWebSettings* settings,
|
midori_show_diagnostic_dialog (MidoriWebSettings* settings,
|
||||||
KatzeArray* _session)
|
KatzeArray* _session)
|
||||||
{
|
{
|
||||||
GtkWidget* dialog;
|
GtkWidget* dialog;
|
||||||
GtkWidget* content_area;
|
GtkWidget* content_area;
|
||||||
GdkScreen* screen;
|
GdkScreen* screen;
|
||||||
GtkIconTheme* icon_theme;
|
GtkIconTheme* icon_theme;
|
||||||
|
GtkWidget* align;
|
||||||
GtkWidget* box;
|
GtkWidget* box;
|
||||||
GtkWidget* button;
|
GtkWidget* button;
|
||||||
MidoriApp* app = katze_item_get_parent (KATZE_ITEM (_session));
|
MidoriApp* app = katze_item_get_parent (KATZE_ITEM (_session));
|
||||||
|
MidoriStartup load_on_startup = katze_object_get_enum (settings, "load-on-startup");
|
||||||
|
gint response;
|
||||||
|
|
||||||
dialog = gtk_message_dialog_new (
|
dialog = gtk_message_dialog_new (
|
||||||
NULL, 0, GTK_MESSAGE_WARNING,
|
NULL, 0, GTK_MESSAGE_WARNING, GTK_BUTTONS_NONE,
|
||||||
#ifdef HAVE_HILDON_2_2
|
|
||||||
GTK_BUTTONS_NONE,
|
|
||||||
#else
|
|
||||||
GTK_BUTTONS_OK,
|
|
||||||
#endif
|
|
||||||
_("Midori seems to have crashed the last time it was opened. "
|
_("Midori seems to have crashed the last time it was opened. "
|
||||||
"If this happened repeatedly, try one of the following options "
|
"If this happened repeatedly, try one of the following options "
|
||||||
"to solve the problem."));
|
"to solve the problem."));
|
||||||
|
@ -1156,16 +1077,14 @@ midori_create_diagnostic_dialog (MidoriWebSettings* settings,
|
||||||
else
|
else
|
||||||
gtk_window_set_icon_name (GTK_WINDOW (dialog), "web-browser");
|
gtk_window_set_icon_name (GTK_WINDOW (dialog), "web-browser");
|
||||||
}
|
}
|
||||||
|
align = gtk_alignment_new (0.5, 0.5, 0.5, 0.5);
|
||||||
|
gtk_container_add (GTK_CONTAINER (content_area), align);
|
||||||
box = gtk_hbox_new (FALSE, 0);
|
box = gtk_hbox_new (FALSE, 0);
|
||||||
|
gtk_container_add (GTK_CONTAINER (align), box);
|
||||||
button = gtk_button_new_with_mnemonic (_("Modify _preferences"));
|
button = gtk_button_new_with_mnemonic (_("Modify _preferences"));
|
||||||
g_signal_connect (button, "clicked",
|
g_signal_connect (button, "clicked",
|
||||||
G_CALLBACK (button_modify_preferences_clicked_cb), settings);
|
G_CALLBACK (button_modify_preferences_clicked_cb), settings);
|
||||||
gtk_box_pack_start (GTK_BOX (box), button, FALSE, FALSE, 4);
|
gtk_box_pack_start (GTK_BOX (box), button, FALSE, FALSE, 4);
|
||||||
button = gtk_button_new_with_mnemonic (_("Reset the last _session"));
|
|
||||||
g_signal_connect (button, "clicked",
|
|
||||||
G_CALLBACK (button_reset_session_clicked_cb), _session);
|
|
||||||
gtk_widget_set_sensitive (button, !katze_array_is_empty (_session));
|
|
||||||
gtk_box_pack_start (GTK_BOX (box), button, FALSE, FALSE, 4);
|
|
||||||
button = gtk_button_new_with_mnemonic (_("Disable all _extensions"));
|
button = gtk_button_new_with_mnemonic (_("Disable all _extensions"));
|
||||||
if (g_object_get_data (G_OBJECT (app), "extensions"))
|
if (g_object_get_data (G_OBJECT (app), "extensions"))
|
||||||
g_signal_connect (button, "clicked",
|
g_signal_connect (button, "clicked",
|
||||||
|
@ -1173,22 +1092,19 @@ midori_create_diagnostic_dialog (MidoriWebSettings* settings,
|
||||||
else
|
else
|
||||||
gtk_widget_set_sensitive (button, FALSE);
|
gtk_widget_set_sensitive (button, FALSE);
|
||||||
gtk_box_pack_start (GTK_BOX (box), button, FALSE, FALSE, 4);
|
gtk_box_pack_start (GTK_BOX (box), button, FALSE, FALSE, 4);
|
||||||
gtk_widget_show_all (box);
|
gtk_widget_show_all (align);
|
||||||
gtk_container_add (GTK_CONTAINER (content_area), box);
|
|
||||||
button = katze_property_proxy (settings, "show-crash-dialog", NULL);
|
button = katze_property_proxy (settings, "show-crash-dialog", NULL);
|
||||||
gtk_widget_show (button);
|
gtk_widget_show (button);
|
||||||
gtk_container_add (GTK_CONTAINER (content_area), button);
|
gtk_container_add (GTK_CONTAINER (content_area), button);
|
||||||
#ifdef HAVE_HILDON_2_2
|
gtk_container_set_focus_child (GTK_CONTAINER (dialog), gtk_dialog_get_action_area (GTK_DIALOG (dialog)));
|
||||||
box = gtk_hbox_new (FALSE, 4);
|
gtk_dialog_add_buttons (GTK_DIALOG (dialog),
|
||||||
gtk_box_pack_start (GTK_BOX (GTK_DIALOG (dialog)->vbox), box, TRUE, FALSE, 4);
|
_("Discard old tabs"), MIDORI_STARTUP_BLANK_PAGE,
|
||||||
button = hildon_gtk_button_new (HILDON_SIZE_FINGER_HEIGHT | HILDON_SIZE_HALFSCREEN_WIDTH);
|
_("Show last tabs without loading"), MIDORI_STARTUP_DELAYED_PAGES,
|
||||||
gtk_button_set_label (GTK_BUTTON (button), GTK_STOCK_OK);
|
_("Show last open tabs"), MIDORI_STARTUP_LAST_OPEN_PAGES,
|
||||||
gtk_button_set_use_stock (GTK_BUTTON (button), TRUE);
|
NULL);
|
||||||
g_signal_connect_swapped (button, "clicked",
|
gtk_dialog_set_default_response (GTK_DIALOG (dialog),
|
||||||
G_CALLBACK (gtk_widget_destroy), dialog);
|
load_on_startup == MIDORI_STARTUP_HOMEPAGE
|
||||||
gtk_box_pack_start (GTK_BOX (box), button, TRUE, FALSE, 4);
|
? MIDORI_STARTUP_BLANK_PAGE : load_on_startup);
|
||||||
gtk_widget_show_all (box);
|
|
||||||
#endif
|
|
||||||
if (1)
|
if (1)
|
||||||
{
|
{
|
||||||
/* GtkLabel can't wrap the text properly. Until some day
|
/* GtkLabel can't wrap the text properly. Until some day
|
||||||
|
@ -1211,7 +1127,14 @@ midori_create_diagnostic_dialog (MidoriWebSettings* settings,
|
||||||
gtk_widget_size_request (content_area, &req);
|
gtk_widget_size_request (content_area, &req);
|
||||||
gtk_widget_set_size_request (label, req.width * 0.9, -1);
|
gtk_widget_set_size_request (label, req.width * 0.9, -1);
|
||||||
}
|
}
|
||||||
return dialog;
|
|
||||||
|
response = gtk_dialog_run (GTK_DIALOG (dialog));
|
||||||
|
gtk_widget_destroy (dialog);
|
||||||
|
if (response == GTK_RESPONSE_DELETE_EVENT)
|
||||||
|
response = G_MAXINT;
|
||||||
|
else if (response == MIDORI_STARTUP_BLANK_PAGE)
|
||||||
|
katze_array_clear (_session);
|
||||||
|
return response;
|
||||||
}
|
}
|
||||||
|
|
||||||
static gboolean
|
static gboolean
|
||||||
|
@ -1403,11 +1326,11 @@ midori_load_session (gpointer data)
|
||||||
MidoriBrowser* browser;
|
MidoriBrowser* browser;
|
||||||
MidoriApp* app = katze_item_get_parent (KATZE_ITEM (_session));
|
MidoriApp* app = katze_item_get_parent (KATZE_ITEM (_session));
|
||||||
MidoriWebSettings* settings = katze_object_get_object (app, "settings");
|
MidoriWebSettings* settings = katze_object_get_object (app, "settings");
|
||||||
|
MidoriStartup load_on_startup;
|
||||||
gchar* config_file;
|
gchar* config_file;
|
||||||
KatzeArray* session;
|
KatzeArray* session;
|
||||||
KatzeItem* item;
|
KatzeItem* item;
|
||||||
gint64 current;
|
gint64 current;
|
||||||
MidoriStartup load_on_startup;
|
|
||||||
gchar** command = g_object_get_data (G_OBJECT (app), "execute-command");
|
gchar** command = g_object_get_data (G_OBJECT (app), "execute-command");
|
||||||
#ifdef G_ENABLE_DEBUG
|
#ifdef G_ENABLE_DEBUG
|
||||||
gboolean startup_timer = g_getenv ("MIDORI_STARTTIME") != NULL;
|
gboolean startup_timer = g_getenv ("MIDORI_STARTTIME") != NULL;
|
||||||
|
@ -1436,8 +1359,7 @@ midori_load_session (gpointer data)
|
||||||
g_signal_connect_after (gtk_accel_map_get (), "changed",
|
g_signal_connect_after (gtk_accel_map_get (), "changed",
|
||||||
G_CALLBACK (accel_map_changed_cb), NULL);
|
G_CALLBACK (accel_map_changed_cb), NULL);
|
||||||
|
|
||||||
g_object_get (settings, "load-on-startup", &load_on_startup, NULL);
|
load_on_startup = (MidoriStartup)g_object_get_data (G_OBJECT (settings), "load-on-startup");
|
||||||
|
|
||||||
if (katze_array_is_empty (_session))
|
if (katze_array_is_empty (_session))
|
||||||
{
|
{
|
||||||
gchar* homepage;
|
gchar* homepage;
|
||||||
|
@ -1536,7 +1458,6 @@ midori_run_script (const gchar* filename)
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
#if WEBKIT_CHECK_VERSION (1, 1, 6)
|
|
||||||
static void
|
static void
|
||||||
snapshot_load_finished_cb (GtkWidget* web_view,
|
snapshot_load_finished_cb (GtkWidget* web_view,
|
||||||
WebKitWebFrame* web_frame,
|
WebKitWebFrame* web_frame,
|
||||||
|
@ -1560,7 +1481,6 @@ snapshot_load_finished_cb (GtkWidget* web_view,
|
||||||
g_print (_("Snapshot saved to: %s\n"), filename);
|
g_print (_("Snapshot saved to: %s\n"), filename);
|
||||||
gtk_main_quit ();
|
gtk_main_quit ();
|
||||||
}
|
}
|
||||||
#endif
|
|
||||||
|
|
||||||
static void
|
static void
|
||||||
midori_web_app_browser_notify_load_status_cb (MidoriBrowser* browser,
|
midori_web_app_browser_notify_load_status_cb (MidoriBrowser* browser,
|
||||||
|
@ -1597,6 +1517,8 @@ midori_prepare_uri (const gchar *uri)
|
||||||
|
|
||||||
if (g_path_is_absolute (uri))
|
if (g_path_is_absolute (uri))
|
||||||
return g_filename_to_uri (uri, NULL, NULL);
|
return g_filename_to_uri (uri, NULL, NULL);
|
||||||
|
else if (g_str_has_prefix(uri, "javascript:"))
|
||||||
|
return g_strdup (uri);
|
||||||
else if (g_file_test (uri, G_FILE_TEST_EXISTS | G_FILE_TEST_IS_REGULAR))
|
else if (g_file_test (uri, G_FILE_TEST_EXISTS | G_FILE_TEST_IS_REGULAR))
|
||||||
{
|
{
|
||||||
gchar* current_dir = g_get_current_dir ();
|
gchar* current_dir = g_get_current_dir ();
|
||||||
|
@ -1647,7 +1569,12 @@ speeddial_new_from_file (const gchar* config,
|
||||||
}
|
}
|
||||||
|
|
||||||
katze_assign (config_file, g_build_filename (config, "speeddial.json", NULL));
|
katze_assign (config_file, g_build_filename (config, "speeddial.json", NULL));
|
||||||
g_file_get_contents (config_file, &json_content, &json_length, NULL);
|
if (!g_file_get_contents (config_file, &json_content, &json_length, NULL))
|
||||||
|
{
|
||||||
|
katze_assign (json_content, g_strdup ("'{}'"));
|
||||||
|
json_length = strlen ("'{}'");
|
||||||
|
}
|
||||||
|
|
||||||
script = g_string_sized_new (json_length);
|
script = g_string_sized_new (json_length);
|
||||||
g_string_append (script, "var json = JSON.parse (");
|
g_string_append (script, "var json = JSON.parse (");
|
||||||
g_string_append_len (script, json_content, json_length);
|
g_string_append_len (script, json_content, json_length);
|
||||||
|
@ -1661,7 +1588,7 @@ speeddial_new_from_file (const gchar* config,
|
||||||
" + 'title=' + tile['title'] + '\\n\\n';"
|
" + 'title=' + tile['title'] + '\\n\\n';"
|
||||||
"} "
|
"} "
|
||||||
"var columns = json['width'] ? json['width'] : 3;"
|
"var columns = json['width'] ? json['width'] : 3;"
|
||||||
"var rows = json['shortcuts'].length / columns;"
|
"var rows = json['shortcuts'] ? json['shortcuts'].length / columns : 0;"
|
||||||
"keyfile += '[settings]\\n'"
|
"keyfile += '[settings]\\n'"
|
||||||
" + 'columns=' + columns + '\\n'"
|
" + 'columns=' + columns + '\\n'"
|
||||||
" + 'rows=' + (rows > 3 ? rows : 3) + '\\n\\n';"
|
" + 'rows=' + (rows > 3 ? rows : 3) + '\\n\\n';"
|
||||||
|
@ -1848,13 +1775,28 @@ midori_clear_flash_cookies_cb (void)
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if WEBKIT_CHECK_VERSION (1, 1, 14)
|
static void
|
||||||
|
midori_clear_saved_logins_cb (void)
|
||||||
|
{
|
||||||
|
sqlite3* db;
|
||||||
|
gchar* path = g_build_filename (sokoke_set_config_dir (NULL), "logins", NULL);
|
||||||
|
g_unlink (path);
|
||||||
|
/* Form History database, written by the extension */
|
||||||
|
katze_assign (path, g_build_filename (sokoke_set_config_dir (NULL),
|
||||||
|
"extensions", LIBPREFIX "formhistory." G_MODULE_SUFFIX, "forms.db", NULL));
|
||||||
|
if (sqlite3_open (path, &db) == SQLITE_OK)
|
||||||
|
{
|
||||||
|
sqlite3_exec (db, "DELETE FROM forms", NULL, NULL, NULL);
|
||||||
|
sqlite3_close (db);
|
||||||
|
}
|
||||||
|
g_free (path);
|
||||||
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
midori_clear_html5_databases_cb (void)
|
midori_clear_html5_databases_cb (void)
|
||||||
{
|
{
|
||||||
webkit_remove_all_web_databases ();
|
webkit_remove_all_web_databases ();
|
||||||
}
|
}
|
||||||
#endif
|
|
||||||
|
|
||||||
#if WEBKIT_CHECK_VERSION (1, 3, 11)
|
#if WEBKIT_CHECK_VERSION (1, 3, 11)
|
||||||
static void
|
static void
|
||||||
|
@ -1880,6 +1822,48 @@ midori_clear_offline_appcache_cb (void)
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
static void
|
||||||
|
midori_log_to_file (const gchar* log_domain,
|
||||||
|
GLogLevelFlags log_level,
|
||||||
|
const gchar* message,
|
||||||
|
gpointer user_data)
|
||||||
|
{
|
||||||
|
FILE* logfile = fopen ((const char*)user_data, "a");
|
||||||
|
gchar* level_name = "";
|
||||||
|
time_t timestamp = time (NULL);
|
||||||
|
|
||||||
|
switch (log_level)
|
||||||
|
{
|
||||||
|
/* skip irrelevant flags */
|
||||||
|
case G_LOG_LEVEL_MASK:
|
||||||
|
case G_LOG_FLAG_FATAL:
|
||||||
|
case G_LOG_FLAG_RECURSION:
|
||||||
|
|
||||||
|
case G_LOG_LEVEL_ERROR:
|
||||||
|
level_name = "ERROR";
|
||||||
|
break;
|
||||||
|
case G_LOG_LEVEL_CRITICAL:
|
||||||
|
level_name = "CRITICAL";
|
||||||
|
break;
|
||||||
|
case G_LOG_LEVEL_WARNING:
|
||||||
|
level_name = "WARNING";
|
||||||
|
break;
|
||||||
|
case G_LOG_LEVEL_MESSAGE:
|
||||||
|
level_name = "MESSAGE";
|
||||||
|
break;
|
||||||
|
case G_LOG_LEVEL_INFO:
|
||||||
|
level_name = "INFO";
|
||||||
|
break;
|
||||||
|
case G_LOG_LEVEL_DEBUG:
|
||||||
|
level_name = "DEBUG";
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
fprintf (logfile, "%s%s-%s **: %s\n", asctime (localtime (×tamp)),
|
||||||
|
log_domain ? log_domain : "Midori", level_name, message);
|
||||||
|
fclose (logfile);
|
||||||
|
}
|
||||||
|
|
||||||
int
|
int
|
||||||
main (int argc,
|
main (int argc,
|
||||||
char** argv)
|
char** argv)
|
||||||
|
@ -1891,6 +1875,7 @@ main (int argc,
|
||||||
gboolean back_from_crash;
|
gboolean back_from_crash;
|
||||||
gboolean run;
|
gboolean run;
|
||||||
gchar* snapshot;
|
gchar* snapshot;
|
||||||
|
gchar* logfile;
|
||||||
gboolean execute;
|
gboolean execute;
|
||||||
gboolean help_execute;
|
gboolean help_execute;
|
||||||
gboolean version;
|
gboolean version;
|
||||||
|
@ -1914,10 +1899,8 @@ main (int argc,
|
||||||
N_("Show a diagnostic dialog"), NULL },
|
N_("Show a diagnostic dialog"), NULL },
|
||||||
{ "run", 'r', 0, G_OPTION_ARG_NONE, &run,
|
{ "run", 'r', 0, G_OPTION_ARG_NONE, &run,
|
||||||
N_("Run the specified filename as javascript"), NULL },
|
N_("Run the specified filename as javascript"), NULL },
|
||||||
#if WEBKIT_CHECK_VERSION (1, 1, 6)
|
|
||||||
{ "snapshot", 's', 0, G_OPTION_ARG_STRING, &snapshot,
|
{ "snapshot", 's', 0, G_OPTION_ARG_STRING, &snapshot,
|
||||||
N_("Take a snapshot of the specified URI"), NULL },
|
N_("Take a snapshot of the specified URI"), NULL },
|
||||||
#endif
|
|
||||||
{ "execute", 'e', 0, G_OPTION_ARG_NONE, &execute,
|
{ "execute", 'e', 0, G_OPTION_ARG_NONE, &execute,
|
||||||
N_("Execute the specified command"), NULL },
|
N_("Execute the specified command"), NULL },
|
||||||
{ "help-execute", 0, 0, G_OPTION_ARG_NONE, &help_execute,
|
{ "help-execute", 0, 0, G_OPTION_ARG_NONE, &help_execute,
|
||||||
|
@ -1933,6 +1916,8 @@ main (int argc,
|
||||||
/* i18n: CLI: Close tabs, clear private data, open starting page */
|
/* i18n: CLI: Close tabs, clear private data, open starting page */
|
||||||
N_("Reset Midori after SECONDS seconds of inactivity"), N_("SECONDS") },
|
N_("Reset Midori after SECONDS seconds of inactivity"), N_("SECONDS") },
|
||||||
#endif
|
#endif
|
||||||
|
{ "log-file", 'l', 0, G_OPTION_ARG_FILENAME, &logfile,
|
||||||
|
N_("Redirects console warnings to the specified FILENAME"), N_("FILENAME")},
|
||||||
{ NULL }
|
{ NULL }
|
||||||
};
|
};
|
||||||
GString* error_messages;
|
GString* error_messages;
|
||||||
|
@ -2008,6 +1993,7 @@ main (int argc,
|
||||||
diagnostic_dialog = FALSE;
|
diagnostic_dialog = FALSE;
|
||||||
run = FALSE;
|
run = FALSE;
|
||||||
snapshot = NULL;
|
snapshot = NULL;
|
||||||
|
logfile = NULL;
|
||||||
execute = FALSE;
|
execute = FALSE;
|
||||||
help_execute = FALSE;
|
help_execute = FALSE;
|
||||||
version = FALSE;
|
version = FALSE;
|
||||||
|
@ -2036,7 +2022,6 @@ main (int argc,
|
||||||
/* Private browsing, window title, default config folder */
|
/* Private browsing, window title, default config folder */
|
||||||
if (private)
|
if (private)
|
||||||
{
|
{
|
||||||
g_set_application_name (_("Midori (Private Browsing)"));
|
|
||||||
if (!config && !webapp)
|
if (!config && !webapp)
|
||||||
config = g_build_filename (g_get_user_config_dir (), PACKAGE_NAME, NULL);
|
config = g_build_filename (g_get_user_config_dir (), PACKAGE_NAME, NULL);
|
||||||
/* Mask the timezone, which can be read by Javascript */
|
/* Mask the timezone, which can be read by Javascript */
|
||||||
|
@ -2093,7 +2078,6 @@ main (int argc,
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
#if WEBKIT_CHECK_VERSION (1, 1, 6)
|
|
||||||
if (snapshot)
|
if (snapshot)
|
||||||
{
|
{
|
||||||
gchar* filename;
|
gchar* filename;
|
||||||
|
@ -2124,20 +2108,25 @@ main (int argc,
|
||||||
g_free (filename);
|
g_free (filename);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
#endif
|
|
||||||
|
if (logfile)
|
||||||
|
{
|
||||||
|
g_log_set_default_handler (midori_log_to_file, (gpointer)logfile);
|
||||||
|
}
|
||||||
|
|
||||||
sokoke_register_privacy_item ("page-icons", _("Website icons"),
|
sokoke_register_privacy_item ("page-icons", _("Website icons"),
|
||||||
G_CALLBACK (midori_clear_page_icons_cb));
|
G_CALLBACK (midori_clear_page_icons_cb));
|
||||||
|
/* i18n: Logins and passwords in websites and web forms */
|
||||||
|
sokoke_register_privacy_item ("formhistory", _("Saved logins and _passwords"),
|
||||||
|
G_CALLBACK (midori_clear_saved_logins_cb));
|
||||||
sokoke_register_privacy_item ("web-cookies", _("Cookies"),
|
sokoke_register_privacy_item ("web-cookies", _("Cookies"),
|
||||||
G_CALLBACK (midori_clear_web_cookies_cb));
|
G_CALLBACK (midori_clear_web_cookies_cb));
|
||||||
#ifdef GDK_WINDOWING_X11
|
#ifdef GDK_WINDOWING_X11
|
||||||
sokoke_register_privacy_item ("flash-cookies", _("'Flash' Cookies"),
|
sokoke_register_privacy_item ("flash-cookies", _("'Flash' Cookies"),
|
||||||
G_CALLBACK (midori_clear_flash_cookies_cb));
|
G_CALLBACK (midori_clear_flash_cookies_cb));
|
||||||
#endif
|
#endif
|
||||||
#if WEBKIT_CHECK_VERSION (1, 1, 14)
|
|
||||||
sokoke_register_privacy_item ("html5-databases", _("HTML5 _Databases"),
|
sokoke_register_privacy_item ("html5-databases", _("HTML5 _Databases"),
|
||||||
G_CALLBACK (midori_clear_html5_databases_cb));
|
G_CALLBACK (midori_clear_html5_databases_cb));
|
||||||
#endif
|
|
||||||
#if WEBKIT_CHECK_VERSION (1, 3, 11)
|
#if WEBKIT_CHECK_VERSION (1, 3, 11)
|
||||||
sokoke_register_privacy_item ("web-cache", _("Web Cache"),
|
sokoke_register_privacy_item ("web-cache", _("Web Cache"),
|
||||||
G_CALLBACK (midori_clear_web_cache_cb));
|
G_CALLBACK (midori_clear_web_cache_cb));
|
||||||
|
@ -2167,6 +2156,34 @@ main (int argc,
|
||||||
else
|
else
|
||||||
settings = g_object_ref (midori_browser_get_settings (browser));
|
settings = g_object_ref (midori_browser_get_settings (browser));
|
||||||
|
|
||||||
|
if (private)
|
||||||
|
{
|
||||||
|
g_object_set (settings,
|
||||||
|
"preferred-languages", "en",
|
||||||
|
"enable-private-browsing", TRUE,
|
||||||
|
"enable-html5-database", FALSE,
|
||||||
|
"enable-html5-local-storage", FALSE,
|
||||||
|
"enable-offline-web-application-cache", FALSE,
|
||||||
|
/* Arguably DNS prefetching is or isn't a privacy concern. For the
|
||||||
|
* lack of more fine-grained control we'll go the safe route. */
|
||||||
|
"enable-dns-prefetching", FALSE,
|
||||||
|
"strip-referer", TRUE, NULL);
|
||||||
|
midori_browser_set_action_visible (browser, "Tools", FALSE);
|
||||||
|
midori_browser_set_action_visible (browser, "ClearPrivateData", FALSE);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (private || !config)
|
||||||
|
{
|
||||||
|
/* Disable saving by setting an unwritable folder */
|
||||||
|
sokoke_set_config_dir ("/");
|
||||||
|
}
|
||||||
|
|
||||||
|
midori_load_soup_session (settings);
|
||||||
|
if (block_uris)
|
||||||
|
g_signal_connect (session, "request-queued",
|
||||||
|
G_CALLBACK (midori_soup_session_block_uris_cb),
|
||||||
|
g_strdup (block_uris));
|
||||||
|
|
||||||
if (webapp)
|
if (webapp)
|
||||||
{
|
{
|
||||||
gchar* tmp_uri = midori_prepare_uri (webapp);
|
gchar* tmp_uri = midori_prepare_uri (webapp);
|
||||||
|
@ -2186,32 +2203,6 @@ main (int argc,
|
||||||
G_CALLBACK (midori_web_app_browser_notify_load_status_cb), NULL);
|
G_CALLBACK (midori_web_app_browser_notify_load_status_cb), NULL);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (private)
|
|
||||||
{
|
|
||||||
g_object_set (settings,
|
|
||||||
"preferred-languages", "en",
|
|
||||||
#if WEBKIT_CHECK_VERSION (1, 1, 2)
|
|
||||||
"enable-private-browsing", TRUE,
|
|
||||||
#endif
|
|
||||||
#if WEBKIT_CHECK_VERSION (1, 1, 8)
|
|
||||||
"enable-html5-database", FALSE,
|
|
||||||
"enable-html5-local-storage", FALSE,
|
|
||||||
"enable-offline-web-application-cache", FALSE,
|
|
||||||
#endif
|
|
||||||
/* Arguably DNS prefetching is or isn't a privacy concern. For the
|
|
||||||
* lack of more fine-grained control we'll go the safe route. */
|
|
||||||
"enable-dns-prefetching", FALSE,
|
|
||||||
"strip-referer", TRUE, NULL);
|
|
||||||
midori_browser_set_action_visible (browser, "Tools", FALSE);
|
|
||||||
midori_browser_set_action_visible (browser, "ClearPrivateData", FALSE);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (private || !config)
|
|
||||||
{
|
|
||||||
/* Disable saving by setting an unwritable folder */
|
|
||||||
sokoke_set_config_dir ("/");
|
|
||||||
}
|
|
||||||
|
|
||||||
g_object_set (settings, "show-panel", FALSE,
|
g_object_set (settings, "show-panel", FALSE,
|
||||||
"last-window-state", MIDORI_WINDOW_NORMAL,
|
"last-window-state", MIDORI_WINDOW_NORMAL,
|
||||||
NULL);
|
NULL);
|
||||||
|
@ -2243,12 +2234,7 @@ main (int argc,
|
||||||
if (midori_browser_get_current_uri (browser) == NULL)
|
if (midori_browser_get_current_uri (browser) == NULL)
|
||||||
midori_browser_add_uri (browser, "about:blank");
|
midori_browser_add_uri (browser, "about:blank");
|
||||||
|
|
||||||
if (block_uris)
|
|
||||||
g_signal_connect (session, "request-queued",
|
|
||||||
G_CALLBACK (midori_soup_session_block_uris_cb),
|
|
||||||
g_strdup (block_uris));
|
|
||||||
midori_setup_inactivity_reset (browser, inactivity_reset, webapp);
|
midori_setup_inactivity_reset (browser, inactivity_reset, webapp);
|
||||||
midori_load_soup_session (settings);
|
|
||||||
midori_startup_timer ("App created: \t%f");
|
midori_startup_timer ("App created: \t%f");
|
||||||
gtk_main ();
|
gtk_main ();
|
||||||
return 0;
|
return 0;
|
||||||
|
@ -2319,9 +2305,7 @@ main (int argc,
|
||||||
error = NULL;
|
error = NULL;
|
||||||
settings = settings_and_accels_new (config, &extensions);
|
settings = settings_and_accels_new (config, &extensions);
|
||||||
g_object_set (settings, "enable-developer-extras", TRUE, NULL);
|
g_object_set (settings, "enable-developer-extras", TRUE, NULL);
|
||||||
#if WEBKIT_CHECK_VERSION (1, 1, 14)
|
|
||||||
g_object_set (settings, "enable-html5-database", TRUE, NULL);
|
g_object_set (settings, "enable-html5-database", TRUE, NULL);
|
||||||
#endif
|
|
||||||
midori_startup_timer ("Config and accels read: \t%f");
|
midori_startup_timer ("Config and accels read: \t%f");
|
||||||
|
|
||||||
/* Load search engines */
|
/* Load search engines */
|
||||||
|
@ -2345,7 +2329,7 @@ main (int argc,
|
||||||
{
|
{
|
||||||
g_string_append_printf (error_messages,
|
g_string_append_printf (error_messages,
|
||||||
_("Bookmarks couldn't be loaded: %s\n"), errmsg);
|
_("Bookmarks couldn't be loaded: %s\n"), errmsg);
|
||||||
g_free (errmsg);
|
errmsg = NULL;
|
||||||
}
|
}
|
||||||
else if (!bookmarks_exist)
|
else if (!bookmarks_exist)
|
||||||
{
|
{
|
||||||
|
@ -2367,8 +2351,8 @@ main (int argc,
|
||||||
|
|
||||||
config_file = NULL;
|
config_file = NULL;
|
||||||
_session = katze_array_new (KATZE_TYPE_ITEM);
|
_session = katze_array_new (KATZE_TYPE_ITEM);
|
||||||
|
load_on_startup = katze_object_get_enum (settings, "load-on-startup");
|
||||||
#if HAVE_LIBXML
|
#if HAVE_LIBXML
|
||||||
g_object_get (settings, "load-on-startup", &load_on_startup, NULL);
|
|
||||||
if (load_on_startup >= MIDORI_STARTUP_LAST_OPEN_PAGES)
|
if (load_on_startup >= MIDORI_STARTUP_LAST_OPEN_PAGES)
|
||||||
{
|
{
|
||||||
katze_assign (config_file, build_config_filename ("session.xbel"));
|
katze_assign (config_file, build_config_filename ("session.xbel"));
|
||||||
|
@ -2406,11 +2390,12 @@ main (int argc,
|
||||||
{
|
{
|
||||||
g_string_append_printf (error_messages,
|
g_string_append_printf (error_messages,
|
||||||
_("The history couldn't be loaded: %s\n"), errmsg);
|
_("The history couldn't be loaded: %s\n"), errmsg);
|
||||||
g_free (errmsg);
|
errmsg = NULL;
|
||||||
}
|
}
|
||||||
g_free (bookmarks_file);
|
g_free (bookmarks_file);
|
||||||
midori_startup_timer ("History read: \t%f");
|
midori_startup_timer ("History read: \t%f");
|
||||||
|
|
||||||
|
error = NULL;
|
||||||
speeddial = speeddial_new_from_file (config, &error);
|
speeddial = speeddial_new_from_file (config, &error);
|
||||||
|
|
||||||
/* In case of errors */
|
/* In case of errors */
|
||||||
|
@ -2469,6 +2454,8 @@ main (int argc,
|
||||||
uri_ready = midori_prepare_uri (uri);
|
uri_ready = midori_prepare_uri (uri);
|
||||||
katze_item_set_uri (item, uri_ready);
|
katze_item_set_uri (item, uri_ready);
|
||||||
g_free (uri_ready);
|
g_free (uri_ready);
|
||||||
|
/* Never delay command line arguments */
|
||||||
|
katze_item_set_meta_integer (item, "delay", 0);
|
||||||
katze_array_add_item (_session, item);
|
katze_array_add_item (_session, item);
|
||||||
uri = strtok (NULL, "|");
|
uri = strtok (NULL, "|");
|
||||||
}
|
}
|
||||||
|
@ -2507,24 +2494,16 @@ main (int argc,
|
||||||
else
|
else
|
||||||
g_file_set_contents (config_file, "RUNNING", -1, NULL);
|
g_file_set_contents (config_file, "RUNNING", -1, NULL);
|
||||||
|
|
||||||
if (back_from_crash)
|
if (back_from_crash && katze_object_get_boolean (settings, "show-crash-dialog"))
|
||||||
{
|
|
||||||
if (katze_object_get_int (settings, "load-on-startup")
|
|
||||||
>= MIDORI_STARTUP_LAST_OPEN_PAGES)
|
|
||||||
midori_session_add_delay (_session);
|
|
||||||
|
|
||||||
if (katze_object_get_boolean (settings, "show-crash-dialog"))
|
|
||||||
diagnostic_dialog = TRUE;
|
diagnostic_dialog = TRUE;
|
||||||
}
|
|
||||||
|
|
||||||
if (diagnostic_dialog)
|
if (diagnostic_dialog)
|
||||||
{
|
{
|
||||||
GtkWidget* dialog = midori_create_diagnostic_dialog (settings, _session);
|
load_on_startup = midori_show_diagnostic_dialog (settings, _session);
|
||||||
gint response = gtk_dialog_run (GTK_DIALOG (dialog));
|
if (load_on_startup == G_MAXINT)
|
||||||
gtk_widget_destroy (dialog);
|
|
||||||
if (response == GTK_RESPONSE_DELETE_EVENT)
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
g_object_set_data (G_OBJECT (settings), "load-on-startup", GINT_TO_POINTER (load_on_startup));
|
||||||
midori_startup_timer ("Signal setup: \t%f");
|
midori_startup_timer ("Signal setup: \t%f");
|
||||||
|
|
||||||
g_object_set (app, "settings", settings,
|
g_object_set (app, "settings", settings,
|
||||||
|
@ -2573,6 +2552,7 @@ main (int argc,
|
||||||
GList* data_items = sokoke_register_privacy_item (NULL, NULL, NULL);
|
GList* data_items = sokoke_register_privacy_item (NULL, NULL, NULL);
|
||||||
gchar* clear_data = katze_object_get_string (settings, "clear-data");
|
gchar* clear_data = katze_object_get_string (settings, "clear-data");
|
||||||
|
|
||||||
|
midori_remove_config_file (clear_prefs, MIDORI_CLEAR_SESSION, "session.xbel");
|
||||||
midori_remove_config_file (clear_prefs, MIDORI_CLEAR_HISTORY, "history.db");
|
midori_remove_config_file (clear_prefs, MIDORI_CLEAR_HISTORY, "history.db");
|
||||||
midori_remove_config_file (clear_prefs, MIDORI_CLEAR_TRASH, "tabtrash.xbel");
|
midori_remove_config_file (clear_prefs, MIDORI_CLEAR_TRASH, "tabtrash.xbel");
|
||||||
|
|
||||||
|
@ -2585,8 +2565,8 @@ main (int argc,
|
||||||
g_free (clear_data);
|
g_free (clear_data);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (katze_object_get_int (settings, "load-on-startup")
|
load_on_startup = katze_object_get_int (settings, "load-on-startup");
|
||||||
< MIDORI_STARTUP_LAST_OPEN_PAGES)
|
if (load_on_startup < MIDORI_STARTUP_LAST_OPEN_PAGES)
|
||||||
{
|
{
|
||||||
katze_assign (config_file, g_build_filename (config, "session.xbel", NULL));
|
katze_assign (config_file, g_build_filename (config, "session.xbel", NULL));
|
||||||
g_unlink (config_file);
|
g_unlink (config_file);
|
||||||
|
|
|
@ -36,6 +36,10 @@
|
||||||
#include <unistd.h>
|
#include <unistd.h>
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#include <sys/types.h>
|
||||||
|
#include <sys/stat.h>
|
||||||
|
#include <fcntl.h>
|
||||||
|
|
||||||
#ifdef HAVE_HILDON_2_2
|
#ifdef HAVE_HILDON_2_2
|
||||||
#include <dbus/dbus.h>
|
#include <dbus/dbus.h>
|
||||||
#include <mce/mode-names.h>
|
#include <mce/mode-names.h>
|
||||||
|
@ -225,11 +229,9 @@ midori_transferbar_confirm_delete (MidoriTransferbar* transferbar);
|
||||||
static void
|
static void
|
||||||
_midori_browser_update_notebook (MidoriBrowser* browser);
|
_midori_browser_update_notebook (MidoriBrowser* browser);
|
||||||
|
|
||||||
#if WEBKIT_CHECK_VERSION (1, 1, 3)
|
|
||||||
void
|
void
|
||||||
midori_transferbar_add_download_item (MidoriTransferbar* transferbar,
|
midori_transferbar_add_download_item (MidoriTransferbar* transferbar,
|
||||||
WebKitDownload* download);
|
WebKitDownload* download);
|
||||||
#endif
|
|
||||||
|
|
||||||
#define _action_by_name(brwsr, nme) \
|
#define _action_by_name(brwsr, nme) \
|
||||||
gtk_action_group_get_action (brwsr->action_group, nme)
|
gtk_action_group_get_action (brwsr->action_group, nme)
|
||||||
|
@ -306,10 +308,8 @@ _midori_browser_update_interface (MidoriBrowser* browser)
|
||||||
_action_set_sensitive (browser, "ZoomOut", midori_view_can_zoom_out (view));
|
_action_set_sensitive (browser, "ZoomOut", midori_view_can_zoom_out (view));
|
||||||
_action_set_sensitive (browser, "ZoomNormal",
|
_action_set_sensitive (browser, "ZoomNormal",
|
||||||
midori_view_get_zoom_level (view) != 1.0f);
|
midori_view_get_zoom_level (view) != 1.0f);
|
||||||
#if WEBKIT_CHECK_VERSION (1, 1, 2)
|
|
||||||
_action_set_sensitive (browser, "Encoding",
|
_action_set_sensitive (browser, "Encoding",
|
||||||
midori_view_can_view_source (view));
|
midori_view_can_view_source (view));
|
||||||
#endif
|
|
||||||
_action_set_sensitive (browser, "SourceView",
|
_action_set_sensitive (browser, "SourceView",
|
||||||
midori_view_can_view_source (view));
|
midori_view_can_view_source (view));
|
||||||
_action_set_sensitive (browser, "Find",
|
_action_set_sensitive (browser, "Find",
|
||||||
|
@ -576,16 +576,13 @@ static void
|
||||||
midori_browser_set_title (MidoriBrowser* browser,
|
midori_browser_set_title (MidoriBrowser* browser,
|
||||||
const gchar* title)
|
const gchar* title)
|
||||||
{
|
{
|
||||||
#if WEBKIT_CHECK_VERSION (1, 1, 2)
|
|
||||||
if (katze_object_get_boolean (browser->settings, "enable-private-browsing"))
|
if (katze_object_get_boolean (browser->settings, "enable-private-browsing"))
|
||||||
{
|
{
|
||||||
gchar* window_title = g_strconcat (title, " - ",
|
gchar* window_title = g_strdup_printf (_("%s (Private Browsing)"), title);
|
||||||
g_get_application_name (), NULL);
|
|
||||||
gtk_window_set_title (GTK_WINDOW (browser), window_title);
|
gtk_window_set_title (GTK_WINDOW (browser), window_title);
|
||||||
g_free (window_title);
|
g_free (window_title);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
#endif
|
|
||||||
gtk_window_set_title (GTK_WINDOW (browser), title);
|
gtk_window_set_title (GTK_WINDOW (browser), title);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -705,7 +702,6 @@ midori_browser_edit_bookmark_dialog_new (MidoriBrowser* browser,
|
||||||
GtkWidget* label;
|
GtkWidget* label;
|
||||||
const gchar* value;
|
const gchar* value;
|
||||||
GtkWidget* entry_title;
|
GtkWidget* entry_title;
|
||||||
GtkWidget* entry_desc;
|
|
||||||
GtkWidget* entry_uri;
|
GtkWidget* entry_uri;
|
||||||
GtkWidget* combo_folder;
|
GtkWidget* combo_folder;
|
||||||
GtkWidget* check_toolbar;
|
GtkWidget* check_toolbar;
|
||||||
|
@ -718,6 +714,9 @@ midori_browser_edit_bookmark_dialog_new (MidoriBrowser* browser,
|
||||||
|
|
||||||
db = g_object_get_data (G_OBJECT (browser->bookmarks), "db");
|
db = g_object_get_data (G_OBJECT (browser->bookmarks), "db");
|
||||||
|
|
||||||
|
if (!db)
|
||||||
|
return FALSE;
|
||||||
|
|
||||||
if (is_folder)
|
if (is_folder)
|
||||||
title = new_bookmark ? _("New folder") : _("Edit folder");
|
title = new_bookmark ? _("New folder") : _("Edit folder");
|
||||||
else
|
else
|
||||||
|
@ -767,22 +766,6 @@ midori_browser_edit_bookmark_dialog_new (MidoriBrowser* browser,
|
||||||
gtk_container_add (GTK_CONTAINER (content_area), hbox);
|
gtk_container_add (GTK_CONTAINER (content_area), hbox);
|
||||||
gtk_widget_show_all (hbox);
|
gtk_widget_show_all (hbox);
|
||||||
|
|
||||||
hbox = gtk_hbox_new (FALSE, 8);
|
|
||||||
gtk_container_set_border_width (GTK_CONTAINER (hbox), 4);
|
|
||||||
label = gtk_label_new_with_mnemonic (_("_Description:"));
|
|
||||||
gtk_size_group_add_widget (sizegroup, label);
|
|
||||||
gtk_box_pack_start (GTK_BOX (hbox), label, FALSE, FALSE, 0);
|
|
||||||
entry_desc = gtk_entry_new ();
|
|
||||||
gtk_entry_set_activates_default (GTK_ENTRY (entry_desc), TRUE);
|
|
||||||
if (bookmark)
|
|
||||||
{
|
|
||||||
value = katze_item_get_text (bookmark);
|
|
||||||
gtk_entry_set_text (GTK_ENTRY (entry_desc), value ? value : "");
|
|
||||||
}
|
|
||||||
gtk_box_pack_start (GTK_BOX (hbox), entry_desc, TRUE, TRUE, 0);
|
|
||||||
gtk_container_add (GTK_CONTAINER (content_area), hbox);
|
|
||||||
gtk_widget_show_all (hbox);
|
|
||||||
|
|
||||||
entry_uri = NULL;
|
entry_uri = NULL;
|
||||||
if (!is_folder)
|
if (!is_folder)
|
||||||
{
|
{
|
||||||
|
@ -908,8 +891,6 @@ midori_browser_edit_bookmark_dialog_new (MidoriBrowser* browser,
|
||||||
|
|
||||||
katze_item_set_name (bookmark,
|
katze_item_set_name (bookmark,
|
||||||
gtk_entry_get_text (GTK_ENTRY (entry_title)));
|
gtk_entry_get_text (GTK_ENTRY (entry_title)));
|
||||||
katze_item_set_text (bookmark,
|
|
||||||
gtk_entry_get_text (GTK_ENTRY (entry_desc)));
|
|
||||||
katze_item_set_meta_integer (bookmark, "toolbar",
|
katze_item_set_meta_integer (bookmark, "toolbar",
|
||||||
gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (check_toolbar)));
|
gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (check_toolbar)));
|
||||||
if (!is_folder)
|
if (!is_folder)
|
||||||
|
@ -938,7 +919,6 @@ midori_browser_edit_bookmark_dialog_new (MidoriBrowser* browser,
|
||||||
return return_status;
|
return return_status;
|
||||||
}
|
}
|
||||||
|
|
||||||
#if WEBKIT_CHECK_VERSION (1, 1, 3)
|
|
||||||
static gboolean
|
static gboolean
|
||||||
midori_browser_prepare_download (MidoriBrowser* browser,
|
midori_browser_prepare_download (MidoriBrowser* browser,
|
||||||
WebKitDownload* download,
|
WebKitDownload* download,
|
||||||
|
@ -998,32 +978,12 @@ midori_browser_prepare_download (MidoriBrowser* browser,
|
||||||
midori_transferbar_add_download_item (MIDORI_TRANSFERBAR (browser->transferbar), download);
|
midori_transferbar_add_download_item (MIDORI_TRANSFERBAR (browser->transferbar), download);
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
#else
|
|
||||||
static void
|
|
||||||
midori_browser_save_transfer_cb (KatzeNetRequest* request,
|
|
||||||
gchar* filename)
|
|
||||||
{
|
|
||||||
FILE* fp;
|
|
||||||
size_t ret;
|
|
||||||
|
|
||||||
if (request->data)
|
static gchar*
|
||||||
{
|
midori_browser_save_source (const gchar* uri,
|
||||||
if ((fp = fopen (filename, "wb")))
|
const gchar* data,
|
||||||
{
|
const size_t len,
|
||||||
ret = fwrite (request->data, 1, request->length, fp);
|
const gchar* outfile);
|
||||||
fclose (fp);
|
|
||||||
if ((ret - request->length) != 0)
|
|
||||||
{
|
|
||||||
/* Once we have a download interface this should be
|
|
||||||
indicated graphically. */
|
|
||||||
g_warning ("Error writing to file %s "
|
|
||||||
"in midori_browser_save_transfer_cb", filename);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
g_free (filename);
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
static void
|
static void
|
||||||
midori_browser_save_uri (MidoriBrowser* browser,
|
midori_browser_save_uri (MidoriBrowser* browser,
|
||||||
|
@ -1080,26 +1040,21 @@ midori_browser_save_uri (MidoriBrowser* browser,
|
||||||
|
|
||||||
if (gtk_dialog_run (GTK_DIALOG (dialog)) == GTK_RESPONSE_OK)
|
if (gtk_dialog_run (GTK_DIALOG (dialog)) == GTK_RESPONSE_OK)
|
||||||
{
|
{
|
||||||
#if WEBKIT_CHECK_VERSION (1, 1, 3)
|
GtkWidget* view;
|
||||||
WebKitNetworkRequest* request;
|
GtkWidget* web_view;
|
||||||
WebKitDownload* download;
|
WebKitWebDataSource *data_source;
|
||||||
gchar* destination;
|
WebKitWebFrame *frame;
|
||||||
#endif
|
const GString *data;
|
||||||
|
|
||||||
filename = gtk_file_chooser_get_filename (GTK_FILE_CHOOSER (dialog));
|
filename = gtk_file_chooser_get_filename (GTK_FILE_CHOOSER (dialog));
|
||||||
folder = gtk_file_chooser_get_current_folder (GTK_FILE_CHOOSER (dialog));
|
folder = gtk_file_chooser_get_current_folder (GTK_FILE_CHOOSER (dialog));
|
||||||
#if WEBKIT_CHECK_VERSION (1, 1, 3)
|
view = midori_browser_get_current_tab (browser);
|
||||||
request = webkit_network_request_new (uri);
|
web_view = midori_view_get_web_view (MIDORI_VIEW (view));
|
||||||
download = webkit_download_new (request);
|
frame = webkit_web_view_get_main_frame (WEBKIT_WEB_VIEW (web_view));
|
||||||
g_object_unref (request);
|
data_source = webkit_web_frame_get_data_source (frame);
|
||||||
destination = g_filename_to_uri (filename, NULL, NULL);
|
data = webkit_web_data_source_get_data (data_source);
|
||||||
if (midori_browser_prepare_download (browser, download, destination))
|
if (data)
|
||||||
webkit_download_start (download);
|
midori_browser_save_source (uri, data->str, data->len, filename);
|
||||||
g_free (destination);
|
|
||||||
#else
|
|
||||||
katze_net_load_uri (NULL, uri, NULL,
|
|
||||||
(KatzeNetTransferCb)midori_browser_save_transfer_cb, filename);
|
|
||||||
#endif
|
|
||||||
|
|
||||||
g_free (last_dir);
|
g_free (last_dir);
|
||||||
last_dir = folder;
|
last_dir = folder;
|
||||||
|
@ -1351,8 +1306,6 @@ midori_view_new_view_cb (GtkWidget* view,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#if WEBKIT_CHECK_VERSION (1, 1, 3)
|
|
||||||
|
|
||||||
static void
|
static void
|
||||||
midori_view_download_save_as_response_cb (GtkWidget* dialog,
|
midori_view_download_save_as_response_cb (GtkWidget* dialog,
|
||||||
gint response,
|
gint response,
|
||||||
|
@ -1461,7 +1414,6 @@ midori_view_download_requested_cb (GtkWidget* view,
|
||||||
}
|
}
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
#endif
|
|
||||||
|
|
||||||
static void
|
static void
|
||||||
midori_view_search_text_cb (GtkWidget* view,
|
midori_view_search_text_cb (GtkWidget* view,
|
||||||
|
@ -1579,10 +1531,8 @@ _midori_browser_add_tab (MidoriBrowser* browser,
|
||||||
midori_view_new_window_cb, browser,
|
midori_view_new_window_cb, browser,
|
||||||
"signal::new-view",
|
"signal::new-view",
|
||||||
midori_view_new_view_cb, browser,
|
midori_view_new_view_cb, browser,
|
||||||
#if WEBKIT_CHECK_VERSION (1, 1, 3)
|
|
||||||
"signal::download-requested",
|
"signal::download-requested",
|
||||||
midori_view_download_requested_cb, browser,
|
midori_view_download_requested_cb, browser,
|
||||||
#endif
|
|
||||||
"signal::search-text",
|
"signal::search-text",
|
||||||
midori_view_search_text_cb, browser,
|
midori_view_search_text_cb, browser,
|
||||||
"signal::save-as",
|
"signal::save-as",
|
||||||
|
@ -1662,6 +1612,7 @@ midori_browser_key_press_event (GtkWidget* widget,
|
||||||
MidoriBrowser* browser = MIDORI_BROWSER (widget);
|
MidoriBrowser* browser = MIDORI_BROWSER (widget);
|
||||||
GtkWidgetClass* widget_class;
|
GtkWidgetClass* widget_class;
|
||||||
guint clean_state;
|
guint clean_state;
|
||||||
|
GtkWidget* focus;
|
||||||
|
|
||||||
/* Interpret Ctrl(+Shift)+Tab as tab switching for compatibility */
|
/* Interpret Ctrl(+Shift)+Tab as tab switching for compatibility */
|
||||||
if (midori_browser_get_nth_tab (browser, 1) != NULL
|
if (midori_browser_get_nth_tab (browser, 1) != NULL
|
||||||
|
@ -1678,6 +1629,13 @@ midori_browser_key_press_event (GtkWidget* widget,
|
||||||
gtk_action_activate (_action_by_name (browser, "TabPrevious"));
|
gtk_action_activate (_action_by_name (browser, "TabPrevious"));
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
/* Interpret Ctrl+= as Zoom In for compatibility */
|
||||||
|
else if ((event->keyval == GDK_KP_Equal || event->keyval == GDK_equal)
|
||||||
|
&& (event->state & GDK_CONTROL_MASK))
|
||||||
|
{
|
||||||
|
midori_browser_activate_action (browser, "ZoomIn");
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
/* Interpret F5 as reloading for compatibility */
|
/* Interpret F5 as reloading for compatibility */
|
||||||
else if (event->keyval == GDK_F5)
|
else if (event->keyval == GDK_F5)
|
||||||
{
|
{
|
||||||
|
@ -1685,8 +1643,31 @@ midori_browser_key_press_event (GtkWidget* widget,
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (gtk_window_get_focus (GTK_WINDOW (widget)) == NULL)
|
focus = gtk_window_get_focus (GTK_WINDOW (widget));
|
||||||
|
if (focus == NULL)
|
||||||
gtk_widget_grab_focus (midori_browser_get_current_tab (MIDORI_BROWSER (widget)));
|
gtk_widget_grab_focus (midori_browser_get_current_tab (MIDORI_BROWSER (widget)));
|
||||||
|
else if (G_OBJECT_TYPE (focus) == WEBKIT_TYPE_WEB_VIEW
|
||||||
|
&& event->keyval == GDK_space
|
||||||
|
&& !webkit_web_view_can_cut_clipboard (WEBKIT_WEB_VIEW (focus))
|
||||||
|
&& !webkit_web_view_can_paste_clipboard (WEBKIT_WEB_VIEW (focus)))
|
||||||
|
{
|
||||||
|
/* Space at the bottom of the page: Go to next page */
|
||||||
|
GtkScrolledWindow* scrolled = GTK_SCROLLED_WINDOW (gtk_widget_get_parent (focus));
|
||||||
|
MidoriView* view = MIDORI_VIEW (gtk_widget_get_parent (GTK_WIDGET (scrolled)));
|
||||||
|
GtkAdjustment* vadjust = gtk_scrolled_window_get_vadjustment (scrolled);
|
||||||
|
if (gtk_adjustment_get_value (vadjust)
|
||||||
|
== (gtk_adjustment_get_upper (vadjust) - gtk_adjustment_get_page_size (vadjust)))
|
||||||
|
{
|
||||||
|
/* Duplicate here because the URI pointer might change */
|
||||||
|
gchar* uri = g_strdup (midori_view_get_next_page (view));
|
||||||
|
if (uri != NULL)
|
||||||
|
{
|
||||||
|
midori_view_set_uri (view, uri);
|
||||||
|
g_free (uri);
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if (event->state & (GDK_CONTROL_MASK | GDK_MOD1_MASK))
|
if (event->state & (GDK_CONTROL_MASK | GDK_MOD1_MASK))
|
||||||
if (sokoke_window_activate_key (window, event))
|
if (sokoke_window_activate_key (window, event))
|
||||||
|
@ -1703,8 +1684,14 @@ midori_browser_key_press_event (GtkWidget* widget,
|
||||||
if (event->state && gtk_window_propagate_key_event (window, event))
|
if (event->state && gtk_window_propagate_key_event (window, event))
|
||||||
return TRUE;
|
return TRUE;
|
||||||
|
|
||||||
/* Interpret Backspace as going back for compatibility */
|
/* Interpret (Shift+)Backspace as going back (forward) for compatibility */
|
||||||
if (event->keyval == GDK_BackSpace)
|
if ((event->keyval == GDK_BackSpace)
|
||||||
|
&& (event->state & GDK_SHIFT_MASK))
|
||||||
|
{
|
||||||
|
gtk_action_activate (_action_by_name (browser, "Forward"));
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
|
else if (event->keyval == GDK_BackSpace)
|
||||||
{
|
{
|
||||||
gtk_action_activate (_action_by_name (browser, "Back"));
|
gtk_action_activate (_action_by_name (browser, "Back"));
|
||||||
return TRUE;
|
return TRUE;
|
||||||
|
@ -2431,6 +2418,11 @@ _action_tab_close_activate (GtkAction* action,
|
||||||
MidoriBrowser* browser)
|
MidoriBrowser* browser)
|
||||||
{
|
{
|
||||||
GtkWidget* widget = midori_browser_get_current_tab (browser);
|
GtkWidget* widget = midori_browser_get_current_tab (browser);
|
||||||
|
if (gtk_notebook_get_nth_page (GTK_NOTEBOOK (browser->notebook), 1) == NULL &&
|
||||||
|
midori_view_is_blank (MIDORI_VIEW (widget)))
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
gtk_widget_destroy (widget);
|
gtk_widget_destroy (widget);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -2466,19 +2458,15 @@ _action_edit_activate (GtkAction* action,
|
||||||
MidoriBrowser* browser)
|
MidoriBrowser* browser)
|
||||||
{
|
{
|
||||||
GtkWidget* widget = gtk_window_get_focus (GTK_WINDOW (browser));
|
GtkWidget* widget = gtk_window_get_focus (GTK_WINDOW (browser));
|
||||||
#if WEBKIT_CHECK_VERSION (1, 1, 14)
|
|
||||||
gboolean can_undo = FALSE, can_redo = FALSE;
|
gboolean can_undo = FALSE, can_redo = FALSE;
|
||||||
#endif
|
|
||||||
gboolean can_cut = FALSE, can_copy = FALSE, can_paste = FALSE;
|
gboolean can_cut = FALSE, can_copy = FALSE, can_paste = FALSE;
|
||||||
gboolean has_selection, can_select_all = FALSE;
|
gboolean has_selection, can_select_all = FALSE;
|
||||||
|
|
||||||
if (WEBKIT_IS_WEB_VIEW (widget))
|
if (WEBKIT_IS_WEB_VIEW (widget))
|
||||||
{
|
{
|
||||||
WebKitWebView* view = WEBKIT_WEB_VIEW (widget);
|
WebKitWebView* view = WEBKIT_WEB_VIEW (widget);
|
||||||
#if WEBKIT_CHECK_VERSION (1, 1, 14)
|
|
||||||
can_undo = webkit_web_view_can_undo (view);
|
can_undo = webkit_web_view_can_undo (view);
|
||||||
can_redo = webkit_web_view_can_redo (view);
|
can_redo = webkit_web_view_can_redo (view);
|
||||||
#endif
|
|
||||||
can_cut = webkit_web_view_can_cut_clipboard (view);
|
can_cut = webkit_web_view_can_cut_clipboard (view);
|
||||||
can_copy = webkit_web_view_can_copy_clipboard (view);
|
can_copy = webkit_web_view_can_copy_clipboard (view);
|
||||||
can_paste = webkit_web_view_can_paste_clipboard (view);
|
can_paste = webkit_web_view_can_paste_clipboard (view);
|
||||||
|
@ -2504,10 +2492,8 @@ _action_edit_activate (GtkAction* action,
|
||||||
can_select_all = TRUE;
|
can_select_all = TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
#if WEBKIT_CHECK_VERSION (1, 1, 14)
|
|
||||||
_action_set_sensitive (browser, "Undo", can_undo);
|
_action_set_sensitive (browser, "Undo", can_undo);
|
||||||
_action_set_sensitive (browser, "Redo", can_redo);
|
_action_set_sensitive (browser, "Redo", can_redo);
|
||||||
#endif
|
|
||||||
_action_set_sensitive (browser, "Cut", can_cut);
|
_action_set_sensitive (browser, "Cut", can_cut);
|
||||||
_action_set_sensitive (browser, "Copy", can_copy);
|
_action_set_sensitive (browser, "Copy", can_copy);
|
||||||
_action_set_sensitive (browser, "Paste", can_paste);
|
_action_set_sensitive (browser, "Paste", can_paste);
|
||||||
|
@ -2515,7 +2501,6 @@ _action_edit_activate (GtkAction* action,
|
||||||
_action_set_sensitive (browser, "SelectAll", can_select_all);
|
_action_set_sensitive (browser, "SelectAll", can_select_all);
|
||||||
}
|
}
|
||||||
|
|
||||||
#if WEBKIT_CHECK_VERSION (1, 1, 14)
|
|
||||||
static void
|
static void
|
||||||
_action_undo_activate (GtkAction* action,
|
_action_undo_activate (GtkAction* action,
|
||||||
MidoriBrowser* browser)
|
MidoriBrowser* browser)
|
||||||
|
@ -2533,7 +2518,6 @@ _action_redo_activate (GtkAction* action,
|
||||||
if (WEBKIT_IS_WEB_VIEW (widget))
|
if (WEBKIT_IS_WEB_VIEW (widget))
|
||||||
webkit_web_view_redo (WEBKIT_WEB_VIEW (widget));
|
webkit_web_view_redo (WEBKIT_WEB_VIEW (widget));
|
||||||
}
|
}
|
||||||
#endif
|
|
||||||
|
|
||||||
static void
|
static void
|
||||||
_action_cut_activate (GtkAction* action,
|
_action_cut_activate (GtkAction* action,
|
||||||
|
@ -2881,9 +2865,7 @@ _action_tools_populate_popup (GtkAction* action,
|
||||||
{
|
{
|
||||||
{ "ManageSearchEngines" },
|
{ "ManageSearchEngines" },
|
||||||
{ "ClearPrivateData" },
|
{ "ClearPrivateData" },
|
||||||
#if WEBKIT_CHECK_VERSION (1, 1, 17)
|
|
||||||
{ "InspectPage" },
|
{ "InspectPage" },
|
||||||
#endif
|
|
||||||
{ "-" },
|
{ "-" },
|
||||||
{ NULL },
|
{ NULL },
|
||||||
{ "p" },
|
{ "p" },
|
||||||
|
@ -3048,10 +3030,8 @@ _action_compact_menu_populate_popup (GtkAction* action,
|
||||||
{ "Find" },
|
{ "Find" },
|
||||||
#if !HAVE_HILDON
|
#if !HAVE_HILDON
|
||||||
{ "Print" },
|
{ "Print" },
|
||||||
#if WEBKIT_CHECK_VERSION (1, 1, 17)
|
|
||||||
{ "InspectPage" },
|
{ "InspectPage" },
|
||||||
#endif
|
#endif
|
||||||
#endif
|
|
||||||
{ NULL },
|
{ NULL },
|
||||||
{ "PrivateBrowsing" },
|
{ "PrivateBrowsing" },
|
||||||
#if !HAVE_HILDON
|
#if !HAVE_HILDON
|
||||||
|
@ -3282,10 +3262,10 @@ _action_zoom_activate (GtkAction* action,
|
||||||
|
|
||||||
if (g_str_equal (gtk_action_get_name (action), "ZoomIn"))
|
if (g_str_equal (gtk_action_get_name (action), "ZoomIn"))
|
||||||
midori_view_set_zoom_level (MIDORI_VIEW (view),
|
midori_view_set_zoom_level (MIDORI_VIEW (view),
|
||||||
midori_view_get_zoom_level (MIDORI_VIEW (view)) + 0.25f);
|
midori_view_get_zoom_level (MIDORI_VIEW (view)) + 0.10f);
|
||||||
else if (g_str_equal (gtk_action_get_name (action), "ZoomOut"))
|
else if (g_str_equal (gtk_action_get_name (action), "ZoomOut"))
|
||||||
midori_view_set_zoom_level (MIDORI_VIEW (view),
|
midori_view_set_zoom_level (MIDORI_VIEW (view),
|
||||||
midori_view_get_zoom_level (MIDORI_VIEW (view)) - 0.25f);
|
midori_view_get_zoom_level (MIDORI_VIEW (view)) - 0.10f);
|
||||||
else
|
else
|
||||||
midori_view_set_zoom_level (MIDORI_VIEW (view), 1.0f);
|
midori_view_set_zoom_level (MIDORI_VIEW (view), 1.0f);
|
||||||
}
|
}
|
||||||
|
@ -3295,7 +3275,6 @@ _action_view_encoding_activate (GtkAction* action,
|
||||||
GtkAction* current,
|
GtkAction* current,
|
||||||
MidoriBrowser* browser)
|
MidoriBrowser* browser)
|
||||||
{
|
{
|
||||||
#if WEBKIT_CHECK_VERSION (1, 1, 2)
|
|
||||||
GtkWidget* view = midori_browser_get_current_tab (browser);
|
GtkWidget* view = midori_browser_get_current_tab (browser);
|
||||||
if (view)
|
if (view)
|
||||||
{
|
{
|
||||||
|
@ -3326,7 +3305,6 @@ _action_view_encoding_activate (GtkAction* action,
|
||||||
g_object_set (web_view, "custom-encoding", encoding, NULL);
|
g_object_set (web_view, "custom-encoding", encoding, NULL);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static gchar*
|
static gchar*
|
||||||
|
@ -3362,58 +3340,67 @@ midori_browser_get_uri_extension (const gchar* uri)
|
||||||
return g_strdup (period);
|
return g_strdup (period);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static gchar*
|
||||||
midori_browser_source_transfer_cb (KatzeNetRequest* request,
|
midori_browser_save_source (const gchar* uri,
|
||||||
MidoriBrowser* browser)
|
const gchar* data,
|
||||||
|
const size_t len,
|
||||||
|
const gchar* outfile)
|
||||||
{
|
{
|
||||||
gchar* filename;
|
|
||||||
gchar* extension;
|
|
||||||
gchar* unique_filename;
|
gchar* unique_filename;
|
||||||
gchar* text_editor;
|
|
||||||
gint fd;
|
gint fd;
|
||||||
FILE* fp;
|
FILE* fp;
|
||||||
size_t ret;
|
size_t ret;
|
||||||
|
|
||||||
if (request->data)
|
if (!data)
|
||||||
|
return NULL;
|
||||||
|
|
||||||
|
if (!outfile)
|
||||||
{
|
{
|
||||||
extension = midori_browser_get_uri_extension (request->uri);
|
gchar* filename;
|
||||||
|
gchar* extension;
|
||||||
|
|
||||||
|
extension = midori_browser_get_uri_extension (uri);
|
||||||
filename = g_strdup_printf ("%uXXXXXX%s",
|
filename = g_strdup_printf ("%uXXXXXX%s",
|
||||||
g_str_hash (request->uri), extension);
|
g_str_hash (uri), extension);
|
||||||
g_free (extension);
|
g_free (extension);
|
||||||
if (((fd = g_file_open_tmp (filename, &unique_filename, NULL)) != -1))
|
fd = g_file_open_tmp (filename, &unique_filename, NULL);
|
||||||
|
g_free (filename);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
unique_filename = g_strdup (outfile);
|
||||||
|
fd = g_open (unique_filename, O_WRONLY|O_CREAT, 0644);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (fd != -1)
|
||||||
{
|
{
|
||||||
if ((fp = fdopen (fd, "w")))
|
if ((fp = fdopen (fd, "w")))
|
||||||
{
|
{
|
||||||
ret = fwrite (request->data, 1, request->length, fp);
|
ret = fwrite (data, 1, len, fp);
|
||||||
fclose (fp);
|
fclose (fp);
|
||||||
if ((ret - request->length) != 0)
|
if ((ret - len) != 0)
|
||||||
{
|
{
|
||||||
g_warning ("Error writing to file %s "
|
g_warning ("Error writing to file %s "
|
||||||
"in midori_browser_source_transfer_cb()", filename);
|
"in midori_browser_source_transfer_cb()", unique_filename);
|
||||||
|
katze_assign (unique_filename, NULL);
|
||||||
}
|
}
|
||||||
g_object_get (browser->settings,
|
|
||||||
"text-editor", &text_editor, NULL);
|
|
||||||
if (text_editor && *text_editor)
|
|
||||||
sokoke_spawn_program (text_editor, unique_filename);
|
|
||||||
else
|
|
||||||
sokoke_show_uri (NULL, unique_filename,
|
|
||||||
gtk_get_current_event_time (), NULL);
|
|
||||||
|
|
||||||
g_free (unique_filename);
|
|
||||||
g_free (text_editor);
|
|
||||||
}
|
}
|
||||||
close (fd);
|
close (fd);
|
||||||
}
|
}
|
||||||
g_free (filename);
|
return unique_filename;
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
_action_source_view_activate (GtkAction* action,
|
_action_source_view_activate (GtkAction* action,
|
||||||
MidoriBrowser* browser)
|
MidoriBrowser* browser)
|
||||||
{
|
{
|
||||||
|
WebKitWebDataSource *data_source;
|
||||||
|
WebKitWebFrame *frame;
|
||||||
|
const GString *data;
|
||||||
GtkWidget* view;
|
GtkWidget* view;
|
||||||
|
GtkWidget* web_view;
|
||||||
gchar* text_editor;
|
gchar* text_editor;
|
||||||
|
gchar* filename = NULL;
|
||||||
const gchar* uri;
|
const gchar* uri;
|
||||||
|
|
||||||
if (!(view = midori_browser_get_current_tab (browser)))
|
if (!(view = midori_browser_get_current_tab (browser)))
|
||||||
|
@ -3421,54 +3408,41 @@ _action_source_view_activate (GtkAction* action,
|
||||||
|
|
||||||
g_object_get (browser->settings, "text-editor", &text_editor, NULL);
|
g_object_get (browser->settings, "text-editor", &text_editor, NULL);
|
||||||
uri = midori_view_get_display_uri (MIDORI_VIEW (view));
|
uri = midori_view_get_display_uri (MIDORI_VIEW (view));
|
||||||
|
web_view = midori_view_get_web_view (MIDORI_VIEW (view));
|
||||||
|
frame = webkit_web_view_get_main_frame (WEBKIT_WEB_VIEW (web_view));
|
||||||
|
data_source = webkit_web_frame_get_data_source (frame);
|
||||||
|
data = webkit_web_data_source_get_data (data_source);
|
||||||
|
if (data)
|
||||||
|
filename = midori_browser_save_source (uri, data->str, data->len, NULL);
|
||||||
|
|
||||||
|
if (!filename)
|
||||||
|
return;
|
||||||
|
|
||||||
if (!(text_editor && *text_editor))
|
if (!(text_editor && *text_editor))
|
||||||
{
|
{
|
||||||
#if WEBKIT_CHECK_VERSION (1, 1, 14)
|
|
||||||
GtkWidget* source;
|
GtkWidget* source;
|
||||||
GtkWidget* web_view;
|
GtkWidget* source_view;
|
||||||
|
gchar* source_uri;
|
||||||
|
|
||||||
|
source_uri = g_filename_to_uri (filename, NULL, NULL);
|
||||||
|
g_free (filename);
|
||||||
|
|
||||||
source = midori_view_new (NULL);
|
source = midori_view_new (NULL);
|
||||||
midori_view_set_settings (MIDORI_VIEW (source), browser->settings);
|
midori_view_set_settings (MIDORI_VIEW (source), browser->settings);
|
||||||
web_view = midori_view_get_web_view (MIDORI_VIEW (source));
|
source_view = midori_view_get_web_view (MIDORI_VIEW (source));
|
||||||
webkit_web_view_set_view_source_mode (WEBKIT_WEB_VIEW (web_view), TRUE);
|
webkit_web_view_set_view_source_mode (WEBKIT_WEB_VIEW (source_view), TRUE);
|
||||||
webkit_web_view_load_uri (WEBKIT_WEB_VIEW (web_view), uri);
|
webkit_web_view_load_uri (WEBKIT_WEB_VIEW (source_view), source_uri);
|
||||||
gtk_widget_show (source);
|
gtk_widget_show (source);
|
||||||
midori_browser_add_tab (browser, source);
|
midori_browser_add_tab (browser, source);
|
||||||
g_free (text_editor);
|
|
||||||
return;
|
|
||||||
#else
|
|
||||||
GError* error = NULL;
|
|
||||||
|
|
||||||
if (g_str_has_prefix (uri, "file://"))
|
|
||||||
{
|
|
||||||
if (!sokoke_show_uri_with_mime_type (gtk_widget_get_screen (view),
|
|
||||||
uri, "text/plain", gtk_get_current_event_time (), &error))
|
|
||||||
sokoke_message_dialog (GTK_MESSAGE_ERROR,
|
|
||||||
_("Could not run external program."),
|
|
||||||
error ? error->message : "", FALSE);
|
|
||||||
if (error)
|
|
||||||
g_error_free (error);
|
|
||||||
g_free (text_editor);
|
|
||||||
return;
|
|
||||||
}
|
}
|
||||||
#endif
|
else
|
||||||
}
|
|
||||||
|
|
||||||
if (g_str_has_prefix (uri, "file://"))
|
|
||||||
{
|
{
|
||||||
gchar* filename = g_filename_from_uri (uri, NULL, NULL);
|
|
||||||
sokoke_spawn_program (text_editor, filename);
|
sokoke_spawn_program (text_editor, filename);
|
||||||
g_free (filename);
|
g_free (filename);
|
||||||
g_free (text_editor);
|
|
||||||
return;
|
|
||||||
}
|
}
|
||||||
katze_net_load_uri (NULL, uri, NULL,
|
|
||||||
(KatzeNetTransferCb)midori_browser_source_transfer_cb, browser);
|
|
||||||
g_free (text_editor);
|
g_free (text_editor);
|
||||||
}
|
}
|
||||||
|
|
||||||
#if WEBKIT_CHECK_VERSION (1, 1, 6)
|
|
||||||
static void
|
static void
|
||||||
_action_caret_browsing_activate (GtkAction* action,
|
_action_caret_browsing_activate (GtkAction* action,
|
||||||
MidoriBrowser* browser)
|
MidoriBrowser* browser)
|
||||||
|
@ -3476,7 +3450,6 @@ _action_caret_browsing_activate (GtkAction* action,
|
||||||
g_object_set (browser->settings, "enable-caret-browsing",
|
g_object_set (browser->settings, "enable-caret-browsing",
|
||||||
!katze_object_get_boolean (browser->settings, "enable-caret-browsing"), NULL);
|
!katze_object_get_boolean (browser->settings, "enable-caret-browsing"), NULL);
|
||||||
}
|
}
|
||||||
#endif
|
|
||||||
|
|
||||||
static void
|
static void
|
||||||
_action_fullscreen_activate (GtkAction* action,
|
_action_fullscreen_activate (GtkAction* action,
|
||||||
|
@ -3494,7 +3467,6 @@ _action_fullscreen_activate (GtkAction* action,
|
||||||
gtk_window_fullscreen (GTK_WINDOW (browser));
|
gtk_window_fullscreen (GTK_WINDOW (browser));
|
||||||
}
|
}
|
||||||
|
|
||||||
#if WEBKIT_CHECK_VERSION (1, 1, 4)
|
|
||||||
static void
|
static void
|
||||||
_action_scroll_somewhere_activate (GtkAction* action,
|
_action_scroll_somewhere_activate (GtkAction* action,
|
||||||
MidoriBrowser* browser)
|
MidoriBrowser* browser)
|
||||||
|
@ -3518,7 +3490,6 @@ _action_scroll_somewhere_activate (GtkAction* action,
|
||||||
else if (g_str_equal (name, "ScrollRight"))
|
else if (g_str_equal (name, "ScrollRight"))
|
||||||
webkit_web_view_move_cursor (web_view, GTK_MOVEMENT_VISUAL_POSITIONS, 1);
|
webkit_web_view_move_cursor (web_view, GTK_MOVEMENT_VISUAL_POSITIONS, 1);
|
||||||
}
|
}
|
||||||
#endif
|
|
||||||
|
|
||||||
static gboolean
|
static gboolean
|
||||||
_action_navigation_activate (GtkAction* action,
|
_action_navigation_activate (GtkAction* action,
|
||||||
|
@ -4349,6 +4320,15 @@ midori_browser_clear_private_data_response_cb (GtkWidget* dialog,
|
||||||
GString* clear_data = g_string_new (NULL);
|
GString* clear_data = g_string_new (NULL);
|
||||||
g_object_get (browser->settings, "clear-private-data", &saved_prefs, NULL);
|
g_object_get (browser->settings, "clear-private-data", &saved_prefs, NULL);
|
||||||
|
|
||||||
|
button = g_object_get_data (G_OBJECT (dialog), "session");
|
||||||
|
if (gtk_toggle_button_get_active (button))
|
||||||
|
{
|
||||||
|
GList* tabs = gtk_container_get_children (GTK_CONTAINER (browser->notebook));
|
||||||
|
for (; tabs != NULL; tabs = g_list_next (tabs))
|
||||||
|
gtk_widget_destroy (tabs->data);
|
||||||
|
g_list_free (tabs);
|
||||||
|
clear_prefs |= MIDORI_CLEAR_SESSION;
|
||||||
|
}
|
||||||
button = g_object_get_data (G_OBJECT (dialog), "history");
|
button = g_object_get_data (G_OBJECT (dialog), "history");
|
||||||
if (gtk_toggle_button_get_active (button))
|
if (gtk_toggle_button_get_active (button))
|
||||||
{
|
{
|
||||||
|
@ -4450,6 +4430,11 @@ _action_clear_private_data_activate (GtkAction* action,
|
||||||
vbox = gtk_vbox_new (TRUE, 4);
|
vbox = gtk_vbox_new (TRUE, 4);
|
||||||
alignment = gtk_alignment_new (0, 0, 1, 1);
|
alignment = gtk_alignment_new (0, 0, 1, 1);
|
||||||
gtk_alignment_set_padding (GTK_ALIGNMENT (alignment), 0, 6, 12, 0);
|
gtk_alignment_set_padding (GTK_ALIGNMENT (alignment), 0, 6, 12, 0);
|
||||||
|
button = gtk_check_button_new_with_mnemonic (_("Last open _tabs"));
|
||||||
|
if ((clear_prefs & MIDORI_CLEAR_SESSION) == MIDORI_CLEAR_SESSION)
|
||||||
|
gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (button), TRUE);
|
||||||
|
g_object_set_data (G_OBJECT (dialog), "session", button);
|
||||||
|
gtk_box_pack_start (GTK_BOX (vbox), button, TRUE, TRUE, 0);
|
||||||
/* i18n: Browsing history, visited web pages */
|
/* i18n: Browsing history, visited web pages */
|
||||||
button = gtk_check_button_new_with_mnemonic (_("_History"));
|
button = gtk_check_button_new_with_mnemonic (_("_History"));
|
||||||
if ((clear_prefs & MIDORI_CLEAR_HISTORY) == MIDORI_CLEAR_HISTORY)
|
if ((clear_prefs & MIDORI_CLEAR_HISTORY) == MIDORI_CLEAR_HISTORY)
|
||||||
|
@ -4498,7 +4483,6 @@ _action_clear_private_data_activate (GtkAction* action,
|
||||||
gtk_window_present (GTK_WINDOW (dialog));
|
gtk_window_present (GTK_WINDOW (dialog));
|
||||||
}
|
}
|
||||||
|
|
||||||
#if WEBKIT_CHECK_VERSION (1, 1, 17)
|
|
||||||
static void
|
static void
|
||||||
_action_inspect_page_activate (GtkAction* action,
|
_action_inspect_page_activate (GtkAction* action,
|
||||||
MidoriBrowser* browser)
|
MidoriBrowser* browser)
|
||||||
|
@ -4508,7 +4492,6 @@ _action_inspect_page_activate (GtkAction* action,
|
||||||
WebKitWebInspector* inspector = webkit_web_view_get_inspector (web_view);
|
WebKitWebInspector* inspector = webkit_web_view_get_inspector (web_view);
|
||||||
webkit_web_inspector_show (inspector);
|
webkit_web_inspector_show (inspector);
|
||||||
}
|
}
|
||||||
#endif
|
|
||||||
|
|
||||||
static void
|
static void
|
||||||
_action_tab_move_backward_activate (GtkAction* action,
|
_action_tab_move_backward_activate (GtkAction* action,
|
||||||
|
@ -4806,19 +4789,6 @@ midori_panel_notify_show_titles_cb (MidoriPanel* panel,
|
||||||
midori_browser_settings_notify, browser);
|
midori_browser_settings_notify, browser);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
|
||||||
midori_panel_notify_show_controls_cb (MidoriPanel* panel,
|
|
||||||
GParamSpec* pspec,
|
|
||||||
MidoriBrowser* browser)
|
|
||||||
{
|
|
||||||
gboolean show_controls = katze_object_get_boolean (panel, "show-controls");
|
|
||||||
g_signal_handlers_block_by_func (browser->settings,
|
|
||||||
midori_browser_settings_notify, browser);
|
|
||||||
g_object_set (browser->settings, "show-panel-controls", show_controls, NULL);
|
|
||||||
g_signal_handlers_unblock_by_func (browser->settings,
|
|
||||||
midori_browser_settings_notify, browser);
|
|
||||||
}
|
|
||||||
|
|
||||||
static void
|
static void
|
||||||
midori_panel_notify_right_aligned_cb (MidoriPanel* panel,
|
midori_panel_notify_right_aligned_cb (MidoriPanel* panel,
|
||||||
GParamSpec* pspec,
|
GParamSpec* pspec,
|
||||||
|
@ -5039,14 +5009,14 @@ static const GtkActionEntry entries[] =
|
||||||
NULL, "<Ctrl>t",
|
NULL, "<Ctrl>t",
|
||||||
N_("Open a new tab"), G_CALLBACK (_action_tab_new_activate) },
|
N_("Open a new tab"), G_CALLBACK (_action_tab_new_activate) },
|
||||||
{ "PrivateBrowsing", NULL,
|
{ "PrivateBrowsing", NULL,
|
||||||
N_("P_rivate Browsing"), "<Ctrl><Shift>n",
|
N_("New P_rivate Browsing Window"), "<Ctrl><Shift>n",
|
||||||
N_("Don't save any private data while browsing"),
|
N_("Don't save any private data while browsing"),
|
||||||
G_CALLBACK (_action_private_browsing_activate), },
|
G_CALLBACK (_action_private_browsing_activate), },
|
||||||
{ "Open", GTK_STOCK_OPEN,
|
{ "Open", GTK_STOCK_OPEN,
|
||||||
NULL, "<Ctrl>o",
|
NULL, "<Ctrl>o",
|
||||||
N_("Open a file"), G_CALLBACK (_action_open_activate) },
|
N_("Open a file"), G_CALLBACK (_action_open_activate) },
|
||||||
{ "SaveAs", GTK_STOCK_SAVE_AS,
|
{ "SaveAs", GTK_STOCK_SAVE_AS,
|
||||||
NULL, "<Ctrl>s",
|
N_("_Save Page As..."), "<Ctrl>s",
|
||||||
N_("Save to a file"), G_CALLBACK (_action_save_as_activate) },
|
N_("Save to a file"), G_CALLBACK (_action_save_as_activate) },
|
||||||
{ "AddSpeedDial", NULL,
|
{ "AddSpeedDial", NULL,
|
||||||
N_("Add to Speed _dial"), "<Ctrl>h",
|
N_("Add to Speed _dial"), "<Ctrl>h",
|
||||||
|
@ -5079,14 +5049,12 @@ static const GtkActionEntry entries[] =
|
||||||
N_("Close all open windows"), G_CALLBACK (_action_quit_activate) },
|
N_("Close all open windows"), G_CALLBACK (_action_quit_activate) },
|
||||||
|
|
||||||
{ "Edit", NULL, N_("_Edit"), NULL, NULL, G_CALLBACK (_action_edit_activate) },
|
{ "Edit", NULL, N_("_Edit"), NULL, NULL, G_CALLBACK (_action_edit_activate) },
|
||||||
#if WEBKIT_CHECK_VERSION (1, 1, 14)
|
|
||||||
{ "Undo", GTK_STOCK_UNDO,
|
{ "Undo", GTK_STOCK_UNDO,
|
||||||
NULL, "<Ctrl>z",
|
NULL, "<Ctrl>z",
|
||||||
N_("Undo the last modification"), G_CALLBACK (_action_undo_activate) },
|
N_("Undo the last modification"), G_CALLBACK (_action_undo_activate) },
|
||||||
{ "Redo", GTK_STOCK_REDO,
|
{ "Redo", GTK_STOCK_REDO,
|
||||||
NULL, "<Ctrl><Shift>z",
|
NULL, "<Ctrl><Shift>z",
|
||||||
N_("Redo the last modification"), G_CALLBACK (_action_redo_activate) },
|
N_("Redo the last modification"), G_CALLBACK (_action_redo_activate) },
|
||||||
#endif
|
|
||||||
{ "Cut", GTK_STOCK_CUT,
|
{ "Cut", GTK_STOCK_CUT,
|
||||||
NULL, "<Ctrl>x",
|
NULL, "<Ctrl>x",
|
||||||
N_("Cut the selected text"), G_CALLBACK (_action_cut_activate) },
|
N_("Cut the selected text"), G_CALLBACK (_action_cut_activate) },
|
||||||
|
@ -5103,7 +5071,7 @@ static const GtkActionEntry entries[] =
|
||||||
NULL, "<Ctrl>a",
|
NULL, "<Ctrl>a",
|
||||||
N_("Select all text"), G_CALLBACK (_action_select_all_activate) },
|
N_("Select all text"), G_CALLBACK (_action_select_all_activate) },
|
||||||
{ "Find", GTK_STOCK_FIND,
|
{ "Find", GTK_STOCK_FIND,
|
||||||
NULL, "<Ctrl>f",
|
N_("_Find..."), "<Ctrl>f",
|
||||||
N_("Find a word or phrase in the page"), G_CALLBACK (_action_find_activate) },
|
N_("Find a word or phrase in the page"), G_CALLBACK (_action_find_activate) },
|
||||||
{ "FindNext", GTK_STOCK_GO_FORWARD,
|
{ "FindNext", GTK_STOCK_GO_FORWARD,
|
||||||
N_("Find _Next"), "<Ctrl>g",
|
N_("Find _Next"), "<Ctrl>g",
|
||||||
|
@ -5143,15 +5111,12 @@ static const GtkActionEntry entries[] =
|
||||||
{ "SourceView", NULL,
|
{ "SourceView", NULL,
|
||||||
N_("View So_urce"), "<Ctrl><Alt>U",
|
N_("View So_urce"), "<Ctrl><Alt>U",
|
||||||
N_("View the source code of the page"), G_CALLBACK (_action_source_view_activate) },
|
N_("View the source code of the page"), G_CALLBACK (_action_source_view_activate) },
|
||||||
#if WEBKIT_CHECK_VERSION (1, 1, 6)
|
|
||||||
{ "CaretBrowsing", NULL,
|
{ "CaretBrowsing", NULL,
|
||||||
N_("Ca_ret Browsing"), "F7",
|
N_("Ca_ret Browsing"), "F7",
|
||||||
N_("Toggle text cursor navigation"), G_CALLBACK (_action_caret_browsing_activate) },
|
N_("Toggle text cursor navigation"), G_CALLBACK (_action_caret_browsing_activate) },
|
||||||
#endif
|
|
||||||
{ "Fullscreen", GTK_STOCK_FULLSCREEN,
|
{ "Fullscreen", GTK_STOCK_FULLSCREEN,
|
||||||
NULL, "F11",
|
NULL, "F11",
|
||||||
N_("Toggle fullscreen view"), G_CALLBACK (_action_fullscreen_activate) },
|
N_("Toggle fullscreen view"), G_CALLBACK (_action_fullscreen_activate) },
|
||||||
#if WEBKIT_CHECK_VERSION (1, 1, 4)
|
|
||||||
{ "ScrollLeft", NULL,
|
{ "ScrollLeft", NULL,
|
||||||
N_("Scroll _Left"), "h",
|
N_("Scroll _Left"), "h",
|
||||||
N_("Scroll to the left"), G_CALLBACK (_action_scroll_somewhere_activate) },
|
N_("Scroll to the left"), G_CALLBACK (_action_scroll_somewhere_activate) },
|
||||||
|
@ -5164,7 +5129,6 @@ static const GtkActionEntry entries[] =
|
||||||
{ "ScrollRight", NULL,
|
{ "ScrollRight", NULL,
|
||||||
N_("Scroll _Right"), "l",
|
N_("Scroll _Right"), "l",
|
||||||
N_("Scroll to the right"), G_CALLBACK (_action_scroll_somewhere_activate) },
|
N_("Scroll to the right"), G_CALLBACK (_action_scroll_somewhere_activate) },
|
||||||
#endif
|
|
||||||
|
|
||||||
{ "Go", NULL, N_("_Go") },
|
{ "Go", NULL, N_("_Go") },
|
||||||
{ "Back", GTK_STOCK_GO_BACK,
|
{ "Back", GTK_STOCK_GO_BACK,
|
||||||
|
@ -5211,12 +5175,10 @@ static const GtkActionEntry entries[] =
|
||||||
N_("_Clear Private Data"), "<Ctrl><Shift>Delete",
|
N_("_Clear Private Data"), "<Ctrl><Shift>Delete",
|
||||||
N_("Clear private data..."),
|
N_("Clear private data..."),
|
||||||
G_CALLBACK (_action_clear_private_data_activate) },
|
G_CALLBACK (_action_clear_private_data_activate) },
|
||||||
#if WEBKIT_CHECK_VERSION (1, 1, 17)
|
|
||||||
{ "InspectPage", NULL,
|
{ "InspectPage", NULL,
|
||||||
N_("_Inspect Page"), "<Ctrl><Shift>i",
|
N_("_Inspect Page"), "<Ctrl><Shift>i",
|
||||||
N_("Inspect page details and access developer tools..."),
|
N_("Inspect page details and access developer tools..."),
|
||||||
G_CALLBACK (_action_inspect_page_activate) },
|
G_CALLBACK (_action_inspect_page_activate) },
|
||||||
#endif
|
|
||||||
|
|
||||||
{ "TabPrevious", GTK_STOCK_GO_BACK,
|
{ "TabPrevious", GTK_STOCK_GO_BACK,
|
||||||
N_("_Previous Tab"), "<Ctrl>Page_Up",
|
N_("_Previous Tab"), "<Ctrl>Page_Up",
|
||||||
|
@ -5449,11 +5411,9 @@ static const gchar* ui_markup =
|
||||||
"<menuitem action='Quit'/>"
|
"<menuitem action='Quit'/>"
|
||||||
"</menu>"
|
"</menu>"
|
||||||
"<menu action='Edit'>"
|
"<menu action='Edit'>"
|
||||||
#if WEBKIT_CHECK_VERSION (1, 1, 14)
|
|
||||||
"<menuitem action='Undo'/>"
|
"<menuitem action='Undo'/>"
|
||||||
"<menuitem action='Redo'/>"
|
"<menuitem action='Redo'/>"
|
||||||
"<separator/>"
|
"<separator/>"
|
||||||
#endif
|
|
||||||
"<menuitem action='Cut'/>"
|
"<menuitem action='Cut'/>"
|
||||||
"<menuitem action='Copy'/>"
|
"<menuitem action='Copy'/>"
|
||||||
"<menuitem action='Paste'/>"
|
"<menuitem action='Paste'/>"
|
||||||
|
@ -5543,9 +5503,7 @@ static const gchar* ui_markup =
|
||||||
"<menuitem action='Preferences'/>"
|
"<menuitem action='Preferences'/>"
|
||||||
"<menuitem action='InspectPage'/>"
|
"<menuitem action='InspectPage'/>"
|
||||||
"<menuitem action='ReloadUncached'/>"
|
"<menuitem action='ReloadUncached'/>"
|
||||||
#if WEBKIT_CHECK_VERSION (1, 1, 6)
|
|
||||||
"<menuitem action='CaretBrowsing'/>"
|
"<menuitem action='CaretBrowsing'/>"
|
||||||
#endif
|
|
||||||
"</menu>"
|
"</menu>"
|
||||||
"</menubar>"
|
"</menubar>"
|
||||||
"<toolbar name='toolbar_navigation'>"
|
"<toolbar name='toolbar_navigation'>"
|
||||||
|
@ -5798,7 +5756,6 @@ midori_browser_init (MidoriBrowser* browser)
|
||||||
G_CALLBACK (midori_browser_destroy_cb), NULL);
|
G_CALLBACK (midori_browser_destroy_cb), NULL);
|
||||||
gtk_window_set_role (GTK_WINDOW (browser), "browser");
|
gtk_window_set_role (GTK_WINDOW (browser), "browser");
|
||||||
gtk_window_set_icon_name (GTK_WINDOW (browser), "web-browser");
|
gtk_window_set_icon_name (GTK_WINDOW (browser), "web-browser");
|
||||||
gtk_window_set_title (GTK_WINDOW (browser), g_get_application_name ());
|
|
||||||
vbox = gtk_vbox_new (FALSE, 0);
|
vbox = gtk_vbox_new (FALSE, 0);
|
||||||
gtk_container_add (GTK_CONTAINER (browser), vbox);
|
gtk_container_add (GTK_CONTAINER (browser), vbox);
|
||||||
gtk_widget_show (vbox);
|
gtk_widget_show (vbox);
|
||||||
|
@ -6027,9 +5984,6 @@ midori_browser_init (MidoriBrowser* browser)
|
||||||
#if HAVE_HILDON
|
#if HAVE_HILDON
|
||||||
_action_set_visible (browser, "Menubar", FALSE);
|
_action_set_visible (browser, "Menubar", FALSE);
|
||||||
#endif
|
#endif
|
||||||
#if !WEBKIT_CHECK_VERSION (1, 1, 2)
|
|
||||||
_action_set_sensitive (browser, "Encoding", FALSE);
|
|
||||||
#endif
|
|
||||||
_action_set_sensitive (browser, "EncodingCustom", FALSE);
|
_action_set_sensitive (browser, "EncodingCustom", FALSE);
|
||||||
_action_set_visible (browser, "LastSession", FALSE);
|
_action_set_visible (browser, "LastSession", FALSE);
|
||||||
#if !HAVE_HILDON && !defined (GDK_WINDOWING_X11)
|
#if !HAVE_HILDON && !defined (GDK_WINDOWING_X11)
|
||||||
|
@ -6110,8 +6064,6 @@ midori_browser_init (MidoriBrowser* browser)
|
||||||
midori_panel_notify_page_cb, browser,
|
midori_panel_notify_page_cb, browser,
|
||||||
"signal::notify::show-titles",
|
"signal::notify::show-titles",
|
||||||
midori_panel_notify_show_titles_cb, browser,
|
midori_panel_notify_show_titles_cb, browser,
|
||||||
"signal::notify::show-controls",
|
|
||||||
midori_panel_notify_show_controls_cb, browser,
|
|
||||||
"signal::notify::right-aligned",
|
"signal::notify::right-aligned",
|
||||||
midori_panel_notify_right_aligned_cb, browser,
|
midori_panel_notify_right_aligned_cb, browser,
|
||||||
"signal::close",
|
"signal::close",
|
||||||
|
@ -6351,7 +6303,7 @@ _midori_browser_update_settings (MidoriBrowser* browser)
|
||||||
{
|
{
|
||||||
gboolean remember_last_window_size;
|
gboolean remember_last_window_size;
|
||||||
MidoriWindowState last_window_state;
|
MidoriWindowState last_window_state;
|
||||||
gboolean compact_sidepanel, show_panel_controls;
|
gboolean compact_sidepanel;
|
||||||
gboolean right_align_sidepanel, open_panels_in_windows;
|
gboolean right_align_sidepanel, open_panels_in_windows;
|
||||||
gint last_panel_position, last_panel_page;
|
gint last_panel_position, last_panel_page;
|
||||||
gboolean show_menubar, show_bookmarkbar;
|
gboolean show_menubar, show_bookmarkbar;
|
||||||
|
@ -6370,7 +6322,6 @@ _midori_browser_update_settings (MidoriBrowser* browser)
|
||||||
"last-window-height", &browser->last_window_height,
|
"last-window-height", &browser->last_window_height,
|
||||||
"last-window-state", &last_window_state,
|
"last-window-state", &last_window_state,
|
||||||
"compact-sidepanel", &compact_sidepanel,
|
"compact-sidepanel", &compact_sidepanel,
|
||||||
"show-panel-controls", &show_panel_controls,
|
|
||||||
"right-align-sidepanel", &right_align_sidepanel,
|
"right-align-sidepanel", &right_align_sidepanel,
|
||||||
"open-panels-in-windows", &open_panels_in_windows,
|
"open-panels-in-windows", &open_panels_in_windows,
|
||||||
"last-panel-position", &last_panel_position,
|
"last-panel-position", &last_panel_position,
|
||||||
|
@ -6444,7 +6395,6 @@ _midori_browser_update_settings (MidoriBrowser* browser)
|
||||||
}
|
}
|
||||||
|
|
||||||
g_object_set (browser->panel, "show-titles", !compact_sidepanel,
|
g_object_set (browser->panel, "show-titles", !compact_sidepanel,
|
||||||
"show-controls", show_panel_controls,
|
|
||||||
"right-aligned", right_align_sidepanel,
|
"right-aligned", right_align_sidepanel,
|
||||||
"open-panels-in-windows", open_panels_in_windows, NULL);
|
"open-panels-in-windows", open_panels_in_windows, NULL);
|
||||||
gtk_paned_set_position (GTK_PANED (gtk_widget_get_parent (browser->panel)),
|
gtk_paned_set_position (GTK_PANED (gtk_widget_get_parent (browser->panel)),
|
||||||
|
@ -6492,15 +6442,6 @@ midori_browser_settings_notify (MidoriWebSettings* web_settings,
|
||||||
g_signal_handlers_unblock_by_func (browser->panel,
|
g_signal_handlers_unblock_by_func (browser->panel,
|
||||||
midori_panel_notify_show_titles_cb, browser);
|
midori_panel_notify_show_titles_cb, browser);
|
||||||
}
|
}
|
||||||
else if (name == g_intern_string ("show-panel-controls"))
|
|
||||||
{
|
|
||||||
g_signal_handlers_block_by_func (browser->panel,
|
|
||||||
midori_panel_notify_show_controls_cb, browser);
|
|
||||||
g_object_set (browser->panel, "show-controls",
|
|
||||||
g_value_get_boolean (&value), NULL);
|
|
||||||
g_signal_handlers_unblock_by_func (browser->panel,
|
|
||||||
midori_panel_notify_show_controls_cb, browser);
|
|
||||||
}
|
|
||||||
else if (name == g_intern_string ("open-panels-in-windows"))
|
else if (name == g_intern_string ("open-panels-in-windows"))
|
||||||
g_object_set (browser->panel, "open-panels-in-windows",
|
g_object_set (browser->panel, "open-panels-in-windows",
|
||||||
g_value_get_boolean (&value), NULL);
|
g_value_get_boolean (&value), NULL);
|
||||||
|
@ -6512,21 +6453,12 @@ midori_browser_settings_notify (MidoriWebSettings* web_settings,
|
||||||
browser->show_navigationbar = g_value_get_boolean (&value);
|
browser->show_navigationbar = g_value_get_boolean (&value);
|
||||||
else if (name == g_intern_string ("show-statusbar"))
|
else if (name == g_intern_string ("show-statusbar"))
|
||||||
browser->show_statusbar = g_value_get_boolean (&value);
|
browser->show_statusbar = g_value_get_boolean (&value);
|
||||||
else if (name == g_intern_string ("search-engines-in-completion"))
|
|
||||||
{
|
|
||||||
if (g_value_get_boolean (&value))
|
|
||||||
midori_location_action_set_search_engines (MIDORI_LOCATION_ACTION (
|
|
||||||
_action_by_name (browser, "Location")), browser->search_engines);
|
|
||||||
else
|
|
||||||
midori_location_action_set_search_engines (MIDORI_LOCATION_ACTION (
|
|
||||||
_action_by_name (browser, "Location")), NULL);
|
|
||||||
}
|
|
||||||
else if (name == g_intern_string ("location-entry-search"))
|
else if (name == g_intern_string ("location-entry-search"))
|
||||||
{
|
{
|
||||||
katze_assign (browser->location_entry_search, g_value_dup_string (&value));
|
katze_assign (browser->location_entry_search, g_value_dup_string (&value));
|
||||||
}
|
}
|
||||||
else if (name == g_intern_string ("maximum-history-age"))
|
else if (name == g_intern_string ("maximum-history-age"))
|
||||||
browser->maximum_history_age = g_value_get_boolean (&value);
|
browser->maximum_history_age = g_value_get_int (&value);
|
||||||
else if (name == g_intern_string ("news-aggregator"))
|
else if (name == g_intern_string ("news-aggregator"))
|
||||||
{
|
{
|
||||||
katze_assign (browser->news_aggregator, g_value_dup_string (&value));
|
katze_assign (browser->news_aggregator, g_value_dup_string (&value));
|
||||||
|
@ -6762,13 +6694,8 @@ midori_browser_set_property (GObject* object,
|
||||||
{
|
{
|
||||||
/* FIXME: Disconnect handlers */
|
/* FIXME: Disconnect handlers */
|
||||||
katze_object_assign (browser->search_engines, g_value_dup_object (value));
|
katze_object_assign (browser->search_engines, g_value_dup_object (value));
|
||||||
if (katze_object_get_boolean (browser->settings,
|
|
||||||
"search-engines-in-completion"))
|
|
||||||
midori_location_action_set_search_engines (MIDORI_LOCATION_ACTION (
|
midori_location_action_set_search_engines (MIDORI_LOCATION_ACTION (
|
||||||
_action_by_name (browser, "Location")), browser->search_engines);
|
_action_by_name (browser, "Location")), browser->search_engines);
|
||||||
else
|
|
||||||
midori_location_action_set_search_engines (MIDORI_LOCATION_ACTION (
|
|
||||||
_action_by_name (browser, "Location")), NULL);
|
|
||||||
midori_search_action_set_search_engines (MIDORI_SEARCH_ACTION (
|
midori_search_action_set_search_engines (MIDORI_SEARCH_ACTION (
|
||||||
_action_by_name (browser, "Search")), browser->search_engines);
|
_action_by_name (browser, "Search")), browser->search_engines);
|
||||||
/* FIXME: Connect to updates */
|
/* FIXME: Connect to updates */
|
||||||
|
@ -6919,6 +6846,10 @@ midori_browser_add_tab (MidoriBrowser* browser,
|
||||||
g_return_val_if_fail (MIDORI_IS_BROWSER (browser), -1);
|
g_return_val_if_fail (MIDORI_IS_BROWSER (browser), -1);
|
||||||
g_return_val_if_fail (GTK_IS_WIDGET (view), -1);
|
g_return_val_if_fail (GTK_IS_WIDGET (view), -1);
|
||||||
|
|
||||||
|
if (!g_object_get_data (G_OBJECT (webkit_get_default_session ()),
|
||||||
|
"midori-session-initialized"))
|
||||||
|
g_critical ("midori_load_soup_session was not called!");
|
||||||
|
|
||||||
g_signal_emit (browser, signals[ADD_TAB], 0, view);
|
g_signal_emit (browser, signals[ADD_TAB], 0, view);
|
||||||
return gtk_notebook_page_num (GTK_NOTEBOOK (browser->notebook), view);
|
return gtk_notebook_page_num (GTK_NOTEBOOK (browser->notebook), view);
|
||||||
}
|
}
|
||||||
|
|
|
@ -137,6 +137,7 @@ enum
|
||||||
enum {
|
enum {
|
||||||
ACTIVATE,
|
ACTIVATE,
|
||||||
DEACTIVATE,
|
DEACTIVATE,
|
||||||
|
OPEN_PREFERENCES,
|
||||||
|
|
||||||
LAST_SIGNAL
|
LAST_SIGNAL
|
||||||
};
|
};
|
||||||
|
@ -186,6 +187,24 @@ midori_extension_class_init (MidoriExtensionClass* class)
|
||||||
G_TYPE_NONE, 0,
|
G_TYPE_NONE, 0,
|
||||||
G_TYPE_NONE);
|
G_TYPE_NONE);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* MidoriExtension::open-preferences:
|
||||||
|
*
|
||||||
|
* The preferences of the extension should be opened.
|
||||||
|
*
|
||||||
|
* Since: 0.4.0
|
||||||
|
*/
|
||||||
|
signals[OPEN_PREFERENCES] = g_signal_new (
|
||||||
|
"open-preferences",
|
||||||
|
G_TYPE_FROM_CLASS (class),
|
||||||
|
(GSignalFlags)(G_SIGNAL_RUN_LAST | G_SIGNAL_ACTION),
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
NULL,
|
||||||
|
g_cclosure_marshal_VOID__VOID,
|
||||||
|
G_TYPE_NONE, 0,
|
||||||
|
G_TYPE_NONE);
|
||||||
|
|
||||||
gobject_class = G_OBJECT_CLASS (class);
|
gobject_class = G_OBJECT_CLASS (class);
|
||||||
gobject_class->finalize = midori_extension_finalize;
|
gobject_class->finalize = midori_extension_finalize;
|
||||||
gobject_class->set_property = midori_extension_set_property;
|
gobject_class->set_property = midori_extension_set_property;
|
||||||
|
@ -468,6 +487,22 @@ midori_extension_is_prepared (MidoriExtension* extension)
|
||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* midori_extension_has_preferences:
|
||||||
|
* @extension: a #MidoriExtension
|
||||||
|
*
|
||||||
|
* Determines if @extension has preferences.
|
||||||
|
*
|
||||||
|
* Return value: %TRUE if @extension has preferences
|
||||||
|
**/
|
||||||
|
gboolean
|
||||||
|
midori_extension_has_preferences (MidoriExtension* extension)
|
||||||
|
{
|
||||||
|
g_return_val_if_fail (MIDORI_IS_EXTENSION (extension), FALSE);
|
||||||
|
|
||||||
|
return g_signal_has_handler_pending (extension, signals[OPEN_PREFERENCES], 0, FALSE);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* midori_extension_is_active:
|
* midori_extension_is_active:
|
||||||
* @extension: a #MidoriExtension
|
* @extension: a #MidoriExtension
|
||||||
|
|
|
@ -51,6 +51,9 @@ midori_extension_get_type (void) G_GNUC_CONST;
|
||||||
gboolean
|
gboolean
|
||||||
midori_extension_is_prepared (MidoriExtension* extension);
|
midori_extension_is_prepared (MidoriExtension* extension);
|
||||||
|
|
||||||
|
gboolean
|
||||||
|
midori_extension_has_preferences (MidoriExtension* extension);
|
||||||
|
|
||||||
gboolean
|
gboolean
|
||||||
midori_extension_is_active (MidoriExtension* extension);
|
midori_extension_is_active (MidoriExtension* extension);
|
||||||
|
|
||||||
|
|
4
midori/midori-extensions-column.vala
Normal file
4
midori/midori-extensions-column.vala
Normal file
|
@ -0,0 +1,4 @@
|
||||||
|
|
||||||
|
public class Midori.ExtensionsCoumn : Gtk.TreeViewColumn {
|
||||||
|
public signal void row_clicked (Gtk.TreeView view, Gtk.TreePath path);
|
||||||
|
}
|
|
@ -364,6 +364,10 @@ midori_location_action_popup_timeout_cb (gpointer data)
|
||||||
{
|
{
|
||||||
sqlite3* db;
|
sqlite3* db;
|
||||||
db = g_object_get_data (G_OBJECT (action->history), "db");
|
db = g_object_get_data (G_OBJECT (action->history), "db");
|
||||||
|
|
||||||
|
if (!db)
|
||||||
|
return FALSE;
|
||||||
|
|
||||||
sqlcmd = "SELECT type, uri, title FROM ("
|
sqlcmd = "SELECT type, uri, title FROM ("
|
||||||
" SELECT 1 AS type, uri, title, count() AS ct FROM history "
|
" SELECT 1 AS type, uri, title, count() AS ct FROM history "
|
||||||
" WHERE uri LIKE ?1 OR title LIKE ?1 GROUP BY uri "
|
" WHERE uri LIKE ?1 OR title LIKE ?1 GROUP BY uri "
|
||||||
|
|
|
@ -588,12 +588,29 @@ static void
|
||||||
midori_panel_viewable_destroy_cb (GtkWidget* viewable,
|
midori_panel_viewable_destroy_cb (GtkWidget* viewable,
|
||||||
MidoriPanel* panel)
|
MidoriPanel* panel)
|
||||||
{
|
{
|
||||||
gint i = gtk_notebook_page_num (GTK_NOTEBOOK (panel->notebook),
|
gint n_pages;
|
||||||
|
gchar* action_name;
|
||||||
|
GtkAction* action;
|
||||||
|
gint i;
|
||||||
|
|
||||||
|
i = gtk_notebook_page_num (GTK_NOTEBOOK (panel->notebook),
|
||||||
g_object_get_data (G_OBJECT (viewable), "parent"));
|
g_object_get_data (G_OBJECT (viewable), "parent"));
|
||||||
if (i > -1)
|
if (i > -1)
|
||||||
gtk_notebook_remove_page (GTK_NOTEBOOK (panel->notebook), i);
|
gtk_notebook_remove_page (GTK_NOTEBOOK (panel->notebook), i);
|
||||||
g_signal_handlers_disconnect_by_func (
|
g_signal_handlers_disconnect_by_func (
|
||||||
viewable, midori_panel_viewable_destroy_cb, panel);
|
viewable, midori_panel_viewable_destroy_cb, panel);
|
||||||
|
|
||||||
|
n_pages = midori_panel_get_n_pages (panel);
|
||||||
|
if (n_pages > 0)
|
||||||
|
midori_panel_set_current_page (panel, (n_pages-1 > i) ? i : n_pages - 1);
|
||||||
|
|
||||||
|
action_name = g_strconcat ("PanelPage",
|
||||||
|
midori_viewable_get_stock_id (MIDORI_VIEWABLE (viewable)), NULL);
|
||||||
|
action = gtk_action_group_get_action (panel->action_group, action_name);
|
||||||
|
g_free (action_name);
|
||||||
|
|
||||||
|
gtk_action_group_remove_action (panel->action_group, action);
|
||||||
|
g_object_unref (G_OBJECT (action));
|
||||||
}
|
}
|
||||||
|
|
||||||
static GtkToolItem*
|
static GtkToolItem*
|
||||||
|
|
|
@ -316,10 +316,10 @@ midori_preferences_set_settings (MidoriPreferences* preferences,
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Page "Appearance" */
|
/* Page "Appearance" */
|
||||||
PAGE_NEW (GTK_STOCK_SELECT_FONT, _("Appearance"));
|
PAGE_NEW (GTK_STOCK_SELECT_FONT, _("Fonts"));
|
||||||
FRAME_NEW (NULL);
|
FRAME_NEW (NULL);
|
||||||
#if !HAVE_HILDON
|
#if !HAVE_HILDON
|
||||||
label = gtk_label_new (_("Default Font Family"));
|
label = gtk_label_new (_("Proportional Font Family"));
|
||||||
gtk_misc_set_alignment (GTK_MISC (label), 0.0, 0.5);
|
gtk_misc_set_alignment (GTK_MISC (label), 0.0, 0.5);
|
||||||
INDENTED_ADD (label);
|
INDENTED_ADD (label);
|
||||||
button = katze_property_proxy (settings, "default-font-family", "font");
|
button = katze_property_proxy (settings, "default-font-family", "font");
|
||||||
|
@ -355,13 +355,7 @@ midori_preferences_set_settings (MidoriPreferences* preferences,
|
||||||
#if !HAVE_HILDON
|
#if !HAVE_HILDON
|
||||||
button = katze_property_proxy (settings, "auto-load-images", NULL);
|
button = katze_property_proxy (settings, "auto-load-images", NULL);
|
||||||
INDENTED_ADD (button);
|
INDENTED_ADD (button);
|
||||||
#if WEBKIT_CHECK_VERSION (1, 1, 6)
|
|
||||||
button = katze_property_proxy (settings, "enable-spell-checking", NULL);
|
button = katze_property_proxy (settings, "enable-spell-checking", NULL);
|
||||||
#else
|
|
||||||
button = katze_property_proxy (settings, "enforce-96-dpi", NULL);
|
|
||||||
gtk_button_set_label (GTK_BUTTON (button), _("Enforce 96 dots per inch"));
|
|
||||||
gtk_widget_set_tooltip_text (button, _("Enforce a video dot density of 96 DPI"));
|
|
||||||
#endif
|
|
||||||
SPANNED_ADD (button);
|
SPANNED_ADD (button);
|
||||||
button = katze_property_proxy (settings, "enable-scripts", NULL);
|
button = katze_property_proxy (settings, "enable-scripts", NULL);
|
||||||
INDENTED_ADD (button);
|
INDENTED_ADD (button);
|
||||||
|
@ -370,21 +364,15 @@ midori_preferences_set_settings (MidoriPreferences* preferences,
|
||||||
#endif
|
#endif
|
||||||
button = katze_property_proxy (settings, "zoom-text-and-images", NULL);
|
button = katze_property_proxy (settings, "zoom-text-and-images", NULL);
|
||||||
INDENTED_ADD (button);
|
INDENTED_ADD (button);
|
||||||
#if WEBKIT_CHECK_VERSION (1, 1, 11)
|
|
||||||
button = katze_property_proxy (settings, "javascript-can-open-windows-automatically", NULL);
|
button = katze_property_proxy (settings, "javascript-can-open-windows-automatically", NULL);
|
||||||
gtk_button_set_label (GTK_BUTTON (button), _("Allow scripts to open popups"));
|
gtk_button_set_label (GTK_BUTTON (button), _("Allow scripts to open popups"));
|
||||||
gtk_widget_set_tooltip_text (button, _("Whether scripts are allowed to open popup windows automatically"));
|
gtk_widget_set_tooltip_text (button, _("Whether scripts are allowed to open popup windows automatically"));
|
||||||
SPANNED_ADD (button);
|
SPANNED_ADD (button);
|
||||||
#endif
|
|
||||||
button = NULL;
|
|
||||||
#if WEBKIT_CHECK_VERSION (1, 1, 15) || HAVE_HILDON
|
|
||||||
if (katze_widget_has_touchscreen_mode (parent ?
|
if (katze_widget_has_touchscreen_mode (parent ?
|
||||||
GTK_WIDGET (parent) : GTK_WIDGET (preferences)))
|
GTK_WIDGET (parent) : GTK_WIDGET (preferences)))
|
||||||
button = katze_property_proxy (settings, "kinetic-scrolling", NULL);
|
button = katze_property_proxy (settings, "kinetic-scrolling", NULL);
|
||||||
#else
|
else
|
||||||
button = katze_property_proxy (settings, "middle-click-opens-selection", NULL);
|
button = katze_property_proxy (settings, "middle-click-opens-selection", NULL);
|
||||||
#endif
|
|
||||||
if (button != NULL)
|
|
||||||
INDENTED_ADD (button);
|
INDENTED_ADD (button);
|
||||||
FRAME_NEW (NULL);
|
FRAME_NEW (NULL);
|
||||||
button = katze_property_label (settings, "preferred-languages");
|
button = katze_property_label (settings, "preferred-languages");
|
||||||
|
@ -425,7 +413,7 @@ midori_preferences_set_settings (MidoriPreferences* preferences,
|
||||||
button = katze_property_proxy (settings, "open-tabs-in-the-background", NULL);
|
button = katze_property_proxy (settings, "open-tabs-in-the-background", NULL);
|
||||||
SPANNED_ADD (button);
|
SPANNED_ADD (button);
|
||||||
#if !HAVE_HILDON
|
#if !HAVE_HILDON
|
||||||
FRAME_NEW (NULL);
|
INDENTED_ADD (gtk_label_new (NULL));
|
||||||
label = katze_property_label (settings, "text-editor");
|
label = katze_property_label (settings, "text-editor");
|
||||||
INDENTED_ADD (label);
|
INDENTED_ADD (label);
|
||||||
entry = katze_property_proxy (settings, "text-editor", "application-text/plain");
|
entry = katze_property_proxy (settings, "text-editor", "application-text/plain");
|
||||||
|
|
|
@ -967,7 +967,12 @@ midori_search_action_get_editor (MidoriSearchAction* search_action,
|
||||||
label = gtk_label_new_with_mnemonic (_("_Address:"));
|
label = gtk_label_new_with_mnemonic (_("_Address:"));
|
||||||
gtk_size_group_add_widget (sizegroup, label);
|
gtk_size_group_add_widget (sizegroup, label);
|
||||||
gtk_box_pack_start (GTK_BOX (hbox), label, FALSE, FALSE, 0);
|
gtk_box_pack_start (GTK_BOX (hbox), label, FALSE, FALSE, 0);
|
||||||
entry_uri = gtk_entry_new ();
|
entry_uri = katze_uri_entry_new (
|
||||||
|
#if GTK_CHECK_VERSION (2, 20, 0)
|
||||||
|
gtk_dialog_get_widget_for_response (GTK_DIALOG (dialog), GTK_RESPONSE_ACCEPT));
|
||||||
|
#else
|
||||||
|
NULL);
|
||||||
|
#endif
|
||||||
gtk_entry_set_activates_default (GTK_ENTRY (entry_uri), TRUE);
|
gtk_entry_set_activates_default (GTK_ENTRY (entry_uri), TRUE);
|
||||||
if (!new_engine)
|
if (!new_engine)
|
||||||
gtk_entry_set_text (GTK_ENTRY (entry_uri)
|
gtk_entry_set_text (GTK_ENTRY (entry_uri)
|
||||||
|
|
File diff suppressed because it is too large
Load diff
|
@ -39,23 +39,18 @@ struct _MidoriWebSettings
|
||||||
gboolean show_navigationbar : 1;
|
gboolean show_navigationbar : 1;
|
||||||
gboolean show_bookmarkbar : 1;
|
gboolean show_bookmarkbar : 1;
|
||||||
gboolean show_panel : 1;
|
gboolean show_panel : 1;
|
||||||
gboolean show_transferbar : 1;
|
|
||||||
gboolean show_statusbar : 1;
|
gboolean show_statusbar : 1;
|
||||||
MidoriToolbarStyle toolbar_style : 3;
|
MidoriToolbarStyle toolbar_style : 3;
|
||||||
gboolean search_engines_in_completion : 1;
|
|
||||||
gboolean compact_sidepanel : 1;
|
gboolean compact_sidepanel : 1;
|
||||||
gboolean show_panel_controls : 1;
|
|
||||||
gboolean right_align_sidepanel : 1;
|
gboolean right_align_sidepanel : 1;
|
||||||
gboolean open_panels_in_windows : 1;
|
gboolean open_panels_in_windows : 1;
|
||||||
MidoriStartup load_on_startup : 2;
|
MidoriStartup load_on_startup : 2;
|
||||||
gboolean show_crash_dialog : 1;
|
gboolean show_crash_dialog : 1;
|
||||||
gboolean speed_dial_in_new_tabs : 1;
|
|
||||||
MidoriPreferredEncoding preferred_encoding : 3;
|
MidoriPreferredEncoding preferred_encoding : 3;
|
||||||
gboolean always_show_tabbar : 1;
|
gboolean always_show_tabbar : 1;
|
||||||
gboolean close_buttons_on_tabs : 1;
|
gboolean close_buttons_on_tabs : 1;
|
||||||
gint close_buttons_left;
|
gint close_buttons_left;
|
||||||
MidoriNewPage open_new_pages_in : 2;
|
MidoriNewPage open_new_pages_in : 2;
|
||||||
MidoriNewPage open_external_pages_in : 2;
|
|
||||||
gboolean middle_click_opens_selection : 1;
|
gboolean middle_click_opens_selection : 1;
|
||||||
gboolean open_tabs_in_the_background : 1;
|
gboolean open_tabs_in_the_background : 1;
|
||||||
gboolean open_tabs_next_to_current : 1;
|
gboolean open_tabs_next_to_current : 1;
|
||||||
|
@ -63,10 +58,8 @@ struct _MidoriWebSettings
|
||||||
gboolean zoom_text_and_images : 1;
|
gboolean zoom_text_and_images : 1;
|
||||||
gboolean find_while_typing : 1;
|
gboolean find_while_typing : 1;
|
||||||
gboolean kinetic_scrolling : 1;
|
gboolean kinetic_scrolling : 1;
|
||||||
MidoriAcceptCookies accept_cookies : 2;
|
|
||||||
gboolean original_cookies_only : 1;
|
gboolean original_cookies_only : 1;
|
||||||
gboolean remember_last_visited_pages : 1;
|
gboolean remember_last_visited_pages : 1;
|
||||||
gboolean remember_last_downloaded_files : 1;
|
|
||||||
MidoriProxy proxy_type : 2;
|
MidoriProxy proxy_type : 2;
|
||||||
MidoriIdentity identify_as : 3;
|
MidoriIdentity identify_as : 3;
|
||||||
|
|
||||||
|
@ -81,7 +74,6 @@ struct _MidoriWebSettings
|
||||||
gchar* toolbar_items;
|
gchar* toolbar_items;
|
||||||
gchar* homepage;
|
gchar* homepage;
|
||||||
gchar* download_folder;
|
gchar* download_folder;
|
||||||
gchar* download_manager;
|
|
||||||
gchar* text_editor;
|
gchar* text_editor;
|
||||||
gchar* news_aggregator;
|
gchar* news_aggregator;
|
||||||
gchar* location_entry_search;
|
gchar* location_entry_search;
|
||||||
|
@ -123,23 +115,18 @@ enum
|
||||||
PROP_SHOW_NAVIGATIONBAR,
|
PROP_SHOW_NAVIGATIONBAR,
|
||||||
PROP_SHOW_BOOKMARKBAR,
|
PROP_SHOW_BOOKMARKBAR,
|
||||||
PROP_SHOW_PANEL,
|
PROP_SHOW_PANEL,
|
||||||
PROP_SHOW_TRANSFERBAR,
|
|
||||||
PROP_SHOW_STATUSBAR,
|
PROP_SHOW_STATUSBAR,
|
||||||
|
|
||||||
PROP_TOOLBAR_STYLE,
|
PROP_TOOLBAR_STYLE,
|
||||||
PROP_SEARCH_ENGINES_IN_COMPLETION,
|
|
||||||
PROP_TOOLBAR_ITEMS,
|
PROP_TOOLBAR_ITEMS,
|
||||||
PROP_COMPACT_SIDEPANEL,
|
PROP_COMPACT_SIDEPANEL,
|
||||||
PROP_SHOW_PANEL_CONTROLS,
|
|
||||||
PROP_RIGHT_ALIGN_SIDEPANEL,
|
PROP_RIGHT_ALIGN_SIDEPANEL,
|
||||||
PROP_OPEN_PANELS_IN_WINDOWS,
|
PROP_OPEN_PANELS_IN_WINDOWS,
|
||||||
|
|
||||||
PROP_LOAD_ON_STARTUP,
|
PROP_LOAD_ON_STARTUP,
|
||||||
PROP_HOMEPAGE,
|
PROP_HOMEPAGE,
|
||||||
PROP_SHOW_CRASH_DIALOG,
|
PROP_SHOW_CRASH_DIALOG,
|
||||||
PROP_SPEED_DIAL_IN_NEW_TABS,
|
|
||||||
PROP_DOWNLOAD_FOLDER,
|
PROP_DOWNLOAD_FOLDER,
|
||||||
PROP_DOWNLOAD_MANAGER,
|
|
||||||
PROP_TEXT_EDITOR,
|
PROP_TEXT_EDITOR,
|
||||||
PROP_NEWS_AGGREGATOR,
|
PROP_NEWS_AGGREGATOR,
|
||||||
PROP_LOCATION_ENTRY_SEARCH,
|
PROP_LOCATION_ENTRY_SEARCH,
|
||||||
|
@ -149,7 +136,6 @@ enum
|
||||||
PROP_CLOSE_BUTTONS_ON_TABS,
|
PROP_CLOSE_BUTTONS_ON_TABS,
|
||||||
PROP_CLOSE_BUTTONS_LEFT,
|
PROP_CLOSE_BUTTONS_LEFT,
|
||||||
PROP_OPEN_NEW_PAGES_IN,
|
PROP_OPEN_NEW_PAGES_IN,
|
||||||
PROP_OPEN_EXTERNAL_PAGES_IN,
|
|
||||||
PROP_MIDDLE_CLICK_OPENS_SELECTION,
|
PROP_MIDDLE_CLICK_OPENS_SELECTION,
|
||||||
PROP_OPEN_TABS_IN_THE_BACKGROUND,
|
PROP_OPEN_TABS_IN_THE_BACKGROUND,
|
||||||
PROP_OPEN_TABS_NEXT_TO_CURRENT,
|
PROP_OPEN_TABS_NEXT_TO_CURRENT,
|
||||||
|
@ -167,11 +153,9 @@ enum
|
||||||
PROP_ZOOM_TEXT_AND_IMAGES,
|
PROP_ZOOM_TEXT_AND_IMAGES,
|
||||||
PROP_FIND_WHILE_TYPING,
|
PROP_FIND_WHILE_TYPING,
|
||||||
PROP_KINETIC_SCROLLING,
|
PROP_KINETIC_SCROLLING,
|
||||||
PROP_ACCEPT_COOKIES,
|
|
||||||
PROP_MAXIMUM_COOKIE_AGE,
|
PROP_MAXIMUM_COOKIE_AGE,
|
||||||
|
|
||||||
PROP_MAXIMUM_HISTORY_AGE,
|
PROP_MAXIMUM_HISTORY_AGE,
|
||||||
PROP_REMEMBER_LAST_DOWNLOADED_FILES,
|
|
||||||
|
|
||||||
PROP_PROXY_TYPE,
|
PROP_PROXY_TYPE,
|
||||||
PROP_HTTP_PROXY,
|
PROP_HTTP_PROXY,
|
||||||
|
@ -214,9 +198,7 @@ midori_startup_get_type (void)
|
||||||
{ MIDORI_STARTUP_BLANK_PAGE, "MIDORI_STARTUP_BLANK_PAGE", N_("Show Speed Dial") },
|
{ MIDORI_STARTUP_BLANK_PAGE, "MIDORI_STARTUP_BLANK_PAGE", N_("Show Speed Dial") },
|
||||||
{ MIDORI_STARTUP_HOMEPAGE, "MIDORI_STARTUP_HOMEPAGE", N_("Show Homepage") },
|
{ MIDORI_STARTUP_HOMEPAGE, "MIDORI_STARTUP_HOMEPAGE", N_("Show Homepage") },
|
||||||
{ MIDORI_STARTUP_LAST_OPEN_PAGES, "MIDORI_STARTUP_LAST_OPEN_PAGES", N_("Show last open tabs") },
|
{ MIDORI_STARTUP_LAST_OPEN_PAGES, "MIDORI_STARTUP_LAST_OPEN_PAGES", N_("Show last open tabs") },
|
||||||
#if WEBKIT_CHECK_VERSION (1, 1, 6)
|
|
||||||
{ MIDORI_STARTUP_DELAYED_PAGES, "MIDORI_STARTUP_DELAYED_PAGES", N_("Show last tabs without loading") },
|
{ MIDORI_STARTUP_DELAYED_PAGES, "MIDORI_STARTUP_DELAYED_PAGES", N_("Show last tabs without loading") },
|
||||||
#endif
|
|
||||||
{ 0, NULL, NULL }
|
{ 0, NULL, NULL }
|
||||||
};
|
};
|
||||||
type = g_enum_register_static ("MidoriStartup", values);
|
type = g_enum_register_static ("MidoriStartup", values);
|
||||||
|
@ -299,23 +281,6 @@ midori_proxy_get_type (void)
|
||||||
return type;
|
return type;
|
||||||
}
|
}
|
||||||
|
|
||||||
GType
|
|
||||||
midori_accept_cookies_get_type (void)
|
|
||||||
{
|
|
||||||
static GType type = 0;
|
|
||||||
if (!type)
|
|
||||||
{
|
|
||||||
static const GEnumValue values[] = {
|
|
||||||
{ MIDORI_ACCEPT_COOKIES_ALL, "MIDORI_ACCEPT_COOKIES_ALL", N_("All cookies") },
|
|
||||||
{ MIDORI_ACCEPT_COOKIES_SESSION, "MIDORI_ACCEPT_COOKIES_SESSION", N_("Session cookies") },
|
|
||||||
{ MIDORI_ACCEPT_COOKIES_NONE, "MIDORI_ACCEPT_COOKIES_NONE", N_("None") },
|
|
||||||
{ 0, NULL, NULL }
|
|
||||||
};
|
|
||||||
type = g_enum_register_static ("MidoriAcceptCookies", values);
|
|
||||||
}
|
|
||||||
return type;
|
|
||||||
}
|
|
||||||
|
|
||||||
GType
|
GType
|
||||||
midori_identity_get_type (void)
|
midori_identity_get_type (void)
|
||||||
{
|
{
|
||||||
|
@ -485,24 +450,6 @@ midori_web_settings_class_init (MidoriWebSettingsClass* class)
|
||||||
FALSE,
|
FALSE,
|
||||||
flags));
|
flags));
|
||||||
|
|
||||||
/**
|
|
||||||
* MidoriWebSettings:show-transferbar:
|
|
||||||
*
|
|
||||||
* Whether to show the transferbar.
|
|
||||||
*
|
|
||||||
* Since: 0.1.5
|
|
||||||
*
|
|
||||||
* Deprecated: 0.3.1
|
|
||||||
*/
|
|
||||||
g_object_class_install_property (gobject_class,
|
|
||||||
PROP_SHOW_TRANSFERBAR,
|
|
||||||
g_param_spec_boolean (
|
|
||||||
"show-transferbar",
|
|
||||||
_("Show Transferbar"),
|
|
||||||
_("Whether to show the transferbar"),
|
|
||||||
TRUE,
|
|
||||||
flags));
|
|
||||||
|
|
||||||
g_object_class_install_property (gobject_class,
|
g_object_class_install_property (gobject_class,
|
||||||
PROP_SHOW_STATUSBAR,
|
PROP_SHOW_STATUSBAR,
|
||||||
g_param_spec_boolean (
|
g_param_spec_boolean (
|
||||||
|
@ -523,24 +470,6 @@ midori_web_settings_class_init (MidoriWebSettingsClass* class)
|
||||||
MIDORI_TOOLBAR_DEFAULT,
|
MIDORI_TOOLBAR_DEFAULT,
|
||||||
flags));
|
flags));
|
||||||
|
|
||||||
/**
|
|
||||||
* MidoriWebSettings:search-engines-in-completion:
|
|
||||||
*
|
|
||||||
* Whether to show search engines in the location completion.
|
|
||||||
*
|
|
||||||
* Since: 0.1.6
|
|
||||||
*
|
|
||||||
* Deprecated: 0.3.1
|
|
||||||
*/
|
|
||||||
g_object_class_install_property (gobject_class,
|
|
||||||
PROP_SEARCH_ENGINES_IN_COMPLETION,
|
|
||||||
g_param_spec_boolean (
|
|
||||||
"search-engines-in-completion",
|
|
||||||
_("Search engines in location completion"),
|
|
||||||
_("Whether to show search engines in the location completion"),
|
|
||||||
TRUE,
|
|
||||||
flags));
|
|
||||||
|
|
||||||
g_object_class_install_property (gobject_class,
|
g_object_class_install_property (gobject_class,
|
||||||
PROP_TOOLBAR_ITEMS,
|
PROP_TOOLBAR_ITEMS,
|
||||||
g_param_spec_string (
|
g_param_spec_string (
|
||||||
|
@ -559,24 +488,6 @@ midori_web_settings_class_init (MidoriWebSettingsClass* class)
|
||||||
FALSE,
|
FALSE,
|
||||||
flags));
|
flags));
|
||||||
|
|
||||||
/**
|
|
||||||
* MidoriWebSettings:show-panel-controls:
|
|
||||||
*
|
|
||||||
* Whether to show the operating controls of the panel.
|
|
||||||
*
|
|
||||||
* Since: 0.1.9
|
|
||||||
*
|
|
||||||
* Deprecated: 0.3.0
|
|
||||||
*/
|
|
||||||
g_object_class_install_property (gobject_class,
|
|
||||||
PROP_SHOW_PANEL_CONTROLS,
|
|
||||||
g_param_spec_boolean (
|
|
||||||
"show-panel-controls",
|
|
||||||
_("Show operating controls of the panel"),
|
|
||||||
_("Whether to show the operating controls of the panel"),
|
|
||||||
TRUE,
|
|
||||||
flags));
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* MidoriWebSettings:right-sidepanel:
|
* MidoriWebSettings:right-sidepanel:
|
||||||
*
|
*
|
||||||
|
@ -645,25 +556,6 @@ midori_web_settings_class_init (MidoriWebSettingsClass* class)
|
||||||
TRUE,
|
TRUE,
|
||||||
flags));
|
flags));
|
||||||
|
|
||||||
/**
|
|
||||||
* MidoriWebSettings:speed-dial-in-new-tabs:
|
|
||||||
*
|
|
||||||
* Show spee dial in newly opened tabs.
|
|
||||||
*
|
|
||||||
* Since: 0.1.7
|
|
||||||
*
|
|
||||||
* Deprecated: 0.3.4
|
|
||||||
*/
|
|
||||||
g_object_class_install_property (gobject_class,
|
|
||||||
PROP_SPEED_DIAL_IN_NEW_TABS,
|
|
||||||
g_param_spec_boolean (
|
|
||||||
"speed-dial-in-new-tabs",
|
|
||||||
/* i18n: Speed dial, webpage shortcuts, named for the phone function */
|
|
||||||
_("Show speed dial in new tabs"),
|
|
||||||
_("Show speed dial in newly opened tabs"),
|
|
||||||
TRUE,
|
|
||||||
flags));
|
|
||||||
|
|
||||||
g_object_class_install_property (gobject_class,
|
g_object_class_install_property (gobject_class,
|
||||||
PROP_DOWNLOAD_FOLDER,
|
PROP_DOWNLOAD_FOLDER,
|
||||||
g_param_spec_string (
|
g_param_spec_string (
|
||||||
|
@ -671,26 +563,6 @@ midori_web_settings_class_init (MidoriWebSettingsClass* class)
|
||||||
_("Save downloaded files to:"),
|
_("Save downloaded files to:"),
|
||||||
_("The folder downloaded files are saved to"),
|
_("The folder downloaded files are saved to"),
|
||||||
midori_get_download_dir (),
|
midori_get_download_dir (),
|
||||||
#if WEBKIT_CHECK_VERSION (1, 1, 3)
|
|
||||||
flags));
|
|
||||||
#else
|
|
||||||
G_PARAM_READABLE | G_PARAM_STATIC_STRINGS));
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/**
|
|
||||||
* MidoriWebSettings:download-manager:
|
|
||||||
*
|
|
||||||
* An external download manager that shows up in context menus.
|
|
||||||
*
|
|
||||||
* Deprecated: 0.3.4
|
|
||||||
*/
|
|
||||||
g_object_class_install_property (gobject_class,
|
|
||||||
PROP_DOWNLOAD_MANAGER,
|
|
||||||
g_param_spec_string (
|
|
||||||
"download-manager",
|
|
||||||
_("Download Manager"),
|
|
||||||
_("An external download manager"),
|
|
||||||
NULL,
|
|
||||||
flags));
|
flags));
|
||||||
|
|
||||||
g_object_class_install_property (gobject_class,
|
g_object_class_install_property (gobject_class,
|
||||||
|
@ -783,23 +655,6 @@ midori_web_settings_class_init (MidoriWebSettingsClass* class)
|
||||||
MIDORI_NEW_PAGE_TAB,
|
MIDORI_NEW_PAGE_TAB,
|
||||||
flags));
|
flags));
|
||||||
|
|
||||||
/**
|
|
||||||
* MidoriWebSettings:open-external-pages-in:
|
|
||||||
*
|
|
||||||
* Where to open externally opened pages.
|
|
||||||
*
|
|
||||||
* Deprecated: 0.3.4
|
|
||||||
*/
|
|
||||||
g_object_class_install_property (gobject_class,
|
|
||||||
PROP_OPEN_EXTERNAL_PAGES_IN,
|
|
||||||
g_param_spec_enum (
|
|
||||||
"open-external-pages-in",
|
|
||||||
_("Open external pages in:"),
|
|
||||||
_("Where to open externally opened pages"),
|
|
||||||
MIDORI_TYPE_NEW_PAGE,
|
|
||||||
MIDORI_NEW_PAGE_TAB,
|
|
||||||
flags));
|
|
||||||
|
|
||||||
g_object_class_install_property (gobject_class,
|
g_object_class_install_property (gobject_class,
|
||||||
PROP_MIDDLE_CLICK_OPENS_SELECTION,
|
PROP_MIDDLE_CLICK_OPENS_SELECTION,
|
||||||
g_param_spec_boolean (
|
g_param_spec_boolean (
|
||||||
|
@ -871,7 +726,6 @@ midori_web_settings_class_init (MidoriWebSettingsClass* class)
|
||||||
"Enable special extensions for developers",
|
"Enable special extensions for developers",
|
||||||
TRUE,
|
TRUE,
|
||||||
flags));
|
flags));
|
||||||
#if WEBKIT_CHECK_VERSION (1, 1, 6)
|
|
||||||
g_object_class_install_property (gobject_class,
|
g_object_class_install_property (gobject_class,
|
||||||
PROP_ENABLE_SPELL_CHECKING,
|
PROP_ENABLE_SPELL_CHECKING,
|
||||||
g_param_spec_boolean ("enable-spell-checking",
|
g_param_spec_boolean ("enable-spell-checking",
|
||||||
|
@ -879,8 +733,6 @@ midori_web_settings_class_init (MidoriWebSettingsClass* class)
|
||||||
_("Enable spell checking while typing"),
|
_("Enable spell checking while typing"),
|
||||||
TRUE,
|
TRUE,
|
||||||
flags));
|
flags));
|
||||||
#endif
|
|
||||||
#if WEBKIT_CHECK_VERSION (1, 1, 8)
|
|
||||||
g_object_class_install_property (gobject_class,
|
g_object_class_install_property (gobject_class,
|
||||||
PROP_ENABLE_HTML5_DATABASE,
|
PROP_ENABLE_HTML5_DATABASE,
|
||||||
g_param_spec_boolean ("enable-html5-database",
|
g_param_spec_boolean ("enable-html5-database",
|
||||||
|
@ -895,8 +747,6 @@ midori_web_settings_class_init (MidoriWebSettingsClass* class)
|
||||||
_("Whether to enable HTML5 local storage support"),
|
_("Whether to enable HTML5 local storage support"),
|
||||||
FALSE,
|
FALSE,
|
||||||
flags));
|
flags));
|
||||||
#endif
|
|
||||||
#if WEBKIT_CHECK_VERSION (1, 1, 13)
|
|
||||||
g_object_class_install_property (gobject_class,
|
g_object_class_install_property (gobject_class,
|
||||||
PROP_ENABLE_OFFLINE_WEB_APPLICATION_CACHE,
|
PROP_ENABLE_OFFLINE_WEB_APPLICATION_CACHE,
|
||||||
g_param_spec_boolean ("enable-offline-web-application-cache",
|
g_param_spec_boolean ("enable-offline-web-application-cache",
|
||||||
|
@ -904,7 +754,6 @@ midori_web_settings_class_init (MidoriWebSettingsClass* class)
|
||||||
_("Whether to enable offline web application cache"),
|
_("Whether to enable offline web application cache"),
|
||||||
FALSE,
|
FALSE,
|
||||||
flags));
|
flags));
|
||||||
#endif
|
|
||||||
#if WEBKIT_CHECK_VERSION (1, 1, 18)
|
#if WEBKIT_CHECK_VERSION (1, 1, 18)
|
||||||
g_object_class_install_property (gobject_class,
|
g_object_class_install_property (gobject_class,
|
||||||
PROP_ENABLE_PAGE_CACHE,
|
PROP_ENABLE_PAGE_CACHE,
|
||||||
|
@ -963,28 +812,11 @@ midori_web_settings_class_init (MidoriWebSettingsClass* class)
|
||||||
TRUE,
|
TRUE,
|
||||||
flags));
|
flags));
|
||||||
|
|
||||||
/**
|
|
||||||
* MidoriWebSettings:accept-cookies:
|
|
||||||
*
|
|
||||||
* What type of cookies to accept.
|
|
||||||
*
|
|
||||||
* Deprecated: 0.3.4
|
|
||||||
**/
|
|
||||||
g_object_class_install_property (gobject_class,
|
|
||||||
PROP_ACCEPT_COOKIES,
|
|
||||||
g_param_spec_enum (
|
|
||||||
"accept-cookies",
|
|
||||||
_("Accept cookies"),
|
|
||||||
_("What type of cookies to accept"),
|
|
||||||
MIDORI_TYPE_ACCEPT_COOKIES,
|
|
||||||
MIDORI_ACCEPT_COOKIES_ALL,
|
|
||||||
flags));
|
|
||||||
|
|
||||||
g_object_class_install_property (gobject_class,
|
g_object_class_install_property (gobject_class,
|
||||||
PROP_MAXIMUM_COOKIE_AGE,
|
PROP_MAXIMUM_COOKIE_AGE,
|
||||||
g_param_spec_int (
|
g_param_spec_int (
|
||||||
"maximum-cookie-age",
|
"maximum-cookie-age",
|
||||||
_("Maximum cookie age"),
|
_("Delete old Cookies after:"),
|
||||||
_("The maximum number of days to save cookies for"),
|
_("The maximum number of days to save cookies for"),
|
||||||
0, G_MAXINT, 30,
|
0, G_MAXINT, 30,
|
||||||
flags));
|
flags));
|
||||||
|
@ -994,29 +826,11 @@ midori_web_settings_class_init (MidoriWebSettingsClass* class)
|
||||||
PROP_MAXIMUM_HISTORY_AGE,
|
PROP_MAXIMUM_HISTORY_AGE,
|
||||||
g_param_spec_int (
|
g_param_spec_int (
|
||||||
"maximum-history-age",
|
"maximum-history-age",
|
||||||
_("Maximum history age"),
|
_("Delete pages from history after:"),
|
||||||
_("The maximum number of days to save the history for"),
|
_("The maximum number of days to save the history for"),
|
||||||
0, G_MAXINT, 30,
|
0, G_MAXINT, 30,
|
||||||
flags));
|
flags));
|
||||||
|
|
||||||
/**
|
|
||||||
* MidoriWebSettings:remember-last-downloaded-files:
|
|
||||||
*
|
|
||||||
* Whether the last downloaded files are saved.
|
|
||||||
*
|
|
||||||
* Deprecated: 0.2.9
|
|
||||||
**/
|
|
||||||
g_object_class_install_property (gobject_class,
|
|
||||||
PROP_REMEMBER_LAST_DOWNLOADED_FILES,
|
|
||||||
g_param_spec_boolean (
|
|
||||||
"remember-last-downloaded-files",
|
|
||||||
_("Remember last downloaded files"),
|
|
||||||
_("Whether the last downloaded files are saved"),
|
|
||||||
TRUE,
|
|
||||||
flags));
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* MidoriWebSettings:proxy-type:
|
* MidoriWebSettings:proxy-type:
|
||||||
*
|
*
|
||||||
|
@ -1216,9 +1030,7 @@ midori_web_settings_init (MidoriWebSettings* web_settings)
|
||||||
{
|
{
|
||||||
web_settings->download_folder = g_strdup (midori_get_download_dir ());
|
web_settings->download_folder = g_strdup (midori_get_download_dir ());
|
||||||
web_settings->http_proxy = NULL;
|
web_settings->http_proxy = NULL;
|
||||||
web_settings->show_panel_controls = TRUE;
|
|
||||||
web_settings->open_popups_in_tabs = TRUE;
|
web_settings->open_popups_in_tabs = TRUE;
|
||||||
web_settings->remember_last_downloaded_files = TRUE;
|
|
||||||
web_settings->kinetic_scrolling = TRUE;
|
web_settings->kinetic_scrolling = TRUE;
|
||||||
|
|
||||||
g_signal_connect (web_settings, "notify::default-encoding",
|
g_signal_connect (web_settings, "notify::default-encoding",
|
||||||
|
@ -1235,7 +1047,6 @@ midori_web_settings_finalize (GObject* object)
|
||||||
katze_assign (web_settings->toolbar_items, NULL);
|
katze_assign (web_settings->toolbar_items, NULL);
|
||||||
katze_assign (web_settings->homepage, NULL);
|
katze_assign (web_settings->homepage, NULL);
|
||||||
katze_assign (web_settings->download_folder, NULL);
|
katze_assign (web_settings->download_folder, NULL);
|
||||||
katze_assign (web_settings->download_manager, NULL);
|
|
||||||
katze_assign (web_settings->text_editor, NULL);
|
katze_assign (web_settings->text_editor, NULL);
|
||||||
katze_assign (web_settings->news_aggregator, NULL);
|
katze_assign (web_settings->news_aggregator, NULL);
|
||||||
katze_assign (web_settings->location_entry_search, NULL);
|
katze_assign (web_settings->location_entry_search, NULL);
|
||||||
|
@ -1375,9 +1186,6 @@ midori_web_settings_set_property (GObject* object,
|
||||||
case PROP_SHOW_PANEL:
|
case PROP_SHOW_PANEL:
|
||||||
web_settings->show_panel = g_value_get_boolean (value);
|
web_settings->show_panel = g_value_get_boolean (value);
|
||||||
break;
|
break;
|
||||||
case PROP_SHOW_TRANSFERBAR:
|
|
||||||
web_settings->show_transferbar = g_value_get_boolean (value);
|
|
||||||
break;
|
|
||||||
case PROP_SHOW_STATUSBAR:
|
case PROP_SHOW_STATUSBAR:
|
||||||
web_settings->show_statusbar = g_value_get_boolean (value);
|
web_settings->show_statusbar = g_value_get_boolean (value);
|
||||||
break;
|
break;
|
||||||
|
@ -1385,18 +1193,12 @@ midori_web_settings_set_property (GObject* object,
|
||||||
case PROP_TOOLBAR_STYLE:
|
case PROP_TOOLBAR_STYLE:
|
||||||
web_settings->toolbar_style = g_value_get_enum (value);
|
web_settings->toolbar_style = g_value_get_enum (value);
|
||||||
break;
|
break;
|
||||||
case PROP_SEARCH_ENGINES_IN_COMPLETION:
|
|
||||||
web_settings->search_engines_in_completion = g_value_get_boolean (value);
|
|
||||||
break;
|
|
||||||
case PROP_TOOLBAR_ITEMS:
|
case PROP_TOOLBAR_ITEMS:
|
||||||
katze_assign (web_settings->toolbar_items, g_value_dup_string (value));
|
katze_assign (web_settings->toolbar_items, g_value_dup_string (value));
|
||||||
break;
|
break;
|
||||||
case PROP_COMPACT_SIDEPANEL:
|
case PROP_COMPACT_SIDEPANEL:
|
||||||
web_settings->compact_sidepanel = g_value_get_boolean (value);
|
web_settings->compact_sidepanel = g_value_get_boolean (value);
|
||||||
break;
|
break;
|
||||||
case PROP_SHOW_PANEL_CONTROLS:
|
|
||||||
web_settings->show_panel_controls = g_value_get_boolean (value);
|
|
||||||
break;
|
|
||||||
case PROP_RIGHT_ALIGN_SIDEPANEL:
|
case PROP_RIGHT_ALIGN_SIDEPANEL:
|
||||||
web_settings->right_align_sidepanel = g_value_get_boolean (value);
|
web_settings->right_align_sidepanel = g_value_get_boolean (value);
|
||||||
break;
|
break;
|
||||||
|
@ -1413,15 +1215,9 @@ midori_web_settings_set_property (GObject* object,
|
||||||
case PROP_SHOW_CRASH_DIALOG:
|
case PROP_SHOW_CRASH_DIALOG:
|
||||||
web_settings->show_crash_dialog = g_value_get_boolean (value);
|
web_settings->show_crash_dialog = g_value_get_boolean (value);
|
||||||
break;
|
break;
|
||||||
case PROP_SPEED_DIAL_IN_NEW_TABS:
|
|
||||||
web_settings->speed_dial_in_new_tabs = g_value_get_boolean (value);
|
|
||||||
break;
|
|
||||||
case PROP_DOWNLOAD_FOLDER:
|
case PROP_DOWNLOAD_FOLDER:
|
||||||
katze_assign (web_settings->download_folder, g_value_dup_string (value));
|
katze_assign (web_settings->download_folder, g_value_dup_string (value));
|
||||||
break;
|
break;
|
||||||
case PROP_DOWNLOAD_MANAGER:
|
|
||||||
katze_assign (web_settings->download_manager, g_value_dup_string (value));
|
|
||||||
break;
|
|
||||||
case PROP_TEXT_EDITOR:
|
case PROP_TEXT_EDITOR:
|
||||||
katze_assign (web_settings->text_editor, g_value_dup_string (value));
|
katze_assign (web_settings->text_editor, g_value_dup_string (value));
|
||||||
break;
|
break;
|
||||||
|
@ -1467,9 +1263,6 @@ midori_web_settings_set_property (GObject* object,
|
||||||
case PROP_OPEN_NEW_PAGES_IN:
|
case PROP_OPEN_NEW_PAGES_IN:
|
||||||
web_settings->open_new_pages_in = g_value_get_enum (value);
|
web_settings->open_new_pages_in = g_value_get_enum (value);
|
||||||
break;
|
break;
|
||||||
case PROP_OPEN_EXTERNAL_PAGES_IN:
|
|
||||||
web_settings->open_external_pages_in = g_value_get_enum (value);
|
|
||||||
break;
|
|
||||||
case PROP_MIDDLE_CLICK_OPENS_SELECTION:
|
case PROP_MIDDLE_CLICK_OPENS_SELECTION:
|
||||||
web_settings->middle_click_opens_selection = g_value_get_boolean (value);
|
web_settings->middle_click_opens_selection = g_value_get_boolean (value);
|
||||||
break;
|
break;
|
||||||
|
@ -1503,13 +1296,10 @@ midori_web_settings_set_property (GObject* object,
|
||||||
g_object_set (web_settings, "WebKitWebSettings::enable-developer-extras",
|
g_object_set (web_settings, "WebKitWebSettings::enable-developer-extras",
|
||||||
g_value_get_boolean (value), NULL);
|
g_value_get_boolean (value), NULL);
|
||||||
break;
|
break;
|
||||||
#if WEBKIT_CHECK_VERSION (1, 1, 6)
|
|
||||||
case PROP_ENABLE_SPELL_CHECKING:
|
case PROP_ENABLE_SPELL_CHECKING:
|
||||||
g_object_set (web_settings, "WebKitWebSettings::enable-spell-checking",
|
g_object_set (web_settings, "WebKitWebSettings::enable-spell-checking",
|
||||||
g_value_get_boolean (value), NULL);
|
g_value_get_boolean (value), NULL);
|
||||||
break;
|
break;
|
||||||
#endif
|
|
||||||
#if WEBKIT_CHECK_VERSION (1, 1, 8)
|
|
||||||
case PROP_ENABLE_HTML5_DATABASE:
|
case PROP_ENABLE_HTML5_DATABASE:
|
||||||
g_object_set (web_settings, "WebKitWebSettings::enable-html5-database",
|
g_object_set (web_settings, "WebKitWebSettings::enable-html5-database",
|
||||||
g_value_get_boolean (value), NULL);
|
g_value_get_boolean (value), NULL);
|
||||||
|
@ -1518,13 +1308,10 @@ midori_web_settings_set_property (GObject* object,
|
||||||
g_object_set (web_settings, "WebKitWebSettings::enable-html5-local-storage",
|
g_object_set (web_settings, "WebKitWebSettings::enable-html5-local-storage",
|
||||||
g_value_get_boolean (value), NULL);
|
g_value_get_boolean (value), NULL);
|
||||||
break;
|
break;
|
||||||
#endif
|
|
||||||
#if WEBKIT_CHECK_VERSION (1, 1, 13)
|
|
||||||
case PROP_ENABLE_OFFLINE_WEB_APPLICATION_CACHE:
|
case PROP_ENABLE_OFFLINE_WEB_APPLICATION_CACHE:
|
||||||
g_object_set (web_settings, "WebKitWebSettings::enable-offline-web-application-cache",
|
g_object_set (web_settings, "WebKitWebSettings::enable-offline-web-application-cache",
|
||||||
g_value_get_boolean (value), NULL);
|
g_value_get_boolean (value), NULL);
|
||||||
break;
|
break;
|
||||||
#endif
|
|
||||||
#if WEBKIT_CHECK_VERSION (1, 1, 18)
|
#if WEBKIT_CHECK_VERSION (1, 1, 18)
|
||||||
case PROP_ENABLE_PAGE_CACHE:
|
case PROP_ENABLE_PAGE_CACHE:
|
||||||
g_object_set (web_settings, "WebKitWebSettings::enable-page-cache",
|
g_object_set (web_settings, "WebKitWebSettings::enable-page-cache",
|
||||||
|
@ -1540,9 +1327,6 @@ midori_web_settings_set_property (GObject* object,
|
||||||
case PROP_KINETIC_SCROLLING:
|
case PROP_KINETIC_SCROLLING:
|
||||||
web_settings->kinetic_scrolling = g_value_get_boolean (value);
|
web_settings->kinetic_scrolling = g_value_get_boolean (value);
|
||||||
break;
|
break;
|
||||||
case PROP_ACCEPT_COOKIES:
|
|
||||||
web_settings->accept_cookies = g_value_get_enum (value);
|
|
||||||
break;
|
|
||||||
case PROP_MAXIMUM_COOKIE_AGE:
|
case PROP_MAXIMUM_COOKIE_AGE:
|
||||||
web_settings->maximum_cookie_age = g_value_get_int (value);
|
web_settings->maximum_cookie_age = g_value_get_int (value);
|
||||||
break;
|
break;
|
||||||
|
@ -1550,9 +1334,6 @@ midori_web_settings_set_property (GObject* object,
|
||||||
case PROP_MAXIMUM_HISTORY_AGE:
|
case PROP_MAXIMUM_HISTORY_AGE:
|
||||||
web_settings->maximum_history_age = g_value_get_int (value);
|
web_settings->maximum_history_age = g_value_get_int (value);
|
||||||
break;
|
break;
|
||||||
case PROP_REMEMBER_LAST_DOWNLOADED_FILES:
|
|
||||||
web_settings->remember_last_downloaded_files = g_value_get_boolean (value);
|
|
||||||
break;
|
|
||||||
|
|
||||||
case PROP_PROXY_TYPE:
|
case PROP_PROXY_TYPE:
|
||||||
web_settings->proxy_type = g_value_get_enum (value);
|
web_settings->proxy_type = g_value_get_enum (value);
|
||||||
|
@ -1571,27 +1352,19 @@ midori_web_settings_set_property (GObject* object,
|
||||||
{
|
{
|
||||||
gchar* string = generate_ident_string (web_settings->identify_as);
|
gchar* string = generate_ident_string (web_settings->identify_as);
|
||||||
katze_assign (web_settings->ident_string, string);
|
katze_assign (web_settings->ident_string, string);
|
||||||
#if WEBKIT_CHECK_VERSION (1, 1, 11)
|
|
||||||
g_object_set (web_settings, "user-agent", string, NULL);
|
g_object_set (web_settings, "user-agent", string, NULL);
|
||||||
#else
|
|
||||||
g_object_notify (object, "user-agent");
|
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case PROP_USER_AGENT:
|
case PROP_USER_AGENT:
|
||||||
if (web_settings->identify_as == MIDORI_IDENT_CUSTOM)
|
if (web_settings->identify_as == MIDORI_IDENT_CUSTOM)
|
||||||
katze_assign (web_settings->ident_string, g_value_dup_string (value));
|
katze_assign (web_settings->ident_string, g_value_dup_string (value));
|
||||||
#if WEBKIT_CHECK_VERSION (1, 1, 11)
|
|
||||||
g_object_set (web_settings, "WebKitWebSettings::user-agent",
|
g_object_set (web_settings, "WebKitWebSettings::user-agent",
|
||||||
web_settings->ident_string, NULL);
|
web_settings->ident_string, NULL);
|
||||||
#endif
|
|
||||||
break;
|
break;
|
||||||
case PROP_PREFERRED_LANGUAGES:
|
case PROP_PREFERRED_LANGUAGES:
|
||||||
katze_assign (web_settings->http_accept_language, g_value_dup_string (value));
|
katze_assign (web_settings->http_accept_language, g_value_dup_string (value));
|
||||||
#if WEBKIT_CHECK_VERSION (1, 1, 6)
|
|
||||||
g_object_set (web_settings, "spell-checking-languages",
|
g_object_set (web_settings, "spell-checking-languages",
|
||||||
web_settings->http_accept_language, NULL);
|
web_settings->http_accept_language, NULL);
|
||||||
#endif
|
|
||||||
break;
|
break;
|
||||||
case PROP_CLEAR_PRIVATE_DATA:
|
case PROP_CLEAR_PRIVATE_DATA:
|
||||||
web_settings->clear_private_data = g_value_get_int (value);
|
web_settings->clear_private_data = g_value_get_int (value);
|
||||||
|
@ -1657,9 +1430,6 @@ midori_web_settings_get_property (GObject* object,
|
||||||
case PROP_SHOW_PANEL:
|
case PROP_SHOW_PANEL:
|
||||||
g_value_set_boolean (value, web_settings->show_panel);
|
g_value_set_boolean (value, web_settings->show_panel);
|
||||||
break;
|
break;
|
||||||
case PROP_SHOW_TRANSFERBAR:
|
|
||||||
g_value_set_boolean (value, web_settings->show_transferbar);
|
|
||||||
break;
|
|
||||||
case PROP_SHOW_STATUSBAR:
|
case PROP_SHOW_STATUSBAR:
|
||||||
g_value_set_boolean (value, web_settings->show_statusbar);
|
g_value_set_boolean (value, web_settings->show_statusbar);
|
||||||
break;
|
break;
|
||||||
|
@ -1667,18 +1437,12 @@ midori_web_settings_get_property (GObject* object,
|
||||||
case PROP_TOOLBAR_STYLE:
|
case PROP_TOOLBAR_STYLE:
|
||||||
g_value_set_enum (value, web_settings->toolbar_style);
|
g_value_set_enum (value, web_settings->toolbar_style);
|
||||||
break;
|
break;
|
||||||
case PROP_SEARCH_ENGINES_IN_COMPLETION:
|
|
||||||
g_value_set_boolean (value, web_settings->search_engines_in_completion);
|
|
||||||
break;
|
|
||||||
case PROP_TOOLBAR_ITEMS:
|
case PROP_TOOLBAR_ITEMS:
|
||||||
g_value_set_string (value, web_settings->toolbar_items);
|
g_value_set_string (value, web_settings->toolbar_items);
|
||||||
break;
|
break;
|
||||||
case PROP_COMPACT_SIDEPANEL:
|
case PROP_COMPACT_SIDEPANEL:
|
||||||
g_value_set_boolean (value, web_settings->compact_sidepanel);
|
g_value_set_boolean (value, web_settings->compact_sidepanel);
|
||||||
break;
|
break;
|
||||||
case PROP_SHOW_PANEL_CONTROLS:
|
|
||||||
g_value_set_boolean (value, web_settings->show_panel_controls);
|
|
||||||
break;
|
|
||||||
case PROP_RIGHT_ALIGN_SIDEPANEL:
|
case PROP_RIGHT_ALIGN_SIDEPANEL:
|
||||||
g_value_set_boolean (value, web_settings->right_align_sidepanel);
|
g_value_set_boolean (value, web_settings->right_align_sidepanel);
|
||||||
break;
|
break;
|
||||||
|
@ -1695,15 +1459,9 @@ midori_web_settings_get_property (GObject* object,
|
||||||
case PROP_SHOW_CRASH_DIALOG:
|
case PROP_SHOW_CRASH_DIALOG:
|
||||||
g_value_set_boolean (value, web_settings->show_crash_dialog);
|
g_value_set_boolean (value, web_settings->show_crash_dialog);
|
||||||
break;
|
break;
|
||||||
case PROP_SPEED_DIAL_IN_NEW_TABS:
|
|
||||||
g_value_set_boolean (value, web_settings->speed_dial_in_new_tabs);
|
|
||||||
break;
|
|
||||||
case PROP_DOWNLOAD_FOLDER:
|
case PROP_DOWNLOAD_FOLDER:
|
||||||
g_value_set_string (value, web_settings->download_folder);
|
g_value_set_string (value, web_settings->download_folder);
|
||||||
break;
|
break;
|
||||||
case PROP_DOWNLOAD_MANAGER:
|
|
||||||
g_value_set_string (value, web_settings->download_manager);
|
|
||||||
break;
|
|
||||||
case PROP_TEXT_EDITOR:
|
case PROP_TEXT_EDITOR:
|
||||||
g_value_set_string (value, web_settings->text_editor);
|
g_value_set_string (value, web_settings->text_editor);
|
||||||
break;
|
break;
|
||||||
|
@ -1764,9 +1522,6 @@ midori_web_settings_get_property (GObject* object,
|
||||||
case PROP_OPEN_NEW_PAGES_IN:
|
case PROP_OPEN_NEW_PAGES_IN:
|
||||||
g_value_set_enum (value, web_settings->open_new_pages_in);
|
g_value_set_enum (value, web_settings->open_new_pages_in);
|
||||||
break;
|
break;
|
||||||
case PROP_OPEN_EXTERNAL_PAGES_IN:
|
|
||||||
g_value_set_enum (value, web_settings->open_external_pages_in);
|
|
||||||
break;
|
|
||||||
case PROP_MIDDLE_CLICK_OPENS_SELECTION:
|
case PROP_MIDDLE_CLICK_OPENS_SELECTION:
|
||||||
g_value_set_boolean (value, web_settings->middle_click_opens_selection);
|
g_value_set_boolean (value, web_settings->middle_click_opens_selection);
|
||||||
break;
|
break;
|
||||||
|
@ -1796,13 +1551,10 @@ midori_web_settings_get_property (GObject* object,
|
||||||
g_value_set_boolean (value, katze_object_get_boolean (web_settings,
|
g_value_set_boolean (value, katze_object_get_boolean (web_settings,
|
||||||
"WebKitWebSettings::enable-developer-extras"));
|
"WebKitWebSettings::enable-developer-extras"));
|
||||||
break;
|
break;
|
||||||
#if WEBKIT_CHECK_VERSION (1, 1, 6)
|
|
||||||
case PROP_ENABLE_SPELL_CHECKING:
|
case PROP_ENABLE_SPELL_CHECKING:
|
||||||
g_value_set_boolean (value, katze_object_get_boolean (web_settings,
|
g_value_set_boolean (value, katze_object_get_boolean (web_settings,
|
||||||
"WebKitWebSettings::enable-spell-checking"));
|
"WebKitWebSettings::enable-spell-checking"));
|
||||||
break;
|
break;
|
||||||
#endif
|
|
||||||
#if WEBKIT_CHECK_VERSION (1, 1, 8)
|
|
||||||
case PROP_ENABLE_HTML5_DATABASE:
|
case PROP_ENABLE_HTML5_DATABASE:
|
||||||
g_value_set_boolean (value, katze_object_get_boolean (web_settings,
|
g_value_set_boolean (value, katze_object_get_boolean (web_settings,
|
||||||
"WebKitWebSettings::enable-html5-database"));
|
"WebKitWebSettings::enable-html5-database"));
|
||||||
|
@ -1811,13 +1563,10 @@ midori_web_settings_get_property (GObject* object,
|
||||||
g_value_set_boolean (value, katze_object_get_boolean (web_settings,
|
g_value_set_boolean (value, katze_object_get_boolean (web_settings,
|
||||||
"WebKitWebSettings::enable-html5-local-storage"));
|
"WebKitWebSettings::enable-html5-local-storage"));
|
||||||
break;
|
break;
|
||||||
#endif
|
|
||||||
#if WEBKIT_CHECK_VERSION (1, 1, 13)
|
|
||||||
case PROP_ENABLE_OFFLINE_WEB_APPLICATION_CACHE:
|
case PROP_ENABLE_OFFLINE_WEB_APPLICATION_CACHE:
|
||||||
g_value_set_boolean (value, katze_object_get_boolean (web_settings,
|
g_value_set_boolean (value, katze_object_get_boolean (web_settings,
|
||||||
"WebKitWebSettings::enable-offline-web-application-cache"));
|
"WebKitWebSettings::enable-offline-web-application-cache"));
|
||||||
break;
|
break;
|
||||||
#endif
|
|
||||||
#if WEBKIT_CHECK_VERSION (1, 1, 18)
|
#if WEBKIT_CHECK_VERSION (1, 1, 18)
|
||||||
case PROP_ENABLE_PAGE_CACHE:
|
case PROP_ENABLE_PAGE_CACHE:
|
||||||
g_value_set_boolean (value, katze_object_get_boolean (web_settings,
|
g_value_set_boolean (value, katze_object_get_boolean (web_settings,
|
||||||
|
@ -1833,9 +1582,6 @@ midori_web_settings_get_property (GObject* object,
|
||||||
case PROP_KINETIC_SCROLLING:
|
case PROP_KINETIC_SCROLLING:
|
||||||
g_value_set_boolean (value, web_settings->kinetic_scrolling);
|
g_value_set_boolean (value, web_settings->kinetic_scrolling);
|
||||||
break;
|
break;
|
||||||
case PROP_ACCEPT_COOKIES:
|
|
||||||
g_value_set_enum (value, web_settings->accept_cookies);
|
|
||||||
break;
|
|
||||||
case PROP_MAXIMUM_COOKIE_AGE:
|
case PROP_MAXIMUM_COOKIE_AGE:
|
||||||
g_value_set_int (value, web_settings->maximum_cookie_age);
|
g_value_set_int (value, web_settings->maximum_cookie_age);
|
||||||
break;
|
break;
|
||||||
|
@ -1843,9 +1589,6 @@ midori_web_settings_get_property (GObject* object,
|
||||||
case PROP_MAXIMUM_HISTORY_AGE:
|
case PROP_MAXIMUM_HISTORY_AGE:
|
||||||
g_value_set_int (value, web_settings->maximum_history_age);
|
g_value_set_int (value, web_settings->maximum_history_age);
|
||||||
break;
|
break;
|
||||||
case PROP_REMEMBER_LAST_DOWNLOADED_FILES:
|
|
||||||
g_value_set_boolean (value, web_settings->remember_last_downloaded_files);
|
|
||||||
break;
|
|
||||||
|
|
||||||
case PROP_PROXY_TYPE:
|
case PROP_PROXY_TYPE:
|
||||||
g_value_set_enum (value, web_settings->proxy_type);
|
g_value_set_enum (value, web_settings->proxy_type);
|
||||||
|
|
|
@ -44,6 +44,7 @@ enum
|
||||||
MIDORI_CLEAR_TRASH = 16,
|
MIDORI_CLEAR_TRASH = 16,
|
||||||
MIDORI_CLEAR_ON_QUIT = 32,
|
MIDORI_CLEAR_ON_QUIT = 32,
|
||||||
MIDORI_CLEAR_WEB_CACHE = 64, /* deprecated */
|
MIDORI_CLEAR_WEB_CACHE = 64, /* deprecated */
|
||||||
|
MIDORI_CLEAR_SESSION = 128,
|
||||||
};
|
};
|
||||||
|
|
||||||
typedef enum
|
typedef enum
|
||||||
|
@ -66,9 +67,7 @@ typedef enum
|
||||||
MIDORI_STARTUP_BLANK_PAGE, /* One blank tab or speed dial is opened */
|
MIDORI_STARTUP_BLANK_PAGE, /* One blank tab or speed dial is opened */
|
||||||
MIDORI_STARTUP_HOMEPAGE, /* One homepage tab is opened */
|
MIDORI_STARTUP_HOMEPAGE, /* One homepage tab is opened */
|
||||||
MIDORI_STARTUP_LAST_OPEN_PAGES, /* The session is loaded and saved */
|
MIDORI_STARTUP_LAST_OPEN_PAGES, /* The session is loaded and saved */
|
||||||
#if WEBKIT_CHECK_VERSION (1, 1, 6)
|
|
||||||
MIDORI_STARTUP_DELAYED_PAGES /* The session is saved, loading pages is delayed */
|
MIDORI_STARTUP_DELAYED_PAGES /* The session is saved, loading pages is delayed */
|
||||||
#endif
|
|
||||||
} MidoriStartup;
|
} MidoriStartup;
|
||||||
|
|
||||||
GType
|
GType
|
||||||
|
@ -136,19 +135,6 @@ midori_proxy_get_type (void) G_GNUC_CONST;
|
||||||
#define MIDORI_TYPE_PROXY \
|
#define MIDORI_TYPE_PROXY \
|
||||||
(midori_proxy_get_type ())
|
(midori_proxy_get_type ())
|
||||||
|
|
||||||
typedef enum
|
|
||||||
{
|
|
||||||
MIDORI_ACCEPT_COOKIES_ALL,
|
|
||||||
MIDORI_ACCEPT_COOKIES_SESSION,
|
|
||||||
MIDORI_ACCEPT_COOKIES_NONE
|
|
||||||
} MidoriAcceptCookies;
|
|
||||||
|
|
||||||
GType
|
|
||||||
midori_accept_cookies_get_type (void) G_GNUC_CONST;
|
|
||||||
|
|
||||||
#define MIDORI_TYPE_ACCEPT_COOKIES \
|
|
||||||
(midori_accept_cookies_get_type ())
|
|
||||||
|
|
||||||
typedef enum
|
typedef enum
|
||||||
{
|
{
|
||||||
MIDORI_IDENT_MIDORI,
|
MIDORI_IDENT_MIDORI,
|
||||||
|
|
|
@ -93,6 +93,18 @@ namespace Midori {
|
||||||
public Extension ();
|
public Extension ();
|
||||||
public unowned Midori.App get_app ();
|
public unowned Midori.App get_app ();
|
||||||
|
|
||||||
|
public void install_boolean (string name, bool default_value);
|
||||||
|
public void install_integer (string name, int default_value);
|
||||||
|
public void install_string (string name, string default_value);
|
||||||
|
|
||||||
|
public bool get_boolean (string name);
|
||||||
|
public int get_integer (string name);
|
||||||
|
public unowned string get_string (string name);
|
||||||
|
|
||||||
|
public void set_boolean (string name, bool value);
|
||||||
|
public void set_integer (string name, int value);
|
||||||
|
public void set_string (string name, string value);
|
||||||
|
|
||||||
[NoAccessorMethod]
|
[NoAccessorMethod]
|
||||||
public string name { get; set; }
|
public string name { get; set; }
|
||||||
[NoAccessorMethod]
|
[NoAccessorMethod]
|
||||||
|
@ -104,6 +116,7 @@ namespace Midori {
|
||||||
|
|
||||||
public signal void activate (Midori.App app);
|
public signal void activate (Midori.App app);
|
||||||
public signal void deactivate ();
|
public signal void deactivate ();
|
||||||
|
public signal void open_preferences ();
|
||||||
}
|
}
|
||||||
|
|
||||||
public class View : Gtk.VBox {
|
public class View : Gtk.VBox {
|
||||||
|
|
107
midori/sokoke.c
107
midori/sokoke.c
|
@ -926,6 +926,8 @@ sokoke_uri_unescape_string (const gchar* uri)
|
||||||
{
|
{
|
||||||
/* Preserve %20 for pasting URLs into other windows */
|
/* Preserve %20 for pasting URLs into other windows */
|
||||||
gchar* unescaped = g_uri_unescape_string (uri, "+");
|
gchar* unescaped = g_uri_unescape_string (uri, "+");
|
||||||
|
if (!unescaped)
|
||||||
|
return g_strdup (uri);
|
||||||
gchar* spaced = sokoke_replace_variables (unescaped, " ", "%20", NULL);
|
gchar* spaced = sokoke_replace_variables (unescaped, " ", "%20", NULL);
|
||||||
g_free (unescaped);
|
g_free (unescaped);
|
||||||
return spaced;
|
return spaced;
|
||||||
|
@ -1720,6 +1722,16 @@ sokoke_find_data_filename (const gchar* filename)
|
||||||
const gchar* data_dir;
|
const gchar* data_dir;
|
||||||
gchar* path;
|
gchar* path;
|
||||||
|
|
||||||
|
#ifdef G_OS_WIN32
|
||||||
|
gchar* install_path = g_win32_get_package_installation_directory_of_module (NULL);
|
||||||
|
path = g_build_filename (install_path, "share", filename, NULL);
|
||||||
|
g_free (install_path);
|
||||||
|
if (g_access (path, F_OK) == 0)
|
||||||
|
return path;
|
||||||
|
|
||||||
|
g_free (path);
|
||||||
|
#endif
|
||||||
|
|
||||||
path = g_build_filename (g_get_user_data_dir (), filename, NULL);
|
path = g_build_filename (g_get_user_data_dir (), filename, NULL);
|
||||||
if (g_access (path, F_OK) == 0)
|
if (g_access (path, F_OK) == 0)
|
||||||
return path;
|
return path;
|
||||||
|
@ -1754,101 +1766,6 @@ sokoke_get_argv (gchar** argument_vector)
|
||||||
return stored_argv;
|
return stored_argv;
|
||||||
}
|
}
|
||||||
|
|
||||||
#if !WEBKIT_CHECK_VERSION (1, 1, 14)
|
|
||||||
static void
|
|
||||||
res_server_handler_cb (SoupServer* res_server,
|
|
||||||
SoupMessage* msg,
|
|
||||||
const gchar* path,
|
|
||||||
GHashTable* query,
|
|
||||||
SoupClientContext* client,
|
|
||||||
gpointer data)
|
|
||||||
{
|
|
||||||
if (g_str_has_prefix (path, "/res"))
|
|
||||||
{
|
|
||||||
gchar* filename = g_build_filename ("midori", path, NULL);
|
|
||||||
gchar* filepath = sokoke_find_data_filename (filename);
|
|
||||||
gchar* contents;
|
|
||||||
gsize length;
|
|
||||||
|
|
||||||
g_free (filename);
|
|
||||||
if (g_file_get_contents (filepath, &contents, &length, NULL))
|
|
||||||
{
|
|
||||||
gchar* content_type = g_content_type_guess (filepath, (guchar*)contents,
|
|
||||||
length, NULL);
|
|
||||||
gchar* mime_type = g_content_type_get_mime_type (content_type);
|
|
||||||
g_free (content_type);
|
|
||||||
soup_message_set_response (msg, mime_type, SOUP_MEMORY_TAKE,
|
|
||||||
contents, length);
|
|
||||||
g_free (mime_type);
|
|
||||||
soup_message_set_status (msg, 200);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
soup_message_set_status (msg, 404);
|
|
||||||
g_free (filepath);
|
|
||||||
}
|
|
||||||
else if (g_str_has_prefix (path, "/stock/"))
|
|
||||||
{
|
|
||||||
GtkIconTheme* icon_theme = gtk_icon_theme_get_default ();
|
|
||||||
const gchar* icon_name = &path[7] ? &path[7] : "";
|
|
||||||
gint icon_size = 22;
|
|
||||||
GdkPixbuf* icon;
|
|
||||||
gchar* contents;
|
|
||||||
gsize length;
|
|
||||||
|
|
||||||
if (g_ascii_isalpha (icon_name[0]))
|
|
||||||
icon_size = strstr (icon_name, "dialog") ? 48 : 22;
|
|
||||||
else if (g_ascii_isdigit (icon_name[0]))
|
|
||||||
{
|
|
||||||
guint i = 0;
|
|
||||||
while (icon_name[i])
|
|
||||||
if (icon_name[i++] == '/')
|
|
||||||
{
|
|
||||||
gchar* size = g_strndup (icon_name, i - 1);
|
|
||||||
icon_size = atoi (size);
|
|
||||||
g_free (size);
|
|
||||||
icon_name = &icon_name[i];
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
icon = gtk_icon_theme_load_icon (icon_theme, icon_name,
|
|
||||||
icon_size, 0, NULL);
|
|
||||||
if (!icon)
|
|
||||||
icon = gtk_icon_theme_load_icon (icon_theme, "gtk-missing-image",
|
|
||||||
icon_size, 0, NULL);
|
|
||||||
|
|
||||||
gdk_pixbuf_save_to_buffer (icon, &contents, &length, "png", NULL, NULL);
|
|
||||||
g_object_unref (icon);
|
|
||||||
soup_message_set_response (msg, "image/png", SOUP_MEMORY_TAKE,
|
|
||||||
contents, length);
|
|
||||||
soup_message_set_status (msg, 200);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
soup_message_set_status (msg, 404);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
SoupServer*
|
|
||||||
sokoke_get_res_server (void)
|
|
||||||
{
|
|
||||||
static SoupServer* res_server = NULL;
|
|
||||||
SoupAddress* addr = NULL;
|
|
||||||
|
|
||||||
if (G_UNLIKELY (!res_server))
|
|
||||||
{
|
|
||||||
addr = soup_address_new ("localhost", SOUP_ADDRESS_ANY_PORT);
|
|
||||||
soup_address_resolve_sync (addr, NULL);
|
|
||||||
res_server = soup_server_new ("interface", addr, NULL);
|
|
||||||
g_object_unref (addr);
|
|
||||||
soup_server_add_handler (res_server, "/",
|
|
||||||
res_server_handler_cb, NULL, NULL);
|
|
||||||
soup_server_run_async (res_server);
|
|
||||||
}
|
|
||||||
|
|
||||||
return res_server;
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
gchar*
|
gchar*
|
||||||
sokoke_replace_variables (const gchar* template,
|
sokoke_replace_variables (const gchar* template,
|
||||||
const gchar* variable_first, ...)
|
const gchar* variable_first, ...)
|
||||||
|
|
|
@ -231,11 +231,6 @@ sokoke_find_data_filename (const gchar* filename);
|
||||||
gchar**
|
gchar**
|
||||||
sokoke_get_argv (gchar** argument_vector);
|
sokoke_get_argv (gchar** argument_vector);
|
||||||
|
|
||||||
#if !WEBKIT_CHECK_VERSION (1, 1, 14)
|
|
||||||
SoupServer*
|
|
||||||
sokoke_get_res_server (void);
|
|
||||||
#endif
|
|
||||||
|
|
||||||
gchar*
|
gchar*
|
||||||
sokoke_replace_variables (const gchar* template,
|
sokoke_replace_variables (const gchar* template,
|
||||||
const gchar* variable_first, ...);
|
const gchar* variable_first, ...);
|
||||||
|
|
|
@ -17,6 +17,7 @@ if progressive or Options.commands['check']:
|
||||||
obj.uselib = libs
|
obj.uselib = libs
|
||||||
obj.add_marshal_file ('marshal.list', 'midori_cclosure_marshal')
|
obj.add_marshal_file ('marshal.list', 'midori_cclosure_marshal')
|
||||||
obj.install_path = None
|
obj.install_path = None
|
||||||
|
obj.packages = 'glib-2.0 gio-2.0 gtk+-2.0 libsoup-2.4 webkit-1.0'
|
||||||
bld.add_group ()
|
bld.add_group ()
|
||||||
|
|
||||||
if progressive:
|
if progressive:
|
||||||
|
|
|
@ -133,6 +133,9 @@ midori_bookmarks_export_array_db (sqlite3* db,
|
||||||
KatzeItem* item;
|
KatzeItem* item;
|
||||||
GList* list;
|
GList* list;
|
||||||
|
|
||||||
|
if (!db)
|
||||||
|
return;
|
||||||
|
|
||||||
sqlcmd = g_strdup_printf ("SELECT * FROM bookmarks where folder='%s'", folder);
|
sqlcmd = g_strdup_printf ("SELECT * FROM bookmarks where folder='%s'", folder);
|
||||||
root_array = katze_array_from_sqlite (db, sqlcmd);
|
root_array = katze_array_from_sqlite (db, sqlcmd);
|
||||||
g_free (sqlcmd);
|
g_free (sqlcmd);
|
||||||
|
@ -160,6 +163,9 @@ midori_bookmarks_import_array_db (sqlite3* db,
|
||||||
GList* list;
|
GList* list;
|
||||||
KatzeItem* item;
|
KatzeItem* item;
|
||||||
|
|
||||||
|
if (!db)
|
||||||
|
return;
|
||||||
|
|
||||||
KATZE_ARRAY_FOREACH_ITEM_L (item, array, list)
|
KATZE_ARRAY_FOREACH_ITEM_L (item, array, list)
|
||||||
{
|
{
|
||||||
if (KATZE_IS_ARRAY (item))
|
if (KATZE_IS_ARRAY (item))
|
||||||
|
@ -181,6 +187,9 @@ midori_bookmarks_read_from_db (MidoriBookmarks* bookmarks,
|
||||||
|
|
||||||
db = g_object_get_data (G_OBJECT (bookmarks->array), "db");
|
db = g_object_get_data (G_OBJECT (bookmarks->array), "db");
|
||||||
|
|
||||||
|
if (!db)
|
||||||
|
return katze_array_new (KATZE_TYPE_ITEM);
|
||||||
|
|
||||||
if (keyword && *keyword)
|
if (keyword && *keyword)
|
||||||
{
|
{
|
||||||
gchar* filterstr;
|
gchar* filterstr;
|
||||||
|
@ -202,7 +211,7 @@ midori_bookmarks_read_from_db (MidoriBookmarks* bookmarks,
|
||||||
}
|
}
|
||||||
|
|
||||||
if (result != SQLITE_OK)
|
if (result != SQLITE_OK)
|
||||||
return NULL;
|
return katze_array_new (KATZE_TYPE_ITEM);
|
||||||
|
|
||||||
return katze_array_from_statement (statement);
|
return katze_array_from_statement (statement);
|
||||||
}
|
}
|
||||||
|
@ -248,6 +257,9 @@ midori_bookmarks_insert_item_db (sqlite3* db,
|
||||||
/* Bookmarks must have a name, import may produce invalid items */
|
/* Bookmarks must have a name, import may produce invalid items */
|
||||||
g_return_if_fail (katze_item_get_name (item));
|
g_return_if_fail (katze_item_get_name (item));
|
||||||
|
|
||||||
|
if (!db)
|
||||||
|
return;
|
||||||
|
|
||||||
if (KATZE_ITEM_IS_BOOKMARK (item))
|
if (KATZE_ITEM_IS_BOOKMARK (item))
|
||||||
uri = g_strdup (katze_item_get_uri (item));
|
uri = g_strdup (katze_item_get_uri (item));
|
||||||
else
|
else
|
||||||
|
|
|
@ -16,6 +16,8 @@
|
||||||
#include "midori-stock.h"
|
#include "midori-stock.h"
|
||||||
#include "midori-viewable.h"
|
#include "midori-viewable.h"
|
||||||
|
|
||||||
|
#include "midori-extensions-column.c"
|
||||||
|
|
||||||
#include "sokoke.h"
|
#include "sokoke.h"
|
||||||
#include <glib/gi18n.h>
|
#include <glib/gi18n.h>
|
||||||
|
|
||||||
|
@ -244,6 +246,24 @@ midori_extensions_treeview_render_icon_cb (GtkTreeViewColumn* column,
|
||||||
g_object_unref (extension);
|
g_object_unref (extension);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
midori_extensions_treeview_render_preferences_cb (GtkTreeViewColumn* column,
|
||||||
|
GtkCellRenderer* renderer,
|
||||||
|
GtkTreeModel* model,
|
||||||
|
GtkTreeIter* iter,
|
||||||
|
GtkWidget* treeview)
|
||||||
|
{
|
||||||
|
MidoriExtension* extension;
|
||||||
|
gtk_tree_model_get (model, iter, 0, &extension, -1);
|
||||||
|
|
||||||
|
g_object_set (renderer, "stock-id", GTK_STOCK_PREFERENCES,
|
||||||
|
"stock-size", GTK_ICON_SIZE_BUTTON,
|
||||||
|
"visible", midori_extension_has_preferences (extension),
|
||||||
|
"sensitive", midori_extension_is_active (extension),
|
||||||
|
"xpad", 4, NULL);
|
||||||
|
g_object_unref (extension);
|
||||||
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
midori_extensions_treeview_render_text_cb (GtkTreeViewColumn* column,
|
midori_extensions_treeview_render_text_cb (GtkTreeViewColumn* column,
|
||||||
GtkCellRenderer* renderer,
|
GtkCellRenderer* renderer,
|
||||||
|
@ -351,6 +371,57 @@ midori_extensions_tree_sort_func (GtkTreeModel* model,
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
midori_extensions_treeview_column_preference_clicked_cb (GtkWidget* widget,
|
||||||
|
GtkTreeView* treeview,
|
||||||
|
GtkTreePath* path)
|
||||||
|
{
|
||||||
|
GtkTreeModel* model;
|
||||||
|
GtkTreeIter iter;
|
||||||
|
|
||||||
|
model = gtk_tree_view_get_model (treeview);
|
||||||
|
if (gtk_tree_model_get_iter (model, &iter, path))
|
||||||
|
{
|
||||||
|
MidoriExtension* extension;
|
||||||
|
|
||||||
|
gtk_tree_model_get (model, &iter, 0, &extension, -1);
|
||||||
|
if (midori_extension_is_active (extension))
|
||||||
|
g_signal_emit_by_name (extension, "open-preferences");
|
||||||
|
g_object_unref (extension);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
static gboolean
|
||||||
|
midori_extensions_treeview_button_pressed_cb (GtkWidget* view,
|
||||||
|
GdkEventButton* bevent,
|
||||||
|
gpointer data)
|
||||||
|
{
|
||||||
|
gboolean ret = FALSE;
|
||||||
|
GtkTreePath* path;
|
||||||
|
GtkTreeViewColumn* column;
|
||||||
|
guint signal_id;
|
||||||
|
|
||||||
|
if (gtk_tree_view_get_path_at_pos (GTK_TREE_VIEW (view),
|
||||||
|
bevent->x, bevent->y, &path, &column, NULL, NULL))
|
||||||
|
{
|
||||||
|
if (path != NULL)
|
||||||
|
{
|
||||||
|
if (MIDORI_IS_EXTENSIONS_COUMN (column))
|
||||||
|
{
|
||||||
|
signal_id = g_signal_lookup ("row-clicked", G_OBJECT_TYPE (column));
|
||||||
|
|
||||||
|
if (signal_id && g_signal_has_handler_pending (column, signal_id, 0, FALSE)) {
|
||||||
|
g_signal_emit (column, signal_id, 0, GTK_TREE_VIEW (view), path);
|
||||||
|
ret = TRUE;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
gtk_tree_path_free (path);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
midori_extensions_init (MidoriExtensions* extensions)
|
midori_extensions_init (MidoriExtensions* extensions)
|
||||||
{
|
{
|
||||||
|
@ -359,8 +430,13 @@ midori_extensions_init (MidoriExtensions* extensions)
|
||||||
GtkCellRenderer* renderer_icon;
|
GtkCellRenderer* renderer_icon;
|
||||||
GtkCellRenderer* renderer_text;
|
GtkCellRenderer* renderer_text;
|
||||||
GtkCellRenderer* renderer_toggle;
|
GtkCellRenderer* renderer_toggle;
|
||||||
|
GtkCellRenderer* renderer_preferences;
|
||||||
GtkListStore* liststore = gtk_list_store_new (1, G_TYPE_OBJECT);
|
GtkListStore* liststore = gtk_list_store_new (1, G_TYPE_OBJECT);
|
||||||
extensions->treeview = gtk_tree_view_new_with_model (GTK_TREE_MODEL (liststore));
|
extensions->treeview = gtk_tree_view_new_with_model (GTK_TREE_MODEL (liststore));
|
||||||
|
g_object_connect (extensions->treeview,
|
||||||
|
"signal::button-press-event",
|
||||||
|
midori_extensions_treeview_button_pressed_cb, NULL,
|
||||||
|
NULL);
|
||||||
gtk_tree_sortable_set_sort_column_id (GTK_TREE_SORTABLE (liststore),
|
gtk_tree_sortable_set_sort_column_id (GTK_TREE_SORTABLE (liststore),
|
||||||
0, GTK_SORT_ASCENDING);
|
0, GTK_SORT_ASCENDING);
|
||||||
gtk_tree_sortable_set_sort_func (GTK_TREE_SORTABLE (liststore),
|
gtk_tree_sortable_set_sort_func (GTK_TREE_SORTABLE (liststore),
|
||||||
|
@ -386,10 +462,24 @@ midori_extensions_init (MidoriExtensions* extensions)
|
||||||
gtk_tree_view_column_set_sizing (column, GTK_TREE_VIEW_COLUMN_AUTOSIZE);
|
gtk_tree_view_column_set_sizing (column, GTK_TREE_VIEW_COLUMN_AUTOSIZE);
|
||||||
renderer_text = gtk_cell_renderer_text_new ();
|
renderer_text = gtk_cell_renderer_text_new ();
|
||||||
gtk_tree_view_column_pack_start (column, renderer_text, FALSE);
|
gtk_tree_view_column_pack_start (column, renderer_text, FALSE);
|
||||||
|
gtk_tree_view_column_set_expand (column, TRUE);
|
||||||
gtk_tree_view_column_set_cell_data_func (column, renderer_text,
|
gtk_tree_view_column_set_cell_data_func (column, renderer_text,
|
||||||
(GtkTreeCellDataFunc)midori_extensions_treeview_render_text_cb,
|
(GtkTreeCellDataFunc)midori_extensions_treeview_render_text_cb,
|
||||||
extensions->treeview, NULL);
|
extensions->treeview, NULL);
|
||||||
gtk_tree_view_append_column (GTK_TREE_VIEW (extensions->treeview), column);
|
gtk_tree_view_append_column (GTK_TREE_VIEW (extensions->treeview), column);
|
||||||
|
column = GTK_TREE_VIEW_COLUMN (midori_extensions_coumn_new ());
|
||||||
|
g_signal_connect (column,
|
||||||
|
"row-clicked",
|
||||||
|
G_CALLBACK (midori_extensions_treeview_column_preference_clicked_cb),
|
||||||
|
NULL);
|
||||||
|
renderer_preferences = gtk_cell_renderer_pixbuf_new ();
|
||||||
|
gtk_tree_view_column_pack_start (column, renderer_preferences, FALSE);
|
||||||
|
gtk_tree_view_column_set_sizing (column, GTK_TREE_VIEW_COLUMN_FIXED);
|
||||||
|
gtk_tree_view_column_set_fixed_width (column, 30);
|
||||||
|
gtk_tree_view_column_set_cell_data_func (column, renderer_preferences,
|
||||||
|
(GtkTreeCellDataFunc)midori_extensions_treeview_render_preferences_cb,
|
||||||
|
extensions->treeview, NULL);
|
||||||
|
gtk_tree_view_append_column (GTK_TREE_VIEW (extensions->treeview), column);
|
||||||
g_object_unref (liststore);
|
g_object_unref (liststore);
|
||||||
g_object_connect (extensions->treeview,
|
g_object_connect (extensions->treeview,
|
||||||
"signal::row-activated",
|
"signal::row-activated",
|
||||||
|
|
|
@ -174,6 +174,9 @@ midori_history_remove_item_from_db (MidoriHistory* history,
|
||||||
|
|
||||||
db = g_object_get_data (G_OBJECT (history->array), "db");
|
db = g_object_get_data (G_OBJECT (history->array), "db");
|
||||||
|
|
||||||
|
if (!db)
|
||||||
|
return;
|
||||||
|
|
||||||
if (KATZE_ITEM_IS_BOOKMARK (item))
|
if (KATZE_ITEM_IS_BOOKMARK (item))
|
||||||
sqlcmd = sqlite3_mprintf (
|
sqlcmd = sqlite3_mprintf (
|
||||||
"DELETE FROM history WHERE uri = '%q' AND"
|
"DELETE FROM history WHERE uri = '%q' AND"
|
||||||
|
@ -217,6 +220,9 @@ midori_history_read_from_db (MidoriHistory* history,
|
||||||
|
|
||||||
db = g_object_get_data (G_OBJECT (history->array), "db");
|
db = g_object_get_data (G_OBJECT (history->array), "db");
|
||||||
|
|
||||||
|
if (!db)
|
||||||
|
return katze_array_new (KATZE_TYPE_ITEM);
|
||||||
|
|
||||||
if (filter && *filter)
|
if (filter && *filter)
|
||||||
{
|
{
|
||||||
gchar* filterstr;
|
gchar* filterstr;
|
||||||
|
@ -249,7 +255,7 @@ midori_history_read_from_db (MidoriHistory* history,
|
||||||
}
|
}
|
||||||
|
|
||||||
if (result != SQLITE_OK)
|
if (result != SQLITE_OK)
|
||||||
return NULL;
|
return katze_array_new (KATZE_TYPE_ITEM);
|
||||||
|
|
||||||
return katze_array_from_statement (statement);
|
return katze_array_from_statement (statement);
|
||||||
}
|
}
|
||||||
|
@ -327,7 +333,7 @@ midori_history_bookmark_add_cb (GtkWidget* menuitem,
|
||||||
{
|
{
|
||||||
GtkTreeModel* model;
|
GtkTreeModel* model;
|
||||||
GtkTreeIter iter;
|
GtkTreeIter iter;
|
||||||
KatzeItem* item;
|
KatzeItem* item = NULL;
|
||||||
|
|
||||||
MidoriBrowser* browser = midori_browser_get_for_widget (GTK_WIDGET (history));
|
MidoriBrowser* browser = midori_browser_get_for_widget (GTK_WIDGET (history));
|
||||||
if (katze_tree_view_get_selected_iter (GTK_TREE_VIEW (history->treeview),
|
if (katze_tree_view_get_selected_iter (GTK_TREE_VIEW (history->treeview),
|
||||||
|
@ -335,11 +341,12 @@ midori_history_bookmark_add_cb (GtkWidget* menuitem,
|
||||||
gtk_tree_model_get (model, &iter, 0, &item, -1);
|
gtk_tree_model_get (model, &iter, 0, &item, -1);
|
||||||
|
|
||||||
if (KATZE_IS_ITEM (item) && katze_item_get_uri (item))
|
if (KATZE_IS_ITEM (item) && katze_item_get_uri (item))
|
||||||
|
{
|
||||||
midori_browser_edit_bookmark_dialog_new (browser, item, TRUE, FALSE);
|
midori_browser_edit_bookmark_dialog_new (browser, item, TRUE, FALSE);
|
||||||
|
g_object_unref (item);
|
||||||
|
}
|
||||||
else
|
else
|
||||||
midori_browser_edit_bookmark_dialog_new (browser, NULL, TRUE, FALSE);
|
midori_browser_edit_bookmark_dialog_new (browser, NULL, TRUE, FALSE);
|
||||||
|
|
||||||
g_object_unref (item);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static GtkWidget*
|
static GtkWidget*
|
||||||
|
@ -674,6 +681,10 @@ midori_history_open_in_tab_activate_cb (GtkWidget* menuitem,
|
||||||
KatzeArray* array;
|
KatzeArray* array;
|
||||||
|
|
||||||
db = g_object_get_data (G_OBJECT (history->array), "db");
|
db = g_object_get_data (G_OBJECT (history->array), "db");
|
||||||
|
|
||||||
|
if (!db)
|
||||||
|
return;
|
||||||
|
|
||||||
sqlcmd = g_strdup_printf ("SELECT uri, title, date, day "
|
sqlcmd = g_strdup_printf ("SELECT uri, title, date, day "
|
||||||
"FROM history WHERE day = %d "
|
"FROM history WHERE day = %d "
|
||||||
"GROUP BY uri ORDER BY date ASC",
|
"GROUP BY uri ORDER BY date ASC",
|
||||||
|
|
|
@ -103,7 +103,6 @@ midori_transfers_button_clear_clicked_cb (GtkToolItem* toolitem,
|
||||||
gint n = 0;
|
gint n = 0;
|
||||||
while ((gtk_tree_model_iter_nth_child (model, &iter, NULL, n++)))
|
while ((gtk_tree_model_iter_nth_child (model, &iter, NULL, n++)))
|
||||||
{
|
{
|
||||||
#if WEBKIT_CHECK_VERSION (1, 1, 3)
|
|
||||||
WebKitDownload* download;
|
WebKitDownload* download;
|
||||||
WebKitDownloadStatus status;
|
WebKitDownloadStatus status;
|
||||||
|
|
||||||
|
@ -117,7 +116,6 @@ midori_transfers_button_clear_clicked_cb (GtkToolItem* toolitem,
|
||||||
n--; /* Decrement n since we just removed it */
|
n--; /* Decrement n since we just removed it */
|
||||||
}
|
}
|
||||||
g_object_unref (download);
|
g_object_unref (download);
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -161,7 +159,6 @@ midori_transfers_viewable_iface_init (MidoriViewableIface* iface)
|
||||||
iface->get_toolbar = midori_transfers_get_toolbar;
|
iface->get_toolbar = midori_transfers_get_toolbar;
|
||||||
}
|
}
|
||||||
|
|
||||||
#if WEBKIT_CHECK_VERSION (1, 1, 3)
|
|
||||||
static void
|
static void
|
||||||
midori_transfers_download_notify_progress_cb (WebKitDownload* download,
|
midori_transfers_download_notify_progress_cb (WebKitDownload* download,
|
||||||
GParamSpec* pspec,
|
GParamSpec* pspec,
|
||||||
|
@ -198,7 +195,6 @@ midori_transfers_browser_add_download_cb (MidoriBrowser* browser,
|
||||||
g_signal_connect (download, "notify::status",
|
g_signal_connect (download, "notify::status",
|
||||||
G_CALLBACK (midori_transfers_download_notify_status_cb), transfers);
|
G_CALLBACK (midori_transfers_download_notify_status_cb), transfers);
|
||||||
}
|
}
|
||||||
#endif
|
|
||||||
|
|
||||||
static void
|
static void
|
||||||
midori_transfers_set_property (GObject* object,
|
midori_transfers_set_property (GObject* object,
|
||||||
|
@ -257,7 +253,6 @@ midori_transfers_treeview_render_text_cb (GtkTreeViewColumn* column,
|
||||||
GtkTreeIter* iter,
|
GtkTreeIter* iter,
|
||||||
GtkWidget* treeview)
|
GtkWidget* treeview)
|
||||||
{
|
{
|
||||||
#if WEBKIT_CHECK_VERSION (1, 1, 3)
|
|
||||||
WebKitDownload* download;
|
WebKitDownload* download;
|
||||||
gchar* current;
|
gchar* current;
|
||||||
gchar* total;
|
gchar* total;
|
||||||
|
@ -286,7 +281,6 @@ midori_transfers_treeview_render_text_cb (GtkTreeViewColumn* column,
|
||||||
"xpad", 1, "ypad", 6, NULL);
|
"xpad", 1, "ypad", 6, NULL);
|
||||||
g_free (text);
|
g_free (text);
|
||||||
g_object_unref (download);
|
g_object_unref (download);
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
|
@ -296,7 +290,6 @@ midori_transfers_treeview_render_button_cb (GtkTreeViewColumn* column,
|
||||||
GtkTreeIter* iter,
|
GtkTreeIter* iter,
|
||||||
GtkWidget* treeview)
|
GtkWidget* treeview)
|
||||||
{
|
{
|
||||||
#if WEBKIT_CHECK_VERSION (1, 1, 3)
|
|
||||||
WebKitDownload* download;
|
WebKitDownload* download;
|
||||||
const gchar* stock_id;
|
const gchar* stock_id;
|
||||||
|
|
||||||
|
@ -317,7 +310,6 @@ midori_transfers_treeview_render_button_cb (GtkTreeViewColumn* column,
|
||||||
"stock-size", GTK_ICON_SIZE_MENU, NULL);
|
"stock-size", GTK_ICON_SIZE_MENU, NULL);
|
||||||
|
|
||||||
g_object_unref (download);
|
g_object_unref (download);
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
|
@ -330,7 +322,6 @@ midori_transfers_treeview_row_activated_cb (GtkTreeView* treeview,
|
||||||
GtkTreeIter iter;
|
GtkTreeIter iter;
|
||||||
if (gtk_tree_model_get_iter (model, &iter, path))
|
if (gtk_tree_model_get_iter (model, &iter, path))
|
||||||
{
|
{
|
||||||
#if WEBKIT_CHECK_VERSION (1, 1, 3)
|
|
||||||
WebKitDownload* download;
|
WebKitDownload* download;
|
||||||
|
|
||||||
gtk_tree_model_get (model, &iter, 1, &download, -1);
|
gtk_tree_model_get (model, &iter, 1, &download, -1);
|
||||||
|
@ -355,7 +346,6 @@ midori_transfers_treeview_row_activated_cb (GtkTreeView* treeview,
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
g_object_unref (download);
|
g_object_unref (download);
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -363,7 +353,6 @@ static void
|
||||||
midori_transfers_hierarchy_changed_cb (MidoriTransfers* transfers,
|
midori_transfers_hierarchy_changed_cb (MidoriTransfers* transfers,
|
||||||
GtkWidget* old_parent)
|
GtkWidget* old_parent)
|
||||||
{
|
{
|
||||||
#if WEBKIT_CHECK_VERSION (1, 1, 3)
|
|
||||||
MidoriBrowser* browser = midori_browser_get_for_widget (GTK_WIDGET (transfers));
|
MidoriBrowser* browser = midori_browser_get_for_widget (GTK_WIDGET (transfers));
|
||||||
if (MIDORI_IS_BROWSER (browser))
|
if (MIDORI_IS_BROWSER (browser))
|
||||||
g_signal_connect (browser, "add-download",
|
g_signal_connect (browser, "add-download",
|
||||||
|
@ -371,10 +360,8 @@ midori_transfers_hierarchy_changed_cb (MidoriTransfers* transfers,
|
||||||
if (old_parent)
|
if (old_parent)
|
||||||
g_signal_handlers_disconnect_by_func (old_parent,
|
g_signal_handlers_disconnect_by_func (old_parent,
|
||||||
midori_transfers_browser_add_download_cb, transfers);
|
midori_transfers_browser_add_download_cb, transfers);
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
|
|
||||||
#if WEBKIT_CHECK_VERSION (1, 1, 3)
|
|
||||||
static GtkWidget*
|
static GtkWidget*
|
||||||
midori_transfers_popup_menu_item (GtkMenu* menu,
|
midori_transfers_popup_menu_item (GtkMenu* menu,
|
||||||
const gchar* stock_id,
|
const gchar* stock_id,
|
||||||
|
@ -486,7 +473,6 @@ midori_transfers_popup (GtkWidget* widget,
|
||||||
|
|
||||||
katze_widget_popup (widget, GTK_MENU (menu), event, KATZE_MENU_POSITION_CURSOR);
|
katze_widget_popup (widget, GTK_MENU (menu), event, KATZE_MENU_POSITION_CURSOR);
|
||||||
}
|
}
|
||||||
#endif
|
|
||||||
|
|
||||||
static gboolean
|
static gboolean
|
||||||
midori_transfers_popup_menu_cb (GtkWidget* widget,
|
midori_transfers_popup_menu_cb (GtkWidget* widget,
|
||||||
|
@ -497,7 +483,6 @@ midori_transfers_popup_menu_cb (GtkWidget* widget,
|
||||||
|
|
||||||
if (katze_tree_view_get_selected_iter (GTK_TREE_VIEW (widget), &model, &iter))
|
if (katze_tree_view_get_selected_iter (GTK_TREE_VIEW (widget), &model, &iter))
|
||||||
{
|
{
|
||||||
#if WEBKIT_CHECK_VERSION (1, 1, 3)
|
|
||||||
WebKitDownload* download;
|
WebKitDownload* download;
|
||||||
|
|
||||||
gtk_tree_model_get (model, &iter, 1, &download, -1);
|
gtk_tree_model_get (model, &iter, 1, &download, -1);
|
||||||
|
@ -505,7 +490,6 @@ midori_transfers_popup_menu_cb (GtkWidget* widget,
|
||||||
midori_transfers_popup (widget, NULL, download, transfers);
|
midori_transfers_popup (widget, NULL, download, transfers);
|
||||||
g_object_unref (download);
|
g_object_unref (download);
|
||||||
return TRUE;
|
return TRUE;
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
|
@ -523,7 +507,6 @@ midori_transfers_button_release_event_cb (GtkWidget* widget,
|
||||||
|
|
||||||
if (katze_tree_view_get_selected_iter (GTK_TREE_VIEW (widget), &model, &iter))
|
if (katze_tree_view_get_selected_iter (GTK_TREE_VIEW (widget), &model, &iter))
|
||||||
{
|
{
|
||||||
#if WEBKIT_CHECK_VERSION (1, 1, 3)
|
|
||||||
WebKitDownload* download;
|
WebKitDownload* download;
|
||||||
|
|
||||||
gtk_tree_model_get (model, &iter, 1, &download, -1);
|
gtk_tree_model_get (model, &iter, 1, &download, -1);
|
||||||
|
@ -531,7 +514,6 @@ midori_transfers_button_release_event_cb (GtkWidget* widget,
|
||||||
midori_transfers_popup (widget, NULL, download, transfers);
|
midori_transfers_popup (widget, NULL, download, transfers);
|
||||||
g_object_unref (download);
|
g_object_unref (download);
|
||||||
return TRUE;
|
return TRUE;
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
|
|
1575
po/pt_BR.po
1575
po/pt_BR.po
File diff suppressed because it is too large
Load diff
1788
po/zh_CN.po
1788
po/zh_CN.po
File diff suppressed because it is too large
Load diff
|
@ -258,18 +258,18 @@ magic_uri_format (void)
|
||||||
static void
|
static void
|
||||||
magic_uri_prefetch (void)
|
magic_uri_prefetch (void)
|
||||||
{
|
{
|
||||||
g_assert (!sokoke_prefetch_uri (NULL, NULL, NULL));
|
g_assert (!sokoke_prefetch_uri (NULL, NULL, NULL, NULL));
|
||||||
g_assert (sokoke_prefetch_uri ("http://google.com", NULL, NULL));
|
g_assert (sokoke_prefetch_uri (NULL, "http://google.com", NULL, NULL));
|
||||||
g_assert (sokoke_prefetch_uri ("http://google.com", NULL, NULL));
|
g_assert (sokoke_prefetch_uri (NULL, "http://google.com", NULL, NULL));
|
||||||
g_assert (sokoke_prefetch_uri ("http://googlecom", NULL, NULL));
|
g_assert (sokoke_prefetch_uri (NULL, "http://googlecom", NULL, NULL));
|
||||||
g_assert (sokoke_prefetch_uri ("http://1kino.com", NULL, NULL));
|
g_assert (sokoke_prefetch_uri (NULL, "http://1kino.com", NULL, NULL));
|
||||||
g_assert (sokoke_prefetch_uri ("http://", NULL, NULL));
|
g_assert (sokoke_prefetch_uri (NULL, "http://", NULL, NULL));
|
||||||
g_assert (!sokoke_prefetch_uri ("http:/", NULL, NULL));
|
g_assert (!sokoke_prefetch_uri (NULL, "http:/", NULL, NULL));
|
||||||
g_assert (!sokoke_prefetch_uri ("http", NULL, NULL));
|
g_assert (!sokoke_prefetch_uri (NULL, "http", NULL, NULL));
|
||||||
g_assert (!sokoke_prefetch_uri ("ftp://ftphost.org", NULL, NULL));
|
g_assert (!sokoke_prefetch_uri (NULL, "ftp://ftphost.org", NULL, NULL));
|
||||||
g_assert (!sokoke_prefetch_uri ("http://10.0.0.1", NULL, NULL));
|
g_assert (!sokoke_prefetch_uri (NULL, "http://10.0.0.1", NULL, NULL));
|
||||||
g_assert (!sokoke_prefetch_uri ("about:blank", NULL, NULL));
|
g_assert (!sokoke_prefetch_uri (NULL, "about:blank", NULL, NULL));
|
||||||
g_assert (!sokoke_prefetch_uri ("javascript: alert()", NULL, NULL));
|
g_assert (!sokoke_prefetch_uri (NULL, "javascript: alert()", NULL, NULL));
|
||||||
}
|
}
|
||||||
|
|
||||||
int
|
int
|
||||||
|
|
|
@ -147,9 +147,8 @@ midori_findbar_invoke (MidoriFindbar* findbar)
|
||||||
if ((text = midori_view_get_selected_text (MIDORI_VIEW (view))))
|
if ((text = midori_view_get_selected_text (MIDORI_VIEW (view))))
|
||||||
gtk_entry_set_text (GTK_ENTRY (findbar->find_text), text);
|
gtk_entry_set_text (GTK_ENTRY (findbar->find_text), text);
|
||||||
gtk_widget_show (GTK_WIDGET (findbar));
|
gtk_widget_show (GTK_WIDGET (findbar));
|
||||||
}
|
|
||||||
|
|
||||||
gtk_widget_grab_focus (GTK_WIDGET (findbar->find_text));
|
gtk_widget_grab_focus (GTK_WIDGET (findbar->find_text));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
|
|
|
@ -37,7 +37,6 @@ midori_transferbar_class_init (MidoriTransferbarClass* class)
|
||||||
/* Nothing to do */
|
/* Nothing to do */
|
||||||
}
|
}
|
||||||
|
|
||||||
#if WEBKIT_CHECK_VERSION (1, 1, 3)
|
|
||||||
typedef struct
|
typedef struct
|
||||||
{
|
{
|
||||||
WebKitDownload* download;
|
WebKitDownload* download;
|
||||||
|
@ -112,9 +111,7 @@ midori_transferbar_download_notify_status_cb (WebKitDownload* download,
|
||||||
case WEBKIT_DOWNLOAD_STATUS_FINISHED:
|
case WEBKIT_DOWNLOAD_STATUS_FINISHED:
|
||||||
{
|
{
|
||||||
MidoriBrowser* browser = midori_browser_get_for_widget (button);
|
MidoriBrowser* browser = midori_browser_get_for_widget (button);
|
||||||
#if WEBKIT_CHECK_VERSION (1, 1, 14)
|
|
||||||
WebKitNetworkRequest* request;
|
WebKitNetworkRequest* request;
|
||||||
#endif
|
|
||||||
const gchar* original_uri;
|
const gchar* original_uri;
|
||||||
gchar** fingerprint;
|
gchar** fingerprint;
|
||||||
|
|
||||||
|
@ -137,11 +134,9 @@ midori_transferbar_download_notify_status_cb (WebKitDownload* download,
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Link Fingerprint */
|
/* Link Fingerprint */
|
||||||
#if WEBKIT_CHECK_VERSION (1, 1, 14)
|
|
||||||
request = webkit_download_get_network_request (download);
|
request = webkit_download_get_network_request (download);
|
||||||
original_uri = g_object_get_data (G_OBJECT (request), "midori-original-uri");
|
original_uri = g_object_get_data (G_OBJECT (request), "midori-original-uri");
|
||||||
if (!original_uri)
|
if (!original_uri)
|
||||||
#endif
|
|
||||||
original_uri = webkit_download_get_uri (download);
|
original_uri = webkit_download_get_uri (download);
|
||||||
fingerprint = g_strsplit (original_uri, "#!md5!", 2);
|
fingerprint = g_strsplit (original_uri, "#!md5!", 2);
|
||||||
if (fingerprint && fingerprint[0] && fingerprint[1])
|
if (fingerprint && fingerprint[0] && fingerprint[1])
|
||||||
|
@ -315,7 +310,6 @@ midori_transferbar_clear_clicked_cb (GtkWidget* button,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
#endif
|
|
||||||
|
|
||||||
static void
|
static void
|
||||||
midori_transferbar_init (MidoriTransferbar* transferbar)
|
midori_transferbar_init (MidoriTransferbar* transferbar)
|
||||||
|
@ -326,10 +320,8 @@ midori_transferbar_init (MidoriTransferbar* transferbar)
|
||||||
transferbar->clear = gtk_tool_button_new_from_stock (GTK_STOCK_CLEAR);
|
transferbar->clear = gtk_tool_button_new_from_stock (GTK_STOCK_CLEAR);
|
||||||
gtk_tool_button_set_label (GTK_TOOL_BUTTON (transferbar->clear), _("Clear All"));
|
gtk_tool_button_set_label (GTK_TOOL_BUTTON (transferbar->clear), _("Clear All"));
|
||||||
gtk_tool_item_set_is_important (transferbar->clear, TRUE);
|
gtk_tool_item_set_is_important (transferbar->clear, TRUE);
|
||||||
#if WEBKIT_CHECK_VERSION (1, 1, 3)
|
|
||||||
g_signal_connect (transferbar->clear, "clicked",
|
g_signal_connect (transferbar->clear, "clicked",
|
||||||
G_CALLBACK (midori_transferbar_clear_clicked_cb), transferbar);
|
G_CALLBACK (midori_transferbar_clear_clicked_cb), transferbar);
|
||||||
#endif
|
|
||||||
gtk_toolbar_insert (GTK_TOOLBAR (transferbar), transferbar->clear, -1);
|
gtk_toolbar_insert (GTK_TOOLBAR (transferbar), transferbar->clear, -1);
|
||||||
|
|
||||||
transferbar->infos = NULL;
|
transferbar->infos = NULL;
|
||||||
|
@ -340,7 +332,6 @@ midori_transferbar_confirm_delete (MidoriTransferbar* transferbar)
|
||||||
{
|
{
|
||||||
GtkWidget* dialog = NULL;
|
GtkWidget* dialog = NULL;
|
||||||
gboolean cancel = FALSE;
|
gboolean cancel = FALSE;
|
||||||
#if WEBKIT_CHECK_VERSION (1, 1, 3)
|
|
||||||
GList* list;
|
GList* list;
|
||||||
gboolean all_done = TRUE;
|
gboolean all_done = TRUE;
|
||||||
|
|
||||||
|
@ -359,9 +350,6 @@ midori_transferbar_confirm_delete (MidoriTransferbar* transferbar)
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!all_done)
|
if (!all_done)
|
||||||
#else
|
|
||||||
if (transferbar->infos || g_list_nth_data (transferbar->infos, 0))
|
|
||||||
#endif
|
|
||||||
{
|
{
|
||||||
GtkWidget* widget = gtk_widget_get_toplevel (GTK_WIDGET (transferbar));
|
GtkWidget* widget = gtk_widget_get_toplevel (GTK_WIDGET (transferbar));
|
||||||
dialog = gtk_message_dialog_new (GTK_WINDOW (widget),
|
dialog = gtk_message_dialog_new (GTK_WINDOW (widget),
|
||||||
|
|
|
@ -1,31 +0,0 @@
|
||||||
#! /bin/sh
|
|
||||||
|
|
||||||
# Copyright (C) 2010-2011 Peter de Ridder <peter@xfce.org>
|
|
||||||
#
|
|
||||||
# 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.
|
|
||||||
#
|
|
||||||
# See the file COPYING for the full license text.
|
|
||||||
|
|
||||||
temp_file_new=`mktemp`
|
|
||||||
temp_file_old=`mktemp`
|
|
||||||
|
|
||||||
while [ "$1" ]
|
|
||||||
do
|
|
||||||
echo $1 >> $temp_file_new
|
|
||||||
shift
|
|
||||||
done
|
|
||||||
|
|
||||||
while [ "x`sha1sum - < $temp_file_new`" != "x`sha1sum - < $temp_file_old`" ]
|
|
||||||
do
|
|
||||||
files=`cat $temp_file_new $temp_file_old | sort | uniq -u`
|
|
||||||
cp $temp_file_new $temp_file_old
|
|
||||||
strings $files 2> /dev/null | grep \\.dll | cat - $temp_file_old | sort | uniq > $temp_file_new
|
|
||||||
done
|
|
||||||
|
|
||||||
cat $temp_file_new
|
|
||||||
|
|
||||||
rm $temp_file_new $temp_file_old
|
|
||||||
|
|
59
win32/makedist/makedist.midori
Normal file → Executable file
59
win32/makedist/makedist.midori
Normal file → Executable file
|
@ -9,15 +9,60 @@
|
||||||
#
|
#
|
||||||
# See the file COPYING for the full license text.
|
# See the file COPYING for the full license text.
|
||||||
|
|
||||||
|
# script: makedist.midori [version tag]
|
||||||
|
#
|
||||||
|
# This script creates an archive containing all required files for
|
||||||
|
# midori on windows. The midori version is inserted in the name of
|
||||||
|
# the archive and appended to the name of the root directory in the
|
||||||
|
# archive.
|
||||||
|
# The name of the archive is contructed as follows:
|
||||||
|
# midori<version tag>-<timestamp>.extension
|
||||||
|
# The archive contains a root directory named:
|
||||||
|
# midori<version tag>
|
||||||
|
|
||||||
# a bit of configuration
|
# a bit of configuration
|
||||||
root_dir=$MINGW_PREFIX
|
root_dir=$MINGW_PREFIX
|
||||||
script_dir=$PWD
|
|
||||||
|
|
||||||
# create temporary working directory
|
# create temporary working directory
|
||||||
temp_dir=`mktemp -d`
|
temp_dir=`mktemp -d`
|
||||||
|
|
||||||
|
# check if we can use 7zip
|
||||||
|
have_7zip=`which 7za`
|
||||||
|
|
||||||
# generate unique filename
|
# generate unique filename
|
||||||
ARCHIVE=midori$1-`date +%Y%m%d%H%M`.zip
|
if [ "$have_7zip" != "" ]; then
|
||||||
|
ARCHIVE=midori$1-`date +%Y%m%d%H%M`.7z
|
||||||
|
else
|
||||||
|
ARCHIVE=midori$1-`date +%Y%m%d%H%M`.zip
|
||||||
|
fi
|
||||||
|
|
||||||
|
# function: dll-recursive <list of exe and dll files ...>
|
||||||
|
#
|
||||||
|
# recursively search all dll dependencies of the input files.
|
||||||
|
# The resulting list of dll files including the input files is
|
||||||
|
# printed to stdout.
|
||||||
|
dll_recursive ()
|
||||||
|
{
|
||||||
|
temp_file_new=`mktemp`
|
||||||
|
temp_file_old=`mktemp`
|
||||||
|
|
||||||
|
while [ "$1" ]
|
||||||
|
do
|
||||||
|
echo $1 >> $temp_file_new
|
||||||
|
shift
|
||||||
|
done
|
||||||
|
|
||||||
|
while [ "x`sha1sum - < $temp_file_new`" != "x`sha1sum - < $temp_file_old`" ]
|
||||||
|
do
|
||||||
|
files=`cat $temp_file_new $temp_file_old | sort | uniq -u`
|
||||||
|
cp $temp_file_new $temp_file_old
|
||||||
|
strings $files 2> /dev/null | grep \\.dll | cat - $temp_file_old | sort | uniq > $temp_file_new
|
||||||
|
done
|
||||||
|
|
||||||
|
cat $temp_file_new
|
||||||
|
|
||||||
|
rm $temp_file_new $temp_file_old
|
||||||
|
}
|
||||||
|
|
||||||
echo -n "Creating $ARCHIVE ."
|
echo -n "Creating $ARCHIVE ."
|
||||||
|
|
||||||
|
@ -28,7 +73,7 @@ echo -n .
|
||||||
|
|
||||||
# auto generate dll list, only of existing files
|
# auto generate dll list, only of existing files
|
||||||
pushd $root_dir/bin > /dev/null
|
pushd $root_dir/bin > /dev/null
|
||||||
$script_dir/dll-recursive.sh midori*.exe gspawn-*-helper*.exe libhunspell*.dll > $temp_dir/midori.exe.lst
|
dll_recursive midori*.exe gspawn-*-helper*.exe libhunspell*.dll > $temp_dir/midori.exe.lst
|
||||||
files=`ls | cat - $temp_dir/midori.exe.lst | sort | uniq -d`
|
files=`ls | cat - $temp_dir/midori.exe.lst | sort | uniq -d`
|
||||||
rm $temp_dir/midori.exe.lst
|
rm $temp_dir/midori.exe.lst
|
||||||
popd > /dev/null
|
popd > /dev/null
|
||||||
|
@ -82,9 +127,13 @@ echo -n .
|
||||||
|
|
||||||
ARCHIVE=`pwd`/$ARCHIVE
|
ARCHIVE=`pwd`/$ARCHIVE
|
||||||
|
|
||||||
# store as tar.bz2 file
|
# store as zip/7z file
|
||||||
pushd $temp_dir > /dev/null
|
pushd $temp_dir > /dev/null
|
||||||
zip -rq $ARCHIVE midori$1
|
if [ "$have_7zip" != "" ]; then
|
||||||
|
7za a -m0=lzma -mx=9 $ARCHIVE midori$1
|
||||||
|
else
|
||||||
|
zip -rq $ARCHIVE midori$1
|
||||||
|
fi
|
||||||
popd > /dev/null
|
popd > /dev/null
|
||||||
|
|
||||||
echo -n .
|
echo -n .
|
||||||
|
|
0
win32/x86-mingw32-opensuse/crossconfig.sh
Normal file → Executable file
0
win32/x86-mingw32-opensuse/crossconfig.sh
Normal file → Executable file
4
win32/x86-mingw32-opensuse/install.sh
Normal file → Executable file
4
win32/x86-mingw32-opensuse/install.sh
Normal file → Executable file
|
@ -10,7 +10,7 @@
|
||||||
# See the file COPYING for the full license text.
|
# See the file COPYING for the full license text.
|
||||||
|
|
||||||
# config variables
|
# config variables
|
||||||
REPO_URL=http://download.opensuse.org/repositories/windows:/mingw:/win32/openSUSE_11.2
|
REPO_URL=http://download.opensuse.org/repositories/windows:/mingw:/win32/openSUSE_11.4
|
||||||
REPO_ARCH=noarch
|
REPO_ARCH=noarch
|
||||||
DOWNLOAD_PATH=~/dev/mingw/packages/opensuse
|
DOWNLOAD_PATH=~/dev/mingw/packages/opensuse
|
||||||
BUILD_PATH=~/tmp/opensuse
|
BUILD_PATH=~/tmp/opensuse
|
||||||
|
@ -71,7 +71,7 @@ do
|
||||||
if [ -d $BUILD_PATH/usr/i686-w64-mingw32/sys-root/mingw ]
|
if [ -d $BUILD_PATH/usr/i686-w64-mingw32/sys-root/mingw ]
|
||||||
then
|
then
|
||||||
# convert pkgconfig files
|
# convert pkgconfig files
|
||||||
if [ -d $BUILD_PATH/usr/i686-w64=mingw32/sys-root/mingw/lib/pkgconfig ]
|
if [ -d $BUILD_PATH/usr/i686-w64-mingw32/sys-root/mingw/lib/pkgconfig ]
|
||||||
then
|
then
|
||||||
sed -i -e 's@^prefix=.*@prefix='$INSTALL_PATH'@' -e 's@/usr/i686-w64-mingw32/sys-root/mingw@${prefix}@' $BUILD_PATH/usr/i686-w64-mingw32/sys-root/mingw/lib/pkgconfig/*.pc
|
sed -i -e 's@^prefix=.*@prefix='$INSTALL_PATH'@' -e 's@/usr/i686-w64-mingw32/sys-root/mingw@${prefix}@' $BUILD_PATH/usr/i686-w64-mingw32/sys-root/mingw/lib/pkgconfig/*.pc
|
||||||
fi
|
fi
|
||||||
|
|
|
@ -14,12 +14,14 @@ mingw32-freetype
|
||||||
mingw32-freetype-devel
|
mingw32-freetype-devel
|
||||||
mingw32-gcc-c++
|
mingw32-gcc-c++
|
||||||
mingw32-gcc
|
mingw32-gcc
|
||||||
|
mingw32-gdb
|
||||||
mingw32-gdk-pixbuf
|
mingw32-gdk-pixbuf
|
||||||
mingw32-gdk-pixbuf-devel
|
mingw32-gdk-pixbuf-devel
|
||||||
mingw32-gettext-runtime
|
mingw32-gettext-runtime
|
||||||
mingw32-gettext-tools
|
mingw32-gettext-tools
|
||||||
mingw32-glib2
|
mingw32-glib2
|
||||||
mingw32-glib2-devel
|
mingw32-glib2-devel
|
||||||
|
mingw32-glib-networking
|
||||||
mingw32-gst-plugins-base-devel
|
mingw32-gst-plugins-base-devel
|
||||||
mingw32-gstreamer-devel
|
mingw32-gstreamer-devel
|
||||||
mingw32-gtk2
|
mingw32-gtk2
|
||||||
|
@ -42,6 +44,8 @@ mingw32-libgstinterfaces
|
||||||
mingw32-libgstreamer
|
mingw32-libgstreamer
|
||||||
mingw32-libidn
|
mingw32-libidn
|
||||||
mingw32-libidn-devel
|
mingw32-libidn-devel
|
||||||
|
mingw32-libintl
|
||||||
|
mingw32-libintl-devel
|
||||||
mingw32-libjasper
|
mingw32-libjasper
|
||||||
mingw32-libjasper-devel
|
mingw32-libjasper-devel
|
||||||
mingw32-libjpeg
|
mingw32-libjpeg
|
||||||
|
@ -59,8 +63,9 @@ mingw32-libtasn1
|
||||||
mingw32-libtasn1-devel
|
mingw32-libtasn1-devel
|
||||||
mingw32-libtiff
|
mingw32-libtiff
|
||||||
mingw32-libtiff-devel
|
mingw32-libtiff-devel
|
||||||
mingw32-libwebkit
|
mingw32-libwebkitgtk
|
||||||
mingw32-libwebkit-devel
|
mingw32-libwebkitgtk-devel
|
||||||
|
mingw32-webkit-tools
|
||||||
mingw32-libxml2
|
mingw32-libxml2
|
||||||
mingw32-libxml2-devel
|
mingw32-libxml2-devel
|
||||||
mingw32-libxslt
|
mingw32-libxslt
|
||||||
|
@ -71,6 +76,8 @@ mingw32-pixman
|
||||||
mingw32-pixman-devel
|
mingw32-pixman-devel
|
||||||
mingw32-pthreads
|
mingw32-pthreads
|
||||||
mingw32-pthreads-devel
|
mingw32-pthreads-devel
|
||||||
|
mingw32-libproxy
|
||||||
|
mingw32-libmodman
|
||||||
mingw32-shared-mime-info
|
mingw32-shared-mime-info
|
||||||
mingw32-shared-mime-info-devel
|
mingw32-shared-mime-info-devel
|
||||||
mingw32-win_iconv
|
mingw32-win_iconv
|
||||||
|
|
19
wscript
19
wscript
|
@ -28,8 +28,8 @@ import misc
|
||||||
from Configure import find_program_impl
|
from Configure import find_program_impl
|
||||||
|
|
||||||
major = 0
|
major = 0
|
||||||
minor = 3
|
minor = 4
|
||||||
micro = 6
|
micro = 0
|
||||||
|
|
||||||
APPNAME = 'midori'
|
APPNAME = 'midori'
|
||||||
VERSION = str (major) + '.' + str (minor) + '.' + str (micro)
|
VERSION = str (major) + '.' + str (minor) + '.' + str (micro)
|
||||||
|
@ -88,14 +88,7 @@ def configure (conf):
|
||||||
return dirvalue
|
return dirvalue
|
||||||
|
|
||||||
conf.check_tool ('compiler_cc')
|
conf.check_tool ('compiler_cc')
|
||||||
if option_enabled ('vala'):
|
|
||||||
if find_program_impl (conf.env, 'valac'):
|
|
||||||
conf.check_tool ('vala')
|
conf.check_tool ('vala')
|
||||||
else:
|
|
||||||
conf.check_message ('program', 'valac', False, False)
|
|
||||||
Utils.pprint ('RED', 'Vala is required for some extensions.')
|
|
||||||
Utils.pprint ('RED', 'Pass --disable-vala to not build with Vala.')
|
|
||||||
sys.exit (1)
|
|
||||||
conf.check_tool ('glib2')
|
conf.check_tool ('glib2')
|
||||||
|
|
||||||
if option_enabled ('nls'):
|
if option_enabled ('nls'):
|
||||||
|
@ -203,7 +196,7 @@ def configure (conf):
|
||||||
includes='/usr/X11R6/include', mandatory=False)
|
includes='/usr/X11R6/include', mandatory=False)
|
||||||
conf.check (lib='Xss', libpath='/usr/X11R6/lib', mandatory=False)
|
conf.check (lib='Xss', libpath='/usr/X11R6/lib', mandatory=False)
|
||||||
check_pkg ('gtk+-2.0', '2.10.0', var='GTK', args=args)
|
check_pkg ('gtk+-2.0', '2.10.0', var='GTK', args=args)
|
||||||
check_pkg ('webkit-1.0', '1.1.1', args=args)
|
check_pkg ('webkit-1.0', '1.1.17', args=args)
|
||||||
check_pkg ('libsoup-2.4', '2.25.2')
|
check_pkg ('libsoup-2.4', '2.25.2')
|
||||||
conf.define ('HAVE_LIBSOUP_2_25_2', 1)
|
conf.define ('HAVE_LIBSOUP_2_25_2', 1)
|
||||||
check_pkg ('libsoup-2.4', '2.27.90', False, var='LIBSOUP_2_27_90')
|
check_pkg ('libsoup-2.4', '2.27.90', False, var='LIBSOUP_2_27_90')
|
||||||
|
@ -330,8 +323,9 @@ def set_options (opt):
|
||||||
if group == None:
|
if group == None:
|
||||||
group = opt
|
group = opt
|
||||||
option_ = option.replace ('-', '_')
|
option_ = option.replace ('-', '_')
|
||||||
group.add_option ('--enable-' + option, action='store_true',
|
group.add_option ('--enable-' + option, action='store_true', default=False,
|
||||||
default=False, help='Enable ' + desc, dest='enable_' + option_)
|
help='Enable ' + desc + ' [Default: ' + str (not disable) + ']',
|
||||||
|
dest='enable_' + option_)
|
||||||
group.add_option ('--disable-' + option, action='store_true',
|
group.add_option ('--disable-' + option, action='store_true',
|
||||||
default=disable, help='Disable ' + desc, dest='disable_' + option_)
|
default=disable, help='Disable ' + desc, dest='disable_' + option_)
|
||||||
|
|
||||||
|
@ -359,7 +353,6 @@ def set_options (opt):
|
||||||
|
|
||||||
group = opt.add_option_group ('Optional features', '')
|
group = opt.add_option_group ('Optional features', '')
|
||||||
add_enable_option ('unique', 'single instance support', group)
|
add_enable_option ('unique', 'single instance support', group)
|
||||||
add_enable_option ('vala', 'Vala support', group)
|
|
||||||
add_enable_option ('libidn', 'international domain name support', group)
|
add_enable_option ('libidn', 'international domain name support', group)
|
||||||
add_enable_option ('libnotify', 'notification support', group)
|
add_enable_option ('libnotify', 'notification support', group)
|
||||||
add_enable_option ('addons', 'building of extensions', group)
|
add_enable_option ('addons', 'building of extensions', group)
|
||||||
|
|
Loading…
Reference in a new issue