svnno****@sourc*****
svnno****@sourc*****
Thu Apr 5 11:35:11 JST 2007
Revision: 3144 http://svn.sourceforge.jp/cgi-bin/viewcvs.cgi?root=kazehakase&view=rev&rev=3144 Author: kous Date: 2007-04-05 11:35:10 +0900 (Thu, 05 Apr 2007) Log Message: ----------- * po/POTFILES.in: added module/embed/*/Makefile.am. * src/prefs_ui/prefs_browser.c: supported gettext. * src/kz-embed.c (kz_embed_engine_ids): loaded all engines if not loaded. * src/kz-module.[ch] (kz_module_load_modules_unique): added. * module/embed/*.am (ENGINE_ID_FOR_GETTEXT): added. * src/prefs_ui/prefs_browser.[ch], src/prefs_ui/Makefile.am, src/kz-prefs-win.c: made layout engine selectable. * src/prefs_ui/prefs_history.c (set_search_engine): added NULL check. * src/kz-window.c (kz_window_create_embed): Use Global/layout_engine. * src/kz-embed.[ch] (kz_embed_engine_ids): added. Modified Paths: -------------- kazehakase/trunk/ChangeLog kazehakase/trunk/module/embed/gecko/Makefile.am kazehakase/trunk/module/embed/gtk-webcore/Makefile.am kazehakase/trunk/module/embed/ie/Makefile.am kazehakase/trunk/po/POTFILES.in kazehakase/trunk/src/kz-embed.c kazehakase/trunk/src/kz-module.c kazehakase/trunk/src/kz-module.h kazehakase/trunk/src/prefs_ui/prefs_browser.c Modified: kazehakase/trunk/ChangeLog =================================================================== --- kazehakase/trunk/ChangeLog 2007-04-05 01:52:20 UTC (rev 3143) +++ kazehakase/trunk/ChangeLog 2007-04-05 02:35:10 UTC (rev 3144) @@ -1,5 +1,16 @@ 2007-04-05 Kouhei Sutou <kou****@cozmi*****> + * po/POTFILES.in: added module/embed/*/Makefile.am. + + * src/prefs_ui/prefs_browser.c: supported gettext. + + * src/kz-embed.c (kz_embed_engine_ids): loaded all engines if + not loaded. + + * src/kz-module.[ch] (kz_module_load_modules_unique): added. + + * module/embed/*.am (ENGINE_ID_FOR_GETTEXT): added. + * src/prefs_ui/prefs_browser.[ch], src/prefs_ui/Makefile.am, src/kz-prefs-win.c: made layout engine selectable. Modified: kazehakase/trunk/module/embed/gecko/Makefile.am =================================================================== --- kazehakase/trunk/module/embed/gecko/Makefile.am 2007-04-05 01:52:20 UTC (rev 3143) +++ kazehakase/trunk/module/embed/gecko/Makefile.am 2007-04-05 02:35:10 UTC (rev 3144) @@ -1,5 +1,6 @@ CLEANFILES = *~ *.bak +ENGINE_ID_FOR_GETTEXT = N_("gecko") embed_LTLIBRARIES = gecko.la INCLUDES = \ Modified: kazehakase/trunk/module/embed/gtk-webcore/Makefile.am =================================================================== --- kazehakase/trunk/module/embed/gtk-webcore/Makefile.am 2007-04-05 01:52:20 UTC (rev 3143) +++ kazehakase/trunk/module/embed/gtk-webcore/Makefile.am 2007-04-05 02:35:10 UTC (rev 3144) @@ -1,6 +1,7 @@ # -*- Mode: Makefile; tab-width: 8; indent-tabs-mode: t; -*- CLEANFILES = *~ *.bak +ENGINE_ID_FOR_GETTEXT = N_("gtk-webcore") embed_LTLIBRARIES = gtk-webcore.la INCLUDES = \ Modified: kazehakase/trunk/module/embed/ie/Makefile.am =================================================================== --- kazehakase/trunk/module/embed/ie/Makefile.am 2007-04-05 01:52:20 UTC (rev 3143) +++ kazehakase/trunk/module/embed/ie/Makefile.am 2007-04-05 02:35:10 UTC (rev 3144) @@ -1,6 +1,7 @@ # -*- Mode: Makefile; tab-width: 8; indent-tabs-mode: t; -*- CLEANFILES = *~ *.bak +ENGINE_ID_FOR_GETTEXT = N_("ie") embed_LTLIBRARIES = ie.la INCLUDES = \ Modified: kazehakase/trunk/po/POTFILES.in =================================================================== --- kazehakase/trunk/po/POTFILES.in 2007-04-05 01:52:20 UTC (rev 3143) +++ kazehakase/trunk/po/POTFILES.in 2007-04-05 02:35:10 UTC (rev 3144) @@ -24,10 +24,13 @@ src/dialogs/kz-about-dialog.c src/dialogs/kz-print-dialog.c src/dialogs/kz-copy-format-dialog.c +module/embed/gecko/Makefile.am module/embed/gecko/GtkNSSDialogs.cpp module/embed/gecko/GtkPromptService.cpp module/embed/gecko/kz-gecko-embed.cpp module/embed/gecko/kz-mozfilepicker.cpp +module/embed/gtk-webcore/Makefile.am +module/embed/ie/Makefile.am src/sidebar/kz-downloader-sidebar.c src/sidebar/kz-tabtree.c src/sidebar/kz-thumbnails-sidebar.c Modified: kazehakase/trunk/src/kz-embed.c =================================================================== --- kazehakase/trunk/src/kz-embed.c 2007-04-05 01:52:20 UTC (rev 3143) +++ kazehakase/trunk/src/kz-embed.c 2007-04-05 02:35:10 UTC (rev 3144) @@ -24,6 +24,7 @@ #include "kz-marshalers.h" static GList *embeds = NULL; +static gboolean loaded = FALSE; static const gchar * _kz_embed_module_dir (void) @@ -38,10 +39,22 @@ void kz_embed_load (const gchar *base_dir) { + GList *loaded_modules; + gboolean local_loaded = loaded; + + loaded = TRUE; + if (!base_dir) base_dir = _kz_embed_module_dir(); - embeds = g_list_concat(kz_module_load_modules(base_dir), embeds); + if (local_loaded) + loaded_modules = kz_module_load_modules(base_dir); + else + loaded_modules = kz_module_load_modules_unique(base_dir, embeds); + +#warning FIXME: workaround for kz-gecko-embed.cpp. + g_list_foreach(loaded_modules, (GFunc)g_type_module_use, NULL); + embeds = g_list_concat(loaded_modules, embeds); } void @@ -82,7 +95,7 @@ GList *node; GList *result = NULL; - if (!embeds) + if (!loaded) kz_embed_load(NULL); for (node = embeds; node; node = g_list_next(node)) Modified: kazehakase/trunk/src/kz-module.c =================================================================== --- kazehakase/trunk/src/kz-module.c 2007-04-05 01:52:20 UTC (rev 3143) +++ kazehakase/trunk/src/kz-module.c 2007-04-05 02:35:10 UTC (rev 3144) @@ -313,26 +313,41 @@ GList * kz_module_load_modules (const gchar *base_dir) { + return kz_module_load_modules_unique(base_dir, NULL); +} + +GList * +kz_module_load_modules_unique (const gchar *base_dir, GList *exist_modules) +{ GDir *dir; GList *modules = NULL; + const gchar *entry; dir = g_dir_open(base_dir, 0, NULL); - if (dir) { - const gchar *entry; + if (!dir) + return modules; - while ((entry = g_dir_read_name(dir))) { - KzModule *module; - module = kz_module_load_module(base_dir, entry); - if (module) + while ((entry = g_dir_read_name(dir))) { + KzModule *module; + + module = kz_module_load_module(base_dir, entry); + if (module) + { + GTypeModule *g_module; + + g_module = G_TYPE_MODULE(module); + if (kz_module_find(exist_modules, g_module->name)) + kz_module_unload(module); + else modules = g_list_prepend(modules, module); } - - g_dir_close(dir); } + g_dir_close(dir); return modules; } + static gboolean _kz_module_match_name (const gchar *mod_path, const gchar *name) { Modified: kazehakase/trunk/src/kz-module.h =================================================================== --- kazehakase/trunk/src/kz-module.h 2007-04-05 01:52:20 UTC (rev 3143) +++ kazehakase/trunk/src/kz-module.h 2007-04-05 02:35:10 UTC (rev 3144) @@ -51,6 +51,8 @@ KzModule *kz_module_load_module (const gchar *base_dir, const gchar *name); GList *kz_module_load_modules (const gchar *base_dir); +GList *kz_module_load_modules_unique (const gchar *base_dir, + GList *modules); KzModule *kz_module_find (GList *modules, const gchar *name); Modified: kazehakase/trunk/src/prefs_ui/prefs_browser.c =================================================================== --- kazehakase/trunk/src/prefs_ui/prefs_browser.c 2007-04-05 01:52:20 UTC (rev 3143) +++ kazehakase/trunk/src/prefs_ui/prefs_browser.c 2007-04-05 02:35:10 UTC (rev 3144) @@ -28,7 +28,13 @@ #define DATA_KEY "KzPrefsBrowser::info" +enum +{ + ID_COL, + TEXT_COL +}; + static GtkWidget *prefs_browser_create (void); static void prefs_browser_response (GtkWidget *widget, gint response); @@ -73,15 +79,28 @@ gint i = 0, active = 0; GList *node; GList *layout_engine_ids = NULL; + GtkListStore *store; + GtkTreeIter iter; layout_engine_name = KZ_CONF_GET_STR("Browser", "layout_engine"); - gtk_combo_box_append_text(GTK_COMBO_BOX(combo), _("None")); + store = GTK_LIST_STORE(gtk_combo_box_get_model(combo)); + gtk_list_store_append(store, &iter); + gtk_list_store_set(store, &iter, + ID_COL, NULL, + TEXT_COL, _("None"), + -1); + layout_engine_ids = kz_embed_engine_ids(); for (node = layout_engine_ids; node; node = g_list_next(node)) { gchar *engine_id = node->data; - gtk_combo_box_append_text(combo, engine_id); + + gtk_list_store_append(store, &iter); + gtk_list_store_set(store, &iter, + ID_COL, engine_id, + TEXT_COL, _(engine_id), + -1); i++; if (layout_engine_name && strcmp(engine_id, layout_engine_name) == 0) @@ -96,27 +115,25 @@ gtk_combo_box_set_active(combo, active); } -static GtkWidget * -prefs_browser_create (void) +static void +create_title (KzPrefsBrowser *prefsui) { - KzPrefsBrowser *prefsui = g_new0(KzPrefsBrowser, 1); - GtkWidget *main_vbox, *vbox, *hbox, *frame; - GtkWidget *label, *combo; + GtkWidget *label; - main_vbox = gtk_vbox_new(FALSE, 0); - prefsui->main_vbox = main_vbox; - g_object_set_data_full(G_OBJECT(main_vbox), DATA_KEY, - prefsui, prefs_browser_destroy); - label = kz_prefs_ui_utils_create_title(_("Browser")); - gtk_box_pack_start(GTK_BOX(main_vbox), label, - FALSE, FALSE, 0); + gtk_box_pack_start(GTK_BOX(prefsui->main_vbox), label, FALSE, FALSE, 0); gtk_widget_show(label); +} +static GtkWidget * +create_layout_engine_area (KzPrefsBrowser *prefsui) +{ + GtkWidget *frame, *vbox; + frame = gtk_frame_new(_("Layout engine")); gtk_frame_set_label_align(GTK_FRAME(frame), 0.03, 0.5); gtk_container_set_border_width(GTK_CONTAINER(frame), 5); - gtk_box_pack_start(GTK_BOX(main_vbox), frame, FALSE, FALSE, 2); + gtk_box_pack_start(GTK_BOX(prefsui->main_vbox), frame, FALSE, FALSE, 2); gtk_widget_show(frame); vbox = gtk_vbox_new(FALSE, 0); @@ -124,21 +141,59 @@ gtk_container_add(GTK_CONTAINER(frame), vbox); gtk_widget_show(vbox); + return vbox; +} + +static void +create_layout_engine_selector (KzPrefsBrowser *prefsui, + GtkWidget *layout_engine_area) +{ + GtkWidget *hbox, *label, *combo; + GtkCellRenderer *cell; + GtkListStore *store; + hbox = gtk_hbox_new(FALSE, 0); gtk_container_set_border_width(GTK_CONTAINER(hbox), 4); - gtk_container_add(GTK_CONTAINER(vbox), hbox); + gtk_container_add(GTK_CONTAINER(layout_engine_area), hbox); gtk_widget_show(hbox); label = gtk_label_new_with_mnemonic(_("Layout engine name")); gtk_box_pack_start(GTK_BOX(hbox), label, FALSE, FALSE, 2); gtk_widget_show(label); - prefsui->layout_engine = combo = gtk_combo_box_new_text(); + + store = gtk_list_store_new(2, G_TYPE_STRING, G_TYPE_STRING); + combo = gtk_combo_box_new_with_model(GTK_TREE_MODEL(store)); + prefsui->layout_engine = combo; + g_object_unref(store); + + cell = gtk_cell_renderer_text_new(); + gtk_cell_layout_pack_start(GTK_CELL_LAYOUT(combo), cell, TRUE); + gtk_cell_layout_set_attributes(GTK_CELL_LAYOUT(combo), cell, + "text", TEXT_COL, + NULL); + set_layout_engine(GTK_COMBO_BOX(combo)); gtk_widget_show(combo); gtk_box_pack_start (GTK_BOX(hbox), combo, TRUE, TRUE, 0); - g_signal_connect(combo, "changed", - G_CALLBACK(cb_changed), prefsui); + g_signal_connect(combo, "changed", G_CALLBACK(cb_changed), prefsui); +} + +static GtkWidget * +prefs_browser_create (void) +{ + KzPrefsBrowser *prefsui = g_new0(KzPrefsBrowser, 1); + GtkWidget *main_vbox, *layout_engine_area; + + main_vbox = gtk_vbox_new(FALSE, 0); + prefsui->main_vbox = main_vbox; + g_object_set_data_full(G_OBJECT(main_vbox), DATA_KEY, + prefsui, prefs_browser_destroy); + + create_title(prefsui); + layout_engine_area = create_layout_engine_area(prefsui); + create_layout_engine_selector(prefsui, layout_engine_area); + prefsui->changed = FALSE; return main_vbox; @@ -167,8 +222,15 @@ } else { - gchar *layout_engine; - layout_engine = gtk_combo_box_get_active_text(combo); + gchar *layout_engine = NULL; + GtkTreeIter iter; + GtkTreeModel *model; + + model = gtk_combo_box_get_model(combo); + gtk_combo_box_get_active_iter(combo, &iter); + gtk_tree_model_get(model, &iter, + ID_COL, &layout_engine, + -1); if (layout_engine) { KZ_CONF_SET_STR("Browser", "layout_engine",