~midori/midori/webKitTwoOnly

« back to all changes in this revision

Viewing changes to src/midori-websettings.c

  • Committer: Christian Dywan
  • Date: 2008-06-01 21:47:27 UTC
  • Revision ID: git-v1:b511f12b9b4b063610161f2229b94a24a86be0fc
Rename folder 'src' to 'midori'

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
/*
2
 
 Copyright (C) 2008 Christian Dywan <christian@twotoasts.de>
3
 
 
4
 
 This library is free software; you can redistribute it and/or
5
 
 modify it under the terms of the GNU Lesser General Public
6
 
 License as published by the Free Software Foundation; either
7
 
 version 2.1 of the License, or (at your option) any later version.
8
 
 
9
 
 See the file COPYING for the full license text.
10
 
*/
11
 
 
12
 
#include "midori-websettings.h"
13
 
 
14
 
#include "sokoke.h"
15
 
 
16
 
#include <glib/gi18n.h>
17
 
#include <string.h>
18
 
 
19
 
G_DEFINE_TYPE (MidoriWebSettings, midori_web_settings, WEBKIT_TYPE_WEB_SETTINGS)
20
 
 
21
 
struct _MidoriWebSettingsPrivate
22
 
{
23
 
    gboolean remember_last_window_size;
24
 
    gint last_window_width;
25
 
    gint last_window_height;
26
 
    gint last_panel_position;
27
 
    gint last_panel_page;
28
 
    gint last_web_search;
29
 
    gchar* last_pageholder_uri;
30
 
 
31
 
    gboolean show_navigationbar;
32
 
    gboolean show_bookmarkbar;
33
 
    gboolean show_panel;
34
 
    gboolean show_statusbar;
35
 
 
36
 
    MidoriToolbarStyle toolbar_style;
37
 
    gboolean small_toolbar;
38
 
    gboolean show_new_tab;
39
 
    gboolean show_homepage;
40
 
    gboolean show_web_search;
41
 
    gboolean show_trash;
42
 
 
43
 
    MidoriStartup load_on_startup;
44
 
    gchar* homepage;
45
 
    gchar* download_folder;
46
 
    gboolean show_download_notification;
47
 
    gchar* location_entry_search;
48
 
    MidoriPreferredEncoding preferred_encoding;
49
 
 
50
 
    gint tab_label_size;
51
 
    gboolean close_buttons_on_tabs;
52
 
    MidoriNewPage open_new_pages_in;
53
 
    gboolean middle_click_opens_selection;
54
 
    gboolean open_tabs_in_the_background;
55
 
    gboolean open_popups_in_tabs;
56
 
 
57
 
    MidoriAcceptCookies accept_cookies;
58
 
    gboolean original_cookies_only;
59
 
    gint maximum_cookie_age;
60
 
 
61
 
    gboolean remember_last_visited_pages;
62
 
    gint maximum_history_age;
63
 
    gboolean remember_last_form_inputs;
64
 
    gboolean remember_last_downloaded_files;
65
 
 
66
 
    gchar* http_proxy;
67
 
    gint cache_size;
68
 
};
69
 
 
70
 
#define MIDORI_WEB_SETTINGS_GET_PRIVATE(obj) \
71
 
    (G_TYPE_INSTANCE_GET_PRIVATE ((obj), \
72
 
     MIDORI_TYPE_WEB_SETTINGS, MidoriWebSettingsPrivate))
73
 
 
74
 
enum
75
 
{
76
 
    PROP_0,
77
 
 
78
 
    PROP_REMEMBER_LAST_WINDOW_SIZE,
79
 
    PROP_LAST_WINDOW_WIDTH,
80
 
    PROP_LAST_WINDOW_HEIGHT,
81
 
    PROP_LAST_PANEL_POSITION,
82
 
    PROP_LAST_PANEL_PAGE,
83
 
    PROP_LAST_WEB_SEARCH,
84
 
    PROP_LAST_PAGEHOLDER_URI,
85
 
 
86
 
    PROP_SHOW_NAVIGATIONBAR,
87
 
    PROP_SHOW_BOOKMARKBAR,
88
 
    PROP_SHOW_PANEL,
89
 
    PROP_SHOW_STATUSBAR,
90
 
 
91
 
    PROP_TOOLBAR_STYLE,
92
 
    PROP_SMALL_TOOLBAR,
93
 
    PROP_SHOW_NEW_TAB,
94
 
    PROP_SHOW_HOMEPAGE,
95
 
    PROP_SHOW_WEB_SEARCH,
96
 
    PROP_SHOW_TRASH,
97
 
 
98
 
    PROP_LOAD_ON_STARTUP,
99
 
    PROP_HOMEPAGE,
100
 
    PROP_DOWNLOAD_FOLDER,
101
 
    PROP_SHOW_DOWNLOAD_NOTIFICATION,
102
 
    PROP_LOCATION_ENTRY_SEARCH,
103
 
    PROP_PREFERRED_ENCODING,
104
 
 
105
 
    PROP_TAB_LABEL_SIZE,
106
 
    PROP_CLOSE_BUTTONS_ON_TABS,
107
 
    PROP_OPEN_NEW_PAGES_IN,
108
 
    PROP_MIDDLE_CLICK_OPENS_SELECTION,
109
 
    PROP_OPEN_TABS_IN_THE_BACKGROUND,
110
 
    PROP_OPEN_POPUPS_IN_TABS,
111
 
 
112
 
    PROP_ACCEPT_COOKIES,
113
 
    PROP_ORIGINAL_COOKIES_ONLY,
114
 
    PROP_MAXIMUM_COOKIE_AGE,
115
 
 
116
 
    PROP_REMEMBER_LAST_VISITED_PAGES,
117
 
    PROP_MAXIMUM_HISTORY_AGE,
118
 
    PROP_REMEMBER_LAST_FORM_INPUTS,
119
 
    PROP_REMEMBER_LAST_DOWNLOADED_FILES,
120
 
 
121
 
    PROP_HTTP_PROXY,
122
 
    PROP_CACHE_SIZE
123
 
};
124
 
 
125
 
GType
126
 
midori_startup_get_type (void)
127
 
