2008-03-10 21:26:09 +00:00
/*
2012-07-11 19:28:10 +00:00
Copyright ( C ) 2008 - 2012 Christian Dywan < christian @ twotoasts . de >
2011-10-26 18:36:16 +00:00
Copyright ( C ) 2011 Peter Hatina < phatina @ redhat . com >
2008-03-10 21:26:09 +00:00
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 .
*/
2008-04-13 09:29:21 +00:00
# include "midori-websettings.h"
2008-03-10 21:26:09 +00:00
# include "sokoke.h"
2012-02-25 23:00:14 +00:00
# include <midori/midori-core.h> /* Vala API */
2008-04-13 09:29:21 +00:00
2008-03-22 02:38:23 +00:00
# include <glib/gi18n.h>
2011-05-01 19:57:54 +00:00
# include <glib/gstdio.h>
2008-04-13 09:29:21 +00:00
# include <string.h>
2008-03-10 21:26:09 +00:00
2011-10-31 21:10:39 +00:00
# include <config.h>
2011-05-01 22:51:37 +00:00
# if HAVE_UNISTD_H
# include <unistd.h>
# endif
2009-06-15 23:48:39 +00:00
# if defined (G_OS_UNIX)
# include <sys/utsname.h>
# endif
2012-03-25 15:53:45 +00:00
# if defined(__FreeBSD__)
# include <sys/types.h>
# include <sys/sysctl.h>
# endif
2009-06-15 23:48:39 +00:00
2008-06-19 18:41:43 +00:00
struct _MidoriWebSettings
2008-03-10 21:26:09 +00:00
{
2008-06-19 18:41:43 +00:00
WebKitWebSettings parent_instance ;
2010-05-12 21:32:41 +00:00
gboolean remember_last_window_size : 1 ;
MidoriWindowState last_window_state : 2 ;
gboolean show_menubar : 1 ;
gboolean show_navigationbar : 1 ;
gboolean show_bookmarkbar : 1 ;
gboolean show_panel : 1 ;
gboolean show_statusbar : 1 ;
MidoriToolbarStyle toolbar_style : 3 ;
gboolean compact_sidepanel : 1 ;
gboolean right_align_sidepanel : 1 ;
gboolean open_panels_in_windows : 1 ;
MidoriStartup load_on_startup : 2 ;
gboolean show_crash_dialog : 1 ;
MidoriPreferredEncoding preferred_encoding : 3 ;
gboolean always_show_tabbar : 1 ;
gboolean close_buttons_on_tabs : 1 ;
2011-05-01 19:57:54 +00:00
gint close_buttons_left ;
2010-05-12 21:32:41 +00:00
MidoriNewPage open_new_pages_in : 2 ;
gboolean middle_click_opens_selection : 1 ;
gboolean open_tabs_in_the_background : 1 ;
gboolean open_tabs_next_to_current : 1 ;
gboolean open_popups_in_tabs : 1 ;
gboolean zoom_text_and_images : 1 ;
gboolean find_while_typing : 1 ;
gboolean kinetic_scrolling : 1 ;
2011-10-23 22:18:32 +00:00
gboolean first_party_cookies_only : 1 ;
2010-05-12 21:32:41 +00:00
gboolean remember_last_visited_pages : 1 ;
MidoriProxy proxy_type : 2 ;
MidoriIdentity identify_as : 3 ;
2008-04-16 23:38:22 +00:00
gint last_window_width ;
gint last_window_height ;
gint last_panel_position ;
gint last_panel_page ;
gint last_web_search ;
2012-07-11 19:28:10 +00:00
gboolean last_inspector_attached ;
2010-05-12 21:32:41 +00:00
gint maximum_cookie_age ;
gint maximum_history_age ;
2011-11-15 22:43:14 +00:00
gint search_width ;
2008-04-16 23:38:22 +00:00
2008-10-12 16:14:57 +00:00
gchar * toolbar_items ;
2008-04-16 23:38:22 +00:00
gchar * homepage ;
gchar * download_folder ;
2008-10-20 19:32:25 +00:00
gchar * text_editor ;
2009-04-14 17:44:48 +00:00
gchar * news_aggregator ;
2008-04-16 23:38:22 +00:00
gchar * location_entry_search ;
2008-04-13 09:29:21 +00:00
gchar * http_proxy ;
2011-10-24 17:53:37 +00:00
gint http_proxy_port ;
2011-05-01 04:59:00 +00:00
# if WEBKIT_CHECK_VERSION (1, 3, 11)
gint maximum_cache_size ;
# endif
2010-01-06 23:49:41 +00:00
gchar * http_accept_language ;
2008-12-08 22:18:14 +00:00
gchar * ident_string ;
2009-05-22 21:53:54 +00:00
gint clear_private_data ;
2010-10-17 20:48:32 +00:00
gchar * clear_data ;
2012-02-25 23:00:14 +00:00
gchar * site_data_rules ;
2011-04-17 20:29:51 +00:00
# if !WEBKIT_CHECK_VERSION (1, 3, 13)
gboolean enable_dns_prefetching ;
# endif
2011-04-14 22:49:39 +00:00
gboolean strip_referer ;
2011-10-26 19:11:50 +00:00
gboolean enforce_font_family ;
2011-08-09 17:41:20 +00:00
gboolean flash_window_on_bg_tabs ;
2011-10-30 15:26:56 +00:00
gchar * user_stylesheet_uri ;
2011-11-08 21:48:39 +00:00
gchar * user_stylesheet_uri_cached ;
2011-10-26 18:36:16 +00:00
GHashTable * user_stylesheets ;
2008-03-10 21:26:09 +00:00
} ;
2008-12-08 22:18:14 +00:00
struct _MidoriWebSettingsClass
{
WebKitWebSettingsClass parent_class ;
} ;
2008-06-19 18:41:43 +00:00
G_DEFINE_TYPE ( MidoriWebSettings , midori_web_settings , WEBKIT_TYPE_WEB_SETTINGS )
2008-03-10 21:26:09 +00:00
enum
{
PROP_0 ,
2008-04-16 23:38:22 +00:00
PROP_REMEMBER_LAST_WINDOW_SIZE ,
PROP_LAST_WINDOW_WIDTH ,
PROP_LAST_WINDOW_HEIGHT ,
2009-01-20 22:27:19 +00:00
PROP_LAST_WINDOW_STATE ,
2008-04-16 23:38:22 +00:00
PROP_LAST_PANEL_POSITION ,
PROP_LAST_PANEL_PAGE ,
PROP_LAST_WEB_SEARCH ,
2012-07-11 19:28:10 +00:00
PROP_LAST_INSPECTOR_ATTACHED ,
2008-04-16 23:38:22 +00:00
2008-10-12 20:09:49 +00:00
PROP_SHOW_MENUBAR ,
2008-04-16 23:38:22 +00:00
PROP_SHOW_NAVIGATIONBAR ,
PROP_SHOW_BOOKMARKBAR ,
PROP_SHOW_PANEL ,
PROP_SHOW_STATUSBAR ,
2008-04-13 09:29:21 +00:00
PROP_TOOLBAR_STYLE ,
2008-10-12 16:14:57 +00:00
PROP_TOOLBAR_ITEMS ,
2008-10-21 22:01:01 +00:00
PROP_COMPACT_SIDEPANEL ,
2009-02-22 02:51:10 +00:00
PROP_RIGHT_ALIGN_SIDEPANEL ,
2009-11-28 22:53:49 +00:00
PROP_OPEN_PANELS_IN_WINDOWS ,
2008-04-13 09:29:21 +00:00
2008-04-16 23:38:22 +00:00
PROP_LOAD_ON_STARTUP ,
PROP_HOMEPAGE ,
2009-01-12 02:17:37 +00:00
PROP_SHOW_CRASH_DIALOG ,
2008-04-16 23:38:22 +00:00
PROP_DOWNLOAD_FOLDER ,
2008-10-20 19:32:25 +00:00
PROP_TEXT_EDITOR ,
2009-04-14 17:44:48 +00:00
PROP_NEWS_AGGREGATOR ,
2008-04-16 23:38:22 +00:00
PROP_LOCATION_ENTRY_SEARCH ,
PROP_PREFERRED_ENCODING ,
2008-10-21 22:01:01 +00:00
PROP_ALWAYS_SHOW_TABBAR ,
2008-04-13 09:29:21 +00:00
PROP_CLOSE_BUTTONS_ON_TABS ,
2011-02-17 19:55:12 +00:00
PROP_CLOSE_BUTTONS_LEFT ,
2008-04-13 09:29:21 +00:00
PROP_OPEN_NEW_PAGES_IN ,
PROP_MIDDLE_CLICK_OPENS_SELECTION ,
PROP_OPEN_TABS_IN_THE_BACKGROUND ,
2008-08-15 18:38:27 +00:00
PROP_OPEN_TABS_NEXT_TO_CURRENT ,
2008-04-13 09:29:21 +00:00
PROP_OPEN_POPUPS_IN_TABS ,
2011-08-09 17:41:20 +00:00
PROP_FLASH_WINDOW_ON_BG_TABS ,
2012-01-03 02:28:22 +00:00
PROP_ENABLE_WEBGL ,
2012-03-05 20:53:29 +00:00
PROP_ENABLE_FULLSCREEN ,
2008-04-13 09:29:21 +00:00
2009-11-08 20:55:36 +00:00
PROP_AUTO_LOAD_IMAGES ,
PROP_ENABLE_SCRIPTS ,
PROP_ENABLE_PLUGINS ,
2009-12-23 15:24:51 +00:00
PROP_ENABLE_DEVELOPER_EXTRAS ,
2010-12-13 19:11:50 +00:00
PROP_ENABLE_SPELL_CHECKING ,
2010-01-30 16:15:28 +00:00
PROP_ENABLE_HTML5_DATABASE ,
PROP_ENABLE_HTML5_LOCAL_STORAGE ,
PROP_ENABLE_OFFLINE_WEB_APPLICATION_CACHE ,
2009-12-31 22:24:02 +00:00
PROP_ENABLE_PAGE_CACHE ,
2009-01-16 04:05:50 +00:00
PROP_ZOOM_TEXT_AND_IMAGES ,
2009-03-01 18:21:27 +00:00
PROP_FIND_WHILE_TYPING ,
2009-09-27 21:48:08 +00:00
PROP_KINETIC_SCROLLING ,
2008-04-13 09:29:21 +00:00
PROP_MAXIMUM_COOKIE_AGE ,
2011-10-23 22:18:32 +00:00
PROP_FIRST_PARTY_COOKIES_ONLY ,
2008-04-13 09:29:21 +00:00
PROP_MAXIMUM_HISTORY_AGE ,
2010-04-02 18:41:39 +00:00
PROP_PROXY_TYPE ,
2008-04-13 09:29:21 +00:00
PROP_HTTP_PROXY ,
2011-10-24 17:53:37 +00:00
PROP_HTTP_PROXY_PORT ,
2011-05-01 04:59:00 +00:00
PROP_MAXIMUM_CACHE_SIZE ,
2008-12-08 22:18:14 +00:00
PROP_IDENTIFY_AS ,
2010-01-31 21:10:24 +00:00
PROP_USER_AGENT ,
2010-01-06 23:49:41 +00:00
PROP_PREFERRED_LANGUAGES ,
2009-05-22 21:53:54 +00:00
2010-10-17 20:48:32 +00:00
PROP_CLEAR_PRIVATE_DATA ,
2011-04-14 22:49:39 +00:00
PROP_CLEAR_DATA ,
2012-02-25 23:00:14 +00:00
PROP_SITE_DATA_RULES ,
2011-04-17 20:29:51 +00:00
PROP_ENABLE_DNS_PREFETCHING ,
2011-08-09 17:41:20 +00:00
PROP_STRIP_REFERER ,
2011-10-26 19:11:50 +00:00
PROP_ENFORCE_FONT_FAMILY ,
2011-10-30 15:26:56 +00:00
PROP_USER_STYLESHEET_URI ,
2011-11-15 22:43:14 +00:00
PROP_SEARCH_WIDTH ,
2008-03-10 21:26:09 +00:00
} ;
2009-01-20 22:27:19 +00:00
GType
midori_window_state_get_type ( void )
{
static GType type = 0 ;
if ( ! type )
{
static const GEnumValue values [ ] = {
{ MIDORI_WINDOW_NORMAL , " MIDORI_WINDOW_NORMAL " , " Normal " } ,
{ MIDORI_WINDOW_MINIMIZED , " MIDORI_WINDOW_MINIMIZED " , " Minimized " } ,
{ MIDORI_WINDOW_MAXIMIZED , " MIDORI_WINDOW_MAXIMIZED " , " Maximized " } ,
{ MIDORI_WINDOW_FULLSCREEN , " MIDORI_WINDOW_FULLSCREEN " , " Fullscreen " } ,
{ 0 , NULL , NULL }
} ;
type = g_enum_register_static ( " MidoriWindowState " , values ) ;
}
return type ;
}
2008-04-13 09:29:21 +00:00
GType
midori_startup_get_type ( void )
{
static GType type = 0 ;
if ( ! type )
{
static const GEnumValue values [ ] = {
2011-03-22 23:54:32 +00:00
{ MIDORI_STARTUP_BLANK_PAGE , " MIDORI_STARTUP_BLANK_PAGE " , N_ ( " Show Speed Dial " ) } ,
2009-07-22 21:53:29 +00:00
{ MIDORI_STARTUP_HOMEPAGE , " MIDORI_STARTUP_HOMEPAGE " , N_ ( " Show Homepage " ) } ,
{ MIDORI_STARTUP_LAST_OPEN_PAGES , " MIDORI_STARTUP_LAST_OPEN_PAGES " , N_ ( " Show last open tabs " ) } ,
2010-05-31 21:39:02 +00:00
{ MIDORI_STARTUP_DELAYED_PAGES , " MIDORI_STARTUP_DELAYED_PAGES " , N_ ( " Show last tabs without loading " ) } ,
2008-04-13 09:29:21 +00:00
{ 0 , NULL , NULL }
} ;
type = g_enum_register_static ( " MidoriStartup " , values ) ;
}
return type ;
}
GType
midori_preferred_encoding_get_type ( void )
{
static GType type = 0 ;
if ( ! type )
{
static const GEnumValue values [ ] = {
2012-05-11 21:48:47 +00:00
{ MIDORI_ENCODING_CHINESE , " MIDORI_ENCODING_CHINESE " , N_ ( " Chinese Traditional (BIG5) " ) } ,
{ MIDORI_ENCODING_CHINESE_SIMPLIFIED , " MIDORI_ENCODING_CHINESE_SIMPLIFIED " , N_ ( " Chinese Simplified (GB18030) " ) } ,
2008-04-18 00:40:53 +00:00
{ MIDORI_ENCODING_JAPANESE , " MIDORI_ENCODING_JAPANESE " , N_ ( " Japanese (SHIFT_JIS) " ) } ,
2009-10-31 21:51:35 +00:00
{ MIDORI_ENCODING_KOREAN , " MIDORI_ENCODING_KOREAN " , N_ ( " Korean (EUC-KR) " ) } ,
2008-04-18 00:40:53 +00:00
{ MIDORI_ENCODING_RUSSIAN , " MIDORI_ENCODING_RUSSIAN " , N_ ( " Russian (KOI8-R) " ) } ,
{ MIDORI_ENCODING_UNICODE , " MIDORI_ENCODING_UNICODE " , N_ ( " Unicode (UTF-8) " ) } ,
{ MIDORI_ENCODING_WESTERN , " MIDORI_ENCODING_WESTERN " , N_ ( " Western (ISO-8859-1) " ) } ,
2008-12-08 22:18:14 +00:00
{ MIDORI_ENCODING_CUSTOM , " MIDORI_ENCODING_CUSTOM " , N_ ( " Custom... " ) } ,
2008-04-13 09:29:21 +00:00
{ 0 , NULL , NULL }
} ;
type = g_enum_register_static ( " MidoriPreferredEncoding " , values ) ;
}
return type ;
}
GType
midori_new_page_get_type ( void )
{
static GType type = 0 ;
if ( ! type )
{
static const GEnumValue values [ ] = {
2008-04-18 00:40:53 +00:00
{ MIDORI_NEW_PAGE_TAB , " MIDORI_NEW_PAGE_TAB " , N_ ( " New tab " ) } ,
{ MIDORI_NEW_PAGE_WINDOW , " MIDORI_NEW_PAGE_WINDOW " , N_ ( " New window " ) } ,
{ MIDORI_NEW_PAGE_CURRENT , " MIDORI_NEW_PAGE_CURRENT " , N_ ( " Current tab " ) } ,
2008-04-13 09:29:21 +00:00
{ 0 , NULL , NULL }
} ;
type = g_enum_register_static ( " MidoriNewPage " , values ) ;
}
return type ;
}
GType
midori_toolbar_style_get_type ( void )
{
static GType type = 0 ;
if ( ! type )
{
static const GEnumValue values [ ] = {
2008-04-18 00:40:53 +00:00
{ MIDORI_TOOLBAR_DEFAULT , " MIDORI_TOOLBAR_DEFAULT " , N_ ( " Default " ) } ,
{ MIDORI_TOOLBAR_ICONS , " MIDORI_TOOLBAR_ICONS " , N_ ( " Icons " ) } ,
2009-11-17 17:49:14 +00:00
{ MIDORI_TOOLBAR_SMALL_ICONS , " MIDORI_TOOLBAR_SMALL_ICONS " , N_ ( " Small icons " ) } ,
2008-04-18 00:40:53 +00:00
{ MIDORI_TOOLBAR_TEXT , " MIDORI_TOOLBAR_TEXT " , N_ ( " Text " ) } ,
2009-07-22 21:53:29 +00:00
{ MIDORI_TOOLBAR_BOTH , " MIDORI_TOOLBAR_BOTH " , N_ ( " Icons and text " ) } ,
{ MIDORI_TOOLBAR_BOTH_HORIZ , " MIDORI_TOOLBAR_BOTH_HORIZ " , N_ ( " Text beside icons " ) } ,
2008-04-13 09:29:21 +00:00
{ 0 , NULL , NULL }
} ;
type = g_enum_register_static ( " MidoriToolbarStyle " , values ) ;
}
return type ;
}
2010-04-02 18:41:39 +00:00
GType
midori_proxy_get_type ( void )
{
static GType type = 0 ;
if ( ! type )
{
static const GEnumValue values [ ] = {
{ MIDORI_PROXY_AUTOMATIC , " MIDORI_PROXY_AUTOMATIC " , N_ ( " Automatic (GNOME or environment) " ) } ,
{ MIDORI_PROXY_HTTP , " MIDORI_PROXY_HTTP " , N_ ( " HTTP proxy server " ) } ,
{ MIDORI_PROXY_NONE , " MIDORI_PROXY_NONE " , N_ ( " No proxy server " ) } ,
{ 0 , NULL , NULL }
} ;
type = g_enum_register_static ( " MidoriProxy " , values ) ;
}
return type ;
}
2008-12-08 22:18:14 +00:00
GType
midori_identity_get_type ( void )
{
static GType type = 0 ;
if ( ! type )
{
static const GEnumValue values [ ] = {
2011-10-09 10:20:13 +00:00
{ MIDORI_IDENT_MIDORI , " MIDORI_IDENT_MIDORI " , N_ ( " _Automatic " ) } ,
{ MIDORI_IDENT_GENUINE , " MIDORI_IDENT_GENUINE " , N_ ( " Midori " ) } ,
2012-06-21 15:23:12 +00:00
{ MIDORI_IDENT_CHROME , " MIDORI_IDENT_CHROME " , N_ ( " Chrome " ) } ,
2008-12-08 22:18:14 +00:00
{ MIDORI_IDENT_SAFARI , " MIDORI_IDENT_SAFARI " , N_ ( " Safari " ) } ,
2009-09-14 15:52:31 +00:00
{ MIDORI_IDENT_IPHONE , " MIDORI_IDENT_IPHONE " , N_ ( " iPhone " ) } ,
2008-12-08 22:18:14 +00:00
{ MIDORI_IDENT_FIREFOX , " MIDORI_IDENT_FIREFOX " , N_ ( " Firefox " ) } ,
{ MIDORI_IDENT_EXPLORER , " MIDORI_IDENT_EXPLORER " , N_ ( " Internet Explorer " ) } ,
{ MIDORI_IDENT_CUSTOM , " MIDORI_IDENT_CUSTOM " , N_ ( " Custom... " ) } ,
{ 0 , NULL , NULL }
} ;
type = g_enum_register_static ( " MidoriIdentity " , values ) ;
}
return type ;
}
2008-03-10 21:26:09 +00:00
static void
midori_web_settings_finalize ( GObject * object ) ;
static void
2008-04-13 09:29:21 +00:00
midori_web_settings_set_property ( GObject * object ,
guint prop_id ,
2008-03-10 21:26:09 +00:00
const GValue * value ,
2008-04-13 09:29:21 +00:00
GParamSpec * pspec ) ;
2008-03-10 21:26:09 +00:00
static void
2008-04-13 09:29:21 +00:00
midori_web_settings_get_property ( GObject * object ,
guint prop_id ,
GValue * value ,
2008-03-10 21:26:09 +00:00
GParamSpec * pspec ) ;
2009-03-19 17:28:50 +00:00
static const gchar *
midori_get_download_dir ( void )
{
const gchar * dir = g_get_user_special_dir ( G_USER_DIRECTORY_DOWNLOAD ) ;
if ( dir )
{
2009-10-20 16:24:24 +00:00
katze_mkdir_with_parents ( dir , 0700 ) ;
2009-03-19 17:28:50 +00:00
return dir ;
}
return g_get_home_dir ( ) ;
}
2012-03-08 22:30:07 +00:00
static gboolean
midori_web_settings_low_memory_profile ( )
{
2012-03-13 18:49:47 +00:00
# ifdef _WIN32
/* See http://msdn.microsoft.com/en-us/library/windows/desktop/aa366589(v=vs.85).aspx */
MEMORYSTATUSEX mem ;
mem . dwLength = sizeof ( mem ) ;
if ( GlobalMemoryStatusEx ( & mem ) )
return mem . ullTotalPhys / 1024 / 1024 < 352 ;
2012-03-25 15:53:45 +00:00
# elif defined(__FreeBSD__)
size_t size ;
int mem_total ;
size = sizeof mem_total ;
sysctlbyname ( " hw.realmem " , & mem_total , & size , NULL , 0 ) ;
return mem_total / 1048576 < 352 ;
2012-03-13 18:49:47 +00:00
# else
2012-03-08 22:30:07 +00:00
gchar * contents ;
const gchar * total ;
if ( ! g_file_get_contents ( " /proc/meminfo " , & contents , NULL , NULL ) )
return FALSE ;
if ( contents & & ( total = strstr ( contents , " MemTotal: " ) ) & & * total )
{
const gchar * value = katze_skip_whitespace ( total + 9 ) ;
gdouble mem_total = g_ascii_strtoll ( value , NULL , 0 ) ;
return mem_total / 1024.0 < 352 + 1 ;
}
2012-03-13 18:49:47 +00:00
# endif
2012-03-08 22:30:07 +00:00
return FALSE ;
}
2009-03-19 17:28:50 +00:00
2008-03-10 21:26:09 +00:00
static void
midori_web_settings_class_init ( MidoriWebSettingsClass * class )
{
2008-11-16 01:00:17 +00:00
GObjectClass * gobject_class ;
GParamFlags flags ;
gobject_class = G_OBJECT_CLASS ( class ) ;
2008-03-10 21:26:09 +00:00
gobject_class - > finalize = midori_web_settings_finalize ;
gobject_class - > set_property = midori_web_settings_set_property ;
gobject_class - > get_property = midori_web_settings_get_property ;
2009-01-16 04:19:43 +00:00
flags = G_PARAM_READWRITE | G_PARAM_CONSTRUCT | G_PARAM_STATIC_STRINGS ;
2008-03-10 21:26:09 +00:00
2008-04-13 09:29:21 +00:00
g_object_class_install_property ( gobject_class ,
2008-04-16 23:38:22 +00:00
PROP_REMEMBER_LAST_WINDOW_SIZE ,
g_param_spec_boolean (
" remember-last-window-size " ,
_ ( " Remember last window size " ) ,
_ ( " Whether to save the last window size " ) ,
TRUE ,
2008-04-13 09:29:21 +00:00
flags ) ) ;
g_object_class_install_property ( gobject_class ,
2008-04-16 23:38:22 +00:00
PROP_LAST_WINDOW_WIDTH ,
g_param_spec_int (
" last-window-width " ,
_ ( " Last window width " ) ,
_ ( " The last saved window width " ) ,
0 , G_MAXINT , 0 ,
2011-11-16 23:02:06 +00:00
flags | MIDORI_PARAM_DELAY_SAVING ) ) ;
2008-04-13 09:29:21 +00:00
g_object_class_install_property ( gobject_class ,
2008-04-16 23:38:22 +00:00
PROP_LAST_WINDOW_HEIGHT ,
g_param_spec_int (
" last-window-height " ,
_ ( " Last window height " ) ,
_ ( " The last saved window height " ) ,
0 , G_MAXINT , 0 ,
2011-11-16 23:02:06 +00:00
flags | MIDORI_PARAM_DELAY_SAVING ) ) ;
2008-04-16 23:38:22 +00:00
2009-01-20 22:27:19 +00:00
/**
* MidoriWebSettings : last - window - state :
*
* The last saved window state .
*
* Since : 0.1 .3
*/
g_object_class_install_property ( gobject_class ,
PROP_LAST_WINDOW_STATE ,
g_param_spec_enum (
" last-window-state " ,
" Last window state " ,
" The last saved window state " ,
MIDORI_TYPE_WINDOW_STATE ,
MIDORI_WINDOW_NORMAL ,
2011-11-16 23:02:06 +00:00
flags | MIDORI_PARAM_DELAY_SAVING ) ) ;
2009-01-20 22:27:19 +00:00
2008-04-16 23:38:22 +00:00
g_object_class_install_property ( gobject_class ,
PROP_LAST_PANEL_POSITION ,
g_param_spec_int (
" last-panel-position " ,
_ ( " Last panel position " ) ,
_ ( " The last saved panel position " ) ,
0 , G_MAXINT , 0 ,
2011-11-16 23:02:06 +00:00
flags | MIDORI_PARAM_DELAY_SAVING ) ) ;
2008-04-16 23:38:22 +00:00
g_object_class_install_property ( gobject_class ,
PROP_LAST_PANEL_PAGE ,
g_param_spec_int (
" last-panel-page " ,
2008-11-08 02:05:30 +00:00
/* i18n: The internal index of the last opened panel */
2008-04-16 23:38:22 +00:00
_ ( " Last panel page " ) ,
_ ( " The last saved panel page " ) ,
0 , G_MAXINT , 0 ,
2011-11-16 23:02:06 +00:00
flags | MIDORI_PARAM_DELAY_SAVING ) ) ;
2008-04-16 23:38:22 +00:00
g_object_class_install_property ( gobject_class ,
PROP_LAST_WEB_SEARCH ,
g_param_spec_int (
" last-web-search " ,
_ ( " Last Web search " ) ,
_ ( " The last saved Web search " ) ,
0 , G_MAXINT , 0 ,
flags ) ) ;
2012-07-11 19:28:10 +00:00
/**
* MidoriWebSettings : last - inspector - attached :
*
* Whether the inspector was attached .
*
* Since : 0.4 .7
*/
g_object_class_install_property ( gobject_class ,
PROP_LAST_INSPECTOR_ATTACHED ,
g_param_spec_boolean (
" last-inspector-attached " ,
" Inspector attached " ,
" Whether the inspector was attached " ,
FALSE ,
flags | MIDORI_PARAM_DELAY_SAVING ) ) ;
2008-04-16 23:38:22 +00:00
2008-10-12 20:09:49 +00:00
g_object_class_install_property ( gobject_class ,
PROP_SHOW_MENUBAR ,
g_param_spec_boolean (
" show-menubar " ,
_ ( " Show Menubar " ) ,
_ ( " Whether to show the menubar " ) ,
2011-02-11 21:16:53 +00:00
FALSE ,
2008-10-12 20:09:49 +00:00
flags ) ) ;
2008-04-13 09:29:21 +00:00
g_object_class_install_property ( gobject_class ,
2008-04-16 23:38:22 +00:00
PROP_SHOW_NAVIGATIONBAR ,
2008-04-13 09:29:21 +00:00
g_param_spec_boolean (
2008-04-16 23:38:22 +00:00
" show-navigationbar " ,
_ ( " Show Navigationbar " ) ,
_ ( " Whether to show the navigationbar " ) ,
2008-04-13 09:29:21 +00:00
TRUE ,
2008-04-16 23:38:22 +00:00
flags ) ) ;
2008-04-13 09:29:21 +00:00
g_object_class_install_property ( gobject_class ,
2008-04-16 23:38:22 +00:00
PROP_SHOW_BOOKMARKBAR ,
g_param_spec_boolean (
" show-bookmarkbar " ,
_ ( " Show Bookmarkbar " ) ,
_ ( " Whether to show the bookmarkbar " ) ,
FALSE ,
2008-04-13 09:29:21 +00:00
flags ) ) ;
g_object_class_install_property ( gobject_class ,
2008-04-16 23:38:22 +00:00
PROP_SHOW_PANEL ,
g_param_spec_boolean (
" show-panel " ,
_ ( " Show Panel " ) ,
_ ( " Whether to show the panel " ) ,
FALSE ,
2008-04-13 09:29:21 +00:00
flags ) ) ;
2008-04-16 23:38:22 +00:00
g_object_class_install_property ( gobject_class ,
PROP_SHOW_STATUSBAR ,
g_param_spec_boolean (
" show-statusbar " ,
_ ( " Show Statusbar " ) ,
_ ( " Whether to show the statusbar " ) ,
TRUE ,
flags ) ) ;
2008-04-13 09:29:21 +00:00
g_object_class_install_property ( gobject_class ,
PROP_TOOLBAR_STYLE ,
g_param_spec_enum (
" toolbar-style " ,
2009-07-22 21:53:29 +00:00
_ ( " Toolbar Style: " ) ,
2008-04-13 09:29:21 +00:00
_ ( " The style of the toolbar " ) ,
MIDORI_TYPE_TOOLBAR_STYLE ,
MIDORI_TOOLBAR_DEFAULT ,
flags ) ) ;
2008-10-12 16:14:57 +00:00
g_object_class_install_property ( gobject_class ,
PROP_TOOLBAR_ITEMS ,
g_param_spec_string (
" toolbar-items " ,
_ ( " Toolbar Items " ) ,
_ ( " The items to show on the toolbar " ) ,
2011-02-11 21:16:53 +00:00
" TabNew,Back,Forward,Next,ReloadStop,BookmarkAdd,Location,Search,Trash,CompactMenu " ,
2008-10-12 16:14:57 +00:00
flags ) ) ;
2008-10-03 23:45:17 +00:00
g_object_class_install_property ( gobject_class ,
2008-10-21 22:01:01 +00:00
PROP_COMPACT_SIDEPANEL ,
2008-10-03 23:45:17 +00:00
g_param_spec_boolean (
2008-10-21 22:01:01 +00:00
" compact-sidepanel " ,
_ ( " Compact Sidepanel " ) ,
_ ( " Whether to make the sidepanel compact " ) ,
2008-10-03 23:45:17 +00:00
FALSE ,
flags ) ) ;
2009-02-22 02:51:10 +00:00
/**
* MidoriWebSettings : right - sidepanel :
*
* Whether to align the sidepanel on the right .
*
* Since : 0.1 .3
*/
g_object_class_install_property ( gobject_class ,
PROP_RIGHT_ALIGN_SIDEPANEL ,
g_param_spec_boolean (
" right-align-sidepanel " ,
_ ( " Align sidepanel on the right " ) ,
_ ( " Whether to align the sidepanel on the right " ) ,
FALSE ,
flags ) ) ;
2009-11-28 22:53:49 +00:00
/**
* MidoriWebSettings : open - panels - in - window :
*
* Whether to open panels in separate windows .
*
* Since : 0.2 .2
*/
g_object_class_install_property ( gobject_class ,
PROP_OPEN_PANELS_IN_WINDOWS ,
g_param_spec_boolean (
" open-panels-in-windows " ,
_ ( " Open panels in separate windows " ) ,
_ ( " Whether to always open panels in separate windows " ) ,
FALSE ,
flags ) ) ;
2008-04-13 09:29:21 +00:00
2008-04-16 23:38:22 +00:00
g_object_class_install_property ( gobject_class ,
PROP_LOAD_ON_STARTUP ,
g_param_spec_enum (
" load-on-startup " ,
2009-07-22 21:53:29 +00:00
_ ( " When Midori starts: " ) ,
_ ( " What to do when Midori starts " ) ,
2008-04-16 23:38:22 +00:00
MIDORI_TYPE_STARTUP ,
2009-04-27 18:49:32 +00:00
MIDORI_STARTUP_LAST_OPEN_PAGES ,
2008-04-16 23:38:22 +00:00
flags ) ) ;
g_object_class_install_property ( gobject_class ,
PROP_HOMEPAGE ,
g_param_spec_string (
" homepage " ,
2009-07-22 21:53:29 +00:00
_ ( " Homepage: " ) ,
2008-04-16 23:38:22 +00:00
_ ( " The homepage " ) ,
" http://www.google.com " ,
flags ) ) ;
2009-01-12 02:17:37 +00:00
/**
* MidoriWebSettings : show - crash - dialog :
*
* Show a dialog after Midori crashed .
*
* Since : 0.1 .2
*/
g_object_class_install_property ( gobject_class ,
PROP_SHOW_CRASH_DIALOG ,
g_param_spec_boolean (
" show-crash-dialog " ,
_ ( " Show crash dialog " ) ,
_ ( " Show a dialog after Midori crashed " ) ,
TRUE ,
flags ) ) ;
2008-04-16 23:38:22 +00:00
g_object_class_install_property ( gobject_class ,
PROP_DOWNLOAD_FOLDER ,
g_param_spec_string (
" download-folder " ,
2009-07-22 21:53:29 +00:00
_ ( " Save downloaded files to: " ) ,
2008-04-16 23:38:22 +00:00
_ ( " The folder downloaded files are saved to " ) ,
2009-03-19 17:28:50 +00:00
midori_get_download_dir ( ) ,
2010-02-10 22:37:33 +00:00
flags ) ) ;
2008-04-16 23:38:22 +00:00
2008-10-20 19:32:25 +00:00
g_object_class_install_property ( gobject_class ,
PROP_TEXT_EDITOR ,
g_param_spec_string (
" text-editor " ,
_ ( " Text Editor " ) ,
_ ( " An external text editor " ) ,
NULL ,
flags ) ) ;
2009-04-14 17:44:48 +00:00
/**
* MidoriWebSettings : news - aggregator :
*
* An external news aggregator .
*
* Since : 0.1 .6
*/
g_object_class_install_property ( gobject_class ,
PROP_NEWS_AGGREGATOR ,
g_param_spec_string (
" news-aggregator " ,
_ ( " News Aggregator " ) ,
_ ( " An external news aggregator " ) ,
NULL ,
flags ) ) ;
2008-04-16 23:38:22 +00:00
g_object_class_install_property ( gobject_class ,
PROP_LOCATION_ENTRY_SEARCH ,
g_param_spec_string (
" location-entry-search " ,
_ ( " Location entry Search " ) ,
_ ( " The search to perform inside the location entry " ) ,
2010-01-30 15:54:38 +00:00
NULL ,
2008-04-16 23:38:22 +00:00
flags ) ) ;
g_object_class_install_property ( gobject_class ,
PROP_PREFERRED_ENCODING ,
g_param_spec_enum (
" preferred-encoding " ,
_ ( " Preferred Encoding " ) ,
_ ( " The preferred character encoding " ) ,
MIDORI_TYPE_PREFERRED_ENCODING ,
MIDORI_ENCODING_WESTERN ,
flags ) ) ;
2008-10-21 22:01:01 +00:00
g_object_class_install_property ( gobject_class ,
PROP_ALWAYS_SHOW_TABBAR ,
g_param_spec_boolean (
" always-show-tabbar " ,
_ ( " Always Show Tabbar " ) ,
_ ( " Always show the tabbar " ) ,
2012-03-14 20:33:16 +00:00
TRUE ,
2012-03-22 20:27:52 +00:00
# ifdef HAVE_GRANITE
2012-03-14 20:33:16 +00:00
G_PARAM_READABLE
# else
flags
# endif
) ) ;
2008-10-21 22:01:01 +00:00
2008-03-10 21:26:09 +00:00
g_object_class_install_property ( gobject_class ,
2008-04-13 09:29:21 +00:00
PROP_CLOSE_BUTTONS_ON_TABS ,
2008-03-10 21:26:09 +00:00
g_param_spec_boolean (
2008-04-13 09:29:21 +00:00
" close-buttons-on-tabs " ,
_ ( " Close Buttons on Tabs " ) ,
2008-03-22 02:38:23 +00:00
_ ( " Whether tabs have close buttons " ) ,
2008-05-02 20:30:26 +00:00
TRUE ,
2008-03-10 21:26:09 +00:00
flags ) ) ;
2011-02-17 19:55:12 +00:00
/**
* MidoriWebSettings : close - buttons - left :
*
* Whether to show close buttons on the left side .
*
* Since : 0.3 .1
*/
g_object_class_install_property ( gobject_class ,
PROP_CLOSE_BUTTONS_LEFT ,
g_param_spec_boolean (
" close-buttons-left " ,
" Close buttons on the left " ,
" Whether to show close buttons on the left side " ,
FALSE ,
2011-05-01 19:57:54 +00:00
G_PARAM_READABLE | G_PARAM_STATIC_STRINGS ) ) ;
2011-02-17 19:55:12 +00:00
2008-03-10 21:26:09 +00:00
g_object_class_install_property ( gobject_class ,
2008-04-13 09:29:21 +00:00
PROP_OPEN_NEW_PAGES_IN ,
g_param_spec_enum (
" open-new-pages-in " ,
2009-07-22 21:53:29 +00:00
_ ( " Open new pages in: " ) ,
2008-04-13 09:29:21 +00:00
_ ( " Where to open new pages " ) ,
MIDORI_TYPE_NEW_PAGE ,
MIDORI_NEW_PAGE_TAB ,
2010-02-10 22:37:33 +00:00
flags ) ) ;
2008-04-13 09:29:21 +00:00
g_object_class_install_property ( gobject_class ,
PROP_MIDDLE_CLICK_OPENS_SELECTION ,
2008-03-10 21:26:09 +00:00
g_param_spec_boolean (
2008-04-13 09:29:21 +00:00
" middle-click-opens-selection " ,
_ ( " Middle click opens Selection " ) ,
2009-01-04 18:21:25 +00:00
_ ( " Load an address from the selection via middle click " ) ,
2009-08-23 22:18:22 +00:00
TRUE ,
2008-03-10 21:26:09 +00:00
flags ) ) ;
2008-04-13 09:29:21 +00:00
g_object_class_install_property ( gobject_class ,
PROP_OPEN_TABS_IN_THE_BACKGROUND ,
g_param_spec_boolean (
" open-tabs-in-the-background " ,
_ ( " Open tabs in the background " ) ,
_ ( " Whether to open new tabs in the background " ) ,
FALSE ,
flags ) ) ;
2008-08-15 18:38:27 +00:00
g_object_class_install_property ( gobject_class ,
PROP_OPEN_TABS_NEXT_TO_CURRENT ,
g_param_spec_boolean (
" open-tabs-next-to-current " ,
_ ( " Open Tabs next to Current " ) ,
2009-04-28 21:49:52 +00:00
_ ( " Whether to open new tabs next to the current tab or after the last one " ) ,
2008-08-15 18:38:27 +00:00
TRUE ,
flags ) ) ;
2008-04-13 09:29:21 +00:00
g_object_class_install_property ( gobject_class ,
PROP_OPEN_POPUPS_IN_TABS ,
g_param_spec_boolean (
" open-popups-in-tabs " ,
_ ( " Open popups in tabs " ) ,
_ ( " Whether to open popup windows in tabs " ) ,
TRUE ,
2010-02-10 22:37:33 +00:00
flags ) ) ;
2008-04-13 09:29:21 +00:00
2009-11-08 20:55:36 +00:00
/* Override properties to localize them for preference proxies */
g_object_class_install_property ( gobject_class ,
PROP_AUTO_LOAD_IMAGES ,
g_param_spec_boolean (
" auto-load-images " ,
_ ( " Load images automatically " ) ,
_ ( " Load and display images automatically " ) ,
TRUE ,
flags ) ) ;
g_object_class_install_property ( gobject_class ,
PROP_ENABLE_SCRIPTS ,
g_param_spec_boolean (
" enable-scripts " ,
_ ( " Enable scripts " ) ,
_ ( " Enable embedded scripting languages " ) ,
TRUE ,
flags ) ) ;
g_object_class_install_property ( gobject_class ,
PROP_ENABLE_PLUGINS ,
g_param_spec_boolean (
" enable-plugins " ,
_ ( " Enable Netscape plugins " ) ,
_ ( " Enable embedded Netscape plugin objects " ) ,
2012-02-25 01:06:46 +00:00
midori_web_settings_has_plugin_support ( ) ,
midori_web_settings_has_plugin_support ( ) ? flags : G_PARAM_READABLE ) ) ;
2009-12-23 15:24:51 +00:00
/* Override properties to override defaults */
g_object_class_install_property ( gobject_class ,
PROP_ENABLE_DEVELOPER_EXTRAS ,
g_param_spec_boolean (
" enable-developer-extras " ,
" Enable developer tools " ,
" Enable special extensions for developers " ,
TRUE ,
flags ) ) ;
2010-12-13 19:11:50 +00:00
g_object_class_install_property ( gobject_class ,
PROP_ENABLE_SPELL_CHECKING ,
g_param_spec_boolean ( " enable-spell-checking " ,
_ ( " Enable Spell Checking " ) ,
_ ( " Enable spell checking while typing " ) ,
TRUE ,
flags ) ) ;
2010-01-30 16:15:28 +00:00
g_object_class_install_property ( gobject_class ,
PROP_ENABLE_HTML5_DATABASE ,
g_param_spec_boolean ( " enable-html5-database " ,
_ ( " Enable HTML5 database support " ) ,
_ ( " Whether to enable HTML5 database support " ) ,
FALSE ,
flags ) ) ;
g_object_class_install_property ( gobject_class ,
PROP_ENABLE_HTML5_LOCAL_STORAGE ,
g_param_spec_boolean ( " enable-html5-local-storage " ,
_ ( " Enable HTML5 local storage support " ) ,
_ ( " Whether to enable HTML5 local storage support " ) ,
FALSE ,
flags ) ) ;
g_object_class_install_property ( gobject_class ,
PROP_ENABLE_OFFLINE_WEB_APPLICATION_CACHE ,
g_param_spec_boolean ( " enable-offline-web-application-cache " ,
_ ( " Enable offline web application cache " ) ,
_ ( " Whether to enable offline web application cache " ) ,
FALSE ,
flags ) ) ;
2009-12-31 22:24:02 +00:00
# if WEBKIT_CHECK_VERSION (1, 1, 18)
g_object_class_install_property ( gobject_class ,
PROP_ENABLE_PAGE_CACHE ,
g_param_spec_boolean ( " enable-page-cache " ,
" Enable page cache " ,
" Whether the page cache should be used " ,
2012-03-08 22:30:07 +00:00
! midori_web_settings_low_memory_profile ( ) ,
2009-12-31 22:24:02 +00:00
flags ) ) ;
# endif
2012-07-01 20:00:23 +00:00
/**
* MidoriWebSettings : : flash - window - on - new - bg - tabs
*
2012-07-16 17:04:24 +00:00
* Uses opacity to attract attention . Nothing on Windows .
2012-07-01 20:00:23 +00:00
*/
2011-08-09 17:41:20 +00:00
g_object_class_install_property ( gobject_class ,
2011-09-28 20:18:11 +00:00
PROP_FLASH_WINDOW_ON_BG_TABS ,
2011-08-09 17:41:20 +00:00
g_param_spec_boolean (
" flash-window-on-new-bg-tabs " ,
_ ( " Flash window on background tabs " ) ,
_ ( " Flash the browser window if a new tab was opened in the background " ) ,
FALSE ,
flags ) ) ;
2012-01-03 02:28:22 +00:00
if ( g_object_class_find_property ( gobject_class , " enable-webgl " ) )
g_object_class_install_property ( gobject_class ,
PROP_ENABLE_WEBGL ,
g_param_spec_boolean (
" enable-webgl " ,
_ ( " Enable WebGL support " ) ,
_ ( " Allow websites to use OpenGL rendering " ) ,
/* Enable by default for git builds */
! g_str_equal ( PACKAGE_VERSION , MIDORI_VERSION ) ,
flags ) ) ;
2012-03-05 20:53:29 +00:00
if ( g_object_class_find_property ( gobject_class , " enable-fullscreen " ) )
g_object_class_install_property ( gobject_class ,
PROP_ENABLE_FULLSCREEN ,
g_param_spec_boolean (
" enable-fullscreen " ,
" Enable Fullscreen " ,
" Allow experimental fullscreen API " ,
TRUE ,
flags ) ) ;
2009-11-08 20:55:36 +00:00
2008-12-23 22:15:36 +00:00
/**
2009-03-16 01:05:45 +00:00
* MidoriWebSettings : zoom - text - and - images :
*
* Whether to zoom text and images .
*
* Since : 0.1 .3
*/
g_object_class_install_property ( gobject_class ,
PROP_ZOOM_TEXT_AND_IMAGES ,
g_param_spec_boolean (
" zoom-text-and-images " ,
_ ( " Zoom Text and Images " ) ,
_ ( " Whether to zoom text and images " ) ,
FALSE ,
2010-02-10 22:37:33 +00:00
flags ) ) ;
2009-01-16 04:05:50 +00:00
2009-03-01 18:21:27 +00:00
/**
* MidoriWebSettings : find - while - typing :
*
* Whether to automatically find inline while typing something .
*
* Since : 0.1 .4
*/
g_object_class_install_property ( gobject_class ,
PROP_FIND_WHILE_TYPING ,
g_param_spec_boolean (
" find-while-typing " ,
_ ( " Find inline while typing " ) ,
_ ( " Whether to automatically find inline while typing " ) ,
2009-03-03 00:02:28 +00:00
FALSE ,
2009-03-01 18:21:27 +00:00
flags ) ) ;
2009-09-27 21:48:08 +00:00
/**
* MidoriWebSettings : kinetic - scrolling :
*
* Whether scrolling should kinetically move according to speed .
*
* Since : 0.2 .0
*/
g_object_class_install_property ( gobject_class ,
PROP_KINETIC_SCROLLING ,
g_param_spec_boolean (
" kinetic-scrolling " ,
_ ( " Kinetic scrolling " ) ,
_ ( " Whether scrolling should kinetically move according to speed " ) ,
TRUE ,
flags ) ) ;
2008-04-13 09:29:21 +00:00
g_object_class_install_property ( gobject_class ,
PROP_MAXIMUM_COOKIE_AGE ,
g_param_spec_int (
" maximum-cookie-age " ,
2011-05-16 01:19:21 +00:00
_ ( " Delete old Cookies after: " ) ,
2008-04-13 09:29:21 +00:00
_ ( " The maximum number of days to save cookies for " ) ,
0 , G_MAXINT , 30 ,
2010-02-10 22:37:33 +00:00
flags ) ) ;
2008-04-13 09:29:21 +00:00
2011-10-23 22:18:32 +00:00
/**
* MidoriWebSettings : first - party - cookies - only :
*
* Whether only first party cookies should be accepted .
* WebKitGTK + 1.1 .21 is required for this to work .
*
* Since : 0.4 .2
*/
g_object_class_install_property ( gobject_class ,
PROP_FIRST_PARTY_COOKIES_ONLY ,
g_param_spec_boolean (
" first-party-cookies-only " ,
_ ( " Only accept Cookies from sites you visit " ) ,
_ ( " Block cookies sent by third-party websites " ) ,
# ifdef HAVE_LIBSOUP_2_29_91
TRUE ,
g_object_class_find_property ( gobject_class , /* WebKitGTK+ >= 1.1.21 */
" enable-file-access-from-file-uris " ) ? flags : G_PARAM_READABLE ) ) ;
# else
FALSE ,
G_PARAM_READABLE ) ) ;
# endif
2008-04-13 09:29:21 +00:00
g_object_class_install_property ( gobject_class ,
PROP_MAXIMUM_HISTORY_AGE ,
g_param_spec_int (
" maximum-history-age " ,
2011-05-16 01:19:21 +00:00
_ ( " Delete pages from history after: " ) ,
2008-04-13 09:29:21 +00:00
_ ( " The maximum number of days to save the history for " ) ,
0 , G_MAXINT , 30 ,
2008-10-15 23:31:47 +00:00
flags ) ) ;
2008-04-13 09:29:21 +00:00
2010-04-02 18:41:39 +00:00
/**
* MidoriWebSettings : proxy - type :
*
* The type of proxy server to use .
*
* Since : 0.2 .5
*/
g_object_class_install_property ( gobject_class ,
PROP_PROXY_TYPE ,
g_param_spec_enum (
" proxy-type " ,
_ ( " Proxy server " ) ,
_ ( " The type of proxy server to use " ) ,
MIDORI_TYPE_PROXY ,
MIDORI_PROXY_AUTOMATIC ,
flags ) ) ;
2008-04-13 09:29:21 +00:00
g_object_class_install_property ( gobject_class ,
PROP_HTTP_PROXY ,
g_param_spec_string (
" http-proxy " ,
2010-04-02 18:41:39 +00:00
_ ( " HTTP Proxy Server " ) ,
2009-01-04 18:21:25 +00:00
_ ( " The proxy server used for HTTP connections " ) ,
2008-10-05 22:27:25 +00:00
NULL ,
2010-02-10 22:37:33 +00:00
flags ) ) ;
2008-12-08 22:18:14 +00:00
2011-10-24 17:53:37 +00:00
/**
* MidoriWebSettings : http - proxy - port :
*
* The proxy server port used for HTTP connections
*
* Since : 0.4 .2
*/
g_object_class_install_property ( gobject_class ,
PROP_HTTP_PROXY_PORT ,
g_param_spec_int (
" http-proxy-port " ,
_ ( " Port " ) ,
_ ( " The proxy server port used for HTTP connections " ) ,
1 , 65535 , 8080 ,
flags
) ) ;
2011-05-01 04:59:00 +00:00
# if WEBKIT_CHECK_VERSION (1, 3, 11)
/**
* MidoriWebSettings : maximum - cache - size :
*
* The maximum size of cached pages on disk .
*
* Since : 0.3 .4
*/
g_object_class_install_property ( gobject_class ,
PROP_MAXIMUM_CACHE_SIZE ,
g_param_spec_int (
" maximum-cache-size " ,
_ ( " Web Cache " ) ,
_ ( " The maximum size of cached pages on disk " ) ,
0 , G_MAXINT , 100 ,
flags ) ) ;
# endif
2008-12-08 22:18:14 +00:00
/**
* MidoriWebSettings : identify - as :
*
* What to identify as to web pages .
*
* Since : 0.1 .2
*/
g_object_class_install_property ( gobject_class ,
PROP_IDENTIFY_AS ,
g_param_spec_enum (
" identify-as " ,
2009-01-04 18:21:25 +00:00
/* i18n: This refers to an application, not the 'user agent' string */
2008-12-08 22:18:14 +00:00
_ ( " Identify as " ) ,
_ ( " What to identify as to web pages " ) ,
MIDORI_TYPE_IDENTITY ,
MIDORI_IDENT_MIDORI ,
2010-02-10 22:37:33 +00:00
flags ) ) ;
2008-12-08 22:18:14 +00:00
/**
2010-01-31 21:10:24 +00:00
* MidoriWebSettings : user - agent :
*
* The browser identification string .
*
* Since : 0.2 .3
*/
2008-12-08 22:18:14 +00:00
g_object_class_install_property ( gobject_class ,
2010-01-31 21:10:24 +00:00
PROP_USER_AGENT ,
2008-12-08 22:18:14 +00:00
g_param_spec_string (
2010-01-31 21:10:24 +00:00
" user-agent " ,
2008-12-08 22:18:14 +00:00
_ ( " Identification string " ) ,
_ ( " The application identification string " ) ,
NULL ,
2010-02-10 22:37:33 +00:00
flags ) ) ;
2008-04-13 09:29:21 +00:00
2010-01-06 23:49:41 +00:00
/**
* MidoriWebSettings : preferred - languages :
*
2010-12-05 22:14:19 +00:00
* A comma separated list of languages preferred for rendering multilingual
* webpages and spell checking .
2010-01-06 23:49:41 +00:00
*
* Since : 0.2 .3
*/
g_object_class_install_property ( gobject_class ,
PROP_PREFERRED_LANGUAGES ,
g_param_spec_string (
" preferred-languages " ,
_ ( " Preferred languages " ) ,
_ ( " A comma separated list of languages preferred for rendering multilingual webpages, for example \" de \" , \" ru,nl \" or \" en-us;q=1.0, fr-fr;q=0.667 \" " ) ,
NULL ,
2010-02-10 22:37:33 +00:00
flags ) ) ;
2010-01-06 23:49:41 +00:00
2009-05-22 21:53:54 +00:00
/**
* MidoriWebSettings : clear - private - data :
*
2010-10-17 20:48:32 +00:00
* The core data selected for deletion .
2009-05-22 21:53:54 +00:00
*
* Since : 0.1 .7
*/
g_object_class_install_property ( gobject_class ,
PROP_CLEAR_PRIVATE_DATA ,
g_param_spec_int (
" clear-private-data " ,
_ ( " Clear private data " ) ,
_ ( " The private data selected for deletion " ) ,
0 , G_MAXINT , 0 ,
flags ) ) ;
2010-10-17 20:48:32 +00:00
/**
* MidoriWebSettings : clear - data :
*
* The data selected for deletion , including extensions .
*
* Since : 0.2 .9
*/
g_object_class_install_property ( gobject_class ,
PROP_CLEAR_DATA ,
g_param_spec_string (
" clear-data " ,
_ ( " Clear data " ) ,
_ ( " The data selected for deletion " ) ,
NULL ,
flags ) ) ;
2012-02-25 23:00:14 +00:00
/**
* MidoriWebSettings : site - data - rules :
*
* Rules for accepting , denying and preserving cookies and other data .
* See midori_web_settings_get_site_data_policy ( ) for details .
*
* Since : 0.4 .4
*/
g_object_class_install_property ( gobject_class ,
PROP_SITE_DATA_RULES ,
g_param_spec_string (
" site-data-rules " ,
" Rules for accepting, denying and preserving cookies and other data " ,
" Cookies, HTML5 databases, local storage and application cache blocking " ,
NULL ,
flags ) ) ;
2011-04-17 20:29:51 +00:00
# if !WEBKIT_CHECK_VERSION (1, 3, 13)
/**
* MidoriWebSettings : enable - dns - prefetching :
*
* Whether to resolve host names in advance .
*
* Since : 0.3 .4
*/
g_object_class_install_property ( gobject_class ,
PROP_ENABLE_DNS_PREFETCHING ,
g_param_spec_boolean (
" enable-dns-prefetching " ,
" Whether to resolve host names in advance " ,
" Whether host names on a website or in bookmarks should be prefetched " ,
TRUE ,
flags ) ) ;
# endif
2011-04-14 22:49:39 +00:00
/**
* MidoriWebSettings : strip - referer :
*
* Whether to strip referrer details sent to external sites .
*
* Since : 0.3 .4
*/
g_object_class_install_property ( gobject_class ,
PROP_STRIP_REFERER ,
g_param_spec_boolean (
" strip-referer " ,
/* i18n: Reworded: Shorten details propagated when going to another page */
2011-05-15 09:35:20 +00:00
_ ( " Strip referrer details sent to websites " ) ,
2011-04-14 22:49:39 +00:00
/* i18n: Referer here is not a typo but a technical term */
_ ( " Whether the \" Referer \" header should be shortened to the hostname " ) ,
FALSE ,
flags ) ) ;
2011-10-26 19:11:50 +00:00
/**
* MidoriWebSettings : enforc - font - family :
*
* Whether to enforce user font preferences with an internal stylesheet .
*
* Since : 0.4 .2
*/
g_object_class_install_property ( gobject_class ,
PROP_ENFORCE_FONT_FAMILY ,
g_param_spec_boolean (
" enforce-font-family " ,
_ ( " Always use my font choices " ) ,
_ ( " Override fonts picked by websites with user preferences " ) ,
FALSE ,
flags ) ) ;
2011-10-30 15:26:56 +00:00
g_object_class_install_property ( gobject_class ,
PROP_USER_STYLESHEET_URI ,
g_param_spec_string (
" user-stylesheet-uri " ,
" User stylesheet URI " ,
" Load stylesheets from a local URI " ,
NULL ,
2011-11-16 23:02:06 +00:00
flags | MIDORI_PARAM_DELAY_SAVING ) ) ;
2011-11-15 22:43:14 +00:00
/**
* MidoriWebSettings : search - entry - width :
*
* Search action width in pixels
*
* Since : 0.4 .3
* */
g_object_class_install_property ( gobject_class ,
PROP_SEARCH_WIDTH ,
g_param_spec_int (
" search-width " ,
" Search action width " ,
" Search action width in pixels " ,
10 , G_MAXINT , 200 ,
2011-11-16 23:02:06 +00:00
flags | MIDORI_PARAM_DELAY_SAVING ) ) ;
2008-03-10 21:26:09 +00:00
}
2008-04-13 09:29:21 +00:00
static void
2008-10-02 22:49:16 +00:00
notify_default_encoding_cb ( GObject * object ,
GParamSpec * pspec )
2008-04-13 09:29:21 +00:00
{
2008-11-16 01:00:17 +00:00
MidoriWebSettings * web_settings ;
2009-05-14 20:26:02 +00:00
gchar * string ;
2008-11-16 01:00:17 +00:00
const gchar * encoding ;
web_settings = MIDORI_WEB_SETTINGS ( object ) ;
2008-04-13 09:29:21 +00:00
g_object_get ( object , " default-encoding " , & string , NULL ) ;
2008-11-16 01:00:17 +00:00
encoding = string ? string : " " ;
2008-04-13 09:29:21 +00:00
if ( ! strcmp ( encoding , " BIG5 " ) )
2008-06-19 18:41:43 +00:00
web_settings - > preferred_encoding = MIDORI_ENCODING_CHINESE ;
2012-05-11 21:48:47 +00:00
else if ( ! strcmp ( encoding , " GB18030 " ) )
web_settings - > preferred_encoding = MIDORI_ENCODING_CHINESE_SIMPLIFIED ;
2008-04-13 09:29:21 +00:00
else if ( ! strcmp ( encoding , " SHIFT_JIS " ) )
2008-06-19 18:41:43 +00:00
web_settings - > preferred_encoding = MIDORI_ENCODING_JAPANESE ;
2009-10-31 21:51:35 +00:00
else if ( ! strcmp ( encoding , " EUC-KR " ) )
web_settings - > preferred_encoding = MIDORI_ENCODING_KOREAN ;
2008-04-13 09:29:21 +00:00
else if ( ! strcmp ( encoding , " KOI8-R " ) )
2008-06-19 18:41:43 +00:00
web_settings - > preferred_encoding = MIDORI_ENCODING_RUSSIAN ;
2008-04-13 09:29:21 +00:00
else if ( ! strcmp ( encoding , " UTF-8 " ) )
2008-06-19 18:41:43 +00:00
web_settings - > preferred_encoding = MIDORI_ENCODING_UNICODE ;
2008-04-13 09:29:21 +00:00
else if ( ! strcmp ( encoding , " ISO-8859-1 " ) )
2008-06-19 18:41:43 +00:00
web_settings - > preferred_encoding = MIDORI_ENCODING_WESTERN ;
2008-04-13 09:29:21 +00:00
else
2008-06-19 18:41:43 +00:00
web_settings - > preferred_encoding = MIDORI_ENCODING_CUSTOM ;
2009-05-14 20:26:02 +00:00
g_free ( string ) ;
2008-04-13 09:29:21 +00:00
g_object_notify ( object , " preferred-encoding " ) ;
}
2008-03-10 21:26:09 +00:00
2011-10-27 17:27:44 +00:00
static void
notify_default_font_family_cb ( GObject * object ,
GParamSpec * pspec )
{
if ( katze_object_get_boolean ( object , " enforce-font-family " ) )
g_object_set ( object , " enforce-font-family " , TRUE , NULL ) ;
}
2008-03-10 21:26:09 +00:00
static void
midori_web_settings_init ( MidoriWebSettings * web_settings )
{
2009-03-19 17:28:50 +00:00
web_settings - > download_folder = g_strdup ( midori_get_download_dir ( ) ) ;
2008-10-05 22:27:25 +00:00
web_settings - > http_proxy = NULL ;
2009-02-22 18:29:08 +00:00
web_settings - > open_popups_in_tabs = TRUE ;
2009-09-27 21:48:08 +00:00
web_settings - > kinetic_scrolling = TRUE ;
2011-11-08 21:48:39 +00:00
web_settings - > user_stylesheet_uri = web_settings - > user_stylesheet_uri_cached = NULL ;
2011-10-26 18:36:16 +00:00
web_settings - > user_stylesheets = NULL ;
2008-10-05 22:27:25 +00:00
2011-11-17 00:50:32 +00:00
# if WEBKIT_CHECK_VERSION (1, 2, 6) && !WEBKIT_CHECK_VERSION (1, 2, 8)
/* Shadows are very slow with WebKitGTK+ 1.2.7 */
midori_web_settings_add_style ( web_settings , " box-shadow-workaround " ,
" * { -webkit-box-shadow: none !important; } " ) ;
# endif
2012-06-28 11:22:16 +00:00
# if defined (_WIN32) && WEBKIT_CHECK_VERSION (1, 7, 1) && !GTK_CHECK_VERSION (3, 0, 0)
2012-04-14 01:25:01 +00:00
/* Try to work-around black borders on native widgets and GTK+2 on Win32 */
midori_web_settings_add_style ( web_settings , " black-widgets-workaround " ,
" input[type='checkbox'] { -webkit-appearance: checkbox !important } "
" input[type='radio'] { -webkit-appearance: radio !important } "
" * { -webkit-appearance: none !important } " ) ;
# endif
2008-04-13 09:29:21 +00:00
g_signal_connect ( web_settings , " notify::default-encoding " ,
G_CALLBACK ( notify_default_encoding_cb ) , NULL ) ;
2011-10-27 17:27:44 +00:00
g_signal_connect ( web_settings , " notify::default-font-family " ,
G_CALLBACK ( notify_default_font_family_cb ) , NULL ) ;
2008-03-10 21:26:09 +00:00
}
static void
midori_web_settings_finalize ( GObject * object )
{
2009-05-14 20:26:02 +00:00
MidoriWebSettings * web_settings ;
web_settings = MIDORI_WEB_SETTINGS ( object ) ;
katze_assign ( web_settings - > toolbar_items , NULL ) ;
katze_assign ( web_settings - > homepage , NULL ) ;
katze_assign ( web_settings - > download_folder , NULL ) ;
katze_assign ( web_settings - > text_editor , NULL ) ;
katze_assign ( web_settings - > news_aggregator , NULL ) ;
katze_assign ( web_settings - > location_entry_search , NULL ) ;
katze_assign ( web_settings - > http_proxy , NULL ) ;
katze_assign ( web_settings - > ident_string , NULL ) ;
2011-10-30 15:26:56 +00:00
katze_assign ( web_settings - > user_stylesheet_uri , NULL ) ;
2011-11-08 21:48:39 +00:00
katze_assign ( web_settings - > user_stylesheet_uri_cached , NULL ) ;
2011-10-26 18:36:16 +00:00
if ( web_settings - > user_stylesheets ! = NULL )
g_hash_table_destroy ( web_settings - > user_stylesheets ) ;
2009-05-14 20:26:02 +00:00
2008-03-10 21:26:09 +00:00
G_OBJECT_CLASS ( midori_web_settings_parent_class ) - > finalize ( object ) ;
}
2012-02-25 01:06:46 +00:00
/**
* midori_web_settings_has_plugin_support :
*
* Determines if Netscape plugins are supported .
*
* Returns : % TRUE if Netscape plugins can be used
*
* Since : 0.4 .4
* */
gboolean
midori_web_settings_has_plugin_support ( void )
{
# ifdef G_OS_WIN32
return FALSE ;
# else
return g_getenv ( " MIDORI_UNARMED " ) = = NULL
& & g_strcmp0 ( g_getenv ( " MOZ_PLUGIN_PATH " ) , " / " ) ;
# endif
}
2012-02-25 23:00:14 +00:00
/**
* midori_web_settings_get_site_data_policy :
*
* Tests if @ uri may store site data .
*
* Returns : a # MidoriSiteDataPolicy
*
* Since : 0.4 .4
* */
MidoriSiteDataPolicy
midori_web_settings_get_site_data_policy ( MidoriWebSettings * settings ,
const gchar * uri )
{
2012-02-28 22:51:31 +00:00
MidoriSiteDataPolicy policy = MIDORI_SITE_DATA_UNDETERMINED ;
gchar * hostname ;
const gchar * match ;
g_return_val_if_fail ( MIDORI_IS_WEB_SETTINGS ( settings ) , policy ) ;
if ( ! ( settings - > site_data_rules & & * settings - > site_data_rules ) )
return policy ;
2012-02-25 23:00:14 +00:00
/*
* Values prefixed with " - " are always blocked
* Values prefixed with " + " are always accepted
* Values prefixed with " ! " are not cleared in Clear Private Data
* FIXME : " * " is a wildcard
* FIXME : indicate type of storage the rule applies to
* FIXME : support matching of the whole URI
* */
2012-02-28 22:51:31 +00:00
hostname = midori_uri_parse_hostname ( uri , NULL ) ;
match = strstr ( settings - > site_data_rules , hostname ? hostname : uri ) ;
2012-02-25 23:00:14 +00:00
if ( match ! = NULL & & match ! = settings - > site_data_rules )
{
const gchar * prefix = match - 1 ;
if ( * prefix = = ' - ' )
policy = MIDORI_SITE_DATA_BLOCK ;
else if ( * prefix = = ' + ' )
policy = MIDORI_SITE_DATA_ACCEPT ;
else if ( * prefix = = ' ! ' )
policy = MIDORI_SITE_DATA_PRESERVE ;
else
g_warning ( " %s: Matched with no prefix '%s' " , G_STRFUNC , match ) ;
}
2012-02-28 22:54:52 +00:00
g_free ( hostname ) ;
2012-02-25 23:00:14 +00:00
return policy ;
}
2011-05-01 04:53:08 +00:00
# if (!HAVE_OSX && defined (G_OS_UNIX)) || defined (G_OS_WIN32)
2009-06-15 23:48:39 +00:00
static gchar *
2011-10-31 02:57:51 +00:00
get_sys_name ( gchar * * architecture )
2009-06-15 23:48:39 +00:00
{
static gchar * sys_name = NULL ;
2011-10-31 02:57:51 +00:00
static gchar * sys_architecture = NULL ;
2009-06-15 23:48:39 +00:00
if ( ! sys_name )
{
2011-05-01 04:53:08 +00:00
# ifdef G_OS_WIN32
2011-05-02 00:06:21 +00:00
/* 6.1 Win7, 6.0 Vista, 5.1 XP and 5.0 Win2k */
2011-05-02 00:01:23 +00:00
guint version = g_win32_get_windows_version ( ) ;
sys_name = g_strdup_printf ( " NT %d.%d " , LOBYTE ( version ) , HIBYTE ( version ) ) ;
2011-05-01 04:53:08 +00:00
# else
2009-06-15 23:48:39 +00:00
struct utsname name ;
if ( uname ( & name ) ! = - 1 )
2011-10-31 02:57:51 +00:00
{
sys_name = g_strdup ( name . sysname ) ;
sys_architecture = g_strdup ( name . machine ) ;
}
2009-06-15 23:48:39 +00:00
else
2011-05-01 04:53:08 +00:00
sys_name = " Linux " ;
# endif
2009-06-15 23:48:39 +00:00
}
2011-10-31 02:57:51 +00:00
if ( architecture ! = NULL )
* architecture = sys_architecture ;
2009-06-15 23:48:39 +00:00
return sys_name ;
}
# endif
2011-10-31 02:57:51 +00:00
/**
* midori_web_settings_get_system_name :
* @ architecture : location of a string , or % NULL
* @ platform : location of a string , or % NULL
*
* Determines the system name , architecture and platform .
* @ architecturce can have a % NULL value .
*
* Returns : a string
*
* Since : 0.4 .2
* */
const gchar *
midori_web_settings_get_system_name ( gchar * * architecture ,
gchar * * platform )
2008-12-08 22:18:14 +00:00
{
2011-10-31 02:57:51 +00:00
if ( architecture ! = NULL )
* architecture = NULL ;
if ( platform ! = NULL )
* platform =
2011-05-01 00:03:30 +00:00
# if HAVE_HILDON
2011-05-01 04:53:08 +00:00
" Maemo; "
# elif defined (G_OS_WIN32)
2008-12-08 22:18:14 +00:00
" Windows " ;
# elif defined(GDK_WINDOWING_QUARTZ)
2011-05-01 04:53:08 +00:00
" Macintosh; " ;
2008-12-08 22:18:14 +00:00
# elif defined(GDK_WINDOWING_DIRECTFB)
2011-05-01 04:53:08 +00:00
" DirectFB; " ;
2008-12-08 22:18:14 +00:00
# else
2011-05-01 04:53:08 +00:00
" X11; " ;
2008-12-08 22:18:14 +00:00
# endif
2011-10-31 02:57:51 +00:00
return
2009-01-10 19:13:08 +00:00
# if HAVE_OSX
2010-02-20 21:28:52 +00:00
" Mac OS X " ;
2011-05-01 04:53:08 +00:00
# elif defined (G_OS_UNIX) || defined (G_OS_WIN32)
2011-10-31 02:57:51 +00:00
get_sys_name ( architecture ) ;
2008-12-08 22:18:14 +00:00
# else
2011-05-01 04:53:08 +00:00
" Linux " ;
2008-12-08 22:18:14 +00:00
# endif
2011-10-31 02:57:51 +00:00
}
2008-12-08 22:18:14 +00:00
2011-10-31 02:57:51 +00:00
static gchar *
generate_ident_string ( MidoriWebSettings * web_settings ,
MidoriIdentity identify_as )
{
2008-12-09 01:22:58 +00:00
const gchar * appname = " Midori/ "
G_STRINGIFY ( MIDORI_MAJOR_VERSION ) " . "
2010-02-20 21:28:52 +00:00
G_STRINGIFY ( MIDORI_MINOR_VERSION ) ;
2008-12-08 22:18:14 +00:00
2008-12-09 01:22:58 +00:00
const gchar * lang = pango_language_to_string ( gtk_get_default_language ( ) ) ;
2011-10-31 02:57:51 +00:00
gchar * platform ;
const gchar * os = midori_web_settings_get_system_name ( NULL , & platform ) ;
2008-12-08 22:18:14 +00:00
2009-09-18 17:35:15 +00:00
const int webcore_major = WEBKIT_USER_AGENT_MAJOR_VERSION ;
const int webcore_minor = WEBKIT_USER_AGENT_MINOR_VERSION ;
2009-08-17 17:36:22 +00:00
2011-10-09 10:20:13 +00:00
# if WEBKIT_CHECK_VERSION (1, 1, 18)
g_object_set ( web_settings , " enable-site-specific-quirks " ,
identify_as ! = MIDORI_IDENT_GENUINE , NULL ) ;
# endif
2008-12-08 22:18:14 +00:00
switch ( identify_as )
{
2011-10-09 10:20:13 +00:00
case MIDORI_IDENT_GENUINE :
2011-05-01 04:53:08 +00:00
return g_strdup_printf ( " Mozilla/5.0 (%s %s) AppleWebKit/%d.%d+ %s " ,
2011-05-01 00:03:30 +00:00
platform , os , webcore_major , webcore_minor , appname ) ;
2012-06-21 15:24:19 +00:00
case MIDORI_IDENT_MIDORI :
2012-06-21 15:23:12 +00:00
case MIDORI_IDENT_CHROME :
return g_strdup_printf ( " Mozilla/5.0 (%s %s) AppleWebKit/%d.%d "
" (KHTML, like Gecko) Chrome/18.0.1025.133 Safari/%d.%d %s " ,
platform , os , webcore_major , webcore_minor , webcore_major , webcore_minor , appname ) ;
2008-12-08 22:18:14 +00:00
case MIDORI_IDENT_SAFARI :
2011-05-01 04:53:08 +00:00
return g_strdup_printf ( " Mozilla/5.0 (Macintosh; U; Intel Mac OS X; %s) "
2011-04-30 22:59:58 +00:00
" AppleWebKit/%d+ (KHTML, like Gecko) Version/5.0 Safari/%d.%d+ %s " ,
2011-05-01 04:53:08 +00:00
lang , webcore_major , webcore_major , webcore_minor , appname ) ;
2009-09-14 15:52:31 +00:00
case MIDORI_IDENT_IPHONE :
2011-05-01 04:53:08 +00:00
return g_strdup_printf ( " Mozilla/5.0 (iPhone; U; CPU like Mac OS X; %s) "
" AppleWebKit/532+ (KHTML, like Gecko) Version/3.0 Mobile/1A538b Safari/419.3 %s " ,
lang , appname ) ;
2008-12-08 22:18:14 +00:00
case MIDORI_IDENT_FIREFOX :
2011-05-01 04:53:08 +00:00
return g_strdup_printf ( " Mozilla/5.0 (%s %s; rv:2.0.1) Gecko/20100101 Firefox/4.0.1 %s " ,
platform , os , appname ) ;
2008-12-08 22:18:14 +00:00
case MIDORI_IDENT_EXPLORER :
2011-05-01 04:53:08 +00:00
return g_strdup_printf ( " Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; %s) %s " ,
2008-12-08 22:18:14 +00:00
lang , appname ) ;
default :
return g_strdup_printf ( " %s " , appname ) ;
}
}
2011-11-08 21:48:39 +00:00
static void
midori_web_settings_process_stylesheets ( MidoriWebSettings * settings ,
gint delta_len ) ;
static void
base64_space_pad ( gchar * base64 ,
guint len ) ;
2008-03-10 21:26:09 +00:00
static void
midori_web_settings_set_property ( GObject * object ,
guint prop_id ,
const GValue * value ,
GParamSpec * pspec )
{
MidoriWebSettings * web_settings = MIDORI_WEB_SETTINGS ( object ) ;
switch ( prop_id )
{
2008-04-16 23:38:22 +00:00
case PROP_REMEMBER_LAST_WINDOW_SIZE :
2008-06-19 18:41:43 +00:00
web_settings - > remember_last_window_size = g_value_get_boolean ( value ) ;
2008-04-16 23:38:22 +00:00
break ;
case PROP_LAST_WINDOW_WIDTH :
2008-06-19 18:41:43 +00:00
web_settings - > last_window_width = g_value_get_int ( value ) ;
2008-04-16 23:38:22 +00:00
break ;
case PROP_LAST_WINDOW_HEIGHT :
2008-06-19 18:41:43 +00:00
web_settings - > last_window_height = g_value_get_int ( value ) ;
2008-04-16 23:38:22 +00:00
break ;
2009-01-20 22:27:19 +00:00
case PROP_LAST_WINDOW_STATE :
web_settings - > last_window_state = g_value_get_enum ( value ) ;
break ;
2008-04-16 23:38:22 +00:00
case PROP_LAST_PANEL_POSITION :
2008-06-19 18:41:43 +00:00
web_settings - > last_panel_position = g_value_get_int ( value ) ;
2008-04-16 23:38:22 +00:00
break ;
case PROP_LAST_PANEL_PAGE :
2008-06-19 18:41:43 +00:00
web_settings - > last_panel_page = g_value_get_int ( value ) ;
2008-04-16 23:38:22 +00:00
break ;
case PROP_LAST_WEB_SEARCH :
2008-06-19 18:41:43 +00:00
web_settings - > last_web_search = g_value_get_int ( value ) ;
2008-04-16 23:38:22 +00:00
break ;
2012-07-11 19:28:10 +00:00
case PROP_LAST_INSPECTOR_ATTACHED :
web_settings - > last_inspector_attached = g_value_get_boolean ( value ) ;
break ;
2008-04-16 23:38:22 +00:00
2008-10-12 20:09:49 +00:00
case PROP_SHOW_MENUBAR :
web_settings - > show_menubar = g_value_get_boolean ( value ) ;
break ;
2008-04-16 23:38:22 +00:00
case PROP_SHOW_NAVIGATIONBAR :
2008-06-19 18:41:43 +00:00
web_settings - > show_navigationbar = g_value_get_boolean ( value ) ;
2008-04-16 23:38:22 +00:00
break ;
case PROP_SHOW_BOOKMARKBAR :
2008-06-19 18:41:43 +00:00
web_settings - > show_bookmarkbar = g_value_get_boolean ( value ) ;
2008-04-16 23:38:22 +00:00
break ;
case PROP_SHOW_PANEL :
2008-06-19 18:41:43 +00:00
web_settings - > show_panel = g_value_get_boolean ( value ) ;
2008-04-16 23:38:22 +00:00
break ;
case PROP_SHOW_STATUSBAR :
2008-06-19 18:41:43 +00:00
web_settings - > show_statusbar = g_value_get_boolean ( value ) ;
2008-04-16 23:38:22 +00:00
break ;
case PROP_TOOLBAR_STYLE :
2008-06-19 18:41:43 +00:00
web_settings - > toolbar_style = g_value_get_enum ( value ) ;
2008-04-16 23:38:22 +00:00
break ;
2008-10-12 16:14:57 +00:00
case PROP_TOOLBAR_ITEMS :
katze_assign ( web_settings - > toolbar_items , g_value_dup_string ( value ) ) ;
break ;
2008-10-21 22:01:01 +00:00
case PROP_COMPACT_SIDEPANEL :
web_settings - > compact_sidepanel = g_value_get_boolean ( value ) ;
2008-04-16 23:38:22 +00:00
break ;
2009-02-22 02:51:10 +00:00
case PROP_RIGHT_ALIGN_SIDEPANEL :
web_settings - > right_align_sidepanel = g_value_get_boolean ( value ) ;
break ;
2009-11-28 22:53:49 +00:00
case PROP_OPEN_PANELS_IN_WINDOWS :
web_settings - > open_panels_in_windows = g_value_get_boolean ( value ) ;
break ;
2008-04-16 23:38:22 +00:00
2008-04-13 09:29:21 +00:00
case PROP_LOAD_ON_STARTUP :
2008-06-19 18:41:43 +00:00
web_settings - > load_on_startup = g_value_get_enum ( value ) ;
2008-04-13 09:29:21 +00:00
break ;
case PROP_HOMEPAGE :
2008-06-19 18:41:43 +00:00
katze_assign ( web_settings - > homepage , g_value_dup_string ( value ) ) ;
2008-04-13 09:29:21 +00:00
break ;
2009-01-12 02:17:37 +00:00
case PROP_SHOW_CRASH_DIALOG :
web_settings - > show_crash_dialog = g_value_get_boolean ( value ) ;
break ;
2008-04-13 09:29:21 +00:00
case PROP_DOWNLOAD_FOLDER :
2008-06-19 18:41:43 +00:00
katze_assign ( web_settings - > download_folder , g_value_dup_string ( value ) ) ;
2008-04-13 09:29:21 +00:00
break ;
2008-10-20 19:32:25 +00:00
case PROP_TEXT_EDITOR :
katze_assign ( web_settings - > text_editor , g_value_dup_string ( value ) ) ;
break ;
2009-04-14 17:44:48 +00:00
case PROP_NEWS_AGGREGATOR :
katze_assign ( web_settings - > news_aggregator , g_value_dup_string ( value ) ) ;
break ;
2008-04-13 09:29:21 +00:00
case PROP_LOCATION_ENTRY_SEARCH :
2008-06-19 18:41:43 +00:00
katze_assign ( web_settings - > location_entry_search , g_value_dup_string ( value ) ) ;
2008-04-13 09:29:21 +00:00
break ;
case PROP_PREFERRED_ENCODING :
2008-06-19 18:41:43 +00:00
web_settings - > preferred_encoding = g_value_get_enum ( value ) ;
switch ( web_settings - > preferred_encoding )
2008-04-13 09:29:21 +00:00
{
case MIDORI_ENCODING_CHINESE :
g_object_set ( object , " default-encoding " , " BIG5 " , NULL ) ;
break ;
2012-05-11 21:48:47 +00:00
case MIDORI_ENCODING_CHINESE_SIMPLIFIED :
g_object_set ( object , " default-encoding " , " GB18030 " , NULL ) ;
break ;
2008-04-13 09:29:21 +00:00
case MIDORI_ENCODING_JAPANESE :
g_object_set ( object , " default-encoding " , " SHIFT_JIS " , NULL ) ;
break ;
2009-10-31 21:51:35 +00:00
case MIDORI_ENCODING_KOREAN :
g_object_set ( object , " default-encoding " , " EUC-KR " , NULL ) ;
break ;
2008-04-13 09:29:21 +00:00
case MIDORI_ENCODING_RUSSIAN :
g_object_set ( object , " default-encoding " , " KOI8-R " , NULL ) ;
break ;
case MIDORI_ENCODING_UNICODE :
g_object_set ( object , " default-encoding " , " UTF-8 " , NULL ) ;
break ;
case MIDORI_ENCODING_WESTERN :
g_object_set ( object , " default-encoding " , " ISO-8859-1 " , NULL ) ;
break ;
case MIDORI_ENCODING_CUSTOM :
g_object_set ( object , " default-encoding " , " " , NULL ) ;
}
break ;
2008-10-21 22:01:01 +00:00
case PROP_ALWAYS_SHOW_TABBAR :
web_settings - > always_show_tabbar = g_value_get_boolean ( value ) ;
break ;
2008-04-13 09:29:21 +00:00
case PROP_CLOSE_BUTTONS_ON_TABS :
2008-06-19 18:41:43 +00:00
web_settings - > close_buttons_on_tabs = g_value_get_boolean ( value ) ;
2008-04-13 09:29:21 +00:00
break ;
case PROP_OPEN_NEW_PAGES_IN :
2008-06-19 18:41:43 +00:00
web_settings - > open_new_pages_in = g_value_get_enum ( value ) ;
2008-04-13 09:29:21 +00:00
break ;
case PROP_MIDDLE_CLICK_OPENS_SELECTION :
2008-06-19 18:41:43 +00:00
web_settings - > middle_click_opens_selection = g_value_get_boolean ( value ) ;
2008-04-13 09:29:21 +00:00
break ;
case PROP_OPEN_TABS_IN_THE_BACKGROUND :
2008-06-19 18:41:43 +00:00
web_settings - > open_tabs_in_the_background = g_value_get_boolean ( value ) ;
2008-04-13 09:29:21 +00:00
break ;
2008-08-15 18:38:27 +00:00
case PROP_OPEN_TABS_NEXT_TO_CURRENT :
web_settings - > open_tabs_next_to_current = g_value_get_boolean ( value ) ;
break ;
2008-04-13 09:29:21 +00:00
case PROP_OPEN_POPUPS_IN_TABS :
2008-06-19 18:41:43 +00:00
web_settings - > open_popups_in_tabs = g_value_get_boolean ( value ) ;
2008-04-13 09:29:21 +00:00
break ;
2009-11-08 20:55:36 +00:00
case PROP_AUTO_LOAD_IMAGES :
g_object_set ( web_settings , " WebKitWebSettings::auto-load-images " ,
g_value_get_boolean ( value ) , NULL ) ;
break ;
case PROP_ENABLE_SCRIPTS :
g_object_set ( web_settings , " WebKitWebSettings::enable-scripts " ,
g_value_get_boolean ( value ) , NULL ) ;
break ;
case PROP_ENABLE_PLUGINS :
2010-11-18 19:52:53 +00:00
g_object_set ( web_settings ,
" WebKitWebSettings::enable-plugins " , g_value_get_boolean ( value ) ,
# if WEBKIT_CHECK_VERSION (1, 1, 22)
" enable-java-applet " , g_value_get_boolean ( value ) ,
# endif
NULL ) ;
2009-11-08 20:55:36 +00:00
break ;
2009-12-23 15:24:51 +00:00
case PROP_ENABLE_DEVELOPER_EXTRAS :
g_object_set ( web_settings , " WebKitWebSettings::enable-developer-extras " ,
g_value_get_boolean ( value ) , NULL ) ;
break ;
2010-12-13 19:11:50 +00:00
case PROP_ENABLE_SPELL_CHECKING :
g_object_set ( web_settings , " WebKitWebSettings::enable-spell-checking " ,
g_value_get_boolean ( value ) , NULL ) ;
break ;
2010-01-30 16:15:28 +00:00
case PROP_ENABLE_HTML5_DATABASE :
g_object_set ( web_settings , " WebKitWebSettings::enable-html5-database " ,
g_value_get_boolean ( value ) , NULL ) ;
break ;
case PROP_ENABLE_HTML5_LOCAL_STORAGE :
g_object_set ( web_settings , " WebKitWebSettings::enable-html5-local-storage " ,
g_value_get_boolean ( value ) , NULL ) ;
break ;
case PROP_ENABLE_OFFLINE_WEB_APPLICATION_CACHE :
g_object_set ( web_settings , " WebKitWebSettings::enable-offline-web-application-cache " ,
g_value_get_boolean ( value ) , NULL ) ;
break ;
2009-12-31 22:24:02 +00:00
# if WEBKIT_CHECK_VERSION (1, 1, 18)
case PROP_ENABLE_PAGE_CACHE :
g_object_set ( web_settings , " WebKitWebSettings::enable-page-cache " ,
g_value_get_boolean ( value ) , NULL ) ;
break ;
# endif
2009-01-16 04:05:50 +00:00
case PROP_ZOOM_TEXT_AND_IMAGES :
web_settings - > zoom_text_and_images = g_value_get_boolean ( value ) ;
break ;
2009-03-01 18:21:27 +00:00
case PROP_FIND_WHILE_TYPING :
web_settings - > find_while_typing = g_value_get_boolean ( value ) ;
break ;
2009-09-27 21:48:08 +00:00
case PROP_KINETIC_SCROLLING :
web_settings - > kinetic_scrolling = g_value_get_boolean ( value ) ;
break ;
2008-04-13 09:29:21 +00:00
case PROP_MAXIMUM_COOKIE_AGE :
2008-06-19 18:41:43 +00:00
web_settings - > maximum_cookie_age = g_value_get_int ( value ) ;
2008-04-13 09:29:21 +00:00
break ;
2011-10-23 22:18:32 +00:00
case PROP_FIRST_PARTY_COOKIES_ONLY :
web_settings - > first_party_cookies_only = g_value_get_boolean ( value ) ;
break ;
2008-04-13 09:29:21 +00:00
case PROP_MAXIMUM_HISTORY_AGE :
2008-06-19 18:41:43 +00:00
web_settings - > maximum_history_age = g_value_get_int ( value ) ;
2008-04-13 09:29:21 +00:00
break ;
2010-04-02 18:41:39 +00:00
case PROP_PROXY_TYPE :
web_settings - > proxy_type = g_value_get_enum ( value ) ;
break ;
2008-04-13 09:29:21 +00:00
case PROP_HTTP_PROXY :
2008-06-19 18:41:43 +00:00
katze_assign ( web_settings - > http_proxy , g_value_dup_string ( value ) ) ;
2008-04-13 09:29:21 +00:00
break ;
2011-10-24 17:53:37 +00:00
case PROP_HTTP_PROXY_PORT :
web_settings - > http_proxy_port = g_value_get_int ( value ) ;
break ;
2011-05-01 04:59:00 +00:00
# if WEBKIT_CHECK_VERSION (1, 3, 11)
case PROP_MAXIMUM_CACHE_SIZE :
web_settings - > maximum_cache_size = g_value_get_int ( value ) ;
break ;
# endif
2008-12-08 22:18:14 +00:00
case PROP_IDENTIFY_AS :
web_settings - > identify_as = g_value_get_enum ( value ) ;
if ( web_settings - > identify_as ! = MIDORI_IDENT_CUSTOM )
{
2011-10-09 10:20:13 +00:00
gchar * string = generate_ident_string ( web_settings , web_settings - > identify_as ) ;
2009-04-12 12:28:11 +00:00
katze_assign ( web_settings - > ident_string , string ) ;
2009-08-01 21:24:32 +00:00
g_object_set ( web_settings , " user-agent " , string , NULL ) ;
2008-12-08 22:18:14 +00:00
}
break ;
2010-01-31 21:10:24 +00:00
case PROP_USER_AGENT :
2009-06-12 21:17:34 +00:00
if ( web_settings - > identify_as = = MIDORI_IDENT_CUSTOM )
katze_assign ( web_settings - > ident_string , g_value_dup_string ( value ) ) ;
2010-02-01 22:42:35 +00:00
g_object_set ( web_settings , " WebKitWebSettings::user-agent " ,
web_settings - > ident_string , NULL ) ;
2008-12-08 22:18:14 +00:00
break ;
2010-01-06 23:49:41 +00:00
case PROP_PREFERRED_LANGUAGES :
katze_assign ( web_settings - > http_accept_language , g_value_dup_string ( value ) ) ;
2010-12-05 22:14:19 +00:00
g_object_set ( web_settings , " spell-checking-languages " ,
web_settings - > http_accept_language , NULL ) ;
2010-01-06 23:49:41 +00:00
break ;
2009-05-22 21:53:54 +00:00
case PROP_CLEAR_PRIVATE_DATA :
web_settings - > clear_private_data = g_value_get_int ( value ) ;
break ;
2010-10-17 20:48:32 +00:00
case PROP_CLEAR_DATA :
katze_assign ( web_settings - > clear_data , g_value_dup_string ( value ) ) ;
break ;
2012-02-25 23:00:14 +00:00
case PROP_SITE_DATA_RULES :
katze_assign ( web_settings - > site_data_rules , g_value_dup_string ( value ) ) ;
break ;
2011-04-17 20:29:51 +00:00
# if !WEBKIT_CHECK_VERSION (1, 3, 13)
case PROP_ENABLE_DNS_PREFETCHING :
web_settings - > enable_dns_prefetching = g_value_get_boolean ( value ) ;
break ;
# endif
2011-04-14 22:49:39 +00:00
case PROP_STRIP_REFERER :
web_settings - > strip_referer = g_value_get_boolean ( value ) ;
break ;
2011-10-26 19:11:50 +00:00
case PROP_ENFORCE_FONT_FAMILY :
if ( ( web_settings - > enforce_font_family = g_value_get_boolean ( value ) ) )
{
gchar * font_family = katze_object_get_string ( web_settings ,
" default-font-family " ) ;
2011-11-16 00:12:04 +00:00
gchar * monospace = katze_object_get_string ( web_settings ,
" monospace-font-family " ) ;
gchar * css = g_strdup_printf ( " body * { font-family: %s !important; } \
code , code * , pre , pre * , blockquote , blockquote * , \
input , textarea { font - family : % s ! important ; } " ,
font_family , monospace ) ;
2011-10-26 19:11:50 +00:00
midori_web_settings_add_style ( web_settings , " enforce-font-family " , css ) ;
g_free ( font_family ) ;
2011-11-16 00:12:04 +00:00
g_free ( monospace ) ;
2011-10-26 19:11:50 +00:00
g_free ( css ) ;
}
else
midori_web_settings_remove_style ( web_settings , " enforce-font-family " ) ;
break ;
2011-08-09 17:41:20 +00:00
case PROP_FLASH_WINDOW_ON_BG_TABS :
web_settings - > flash_window_on_bg_tabs = g_value_get_boolean ( value ) ;
break ;
2012-01-03 02:28:22 +00:00
case PROP_ENABLE_WEBGL :
g_object_set ( web_settings , " WebKitWebSettings::enable-webgl " ,
g_value_get_boolean ( value ) , NULL ) ;
break ;
2012-03-05 20:53:29 +00:00
case PROP_ENABLE_FULLSCREEN :
g_object_set ( web_settings , " WebKitWebSettings::enable-fullscreen " ,
g_value_get_boolean ( value ) , NULL ) ;
break ;
2011-10-30 15:26:56 +00:00
case PROP_USER_STYLESHEET_URI :
{
2011-11-08 21:48:39 +00:00
gint old_len = web_settings - > user_stylesheet_uri_cached
? strlen ( web_settings - > user_stylesheet_uri_cached ) : 0 ;
gint new_len = 0 ;
if ( ( web_settings - > user_stylesheet_uri = g_value_dup_string ( value ) ) )
{
gchar * import = g_strdup_printf ( " @import url( \" %s \" ); " ,
web_settings - > user_stylesheet_uri ) ;
gchar * encoded = g_base64_encode ( ( const guchar * ) import , strlen ( import ) ) ;
new_len = strlen ( encoded ) ;
base64_space_pad ( encoded , new_len ) ;
g_free ( import ) ;
katze_assign ( web_settings - > user_stylesheet_uri_cached , encoded ) ;
}
/* Make original user-stylesheet-uri available to main.c */
g_object_set_data ( G_OBJECT ( web_settings ) , " user-stylesheet-uri " ,
web_settings - > user_stylesheet_uri ) ;
midori_web_settings_process_stylesheets ( web_settings , new_len - old_len ) ;
2011-10-30 15:26:56 +00:00
}
break ;
2011-11-15 22:43:14 +00:00
case PROP_SEARCH_WIDTH :
web_settings - > search_width = g_value_get_int ( value ) ;
break ;
2008-03-10 21:26:09 +00:00
default :
G_OBJECT_WARN_INVALID_PROPERTY_ID ( object , prop_id , pspec ) ;
break ;
}
}
static void
midori_web_settings_get_property ( GObject * object ,
guint prop_id ,
GValue * value ,
GParamSpec * pspec )
{
MidoriWebSettings * web_settings = MIDORI_WEB_SETTINGS ( object ) ;
switch ( prop_id )
{
2008-04-16 23:38:22 +00:00
case PROP_REMEMBER_LAST_WINDOW_SIZE :
2008-06-19 18:41:43 +00:00
g_value_set_boolean ( value , web_settings - > remember_last_window_size ) ;
2008-04-13 09:29:21 +00:00
break ;
2008-04-16 23:38:22 +00:00
case PROP_LAST_WINDOW_WIDTH :
2008-06-19 18:41:43 +00:00
g_value_set_int ( value , web_settings - > last_window_width ) ;
2008-04-13 09:29:21 +00:00
break ;
2008-04-16 23:38:22 +00:00
case PROP_LAST_WINDOW_HEIGHT :
2008-06-19 18:41:43 +00:00
g_value_set_int ( value , web_settings - > last_window_height ) ;
2008-04-13 09:29:21 +00:00
break ;
2009-01-20 22:27:19 +00:00
case PROP_LAST_WINDOW_STATE :
g_value_set_enum ( value , web_settings - > last_window_state ) ;
break ;
2008-04-16 23:38:22 +00:00
case PROP_LAST_PANEL_POSITION :
2008-06-19 18:41:43 +00:00
g_value_set_int ( value , web_settings - > last_panel_position ) ;
2008-04-13 09:29:21 +00:00
break ;
2008-04-16 23:38:22 +00:00
case PROP_LAST_PANEL_PAGE :
2008-06-19 18:41:43 +00:00
g_value_set_int ( value , web_settings - > last_panel_page ) ;
2008-04-13 09:29:21 +00:00
break ;
2008-04-16 23:38:22 +00:00
case PROP_LAST_WEB_SEARCH :
2008-06-19 18:41:43 +00:00
g_value_set_int ( value , web_settings - > last_web_search ) ;
2008-04-16 23:38:22 +00:00
break ;
2012-07-11 19:28:10 +00:00
case PROP_LAST_INSPECTOR_ATTACHED :
g_value_set_boolean ( value , web_settings - > last_inspector_attached ) ;
break ;
2008-04-16 23:38:22 +00:00
2008-10-12 20:09:49 +00:00
case PROP_SHOW_MENUBAR :
g_value_set_boolean ( value , web_settings - > show_menubar ) ;
break ;
2008-04-16 23:38:22 +00:00
case PROP_SHOW_NAVIGATIONBAR :
2008-06-19 18:41:43 +00:00
g_value_set_boolean ( value , web_settings - > show_navigationbar ) ;
2008-04-16 23:38:22 +00:00
break ;
case PROP_SHOW_BOOKMARKBAR :
2008-06-19 18:41:43 +00:00
g_value_set_boolean ( value , web_settings - > show_bookmarkbar ) ;
2008-04-16 23:38:22 +00:00
break ;
case PROP_SHOW_PANEL :
2008-06-19 18:41:43 +00:00
g_value_set_boolean ( value , web_settings - > show_panel ) ;
2008-04-16 23:38:22 +00:00
break ;
case PROP_SHOW_STATUSBAR :
2008-06-19 18:41:43 +00:00
g_value_set_boolean ( value , web_settings - > show_statusbar ) ;
2008-04-13 09:29:21 +00:00
break ;
case PROP_TOOLBAR_STYLE :
2008-06-19 18:41:43 +00:00
g_value_set_enum ( value , web_settings - > toolbar_style ) ;
2008-04-13 09:29:21 +00:00
break ;
2008-10-12 16:14:57 +00:00
case PROP_TOOLBAR_ITEMS :
g_value_set_string ( value , web_settings - > toolbar_items ) ;
break ;
2008-10-21 22:01:01 +00:00
case PROP_COMPACT_SIDEPANEL :
g_value_set_boolean ( value , web_settings - > compact_sidepanel ) ;
2008-04-13 09:29:21 +00:00
break ;
2009-02-22 02:51:10 +00:00
case PROP_RIGHT_ALIGN_SIDEPANEL :
g_value_set_boolean ( value , web_settings - > right_align_sidepanel ) ;
break ;
2009-11-28 22:53:49 +00:00
case PROP_OPEN_PANELS_IN_WINDOWS :
g_value_set_boolean ( value , web_settings - > open_panels_in_windows ) ;
break ;
2008-04-13 09:29:21 +00:00
2008-04-16 23:38:22 +00:00
case PROP_LOAD_ON_STARTUP :
2008-06-19 18:41:43 +00:00
g_value_set_enum ( value , web_settings - > load_on_startup ) ;
2008-04-16 23:38:22 +00:00
break ;
case PROP_HOMEPAGE :
2008-06-19 18:41:43 +00:00
g_value_set_string ( value , web_settings - > homepage ) ;
2008-04-16 23:38:22 +00:00
break ;
2009-01-12 02:17:37 +00:00
case PROP_SHOW_CRASH_DIALOG :
g_value_set_boolean ( value , web_settings - > show_crash_dialog ) ;
break ;
2008-04-16 23:38:22 +00:00
case PROP_DOWNLOAD_FOLDER :
2008-06-19 18:41:43 +00:00
g_value_set_string ( value , web_settings - > download_folder ) ;
2008-04-16 23:38:22 +00:00
break ;
2008-10-20 19:32:25 +00:00
case PROP_TEXT_EDITOR :
g_value_set_string ( value , web_settings - > text_editor ) ;
break ;
2009-04-14 17:44:48 +00:00
case PROP_NEWS_AGGREGATOR :
g_value_set_string ( value , web_settings - > news_aggregator ) ;
break ;
2008-04-16 23:38:22 +00:00
case PROP_LOCATION_ENTRY_SEARCH :
2008-06-19 18:41:43 +00:00
g_value_set_string ( value , web_settings - > location_entry_search ) ;
2008-04-16 23:38:22 +00:00
break ;
case PROP_PREFERRED_ENCODING :
2008-06-19 18:41:43 +00:00
g_value_set_enum ( value , web_settings - > preferred_encoding ) ;
2008-04-16 23:38:22 +00:00
break ;
2008-10-21 22:01:01 +00:00
case PROP_ALWAYS_SHOW_TABBAR :
g_value_set_boolean ( value , web_settings - > always_show_tabbar ) ;
break ;
2008-04-13 09:29:21 +00:00
case PROP_CLOSE_BUTTONS_ON_TABS :
2008-06-19 18:41:43 +00:00
g_value_set_boolean ( value , web_settings - > close_buttons_on_tabs ) ;
2008-04-13 09:29:21 +00:00
break ;
2011-02-17 19:55:12 +00:00
case PROP_CLOSE_BUTTONS_LEFT :
2011-05-01 19:57:54 +00:00
# if HAVE_OSX
g_value_set_boolean ( value , TRUE ) ;
2011-05-01 20:27:50 +00:00
# elif defined (G_OS_WIN32)
g_value_set_boolean ( value , FALSE ) ;
2011-05-01 19:57:54 +00:00
# else
if ( ! web_settings - > close_buttons_left )
{
/* Look for close button in layout specified in index.theme */
GdkScreen * screen = gdk_screen_get_default ( ) ;
GtkSettings * settings = gtk_settings_get_for_screen ( screen ) ;
gchar * theme = katze_object_get_string ( settings , " gtk-theme-name " ) ;
2011-11-28 22:37:34 +00:00
gchar * theme_file = g_build_filename ( " themes " , theme , " index.theme " , NULL ) ;
gchar * filename = sokoke_find_data_filename ( theme_file , FALSE ) ;
g_free ( theme_file ) ;
2011-05-01 19:57:54 +00:00
web_settings - > close_buttons_left = 1 ;
if ( g_access ( filename , F_OK ) ! = 0 )
katze_assign ( filename ,
g_build_filename ( g_get_home_dir ( ) , " .themes " ,
theme , " index.theme " , NULL ) ) ;
g_free ( theme ) ;
if ( g_access ( filename , F_OK ) = = 0 )
{
GKeyFile * keyfile = g_key_file_new ( ) ;
gchar * button_layout ;
g_key_file_load_from_file ( keyfile , filename , 0 , NULL ) ;
button_layout = g_key_file_get_string ( keyfile ,
" X-GNOME-Metatheme " , " ButtonLayout " , NULL ) ;
if ( button_layout & & strstr ( button_layout , " close: " ) )
web_settings - > close_buttons_left = 2 ;
g_free ( button_layout ) ;
g_key_file_free ( keyfile ) ;
}
g_free ( filename ) ;
}
g_value_set_boolean ( value , web_settings - > close_buttons_left = = 2 ) ;
# endif
2011-02-17 19:55:12 +00:00
break ;
2008-04-13 09:29:21 +00:00
case PROP_OPEN_NEW_PAGES_IN :
2008-06-19 18:41:43 +00:00
g_value_set_enum ( value , web_settings - > open_new_pages_in ) ;
2008-04-13 09:29:21 +00:00
break ;
case PROP_MIDDLE_CLICK_OPENS_SELECTION :
2008-06-19 18:41:43 +00:00
g_value_set_boolean ( value , web_settings - > middle_click_opens_selection ) ;
2008-04-13 09:29:21 +00:00
break ;
case PROP_OPEN_TABS_IN_THE_BACKGROUND :
2008-06-19 18:41:43 +00:00
g_value_set_boolean ( value , web_settings - > open_tabs_in_the_background ) ;
2008-04-13 09:29:21 +00:00
break ;
2008-08-15 18:38:27 +00:00
case PROP_OPEN_TABS_NEXT_TO_CURRENT :
g_value_set_boolean ( value , web_settings - > open_tabs_next_to_current ) ;
break ;
2008-04-13 09:29:21 +00:00
case PROP_OPEN_POPUPS_IN_TABS :
2008-06-19 18:41:43 +00:00
g_value_set_boolean ( value , web_settings - > open_popups_in_tabs ) ;
2008-04-13 09:29:21 +00:00
break ;
2009-11-08 20:55:36 +00:00
case PROP_AUTO_LOAD_IMAGES :
g_value_set_boolean ( value , katze_object_get_boolean ( web_settings ,
" WebKitWebSettings::auto-load-images " ) ) ;
break ;
case PROP_ENABLE_SCRIPTS :
g_value_set_boolean ( value , katze_object_get_boolean ( web_settings ,
" WebKitWebSettings::enable-scripts " ) ) ;
break ;
case PROP_ENABLE_PLUGINS :
g_value_set_boolean ( value , katze_object_get_boolean ( web_settings ,
" WebKitWebSettings::enable-plugins " ) ) ;
break ;
2009-12-23 15:24:51 +00:00
case PROP_ENABLE_DEVELOPER_EXTRAS :
g_value_set_boolean ( value , katze_object_get_boolean ( web_settings ,
" WebKitWebSettings::enable-developer-extras " ) ) ;
break ;
2010-12-13 19:11:50 +00:00
case PROP_ENABLE_SPELL_CHECKING :
g_value_set_boolean ( value , katze_object_get_boolean ( web_settings ,
" WebKitWebSettings::enable-spell-checking " ) ) ;
break ;
2010-01-30 16:15:28 +00:00
case PROP_ENABLE_HTML5_DATABASE :
g_value_set_boolean ( value , katze_object_get_boolean ( web_settings ,
" WebKitWebSettings::enable-html5-database " ) ) ;
break ;
case PROP_ENABLE_HTML5_LOCAL_STORAGE :
g_value_set_boolean ( value , katze_object_get_boolean ( web_settings ,
" WebKitWebSettings::enable-html5-local-storage " ) ) ;
break ;
case PROP_ENABLE_OFFLINE_WEB_APPLICATION_CACHE :
g_value_set_boolean ( value , katze_object_get_boolean ( web_settings ,
" WebKitWebSettings::enable-offline-web-application-cache " ) ) ;
break ;
2009-12-31 22:24:02 +00:00
# if WEBKIT_CHECK_VERSION (1, 1, 18)
case PROP_ENABLE_PAGE_CACHE :
g_value_set_boolean ( value , katze_object_get_boolean ( web_settings ,
" WebKitWebSettings::enable-page-cache " ) ) ;
break ;
# endif
2009-01-16 04:05:50 +00:00
case PROP_ZOOM_TEXT_AND_IMAGES :
g_value_set_boolean ( value , web_settings - > zoom_text_and_images ) ;
break ;
2009-03-01 18:21:27 +00:00
case PROP_FIND_WHILE_TYPING :
g_value_set_boolean ( value , web_settings - > find_while_typing ) ;
break ;
2009-09-27 21:48:08 +00:00
case PROP_KINETIC_SCROLLING :
g_value_set_boolean ( value , web_settings - > kinetic_scrolling ) ;
break ;
2008-04-13 09:29:21 +00:00
case PROP_MAXIMUM_COOKIE_AGE :
2008-06-19 18:41:43 +00:00
g_value_set_int ( value , web_settings - > maximum_cookie_age ) ;
2008-04-13 09:29:21 +00:00
break ;
2011-10-23 22:18:32 +00:00
case PROP_FIRST_PARTY_COOKIES_ONLY :
g_value_set_boolean ( value , web_settings - > first_party_cookies_only ) ;
break ;
2008-04-13 09:29:21 +00:00
case PROP_MAXIMUM_HISTORY_AGE :
2008-06-19 18:41:43 +00:00
g_value_set_int ( value , web_settings - > maximum_history_age ) ;
2008-04-13 09:29:21 +00:00
break ;
2010-04-02 18:41:39 +00:00
case PROP_PROXY_TYPE :
g_value_set_enum ( value , web_settings - > proxy_type ) ;
break ;
2008-04-13 09:29:21 +00:00
case PROP_HTTP_PROXY :
2008-06-19 18:41:43 +00:00
g_value_set_string ( value , web_settings - > http_proxy ) ;
2008-03-10 21:26:09 +00:00
break ;
2011-10-24 17:53:37 +00:00
case PROP_HTTP_PROXY_PORT :
g_value_set_int ( value , web_settings - > http_proxy_port ) ;
break ;
2011-05-01 04:59:00 +00:00
# if WEBKIT_CHECK_VERSION (1, 3, 11)
case PROP_MAXIMUM_CACHE_SIZE :
g_value_set_int ( value , web_settings - > maximum_cache_size ) ;
break ;
# endif
2008-12-08 22:18:14 +00:00
case PROP_IDENTIFY_AS :
g_value_set_enum ( value , web_settings - > identify_as ) ;
break ;
2010-01-31 21:10:24 +00:00
case PROP_USER_AGENT :
2009-04-12 12:28:11 +00:00
if ( ! g_strcmp0 ( web_settings - > ident_string , " " ) )
{
2011-10-09 10:20:13 +00:00
gchar * string = generate_ident_string ( web_settings , web_settings - > identify_as ) ;
2009-04-12 12:28:11 +00:00
katze_assign ( web_settings - > ident_string , string ) ;
}
2008-12-08 22:18:14 +00:00
g_value_set_string ( value , web_settings - > ident_string ) ;
break ;
2010-01-06 23:49:41 +00:00
case PROP_PREFERRED_LANGUAGES :
g_value_set_string ( value , web_settings - > http_accept_language ) ;
break ;
2009-05-22 21:53:54 +00:00
case PROP_CLEAR_PRIVATE_DATA :
g_value_set_int ( value , web_settings - > clear_private_data ) ;
break ;
2010-10-17 20:48:32 +00:00
case PROP_CLEAR_DATA :
g_value_set_string ( value , web_settings - > clear_data ) ;
break ;
2012-02-25 23:00:14 +00:00
case PROP_SITE_DATA_RULES :
g_value_set_string ( value , web_settings - > site_data_rules ) ;
break ;
2011-04-17 20:29:51 +00:00
# if !WEBKIT_CHECK_VERSION (1, 3, 13)
case PROP_ENABLE_DNS_PREFETCHING :
g_value_set_boolean ( value , web_settings - > enable_dns_prefetching ) ;
break ;
# endif
2011-04-14 22:49:39 +00:00
case PROP_STRIP_REFERER :
g_value_set_boolean ( value , web_settings - > strip_referer ) ;
break ;
2011-10-26 19:11:50 +00:00
case PROP_ENFORCE_FONT_FAMILY :
g_value_set_boolean ( value , web_settings - > enforce_font_family ) ;
break ;
2011-08-09 17:41:20 +00:00
case PROP_FLASH_WINDOW_ON_BG_TABS :
g_value_set_boolean ( value , web_settings - > flash_window_on_bg_tabs ) ;
break ;
2012-01-03 02:28:22 +00:00
case PROP_ENABLE_WEBGL :
g_value_set_boolean ( value , katze_object_get_boolean ( web_settings ,
" WebKitWebSettings::enable-webgl " ) ) ;
break ;
2012-03-05 20:53:29 +00:00
case PROP_ENABLE_FULLSCREEN :
g_value_set_boolean ( value , katze_object_get_boolean ( web_settings ,
" WebKitWebSettings::enable-fullscreen " ) ) ;
break ;
2011-10-30 15:26:56 +00:00
case PROP_USER_STYLESHEET_URI :
2011-11-08 21:48:39 +00:00
g_value_take_string ( value , katze_object_get_string ( web_settings ,
" WebKitWebSettings::user-stylesheet-uri " ) ) ;
2011-10-30 15:26:56 +00:00
break ;
2011-11-15 22:43:14 +00:00
case PROP_SEARCH_WIDTH :
g_value_set_int ( value , web_settings - > search_width ) ;
break ;
2008-03-10 21:26:09 +00:00
default :
G_OBJECT_WARN_INVALID_PROPERTY_ID ( object , prop_id , pspec ) ;
break ;
}
}
/**
* midori_web_settings_new :
*
* Creates a new # MidoriWebSettings instance with default values .
*
* You will typically want to assign this to a # MidoriWebView or # MidoriBrowser .
*
* Return value : a new # MidoriWebSettings
* */
MidoriWebSettings *
midori_web_settings_new ( void )
{
MidoriWebSettings * web_settings = g_object_new ( MIDORI_TYPE_WEB_SETTINGS ,
NULL ) ;
return web_settings ;
}
2011-10-26 18:36:16 +00:00
static void
2011-11-08 21:48:39 +00:00
midori_web_settings_process_stylesheets ( MidoriWebSettings * settings ,
gint delta_len )
2011-10-26 18:36:16 +00:00
{
GHashTableIter it ;
2011-11-08 21:48:39 +00:00
GString * css ;
2011-10-26 18:36:16 +00:00
gchar * encoded ;
gpointer value ;
2011-11-08 21:48:39 +00:00
static guint length = 0 ;
2011-10-26 18:36:16 +00:00
2011-11-08 21:48:39 +00:00
g_return_if_fail ( ( gint ) length > = - delta_len ) ;
2011-10-26 18:36:16 +00:00
2011-11-08 21:48:39 +00:00
length + = delta_len ;
/* Precalculate size to avoid re-allocations */
css = g_string_sized_new ( length ) ;
if ( settings - > user_stylesheet_uri_cached ! = NULL )
g_string_append ( css , settings - > user_stylesheet_uri_cached ) ;
if ( settings - > user_stylesheets ! = NULL )
{
g_hash_table_iter_init ( & it , settings - > user_stylesheets ) ;
while ( g_hash_table_iter_next ( & it , NULL , & value ) )
g_string_append ( css , ( gchar * ) value ) ;
}
2011-10-26 18:36:16 +00:00
2011-11-08 21:48:39 +00:00
/* data: uri prefix from Source/WebCore/page/Page.cpp:700 in WebKit */
encoded = g_strconcat ( " data:text/css;charset=utf-8;base64, " , css - > str , NULL ) ;
g_object_set ( G_OBJECT ( settings ) , " WebKitWebSettings::user-stylesheet-uri " , encoded , NULL ) ;
2011-10-26 18:36:16 +00:00
g_free ( encoded ) ;
g_string_free ( css , TRUE ) ;
}
2011-11-08 21:48:39 +00:00
static void
base64_space_pad ( gchar * base64 ,
guint len )
{
/* Replace '=' padding at the end with encoded spaces
so WebKit will accept concatenations to this string */
if ( len > 2 & & base64 [ len - 2 ] = = ' = ' )
{
base64 [ len - 3 ] + = 2 ;
base64 [ len - 2 ] = ' A ' ;
}
if ( len > 1 & & base64 [ len - 1 ] = = ' = ' )
base64 [ len - 1 ] = ' g ' ;
}
2011-10-26 18:36:16 +00:00
/**
* midori_web_settings_add_style :
2011-10-27 21:17:16 +00:00
* @ rule_id : a static string identifier
2011-10-26 18:36:16 +00:00
* @ style : a CSS stylesheet
*
* Adds or replaces a custom stylesheet .
*
* Since : 0.4 .2
* */
void
midori_web_settings_add_style ( MidoriWebSettings * settings ,
2011-10-27 21:17:16 +00:00
const gchar * rule_id ,
const gchar * style )
2011-10-26 18:36:16 +00:00
{
2011-11-08 21:48:39 +00:00
gchar * base64 ;
guint len ;
2011-10-26 18:36:16 +00:00
g_return_if_fail ( MIDORI_IS_WEB_SETTINGS ( settings ) ) ;
g_return_if_fail ( rule_id ! = NULL ) ;
g_return_if_fail ( style ! = NULL ) ;
2011-11-08 21:48:39 +00:00
len = strlen ( style ) ;
base64 = g_base64_encode ( ( const guchar * ) style , len ) ;
len = ( ( len + 2 ) / 3 ) * 4 ;
base64_space_pad ( base64 , len ) ;
2011-10-26 18:36:16 +00:00
if ( settings - > user_stylesheets = = NULL )
2011-10-27 21:17:16 +00:00
settings - > user_stylesheets = g_hash_table_new_full ( g_str_hash , NULL ,
2011-11-08 21:48:39 +00:00
NULL , g_free ) ;
g_hash_table_insert ( settings - > user_stylesheets , ( gchar * ) rule_id , base64 ) ;
midori_web_settings_process_stylesheets ( settings , len ) ;
2011-10-26 18:36:16 +00:00
}
/**
* midori_web_settings_remove_style :
* @ rule_id : the string identifier used previously
*
* Removes a stylesheet from midori settings .
*
* Since : 0.4 .2
* */
void
midori_web_settings_remove_style ( MidoriWebSettings * settings ,
const gchar * rule_id )
{
2011-11-08 21:48:39 +00:00
gchar * str ;
2011-10-26 18:36:16 +00:00
g_return_if_fail ( MIDORI_IS_WEB_SETTINGS ( settings ) ) ;
g_return_if_fail ( rule_id ! = NULL ) ;
if ( settings - > user_stylesheets ! = NULL )
{
2011-11-08 21:48:39 +00:00
if ( ( str = g_hash_table_lookup ( settings - > user_stylesheets , rule_id ) ) )
{
guint len = strlen ( str ) ;
g_hash_table_remove ( settings - > user_stylesheets , rule_id ) ;
midori_web_settings_process_stylesheets ( settings , - len ) ;
}
2011-10-26 18:36:16 +00:00
}
}