diff --git a/ChangeLog b/ChangeLog index 31d311c8707453030910f6fddd1a7abc8109cf9f..2d59cf9e993abd6c3ad0441c39a1bee77f180e6c 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,6 +1,9 @@ 2008-03-30 Enrico Tröger <enrico(dot)troeger(at)uvena(dot)de> * More code reorganisation and cleanup. + * Redesign preferences dialog: use a GtkNotebook and use a XfceDialog. + * Update POTFILES.in. + * Remove debug messages. 2008-03-27 Enrico Tröger <enrico(dot)troeger(at)uvena(dot)de> diff --git a/lib/common.c b/lib/common.c index ed5583e787b6dd72f5688426664ad20d231e6d5b..15267dc6b53422c749edbf1585e816b38982ce11 100644 --- a/lib/common.c +++ b/lib/common.c @@ -124,7 +124,7 @@ static gchar *str_replace(gchar *haystack, const gchar *needle, const gchar *rep /* taken from xarchiver, thanks Giuseppe */ -static gboolean open_browser(DictData *dd, const gchar *uri) +gboolean dict_open_browser(DictData *dd, const gchar *uri) { gchar *argv[3]; gchar *browser_path; @@ -202,7 +202,7 @@ static gboolean start_web_query(DictData *dd, const gchar *word) } } uri = str_replace(g_strdup(base), "{word}", dd->searched_word); - if (! open_browser(dd, uri)) + if (! dict_open_browser(dd, uri)) { xfce_err(_("Browser could not be opened. Please check your preferences.")); success = FALSE; @@ -255,7 +255,7 @@ void dict_search_word(DictData *dd, const gchar *word) { gboolean browser_started = start_web_query(dd, dd->searched_word); - /* If we started a web search, the browser was successfully started and we are not in the + /* If the browser was successfully started and we are not in the * stand-alone app, then hide the main window in favour of the started browser. * If we are in the stand-alone app, don't hide the main window, we don't want this */ if (browser_started && dd->is_plugin) @@ -341,7 +341,6 @@ void dict_write_rc_file(DictData *dd) void dict_free_data(DictData *dd) { - g_message("dict: destroy window"); gtk_widget_destroy(dd->window); dict_write_rc_file(dd); diff --git a/lib/common.h b/lib/common.h index b9ad48bbda22869ffbc720f28d9be3ff1497ed14..fce2ea253a9d3e660a2c4c3c3ae69ae58baef7f7 100644 --- a/lib/common.h +++ b/lib/common.h @@ -27,6 +27,9 @@ ((ptr) && (ptr)[0]) +#define PLUGIN_WEBSITE "http://goodies.xfce.org/projects/xfce4-dict" + + typedef enum { DICTMODE_DICT = 0, @@ -106,6 +109,7 @@ void dict_write_rc_file(DictData *dd); void dict_read_rc_file(DictData *dd); void dict_search_word(DictData *dd, const gchar *word); void dict_signal_cb(gint sig); +gboolean dict_open_browser(DictData *dd, const gchar *uri); void dict_drag_data_received(GtkWidget *widget, GdkDragContext *drag_context, gint x, gint y, GtkSelectionData *data, guint info, guint ltime, DictData *dd); diff --git a/lib/prefs.c b/lib/prefs.c index b1d5ce0cbe28d572021d93b6bc99327a0944cf06..6a57ea67d51af9a3ed478807b1e1f7993e109872 100644 --- a/lib/prefs.c +++ b/lib/prefs.c @@ -78,98 +78,151 @@ static void get_spell_dictionaries(DictData *dd) } -void dict_prefs_dialog_response(GtkWidget *dlg, gint response, DictData *dd) +static void prefs_dialog_response(GtkWidget *dlg, gint response, DictData *dd) { - if (response == GTK_RESPONSE_OK) + gchar *tmp; + + if (response == GTK_RESPONSE_HELP) { - gchar *tmp; - /* MODE DICT */ - tmp = gtk_combo_box_get_active_text(GTK_COMBO_BOX(dd->dict_combo)); - if (tmp == NULL || tmp[0] == '0' || tmp[0] == '-') - { - xfce_err(_("You have chosen an invalid dictionary entry.")); - g_free(tmp); - return; - } + /* show help */ + gboolean result = dict_open_browser(dd, "exo-open --launch WebBrowser " PLUGIN_WEBSITE); - dd->port = gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(dd->port_spinner)); + if (G_UNLIKELY(result == FALSE)) + g_warning(_("Unable to open the following url: %s"), PLUGIN_WEBSITE); - g_free(dd->server); - dd->server = g_strdup(gtk_entry_get_text(GTK_ENTRY(dd->server_entry))); + return; + } - g_free(dd->dictionary); - dd->dictionary = tmp; + /* MODE DICT */ + tmp = gtk_combo_box_get_active_text(GTK_COMBO_BOX(dd->dict_combo)); + if (tmp == NULL || tmp[0] == '0' || tmp[0] == '-') + { + xfce_err(_("You have chosen an invalid dictionary entry.")); + g_free(tmp); + return; + } - /* MODE WEB */ - if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(dd->web_radio_leo_gereng))) - dd->web_mode = WEBMODE_LEO_GERENG; - else if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(dd->web_radio_leo_gerfre))) - dd->web_mode = WEBMODE_LEO_GERFRE; - else if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(dd->web_radio_leo_gerspa))) - dd->web_mode = WEBMODE_LEO_GERSPA; - else - { - dd->web_mode = WEBMODE_OTHER; + dd->port = gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(dd->port_spinner)); - g_free(dd->web_url); - dd->web_url = g_strdup(gtk_entry_get_text(GTK_ENTRY(dd->web_entry))); - } + g_free(dd->server); + dd->server = g_strdup(gtk_entry_get_text(GTK_ENTRY(dd->server_entry))); - /* MODE SPELL */ - tmp = gtk_combo_box_get_active_text(GTK_COMBO_BOX(dd->spell_combo)); - if (NZV(tmp)) - { - g_free(dd->spell_dictionary); - dd->spell_dictionary = tmp; - } + g_free(dd->dictionary); + dd->dictionary = tmp; - g_free(dd->spell_bin); - dd->spell_bin = g_strdup(gtk_entry_get_text(GTK_ENTRY(dd->spell_entry))); + /* MODE WEB */ + if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(dd->web_radio_leo_gereng))) + dd->web_mode = WEBMODE_LEO_GERENG; + else if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(dd->web_radio_leo_gerfre))) + dd->web_mode = WEBMODE_LEO_GERFRE; + else if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(dd->web_radio_leo_gerspa))) + dd->web_mode = WEBMODE_LEO_GERSPA; + else + { + dd->web_mode = WEBMODE_OTHER; - /* general settings */ - dd->show_panel_entry = gtk_toggle_button_get_active( - GTK_TOGGLE_BUTTON(dd->check_panel_entry)); - dd->panel_entry_size = gtk_spin_button_get_value_as_int( - GTK_SPIN_BUTTON(dd->panel_entry_size_spinner)); + g_free(dd->web_url); + dd->web_url = g_strdup(gtk_entry_get_text(GTK_ENTRY(dd->web_entry))); + } - /* save settings */ - dict_write_rc_file(dd); + /* MODE SPELL */ + tmp = gtk_combo_box_get_active_text(GTK_COMBO_BOX(dd->spell_combo)); + if (NZV(tmp)) + { + g_free(dd->spell_dictionary); + dd->spell_dictionary = tmp; } + + g_free(dd->spell_bin); + dd->spell_bin = g_strdup(gtk_entry_get_text(GTK_ENTRY(dd->spell_entry))); + + /* general settings */ + dd->show_panel_entry = gtk_toggle_button_get_active( + GTK_TOGGLE_BUTTON(dd->check_panel_entry)); + dd->panel_entry_size = gtk_spin_button_get_value_as_int( + GTK_SPIN_BUTTON(dd->panel_entry_size_spinner)); + + /* save settings */ + dict_write_rc_file(dd); + gtk_widget_destroy(dlg); } -GtkWidget *dict_prefs_dialog_show(DictData *dd) +GtkWidget *dict_prefs_dialog_show(GtkWidget *parent, DictData *dd) { - GtkWidget *dlg, *header, *vbox, *label3; + GtkWidget *dialog, *inner_vbox, *notebook, *notebook_vbox; + GtkWidget *label1, *label2, *label3; + + dialog = xfce_titled_dialog_new_with_buttons( + _("Xfce Dictionary"), GTK_WINDOW(parent), + GTK_DIALOG_DESTROY_WITH_PARENT | GTK_DIALOG_NO_SEPARATOR, + GTK_STOCK_HELP, GTK_RESPONSE_HELP, + GTK_STOCK_CLOSE, GTK_RESPONSE_OK, + NULL); - dlg = gtk_dialog_new_with_buttons(_("Properties"), - GTK_WINDOW(dd->window), - GTK_DIALOG_DESTROY_WITH_PARENT | - GTK_DIALOG_NO_SEPARATOR, - GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL, - GTK_STOCK_CLOSE, GTK_RESPONSE_OK, - NULL); + gtk_window_set_position(GTK_WINDOW(dialog), GTK_WIN_POS_CENTER); + gtk_window_set_icon_name(GTK_WINDOW(dialog), "xfce4-settings"); + g_signal_connect_after(dialog, "response", G_CALLBACK(prefs_dialog_response), dd); - gtk_window_set_position(GTK_WINDOW(dlg), GTK_WIN_POS_CENTER); + notebook = gtk_notebook_new(); + gtk_widget_show(notebook); + gtk_box_pack_start(GTK_BOX(GTK_DIALOG(dialog)->vbox), notebook, FALSE, TRUE, 0); + gtk_container_set_border_width(GTK_CONTAINER(notebook), 5); - gtk_container_set_border_width(GTK_CONTAINER(dlg), 2); + /* + * Page: general + */ + { + GtkWidget *pe_hbox; - header = xfce_create_header(NULL, _("Dictionary plugin")); - gtk_container_set_border_width(GTK_CONTAINER(header), 6); - gtk_widget_show(header); - gtk_box_pack_start(GTK_BOX(GTK_DIALOG (dlg)->vbox), header, FALSE, TRUE, 0); + notebook_vbox = gtk_vbox_new(FALSE, 2); + gtk_widget_show(notebook_vbox); + inner_vbox = gtk_vbox_new(FALSE, 5); + gtk_widget_show(inner_vbox); + gtk_notebook_append_page(GTK_NOTEBOOK(notebook), notebook_vbox, gtk_label_new(_("General"))); - vbox = gtk_vbox_new(FALSE, 3); - gtk_container_set_border_width(GTK_CONTAINER(vbox), 6); - gtk_widget_show(vbox); - gtk_box_pack_start(GTK_BOX(GTK_DIALOG(dlg)->vbox), vbox, TRUE, TRUE, 0); + /* show panel entry check box */ + dd->check_panel_entry = gtk_check_button_new_with_label( + _("Show text field in the panel")); + gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(dd->check_panel_entry), dd->show_panel_entry); + gtk_widget_show(dd->check_panel_entry); + g_signal_connect(G_OBJECT(dd->check_panel_entry), "toggled", + G_CALLBACK(show_panel_entry_toggled), dd); + + /* panel entry size */ + dd->panel_entry_size_label = gtk_label_new_with_mnemonic(_("Text field size:")); + gtk_widget_show(dd->panel_entry_size_label); + dd->panel_entry_size_spinner = gtk_spin_button_new_with_range(0.0, 500.0, 1.0); + gtk_spin_button_set_value(GTK_SPIN_BUTTON(dd->panel_entry_size_spinner), + dd->panel_entry_size); + gtk_widget_show(dd->panel_entry_size_spinner); + + pe_hbox = gtk_hbox_new(FALSE, 0); + gtk_widget_show(pe_hbox); + + gtk_box_pack_start(GTK_BOX(pe_hbox), dd->panel_entry_size_label, FALSE, FALSE, 10); + gtk_box_pack_start(GTK_BOX(pe_hbox), dd->panel_entry_size_spinner, TRUE, TRUE, 0); + + gtk_box_pack_start(GTK_BOX(inner_vbox), dd->check_panel_entry, FALSE, FALSE, 0); + gtk_box_pack_start(GTK_BOX(inner_vbox), pe_hbox, FALSE, FALSE, 0); + gtk_box_pack_start(GTK_BOX(notebook_vbox), inner_vbox, TRUE, TRUE, 5); + + /* init the sensitive widgets */ + show_panel_entry_toggled(GTK_TOGGLE_BUTTON(dd->check_panel_entry), dd); + } /* - * Mode: DICT + * Page: DICTD */ { - GtkWidget *label1, *label2, *table, *button_get_list, *frame1; + GtkWidget *table, *button_get_list; + + notebook_vbox = gtk_vbox_new(FALSE, 2); + gtk_widget_show(notebook_vbox); + inner_vbox = gtk_vbox_new(FALSE, 5); + gtk_widget_show(inner_vbox); + gtk_notebook_append_page(GTK_NOTEBOOK(notebook), notebook_vbox, gtk_label_new(_("Dictd"))); /* server address */ label1 = gtk_label_new_with_mnemonic(_("Server:")); @@ -219,7 +272,6 @@ GtkWidget *dict_prefs_dialog_show(DictData *dd) gtk_widget_show(button_get_list); g_signal_connect(button_get_list, "clicked", G_CALLBACK(dict_get_dict_list_cb), dd); - /* put it all together */ table = gtk_table_new(3, 3, FALSE); gtk_widget_show(table); @@ -232,7 +284,7 @@ GtkWidget *dict_prefs_dialog_show(DictData *dd) gtk_misc_set_alignment(GTK_MISC(label1), 1, 0); gtk_table_attach(GTK_TABLE(table), dd->server_entry, 1, 2, 0, 1, - (GtkAttachOptions) (GTK_FILL), + (GtkAttachOptions) (GTK_FILL | GTK_EXPAND), (GtkAttachOptions) (0), 5, 5); gtk_table_attach(GTK_TABLE(table), label2, 0, 1, 1, 2, @@ -241,7 +293,7 @@ GtkWidget *dict_prefs_dialog_show(DictData *dd) gtk_misc_set_alignment(GTK_MISC(label2), 1, 0); gtk_table_attach(GTK_TABLE(table), dd->port_spinner, 1, 2, 1, 2, - (GtkAttachOptions) (GTK_FILL), + (GtkAttachOptions) (GTK_FILL | GTK_EXPAND), (GtkAttachOptions) (0), 5, 5); gtk_table_attach(GTK_TABLE(table), label3, 0, 1, 2, 3, @@ -250,31 +302,29 @@ GtkWidget *dict_prefs_dialog_show(DictData *dd) gtk_misc_set_alignment(GTK_MISC(label3), 1, 0); gtk_table_attach(GTK_TABLE(table), dd->dict_combo, 1, 2, 2, 3, - (GtkAttachOptions) (GTK_FILL), + (GtkAttachOptions) (GTK_FILL | GTK_EXPAND), (GtkAttachOptions) (0), 0, 0); gtk_table_attach(GTK_TABLE(table), button_get_list, 2, 3, 2, 3, (GtkAttachOptions) (GTK_FILL), (GtkAttachOptions) (0), 5, 5); - - frame1 = gtk_frame_new(_("Use a DICT server")); - gtk_frame_set_shadow_type(GTK_FRAME(frame1), GTK_SHADOW_ETCHED_OUT); - gtk_widget_show(frame1); - gtk_container_set_border_width(GTK_CONTAINER(frame1), 3); - gtk_container_add(GTK_CONTAINER(frame1), table); - gtk_box_pack_start(GTK_BOX(vbox), frame1, FALSE, FALSE, 0); + gtk_box_pack_start(GTK_BOX(inner_vbox), table, FALSE, FALSE, 0); + gtk_box_pack_start(GTK_BOX(notebook_vbox), inner_vbox, TRUE, TRUE, 5); } /* - * Mode: WEB + * Page: WEB */ { - GtkWidget *web_vbox, *entry_hbox, *help_label, *frame2; + GtkWidget *entry_hbox; GSList *web_type; - web_vbox = gtk_vbox_new(FALSE, 5); - gtk_widget_show(web_vbox); + notebook_vbox = gtk_vbox_new(FALSE, 5); + gtk_widget_show(notebook_vbox); + inner_vbox = gtk_vbox_new(FALSE, 5); + gtk_widget_show(inner_vbox); + gtk_notebook_append_page(GTK_NOTEBOOK(notebook), notebook_vbox, gtk_label_new(_("Web"))); dd->web_radio_leo_gereng = gtk_radio_button_new_with_label(NULL, _("dict.leo.org - German <-> English")); @@ -282,7 +332,7 @@ GtkWidget *dict_prefs_dialog_show(DictData *dd) if (dd->web_mode == WEBMODE_LEO_GERENG) gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(dd->web_radio_leo_gereng), TRUE); gtk_widget_show(dd->web_radio_leo_gereng); - gtk_box_pack_start(GTK_BOX(web_vbox), dd->web_radio_leo_gereng, FALSE, FALSE, 0); + gtk_box_pack_start(GTK_BOX(inner_vbox), dd->web_radio_leo_gereng, FALSE, FALSE, 0); dd->web_radio_leo_gerfre = gtk_radio_button_new_with_label(web_type, _("dict.leo.org - German <-> French")); @@ -290,7 +340,7 @@ GtkWidget *dict_prefs_dialog_show(DictData *dd) if (dd->web_mode == WEBMODE_LEO_GERFRE) gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(dd->web_radio_leo_gerfre), TRUE); gtk_widget_show(dd->web_radio_leo_gerfre); - gtk_box_pack_start(GTK_BOX(web_vbox), dd->web_radio_leo_gerfre, FALSE, FALSE, 0); + gtk_box_pack_start(GTK_BOX(inner_vbox), dd->web_radio_leo_gerfre, FALSE, FALSE, 0); dd->web_radio_leo_gerspa = gtk_radio_button_new_with_label(web_type, _("dict.leo.org - German <-> Spanish")); @@ -298,7 +348,7 @@ GtkWidget *dict_prefs_dialog_show(DictData *dd) if (dd->web_mode == WEBMODE_LEO_GERSPA) gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(dd->web_radio_leo_gerspa), TRUE); gtk_widget_show(dd->web_radio_leo_gerspa); - gtk_box_pack_start(GTK_BOX(web_vbox), dd->web_radio_leo_gerspa, FALSE, FALSE, 0); + gtk_box_pack_start(GTK_BOX(inner_vbox), dd->web_radio_leo_gerspa, FALSE, FALSE, 0); dd->web_radio_other = gtk_radio_button_new_with_label(web_type, _("Use another website")); if (dd->web_mode == WEBMODE_OTHER) @@ -306,7 +356,7 @@ GtkWidget *dict_prefs_dialog_show(DictData *dd) gtk_widget_show(dd->web_radio_other); g_signal_connect(G_OBJECT(dd->web_radio_other), "toggled", G_CALLBACK(use_webserver_toggled), dd); - gtk_box_pack_start(GTK_BOX(web_vbox), dd->web_radio_other, FALSE, FALSE, 0); + gtk_box_pack_start(GTK_BOX(inner_vbox), dd->web_radio_other, FALSE, FALSE, 0); dd->web_entry_label = gtk_label_new_with_mnemonic(_("URL:")); gtk_widget_show(dd->web_entry_label); @@ -319,30 +369,33 @@ GtkWidget *dict_prefs_dialog_show(DictData *dd) gtk_widget_show(entry_hbox); gtk_box_pack_start(GTK_BOX(entry_hbox), dd->web_entry_label, FALSE, TRUE, 5); gtk_box_pack_start(GTK_BOX(entry_hbox), dd->web_entry, FALSE, FALSE, 0); - gtk_box_pack_start(GTK_BOX(web_vbox), entry_hbox, FALSE, FALSE, 0); - - help_label = gtk_label_new(_("Enter an URL to a web site which offer translation services.\nUse {word} as placeholder for the searched word.")); - gtk_label_set_line_wrap(GTK_LABEL(help_label), TRUE); - gtk_misc_set_alignment(GTK_MISC(help_label), 0, 0); - gtk_widget_show(help_label); - gtk_box_pack_start(GTK_BOX(web_vbox), help_label, TRUE, TRUE, 0); - - frame2 = gtk_frame_new(_("Use a web site")); - gtk_frame_set_shadow_type(GTK_FRAME(frame2), GTK_SHADOW_ETCHED_OUT); - gtk_widget_show(frame2); - gtk_container_set_border_width(GTK_CONTAINER(frame2), 3); - gtk_container_add(GTK_CONTAINER(frame2), web_vbox); - gtk_box_pack_start(GTK_BOX(vbox), frame2, TRUE, TRUE, 0); + gtk_box_pack_start(GTK_BOX(inner_vbox), entry_hbox, FALSE, FALSE, 0); + + label1 = gtk_label_new(_("Enter an URL to a web site which offer translation services.\nUse {word} as placeholder for the searched word.")); + gtk_label_set_line_wrap(GTK_LABEL(label1), TRUE); + gtk_misc_set_alignment(GTK_MISC(label1), 0, 0); + gtk_widget_show(label1); + gtk_box_pack_start(GTK_BOX(inner_vbox), label1, FALSE, FALSE, 0); + gtk_box_pack_start(GTK_BOX(notebook_vbox), inner_vbox, TRUE, TRUE, 5); + + /* init the sensitive widgets */ + use_webserver_toggled(GTK_TOGGLE_BUTTON(dd->web_radio_other), dd); } /* - * Mode: ASPELL + * Page: ASPELL */ { - GtkWidget *label4, *label5, *table, *frame3; + GtkWidget *table; - label4 = gtk_label_new_with_mnemonic(_("Aspell program:")); - gtk_widget_show(label4); + notebook_vbox = gtk_vbox_new(FALSE, 5); + gtk_widget_show(notebook_vbox); + inner_vbox = gtk_vbox_new(FALSE, 5); + gtk_widget_show(inner_vbox); + gtk_notebook_append_page(GTK_NOTEBOOK(notebook), notebook_vbox, gtk_label_new(_("Aspell"))); + + label1 = gtk_label_new_with_mnemonic(_("Aspell program:")); + gtk_widget_show(label1); dd->spell_entry = gtk_entry_new(); gtk_entry_set_max_length(GTK_ENTRY(dd->spell_entry), 256); @@ -352,8 +405,8 @@ GtkWidget *dict_prefs_dialog_show(DictData *dd) } gtk_widget_show(dd->spell_entry); - label5 = gtk_label_new_with_mnemonic(_("Dictionary:")); - gtk_widget_show(label5); + label2 = gtk_label_new_with_mnemonic(_("Dictionary:")); + gtk_widget_show(label2); dd->spell_combo = gtk_combo_box_new_text(); get_spell_dictionaries(dd); @@ -364,69 +417,27 @@ GtkWidget *dict_prefs_dialog_show(DictData *dd) gtk_table_set_row_spacings(GTK_TABLE(table), 5); gtk_table_set_col_spacings(GTK_TABLE(table), 5); - gtk_table_attach(GTK_TABLE(table), label4, 0, 1, 0, 1, + gtk_table_attach(GTK_TABLE(table), label1, 0, 1, 0, 1, (GtkAttachOptions) (GTK_FILL), (GtkAttachOptions) (0), 5, 5); - gtk_misc_set_alignment(GTK_MISC(label4), 1, 0); + gtk_misc_set_alignment(GTK_MISC(label1), 1, 0); gtk_table_attach(GTK_TABLE(table), dd->spell_entry, 1, 2, 0, 1, (GtkAttachOptions) (GTK_FILL | GTK_EXPAND), (GtkAttachOptions) (0), 5, 5); - gtk_table_attach(GTK_TABLE(table), label5, 0, 1, 1, 2, + gtk_table_attach(GTK_TABLE(table), label2, 0, 1, 1, 2, (GtkAttachOptions) (GTK_FILL), (GtkAttachOptions) (0), 5, 0); - gtk_misc_set_alignment(GTK_MISC(label5), 1, 0); + gtk_misc_set_alignment(GTK_MISC(label2), 1, 0); gtk_table_attach(GTK_TABLE(table), dd->spell_combo, 1, 2, 1, 2, (GtkAttachOptions) (GTK_FILL | GTK_EXPAND), (GtkAttachOptions) (0), 5, 5); - frame3 = gtk_frame_new(_("Use Aspell")); - gtk_frame_set_shadow_type(GTK_FRAME(frame3), GTK_SHADOW_ETCHED_OUT); - gtk_widget_show(frame3); - gtk_container_set_border_width(GTK_CONTAINER(frame3), 3); - gtk_container_add(GTK_CONTAINER(frame3), table); - gtk_box_pack_start(GTK_BOX(vbox), frame3, TRUE, FALSE, 0); + gtk_box_pack_start(GTK_BOX(inner_vbox), table, TRUE, FALSE, 0); + gtk_box_pack_start(GTK_BOX(notebook_vbox), inner_vbox, TRUE, TRUE, 5); } - /* Display text entry in the panel */ - { - GtkWidget *pe_hbox, *label; - - /* show panel entry check box */ - dd->check_panel_entry = gtk_check_button_new_with_label( - _("Show text field in the panel")); - gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(dd->check_panel_entry), dd->show_panel_entry); - gtk_widget_show(dd->check_panel_entry); - g_signal_connect(G_OBJECT(dd->check_panel_entry), "toggled", - G_CALLBACK(show_panel_entry_toggled), dd); - - /* panel entry size */ - dd->panel_entry_size_label = gtk_label_new_with_mnemonic(_("Text field size:")); - gtk_widget_show(dd->panel_entry_size_label); - dd->panel_entry_size_spinner = gtk_spin_button_new_with_range(0.0, 500.0, 1.0); - gtk_spin_button_set_value(GTK_SPIN_BUTTON(dd->panel_entry_size_spinner), - dd->panel_entry_size); - gtk_widget_show(dd->panel_entry_size_spinner); - - pe_hbox = gtk_hbox_new(FALSE, 0); - gtk_widget_show(pe_hbox); - - gtk_box_pack_start(GTK_BOX(pe_hbox), dd->panel_entry_size_label, FALSE, FALSE, 10); - gtk_box_pack_start(GTK_BOX(pe_hbox), dd->panel_entry_size_spinner, TRUE, TRUE, 0); - - label = gtk_label_new(""); /* just to make some space, should be done better */ - gtk_widget_show(label); - gtk_box_pack_start(GTK_BOX(vbox), label, FALSE, FALSE, 0); - gtk_box_pack_start(GTK_BOX(vbox), dd->check_panel_entry, FALSE, FALSE, 0); - gtk_box_pack_start(GTK_BOX(vbox), pe_hbox, FALSE, FALSE, 0); - - } - - /* init the sensitive widgets */ - use_webserver_toggled(GTK_TOGGLE_BUTTON(dd->web_radio_other), dd); - show_panel_entry_toggled(GTK_TOGGLE_BUTTON(dd->check_panel_entry), dd); - - return dlg; + return dialog; } diff --git a/lib/prefs.h b/lib/prefs.h index a183bba666a9971d0d91759d27be475a0aa4a443..d2334c3b0d592145d534d39e141241022d1ce893 100644 --- a/lib/prefs.h +++ b/lib/prefs.h @@ -21,8 +21,7 @@ #ifndef PREFS_H #define PREFS_H 1 -GtkWidget *dict_prefs_dialog_show(DictData *dd); -void dict_prefs_dialog_response(GtkWidget *dlg, gint response, DictData *dd); +GtkWidget *dict_prefs_dialog_show(GtkWidget *parent, DictData *dd); #endif diff --git a/panel-plugin/xfce4-dict-plugin.c b/panel-plugin/xfce4-dict-plugin.c index f07ce1106947680f7a379dcf70751ec2aeba9677..43f94f9b3ff1cfdd6c975817516286d4af20df4d 100644 --- a/panel-plugin/xfce4-dict-plugin.c +++ b/panel-plugin/xfce4-dict-plugin.c @@ -221,10 +221,7 @@ static void dict_plugin_free_data(XfcePanelPlugin *plugin, DictPanelData *dpd) GtkWidget *dialog = g_object_get_data(G_OBJECT(dpd->plugin), "dialog"); if (dialog != NULL) - { - g_message("dict: destroy dialog"); gtk_widget_destroy(dialog); - } gtk_object_sink(GTK_OBJECT(dpd->tooltips)); @@ -286,8 +283,7 @@ static void dict_plugin_panel_save_settings(DictPanelData *dpd) static void dict_plugin_properties_dialog_response(GtkWidget *dlg, gint response, DictPanelData *dpd) { - if (response == GTK_RESPONSE_OK) - dict_plugin_panel_save_settings(dpd); + dict_plugin_panel_save_settings(dpd); g_object_set_data(G_OBJECT(dpd->plugin), "dialog", NULL); xfce_panel_plugin_unblock_menu(dpd->plugin); @@ -300,12 +296,11 @@ static void dict_plugin_properties_dialog(XfcePanelPlugin *plugin, DictPanelData xfce_panel_plugin_block_menu(plugin); - dlg = dict_prefs_dialog_show(dpd->dd); + dlg = dict_prefs_dialog_show(gtk_widget_get_toplevel(GTK_WIDGET(plugin)), dpd->dd); g_object_set_data(G_OBJECT(dpd->plugin), "dialog", dlg); g_signal_connect(dlg, "response", G_CALLBACK(dict_plugin_properties_dialog_response), dpd); - g_signal_connect(dlg, "response", G_CALLBACK(dict_prefs_dialog_response), dpd->dd); gtk_widget_show(dlg); } @@ -331,6 +326,7 @@ static void dict_plugin_construct(XfcePanelPlugin *plugin) g_thread_init(NULL); dpd->dd = dict_create_dictdata(); + dpd->dd->is_plugin = TRUE; dpd->plugin = plugin; dict_read_rc_file(dpd->dd); diff --git a/po/POTFILES.in b/po/POTFILES.in index cce49b518f93849e73fe8fa59612eebaa43ddad9..0e8a4ef36798f005cbcaedcf2d515146b83bc42b 100644 --- a/po/POTFILES.in +++ b/po/POTFILES.in @@ -4,5 +4,7 @@ src/popup_plugin.c src/xfce4-dict.c src/xfce4-dict.desktop.in lib/aspell.c -lib/dict.c -lib/dict.h +lib/common.c +lib/dictd.c +lib/gui.c +lib/prefs.c diff --git a/src/xfce4-dict.c b/src/xfce4-dict.c index 15e3b9fb13e7c7f2b2d93b6619b003832730a38c..a45133d1bf945b4ce5c2d31961a69da5cbca6ca6 100644 --- a/src/xfce4-dict.c +++ b/src/xfce4-dict.c @@ -73,6 +73,7 @@ gint main(gint argc, gchar *argv[]) /* no plugin found, start usual stand-alone app */ dd = dict_create_dictdata(); + dd->is_plugin = FALSE; g_thread_init(NULL);