{
128
 
    static GType type = 0;
129
 
    if (!type)
130
 
    {
131
 
        static const GEnumValue values[] = {
132
 
         { MIDORI_STARTUP_BLANK_PAGE, "MIDORI_STARTUP_BLANK_PAGE", N_("Blank page") },
133
 
         { MIDORI_STARTUP_HOMEPAGE, "MIDORI_STARTUP_HOMEPAGE", N_("Homepage") },
134
 
         { MIDORI_STARTUP_LAST_OPEN_PAGES, "MIDORI_STARTUP_LAST_OPEN_PAGES", N_("Last open pages") },
135
 
         { 0, NULL, NULL }
136
 
        };
137
 
        type = g_enum_register_static ("MidoriStartup", values);
138
 
    }
139
 
    return type;
140
 
}
141
 
 
142
 
GType
143
 
midori_preferred_encoding_get_type (void)
144
 
{
145
 
    static GType type = 0;
146
 
    if (!type)
147
 
    {
148
 
        static const GEnumValue values[] = {
149
 
         { MIDORI_ENCODING_CHINESE, "MIDORI_ENCODING_CHINESE", N_("Chinese (BIG5)") },
150
 
         { MIDORI_ENCODING_JAPANESE, "MIDORI_ENCODING_JAPANESE", N_("Japanese (SHIFT_JIS)") },
151
 
         { MIDORI_ENCODING_RUSSIAN, "MIDORI_ENCODING_RUSSIAN", N_("Russian (KOI8-R)") },
152
 
         { MIDORI_ENCODING_UNICODE, "MIDORI_ENCODING_UNICODE", N_("Unicode (UTF-8)") },
153
 
         { MIDORI_ENCODING_WESTERN, "MIDORI_ENCODING_WESTERN", N_("Western (ISO-8859-1)") },
154
 
         { MIDORI_ENCODING_WESTERN, "MIDORI_ENCODING_CUSTOM", N_("Custom...") },
155
 
         { 0, NULL, NULL }
156
 
        };
157
 
        type = g_enum_register_static ("MidoriPreferredEncoding", values);
158
 
    }
159
 
    return type;
160
 
}
161
 
 
162
 
GType
163
 
midori_new_page_get_type (void)
164
 
{
165
 
    static GType type = 0;
166
 
    if (!type)
167
 
    {
168
 
        static const GEnumValue values[] = {
169
 
         { MIDORI_NEW_PAGE_TAB, "MIDORI_NEW_PAGE_TAB", N_("New tab") },
170
 
         { MIDORI_NEW_PAGE_WINDOW, "MIDORI_NEW_PAGE_WINDOW", N_("New window") },
171
 
         { MIDORI_NEW_PAGE_CURRENT, "MIDORI_NEW_PAGE_CURRENT", N_("Current tab") },
172
 
         { 0, NULL, NULL }
173
 
        };
174
 
        type = g_enum_register_static ("MidoriNewPage", values);
175
 
    }
176
 
    return type;
177
 
}
178
 
 
179
 
GType
180
 
midori_toolbar_style_get_type (void)
181
 
{
182
 
    static GType type = 0;
183
 
    if (!type)
184
 
    {
185
 
        static const GEnumValue values[] = {
186
 
         { MIDORI_TOOLBAR_DEFAULT, "MIDORI_TOOLBAR_DEFAULT", N_("Default") },
187
 
         { MIDORI_TOOLBAR_ICONS, "MIDORI_TOOLBAR_ICONS", N_("Icons") },
188
 
         { MIDORI_TOOLBAR_TEXT, "MIDORI_TOOLBAR_TEXT", N_("Text") },
189
 
         { MIDORI_TOOLBAR_BOTH, "MIDORI_TOOLBAR_BOTH", N_("Both") },
190
 
         { MIDORI_TOOLBAR_BOTH_HORIZ, "MIDORI_TOOLBAR_BOTH_HORIZ", N_("Both horizontal") },
191
 
         { 0, NULL, NULL }
192
 
        };
193
 
        type = g_enum_register_static ("MidoriToolbarStyle", values);
194
 
    }
195
 
    return type;
196
 
}
197
 
 
198
 
GType
199
 
midori_accept_cookies_get_type (void)
200
 
{
201
 
    static GType type = 0;
202
 
    if (!type)
203
 
    {
204
 
        static const GEnumValue values[] = {
205
 
         { MIDORI_ACCEPT_COOKIES_ALL, "MIDORI_ACCEPT_COOKIES_ALL", N_("All cookies") },
206
 
         { MIDORI_ACCEPT_COOKIES_SESSION, "MIDORI_ACCEPT_COOKIES_SESSION", N_("Session cookies") },
207
 
         { MIDORI_ACCEPT_COOKIES_NONE, "MIDORI_ACCEPT_COOKIES_NONE", N_("None") },
208
 
         { 0, NULL, NULL }
209
 
        };
210
 
        type = g_enum_register_static ("MidoriAcceptCookies", values);
211
 
    }
212
 
    return type;
213
 
}
214
 
 
215
 
static void
216
 
midori_web_settings_finalize (GObject* object);
217
 
 
218
 
static void
219
 
midori_web_settings_set_property (GObject*      object,
220
 
                                  guint         prop_id,
221
 
                                  const GValue* value,
222
 
                                  GParamSpec*   pspec);
223
 
 
224
 
static void
225
 
midori_web_settings_get_property (GObject*    object,
226
 
                                  guint       prop_id,
227
 
                                  GValue*     value,
228
 
                                  GParamSpec* pspec);
229
 
 
230
 
static void
231
 
midori_web_settings_notify       (GObject* object,
232
 
                                  GParamSpec* pspec);
233
 
 
234
 
static void
235
 
midori_web_settings_class_init (MidoriWebSettingsClass* class)
236
 
{
237
 
    GObjectClass* gobject_class = G_OBJECT_CLASS (class);
238
 
    gobject_class->finalize = midori_web_settings_finalize;
239
 
    gobject_class->set_property = midori_web_settings_set_property;
240
 
    gobject_class->get_property = midori_web_settings_get_property;
241
 
    gobject_class->notify = midori_web_settings_notify;
242
 
 
243
 
    GParamFlags flags = G_PARAM_READWRITE | G_PARAM_CONSTRUCT;
244
 
 
245
 
    g_object_class_install_property (gobject_class,
246
 
                                     PROP_REMEMBER_LAST_WINDOW_SIZE,
247
 
                                     g_param_spec_boolean (
248
 
                                     "remember-last-window-size",
249
 
                                     _("Remember last window size"),
250
 
                                     _("Whether to save the last window size"),
251
 
                                     TRUE,
252
 
                                     flags));
253
 
 
254
 
    g_object_class_install_property (gobject_class,
255
 
                                     PROP_LAST_WINDOW_WIDTH,
256
 
                                     g_param_spec_int (
257
 
                                     "last-window-width",
258
 
                                     _("Last window width"),
259
 
                                     _("The last saved window width"),
260
 
                                     0, G_MAXINT, 0,
261
 
                                     flags));
262
 
 
263
 
    g_object_class_install_property (gobject_class,
264
 
                                     PROP_LAST_WINDOW_HEIGHT,
265
 
                                     g_param_spec_int (
266
 
                                     "last-window-height",
267
 
                                     _("Last window height"),
268
 
                                     _("The last saved window height"),
269
 
                                     0, G_MAXINT, 0,
270
 
                                     flags));
271
 
 
272
 
    g_object_class_install_property (gobject_class,
273
 
                                     PROP_LAST_PANEL_POSITION,
274
 
                                     g_param_spec_int (
275
 
                                     "last-panel-position",
276
 
                                     _("Last panel position"),
277
 
                                     _("The last saved panel position"),
278
 
                                     0, G_MAXINT, 0,
279
 
                                     flags));
280
 
 
281
 
    g_object_class_install_property (gobject_class,
282
 
                                     PROP_LAST_PANEL_PAGE,
283
 
                                     g_param_spec_int (
284
 
                                     "last-panel-page",
285
 
                                     _("Last panel page"),
286
 
                                     _("The last saved panel page"),
287
 
                                     0, G_MAXINT, 0,
288
 
                                     flags));
289
 
 
290
 
    g_object_class_install_property (gobject_class,
291
 
                                     PROP_LAST_WEB_SEARCH,
292
 
                                     g_param_spec_int (
293
 
                                     "last-web-search",
294
 
                                     _("Last Web search"),
295
 
                                     _("The last saved Web search"),
296
 
                                     0, G_MAXINT, 0,
297
 
                                     flags));
298
 
 
299
 
    g_object_class_install_property (gobject_class,
300
 
                                     PROP_LAST_PAGEHOLDER_URI,
301
 
                                     g_param_spec_string (
302
 
                                     "last-pageholder-uri",
303
 
                                     _("Last pageholder URI"),
304
 
                                     _("The URI last opened in the pageholder"),
305
 
                                     "",
306
 
                                     flags));
307
 
 
308
 
 
309
 
 
310
 
    g_object_class_install_property (gobject_class,
311
 
                                     PROP_SHOW_NAVIGATIONBAR,
312
 
                                     g_param_spec_boolean (
313
 
                                     "show-navigationbar",
314
 
                                     _("Show Navigationbar"),
315
 
                                     _("Whether to show the navigationbar"),
316
 
                                     TRUE,
317
 
                                     flags));
318
 
 
319
 
    g_object_class_install_property (gobject_class,
320
 
                                     PROP_SHOW_BOOKMARKBAR,
321
 
                                     g_param_spec_boolean (
322
 
                                     "show-bookmarkbar",
323
 
                                     _("Show Bookmarkbar"),
324
 
                                     _("Whether to show the bookmarkbar"),
325
 
                                     FALSE,
326
 
                                     flags));
327
 
 
328
 
    g_object_class_install_property (gobject_class,
329
 
                                     PROP_SHOW_PANEL,
330
 
                                     g_param_spec_boolean (
331
 
                                     "show-panel",
332
 
                                     _("Show Panel"),
333
 
                                     _("Whether to show the panel"),
334
 
                                     FALSE,
335
 
                                     flags));
336
 
 
337
 
    g_object_class_install_property (gobject_class,
338
 
                                     PROP_SHOW_STATUSBAR,
339
 
                                     g_param_spec_boolean (
340
 
                                     "show-statusbar",
341
 
                                     _("Show Statusbar"),
342
 
                                     _("Whether to show the statusbar"),
343
 
                                     TRUE,
344
 
                                     flags));
345
 
 
346
 
 
347
 
    g_object_class_install_property (gobject_class,
348
 
                                     PROP_TOOLBAR_STYLE,
349
 
                                     g_param_spec_enum (
350
 
                                     "toolbar-style",
351
 
                                     _("Toolbar Style"),
352
 
                                     _("The style of the toolbar"),
353
 
                                     MIDORI_TYPE_TOOLBAR_STYLE,
354
 
                                     MIDORI_TOOLBAR_DEFAULT,
355
 
                                     flags));
356
 
 
357
 
    g_object_class_install_property (gobject_class,
358
 
                                     PROP_SMALL_TOOLBAR,
359
 
                                     g_param_spec_boolean (
360
 
                                     "small-toolbar",
361
 
                                     _("Small toolbar"),
362
 
                                     _("Use small toolbar icons"),
363
 
                                     FALSE,
364
 
                                     flags));
365
 
 
366
 
    g_object_class_install_property (gobject_class,
367
 
                                     PROP_SHOW_NEW_TAB,
368
 
                                     g_param_spec_boolean (
369
 
                                     "show-new-tab",
370
 
                                     _("Show New Tab"),
371
 
                                     _("Show the New Tab button in the toolbar"),
372
 
                                     TRUE,
373
 
                                     flags));
374
 
 
375
 
    g_object_class_install_property (gobject_class,
376
 
                                     PROP_SHOW_HOMEPAGE,
377
 
                                     g_param_spec_boolean (
378
 
                                     "show-homepage",
379
 
                                     _("Show Homepage"),
380
 
                                     _("Show the Homepage button in the toolbar"),
381
 
                                     TRUE,
382
 
                                     flags));
383
 
 
384
 
    g_object_class_install_property (gobject_class,
385
 
                                     PROP_SHOW_WEB_SEARCH,
386
 
                                     g_param_spec_boolean (
387
 
                                     "show-web-search",
388
 
                                     _("Show Web search"),
389
 
                                     _("Show the Web search entry in the toolbar"),
390
 
                                     TRUE,
391
 
                                     flags));
392
 
 
393
 
    g_object_class_install_property (gobject_class,
394
 
                                     PROP_SHOW_TRASH,
395
 
                                     g_param_spec_boolean (
396
 
                                     "show-trash",
397
 
                                     _("Show Trash"),
398
 
                                     _("Show the Trash button in the toolbar"),
399
 
                                     TRUE,
400
 
                                     flags));
401
 
 
402
 
 
403
 
 
404
 
    g_object_class_install_property (gobject_class,
405
 
                                     PROP_LOAD_ON_STARTUP,
406
 
                                     g_param_spec_enum (
407
 
                                     "load-on-startup",
408
 
                                     _("Load on Startup"),
409
 
                                     _("What to load on startup"),
410
 
                                     MIDORI_TYPE_STARTUP,
411
 
                                     MIDORI_STARTUP_HOMEPAGE,
412
 
                                     flags));
413
 
 
414
 
    g_object_class_install_property (gobject_class,
415
 
                                     PROP_HOMEPAGE,
416
 
                                     g_param_spec_string (
417
 
                                     "homepage",
418
 
                                     _("Homepage"),
419
 
                                     _("The homepage"),
420
 
                                     "http://www.google.com",
421
 
                                     flags));
422
 
 
423
 
    g_object_class_install_property (gobject_class,
424
 
                                     PROP_DOWNLOAD_FOLDER,
425
 
                                     g_param_spec_string (
426
 
                                     "download-folder",
427
 
                                     _("Download Folder"),
428
 
                                     _("The folder downloaded files are saved to"),
429
 
                                     g_get_home_dir (),
430
 
                                     G_PARAM_READABLE));
431
 
 
432
 
    g_object_class_install_property (gobject_class,
433
 
                                     PROP_SHOW_DOWNLOAD_NOTIFICATION,
434
 
                                     g_param_spec_boolean (
435
 
                                     "show-download-notification",
436
 
                                     _("Show Download Notification"),
437
 
                                     _("Show a notification window for finished downloads"),
438
 
                                     TRUE,
439
 
                                     G_PARAM_READABLE));
440
 
 
441
 
    g_object_class_install_property (gobject_class,
442
 
                                     PROP_LOCATION_ENTRY_SEARCH,
443
 
                                     g_param_spec_string (
444
 
                                     "location-entry-search",
445
 
                                     _("Location entry Search"),
446
 
                                     _("The search to perform inside the location entry"),
447
 
                                     "http://www.google.com/search?q=%s",
448
 
                                     flags));
449
 
 
450
 
    g_object_class_install_property (gobject_class,
451
 
                                     PROP_PREFERRED_ENCODING,
452
 
                                     g_param_spec_enum (
453
 
                                     "preferred-encoding",
454
 
                                     _("Preferred Encoding"),
455
 
                                     _("The preferred character encoding"),
456
 
                                     MIDORI_TYPE_PREFERRED_ENCODING,
457
 
                                     MIDORI_ENCODING_WESTERN,
458
 
                                     flags));
459
 
 
460
 
 
461
 
 
462
 
    g_object_class_install_property (gobject_class,
463
 
                                     PROP_TAB_LABEL_SIZE,
464
 
                                     g_param_spec_int (
465
 
                                     "tab-label-size",
466
 
                                     _("Tab Label Size"),
467
 
                                     _("The desired tab label size"),
468
 
                                     0, G_MAXINT, 10,
469
 
                                     flags));
470
 
 
471
 
    g_object_class_install_property (gobject_class,
472
 
                                     PROP_CLOSE_BUTTONS_ON_TABS,
473
 
                                     g_param_spec_boolean (
474
 
                                     "close-buttons-on-tabs",
475
 
                                     _("Close Buttons on Tabs"),
476
 
                                     _("Whether tabs have close buttons"),
477
 
                                     TRUE,
478
 
                                     flags));
479
 
 
480
 
    g_object_class_install_property (gobject_class,
481
 
                                     PROP_OPEN_NEW_PAGES_IN,
482
 
                                     g_param_spec_enum (
483
 
                                     "open-new-pages-in",
484
 
                                     _("Open new pages in"),
485
 
                                     _("Where to open new pages"),
486
 
                                     MIDORI_TYPE_NEW_PAGE,
487
 
                                     MIDORI_NEW_PAGE_TAB,
488
 
                                     G_PARAM_READABLE));
489
 
 
490
 
    g_object_class_install_property (gobject_class,
491
 
                                     PROP_MIDDLE_CLICK_OPENS_SELECTION,
492
 
                                     g_param_spec_boolean (
493
 
                                     "middle-click-opens-selection",
494
 
                                     _("Middle click opens Selection"),
495
 
                                     _("Load an URL from the selection via middle click"),
496
 
                                     FALSE,
497
 
                                     flags));
498
 
 
499
 
    g_object_class_install_property (gobject_class,
500
 
                                     PROP_OPEN_TABS_IN_THE_BACKGROUND,
501
 
                                     g_param_spec_boolean (
502
 
                                     "open-tabs-in-the-background",
503
 
                                     _("Open tabs in the background"),
504
 
                                     _("Whether to open new tabs in the background"),
505
 
                                     FALSE,
506
 
                                     flags));
507
 
 
508
 
    g_object_class_install_property (gobject_class,
509
 
                                     PROP_OPEN_POPUPS_IN_TABS,
510
 
                                     g_param_spec_boolean (
511
 
                                     "open-popups-in-tabs",
512
 
                                     _("Open popups in tabs"),
513
 
                                     _("Whether to open popup windows in tabs"),
514
 
                                     TRUE,
515
 
                                     flags));
516
 
 
517
 
 
518
 
 
519
 
    g_object_class_install_property (gobject_class,
520
 
                                     PROP_ACCEPT_COOKIES,
521
 
                                     g_param_spec_enum (
522
 
                                     "accept-cookies",
523
 
                                     _("Accept cookies"),
524
 
                                     _("What type of cookies to accept"),
525
 
                                     MIDORI_TYPE_ACCEPT_COOKIES,
526
 
                                     MIDORI_ACCEPT_COOKIES_ALL,
527
 
                                     G_PARAM_READABLE));
528
 
 
529
 
    g_object_class_install_property (gobject_class,
530
 
                                     PROP_ORIGINAL_COOKIES_ONLY,
531
 
                                     g_param_spec_boolean (
532
 
                                     "original-cookies-only",
533
 
                                     _("Original cookies only"),
534
 
                                     _("Accept cookies from the original website only"),
535
 
                                     FALSE,
536
 
                                     G_PARAM_READABLE));
537
 
 
538
 
    g_object_class_install_property (gobject_class,
539
 
                                     PROP_MAXIMUM_COOKIE_AGE,
540
 
                                     g_param_spec_int (
541
 
                                     "maximum-cookie-age",
542
 
                                     _("Maximum cookie age"),
543
 
                                     _("The maximum number of days to save cookies for"),
544
 
                                     0, G_MAXINT, 30,
545
 
                                     G_PARAM_READABLE));
546
 
 
547
 
 
548
 
 
549
 
    g_object_class_install_property (gobject_class,
550
 
                                     PROP_REMEMBER_LAST_VISITED_PAGES,
551
 
                                     g_param_spec_boolean (
552
 
                                     "remember-last-visited-pages",
553
 
                                     _("Remember last visited pages"),
554
 
                                     _("Whether the last visited pages are saved"),
555
 
                                     TRUE,
556
 
                                     G_PARAM_READABLE));
557
 
 
558
 
    g_object_class_install_property (gobject_class,
559
 
                                     PROP_MAXIMUM_HISTORY_AGE,
560
 
                                     g_param_spec_int (
561
 
                                     "maximum-history-age",
562
 
                                     _("Maximum history age"),
563
 
                                     _("The maximum number of days to save the history for"),
564
 
                                     0, G_MAXINT, 30,
565
 
                                     G_PARAM_READABLE));
566
 
 
567
 
    g_object_class_install_property (gobject_class,
568
 
                                     PROP_REMEMBER_LAST_FORM_INPUTS,
569
 
                                     g_param_spec_boolean (
570
 
                                     "remember-last-form-inputs",
571
 
                                     _("Remember last form inputs"),
572
 
                                     _("Whether the last form inputs are saved"),
573
 
                                     TRUE,
574
 
                                     G_PARAM_READABLE));
575
 
 
576
 
    g_object_class_install_property (gobject_class,
577
 
                                     PROP_REMEMBER_LAST_DOWNLOADED_FILES,
578
 
                                     g_param_spec_boolean (
579
 
                                     "remember-last-downloaded-files",
580
 
                                     _("Remember last downloaded files"),
581
 
                                     _("Whether the last downloaded files are saved"),
582
 
                                     TRUE,
583
 
                                     G_PARAM_READABLE));
584
 
 
585
 
 
586
 
 
587
 
    g_object_class_install_property (gobject_class,
588
 
                                     PROP_HTTP_PROXY,
589
 
                                     g_param_spec_string (
590
 
                                     "http-proxy",
591
 
                                     _("HTTP Proxy"),
592
 
                                     _("The proxy used for HTTP connections"),
593
 
                                     g_getenv ("http_proxy"),
594
 
                                     flags));
595
 
 
596
 
    g_object_class_install_property (gobject_class,
597
 
                                     PROP_CACHE_SIZE,
598
 
                                     g_param_spec_int (
599
 
                                     "cache-size",
600
 
                                     _("Cache size"),
601
 
                                     _("The allowed size of the cache"),
602
 
                                     0, G_MAXINT, 100,
603
 
                                     G_PARAM_READABLE));
604
 
 
605
 
    g_type_class_add_private (class, sizeof (MidoriWebSettingsPrivate));
606
 
}
607
 
 
608
 
static void
609
 
notify_default_encoding_cb (GObject* object, GParamSpec* pspec)
610
 
{
611
 
    MidoriWebSettings* web_settings = MIDORI_WEB_SETTINGS (object);
612
 
    MidoriWebSettingsPrivate* priv = web_settings->priv;
613
 
 
614
 
    const gchar* string;
615
 
    g_object_get (object, "default-encoding", &string, NULL);
616
 
    const gchar* encoding = string ? string : "";
617
 
    if (!strcmp (encoding, "BIG5"))
618
 
        priv->preferred_encoding = MIDORI_ENCODING_CHINESE;
619
 
    else if (!strcmp (encoding, "SHIFT_JIS"))
620
 
        priv->preferred_encoding = MIDORI_ENCODING_JAPANESE;
621
 
    else if (!strcmp (encoding, "KOI8-R"))
622
 
        priv->preferred_encoding = MIDORI_ENCODING_RUSSIAN;
623
 
    else if (!strcmp (encoding, "UTF-8"))
624
 
        priv->preferred_encoding = MIDORI_ENCODING_UNICODE;
625
 
    else if (!strcmp (encoding, "ISO-8859-1"))
626
 
        priv->preferred_encoding = MIDORI_ENCODING_WESTERN;
627
 
    else
628
 
        priv->preferred_encoding = MIDORI_ENCODING_CUSTOM;
629
 
    g_object_notify (object, "preferred-encoding");
630
 
}
631
 
 
632
 
static void
633
 
midori_web_settings_init (MidoriWebSettings* web_settings)
634
 
{
635
 
    web_settings->priv = MIDORI_WEB_SETTINGS_GET_PRIVATE (web_settings);
636
 
 
637
 
    g_signal_connect (web_settings, "notify::default-encoding",
638
 
                      G_CALLBACK (notify_default_encoding_cb), NULL);
639
 
}
640
 
 
641
 
static void
642
 
midori_web_settings_finalize (GObject* object)
643
 
{
644
 
    G_OBJECT_CLASS (midori_web_settings_parent_class)->finalize (object);
645
 
}
646
 
 
647
 
static void
648
 
midori_web_settings_set_property (GObject*      object,
649
 
                                  guint         prop_id,
650
 
                                  const GValue* value,
651
 
                                  GParamSpec*   pspec)
652
 
{
653
 
    MidoriWebSettings* web_settings = MIDORI_WEB_SETTINGS (object);
654
 
    MidoriWebSettingsPrivate* priv = web_settings->priv;
655
 
 
656
 
    switch (prop_id)
657
 
    {
658
 
    case PROP_REMEMBER_LAST_WINDOW_SIZE:
659
 
        priv->remember_last_window_size = g_value_get_boolean (value);
660
 
        break;
661
 
    case PROP_LAST_WINDOW_WIDTH:
662
 
        priv->last_window_width = g_value_get_int (value);
663
 
        break;
664
 
    case PROP_LAST_WINDOW_HEIGHT:
665
 
        priv->last_window_height = g_value_get_int (value);
666
 
        break;
667
 
    case PROP_LAST_PANEL_POSITION:
668
 
        priv->last_panel_position = g_value_get_int (value);
669
 
        break;
670
 
    case PROP_LAST_PANEL_PAGE:
671
 
        priv->last_panel_page = g_value_get_int (value);
672
 
        break;
673
 
    case PROP_LAST_WEB_SEARCH:
674
 
        priv->last_web_search = g_value_get_int (value);
675
 
        break;
676
 
    case PROP_LAST_PAGEHOLDER_URI:
677
 
        katze_assign (priv->last_pageholder_uri, g_value_dup_string (value));
678
 
        break;
679
 
 
680
 
    case PROP_SHOW_NAVIGATIONBAR:
681
 
        priv->show_navigationbar = g_value_get_boolean (value);
682
 
        break;
683
 
    case PROP_SHOW_BOOKMARKBAR:
684
 
        priv->show_bookmarkbar = g_value_get_boolean (value);
685
 
        break;
686
 
    case PROP_SHOW_PANEL:
687
 
        priv->show_panel = g_value_get_boolean (value);
688
 
        break;
689
 
    case PROP_SHOW_STATUSBAR:
690
 
        priv->show_statusbar = g_value_get_boolean (value);
691
 
        break;
692
 
 
693
 
    case PROP_TOOLBAR_STYLE:
694
 
        priv->toolbar_style = g_value_get_enum (value);
695
 
        break;
696
 
    case PROP_SMALL_TOOLBAR:
697
 
        priv->small_toolbar = g_value_get_boolean (value);
698
 
        break;
699
 
    case PROP_SHOW_NEW_TAB:
700
 
        priv->show_new_tab = g_value_get_boolean (value);
701
 
        break;
702
 
    case PROP_SHOW_HOMEPAGE:
703
 
        priv->show_homepage = g_value_get_boolean (value);
704
 
        break;
705
 
    case PROP_SHOW_WEB_SEARCH:
706
 
        priv->show_web_search = g_value_get_boolean (value);
707
 
        break;
708
 
    case PROP_SHOW_TRASH:
709
 
        priv->show_trash = g_value_get_boolean (value);
710
 
        break;
711
 
 
712
 
    case PROP_LOAD_ON_STARTUP:
713
 
        priv->load_on_startup = g_value_get_enum (value);
714
 
        break;
715
 
    case PROP_HOMEPAGE:
716
 
        katze_assign (priv->homepage, g_value_dup_string (value));
717
 
        break;
718
 
    case PROP_DOWNLOAD_FOLDER:
719
 
        katze_assign (priv->download_folder, g_value_dup_string (value));
720
 
        break;
721
 
    case PROP_SHOW_DOWNLOAD_NOTIFICATION:
722
 
        priv->show_download_notification = g_value_get_boolean (value);
723
 
        break;
724
 
    case PROP_LOCATION_ENTRY_SEARCH:
725
 
        katze_assign (priv->location_entry_search, g_value_dup_string (value));
726
 
        break;
727
 
    case PROP_PREFERRED_ENCODING:
728
 
        priv->preferred_encoding = g_value_get_enum (value);
729
 
        switch (priv->preferred_encoding)
730
 
        {
731
 
        case MIDORI_ENCODING_CHINESE:
732
 
            g_object_set (object, "default-encoding", "BIG5", NULL);
733
 
            break;
734
 
        case MIDORI_ENCODING_JAPANESE:
735
 
            g_object_set (object, "default-encoding", "SHIFT_JIS", NULL);
736
 
            break;
737
 
        case MIDORI_ENCODING_RUSSIAN:
738
 
            g_object_set (object, "default-encoding", "KOI8-R", NULL);
739
 
            break;
740
 
        case MIDORI_ENCODING_UNICODE:
741
 
            g_object_set (object, "default-encoding", "UTF-8", NULL);
742
 
            break;
743
 
        case MIDORI_ENCODING_WESTERN:
744
 
            g_object_set (object, "default-encoding", "ISO-8859-1", NULL);
745
 
            break;
746
 
        case MIDORI_ENCODING_CUSTOM:
747
 
            g_object_set (object, "default-encoding", "", NULL);
748
 
        }
749
 
        break;
750
 
 
751
 
    case PROP_TAB_LABEL_SIZE:
752
 
        priv->tab_label_size = g_value_get_int (value);
753
 
        break;
754
 
    case PROP_CLOSE_BUTTONS_ON_TABS:
755
 
        priv->close_buttons_on_tabs = g_value_get_boolean (value);
756
 
        break;
757
 
    case PROP_OPEN_NEW_PAGES_IN:
758
 
        priv->open_new_pages_in = g_value_get_enum (value);
759
 
        break;
760
 
    case PROP_MIDDLE_CLICK_OPENS_SELECTION:
761
 
        priv->middle_click_opens_selection = g_value_get_boolean (value);
762
 
        break;
763
 
    case PROP_OPEN_TABS_IN_THE_BACKGROUND:
764
 
        priv->open_tabs_in_the_background = g_value_get_boolean (value);
765
 
        break;
766
 
    case PROP_OPEN_POPUPS_IN_TABS:
767
 
        priv->open_popups_in_tabs = g_value_get_boolean (value);
768
 
        break;
769
 
 
770
 
    case PROP_ACCEPT_COOKIES:
771
 
        priv->accept_cookies = g_value_get_enum (value);
772
 
        break;
773
 
    case PROP_ORIGINAL_COOKIES_ONLY:
774
 
        priv->original_cookies_only = g_value_get_boolean (value);
775
 
        break;
776
 
    case PROP_MAXIMUM_COOKIE_AGE:
777
 
        priv->maximum_cookie_age = g_value_get_int (value);
778
 
        break;
779
 
 
780
 
    case PROP_REMEMBER_LAST_VISITED_PAGES:
781
 
        priv->remember_last_visited_pages = g_value_get_boolean (value);
782
 
        break;
783
 
    case PROP_MAXIMUM_HISTORY_AGE:
784
 
        priv->maximum_history_age = g_value_get_int (value);
785
 
        break;
786
 
    case PROP_REMEMBER_LAST_FORM_INPUTS:
787
 
        priv->remember_last_form_inputs = g_value_get_boolean (value);
788
 
        break;
789
 
    case PROP_REMEMBER_LAST_DOWNLOADED_FILES:
790
 
        priv->remember_last_downloaded_files = g_value_get_boolean (value);
791
 
        break;
792
 
 
793
 
    case PROP_HTTP_PROXY:
794
 
        katze_assign (priv->http_proxy, g_value_dup_string (value));
795
 
        g_setenv ("http_proxy", priv->http_proxy ? priv->http_proxy : "", TRUE);
796
 
        break;
797
 
    case PROP_CACHE_SIZE:
798
 
        priv->cache_size = g_value_get_int (value);
799
 
        break;
800
 
    default:
801
 
        G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
802
 
        break;
803
 
    }
804
 
}
805
 
 
806
 
static void
807
 
midori_web_settings_get_property (GObject*    object,
808
 
                                  guint       prop_id,
809
 
                                  GValue*     value,
810
 
                                  GParamSpec* pspec)
811
 
{
812
 
    MidoriWebSettings* web_settings = MIDORI_WEB_SETTINGS (object);
813
 
    MidoriWebSettingsPrivate* priv = web_settings->priv;
814
 
 
815
 
    switch (prop_id)
816
 
    {
817
 
    case PROP_REMEMBER_LAST_WINDOW_SIZE:
818
 
        g_value_set_boolean (value, priv->remember_last_window_size);
819
 
        break;
820
 
    case PROP_LAST_WINDOW_WIDTH:
821
 
        g_value_set_int (value, priv->last_window_width);
822
 
        break;
823
 
    case PROP_LAST_WINDOW_HEIGHT:
824
 
        g_value_set_int (value, priv->last_window_height);
825
 
        break;
826
 
    case PROP_LAST_PANEL_POSITION:
827
 
        g_value_set_int (value, priv->last_panel_position);
828
 
        break;
829
 
    case PROP_LAST_PANEL_PAGE:
830
 
        g_value_set_int (value, priv->last_panel_page);
831
 
        break;
832
 
    case PROP_LAST_WEB_SEARCH:
833
 
        g_value_set_int (value, priv->last_web_search);
834
 
        break;
835
 
    case PROP_LAST_PAGEHOLDER_URI:
836
 
        g_value_set_string (value, priv->last_pageholder_uri);
837
 
        break;
838
 
 
839
 
    case PROP_SHOW_NAVIGATIONBAR:
840
 
        g_value_set_boolean (value, priv->show_navigationbar);
841
 
        break;
842
 
    case PROP_SHOW_BOOKMARKBAR:
843
 
        g_value_set_boolean (value, priv->show_bookmarkbar);
844
 
        break;
845
 
    case PROP_SHOW_PANEL:
846
 
        g_value_set_boolean (value, priv->show_panel);
847
 
        break;
848
 
    case PROP_SHOW_STATUSBAR:
849
 
        g_value_set_boolean (value, priv->show_statusbar);
850
 
        break;
851
 
 
852
 
    case PROP_TOOLBAR_STYLE:
853
 
        g_value_set_enum (value, priv->toolbar_style);
854
 
        break;
855
 
    case PROP_SMALL_TOOLBAR:
856
 
        g_value_set_boolean (value, priv->small_toolbar);
857
 
        break;
858
 
    case PROP_SHOW_NEW_TAB:
859
 
        g_value_set_boolean (value, priv->show_new_tab);
860
 
        break;
861
 
    case PROP_SHOW_HOMEPAGE:
862
 
        g_value_set_boolean (value, priv->show_homepage);
863
 
        break;
864
 
    case PROP_SHOW_WEB_SEARCH:
865
 
        g_value_set_boolean (value, priv->show_web_search);
866
 
        break;
867
 
    case PROP_SHOW_TRASH:
868
 
        g_value_set_boolean (value, priv->show_trash);
869
 
        break;
870
 
 
871
 
    case PROP_LOAD_ON_STARTUP:
872
 
        g_value_set_enum (value, priv->load_on_startup);
873
 
        break;
874
 
    case PROP_HOMEPAGE:
875
 
        g_value_set_string (value, priv->homepage);
876
 
        break;
877
 
    case PROP_DOWNLOAD_FOLDER:
878
 
        g_value_set_string (value, priv->download_folder);
879
 
        break;
880
 
    case PROP_SHOW_DOWNLOAD_NOTIFICATION:
881
 
        g_value_set_boolean (value, priv->show_download_notification);
882
 
        break;
883
 
    case PROP_LOCATION_ENTRY_SEARCH:
884
 
        g_value_set_string (value, priv->location_entry_search);
885
 
        break;
886
 
    case PROP_PREFERRED_ENCODING:
887
 
        g_value_set_enum (value, priv->preferred_encoding);
888
 
        break;
889
 
 
890
 
    case PROP_TAB_LABEL_SIZE:
891
 
        g_value_set_int (value, priv->tab_label_size);
892
 
        break;
893
 
    case PROP_CLOSE_BUTTONS_ON_TABS:
894
 
        g_value_set_boolean (value, priv->close_buttons_on_tabs);
895
 
        break;
896
 
    case PROP_OPEN_NEW_PAGES_IN:
897
 
        g_value_set_enum (value, priv->open_new_pages_in);
898
 
        break;
899
 
    case PROP_MIDDLE_CLICK_OPENS_SELECTION:
900
 
        g_value_set_boolean (value, priv->middle_click_opens_selection);
901
 
        break;
902
 
    case PROP_OPEN_TABS_IN_THE_BACKGROUND:
903
 
        g_value_set_boolean (value, priv->open_tabs_in_the_background);
904
 
        break;
905
 
    case PROP_OPEN_POPUPS_IN_TABS:
906
 
        g_value_set_boolean (value, priv->open_popups_in_tabs);
907
 
        break;
908
 
 
909
 
    case PROP_ACCEPT_COOKIES:
910
 
        g_value_set_enum (value, priv->accept_cookies);
911
 
        break;
912
 
    case PROP_ORIGINAL_COOKIES_ONLY:
913
 
        g_value_set_boolean (value, priv->original_cookies_only);
914
 
        break;
915
 
    case PROP_MAXIMUM_COOKIE_AGE:
916
 
        g_value_set_int (value, priv->maximum_cookie_age);
917
 
        break;
918
 
 
919
 
    case PROP_REMEMBER_LAST_VISITED_PAGES:
920
 
        g_value_set_boolean (value, priv->remember_last_visited_pages);
921
 
        break;
922
 
    case PROP_MAXIMUM_HISTORY_AGE:
923
 
        g_value_set_int (value, priv->maximum_history_age);
924
 
        break;
925
 
    case PROP_REMEMBER_LAST_FORM_INPUTS:
926
 
        g_value_set_boolean (value, priv->remember_last_form_inputs);
927
 
        break;
928
 
    case PROP_REMEMBER_LAST_DOWNLOADED_FILES:
929
 
        g_value_set_boolean (value, priv->remember_last_downloaded_files);
930
 
        break;
931
 
 
932
 
    case PROP_HTTP_PROXY:
933
 
        g_value_set_string (value, priv->http_proxy);
934
 
        break;
935
 
    case PROP_CACHE_SIZE:
936
 
        g_value_set_int (value, priv->cache_size);
937
 
        break;
938
 
    default:
939
 
        G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
940
 
        break;
941
 
    }
942
 
}
943
 
 
944
 
static void
945
 
midori_web_settings_notify (GObject*    object,
946
 
                            GParamSpec* pspec)
947
 
{
948
 
 
949
 
}
950
 
 
951
 
/**
952
 
 * midori_web_settings_new:
953
 
 *
954
 
 * Creates a new #MidoriWebSettings instance with default values.
955
 
 *
956
 
 * You will typically want to assign this to a #MidoriWebView or #MidoriBrowser.
957
 
 *
958
 
 * Return value: a new #MidoriWebSettings
959
 
 **/
960
 
MidoriWebSettings*
961
 
midori_web_settings_new (void)
962
 
{
963
 
    MidoriWebSettings* web_settings = g_object_new (MIDORI_TYPE_WEB_SETTINGS,
964
 
                                                    NULL);
965
 
 
966
 
    return web_settings;
967
 
}
968
 
 
969
 
/**
970
 
 * midori_web_settings_copy:
971
 
 *
972
 
 * Copies an existing #MidoriWebSettings instance.
973
 
 *
974
 
 * Return value: a new #MidoriWebSettings
975
 
 **/
976
 
MidoriWebSettings*
977
 
midori_web_settings_copy (MidoriWebSettings* web_settings)
978
 
{
979
 
    g_return_val_if_fail (MIDORI_IS_WEB_SETTINGS (web_settings), NULL);
980
 
 
981
 
    MidoriWebSettingsPrivate* priv = web_settings->priv;
982
 
 
983
 
    MidoriWebSettings* copy;
984
 
    copy = MIDORI_WEB_SETTINGS (webkit_web_settings_copy (
985
 
        WEBKIT_WEB_SETTINGS (web_settings)));
986
 
    g_object_set (copy,
987
 
                  "load-on-startup", priv->load_on_startup,
988
 
                  "homepage", priv->homepage,
989
 
                  "download-folder", priv->download_folder,
990
 
                  "show-download-notification", priv->show_download_notification,
991
 
                  "location-entry-search", priv->location_entry_search,
992
 
                  "preferred-encoding", priv->preferred_encoding,
993
 
 
994
 
                  "toolbar-style", priv->toolbar_style,
995
 
                  "small-toolbar", priv->small_toolbar,
996
 
                  "show-web-search", priv->show_web_search,
997
 
                  "show-new-tab", priv->show_new_tab,
998
 
                  "show-trash", priv->show_trash,
999
 
 
1000
 
                  "tab-label-size", priv->tab_label_size,
1001
 
                  "close-buttons-on-tabs", priv->close_buttons_on_tabs,
1002
 
                  "open-new-pages-in", priv->open_new_pages_in,
1003
 
                  "middle-click-opens-selection", priv->middle_click_opens_selection,
1004
 
                  "open-tabs-in-the-background", priv->open_tabs_in_the_background,
1005
 
                  "open-popups-in-tabs", priv->open_popups_in_tabs,
1006
 
 
1007
 
                  "accept-cookies", priv->accept_cookies,
1008
 
                  "original-cookies-only", priv->original_cookies_only,
1009
 
                  "maximum-cookie-age", priv->maximum_cookie_age,
1010
 
 
1011
 
                  "remember-last-visited-pages", priv->remember_last_visited_pages,
1012
 
                  "maximum-history-age", priv->maximum_history_age,
1013
 
                  "remember-last-form-inputs", priv->remember_last_form_inputs,
1014
 
                  "remember-last-downloaded-files", priv->remember_last_downloaded_files,
1015
 
 
1016
 
                  "http-proxy", priv->http_proxy,
1017
 
                  "cache-size", priv->cache_size,
1018
 
                  NULL);
1019
 
 
1020
 
    return copy;
1021
 
}