From: Paul Mangan Date: Fri, 9 Jan 2004 12:40:14 +0000 (+0000) Subject: move External Program prefs to Other Prefs X-Git-Tag: rel_0_9_9~55 X-Git-Url: http://git.claws-mail.org/?p=claws.git;a=commitdiff_plain;h=db94f22a13d157878d4b8c0b8df12b6aaae1b33f;hp=848648e4c8bd13d52475b559f59caf72da0ade46 move External Program prefs to Other Prefs --- diff --git a/ChangeLog.claws b/ChangeLog.claws index c915371fc..b7af12c98 100644 --- a/ChangeLog.claws +++ b/ChangeLog.claws @@ -1,3 +1,17 @@ +2004-01-09 [paul] 0.9.8claws23 + + * po/POTFILES.in + src/Makefile.am + src/main.c + src/prefs_common.c + src/prefs_ext_prog.[ch] ** NEW FILES ** + move External Command options from 'Common Prefs/Other' to + 'Other Prefs/Message View/External Programs', also reveal + the hidden options for audio player and image viewer. + + * src/prefs_common.c + fix toggling of header pane + 2004-01-09 [paul] 0.9.8claws22 * src/compose.c diff --git a/configure.ac b/configure.ac index 8f7902dd5..f07894396 100644 --- a/configure.ac +++ b/configure.ac @@ -11,7 +11,7 @@ MINOR_VERSION=9 MICRO_VERSION=8 INTERFACE_AGE=0 BINARY_AGE=0 -EXTRA_VERSION=22 +EXTRA_VERSION=23 if test $EXTRA_VERSION -eq 0; then VERSION=${MAJOR_VERSION}.${MINOR_VERSION}.${MICRO_VERSION}claws else diff --git a/po/POTFILES.in b/po/POTFILES.in index 491d85ae5..37cb1a469 100644 --- a/po/POTFILES.in +++ b/po/POTFILES.in @@ -80,6 +80,7 @@ src/prefs_actions.c src/prefs_common.c src/prefs_customheader.c src/prefs_display_header.c +src/prefs_ext_prog.c src/prefs_filtering_action.c src/prefs_filtering.c src/prefs_folder_item.c diff --git a/src/Makefile.am b/src/Makefile.am index d0184a85c..bbdfe3787 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -83,6 +83,7 @@ sylpheed_SOURCES = \ prefs_common.c \ prefs_customheader.c \ prefs_display_header.c \ + prefs_ext_prog.c \ prefs_filtering_action.c \ prefs_filtering.c \ prefs_folder_item.c \ @@ -209,6 +210,7 @@ sylpheedinclude_HEADERS = \ prefs_common.h \ prefs_customheader.h \ prefs_display_header.h \ + prefs_ext_prog.h \ prefs_filtering_action.h \ prefs_filtering.h \ prefs_folder_item.h \ diff --git a/src/main.c b/src/main.c index c78cdef41..9f0a75c0f 100644 --- a/src/main.c +++ b/src/main.c @@ -51,6 +51,7 @@ #include "prefs_common.h" #include "prefs_account.h" #include "prefs_actions.h" +#include "prefs_ext_prog.h" #include "prefs_fonts.h" #include "prefs_spelling.h" #include "prefs_themes.h" @@ -251,6 +252,7 @@ int main(int argc, char *argv[]) sgpgme_init(); pgpmime_init(); #endif + prefs_ext_prog_init(); prefs_themes_init(); prefs_fonts_init(); #ifdef USE_ASPELL @@ -424,6 +426,7 @@ static void exit_sylpheed(MainWindow *mainwin) pgpmime_done(); sgpgme_done(); #endif + prefs_ext_prog_done(); prefs_themes_done(); prefs_fonts_done(); #ifdef USE_ASPELL diff --git a/src/prefs_common.c b/src/prefs_common.c index 4a6978c86..5d6776b05 100644 --- a/src/prefs_common.c +++ b/src/prefs_common.c @@ -184,12 +184,6 @@ static struct Interface { } interface; static struct Other { - GtkWidget *uri_combo; - GtkWidget *uri_entry; - GtkWidget *printcmd_entry; - GtkWidget *exteditor_combo; - GtkWidget *exteditor_entry; - GtkWidget *checkbtn_addaddrbyclick; GtkWidget *checkbtn_confonexit; GtkWidget *checkbtn_cleanonexit; @@ -720,13 +714,11 @@ static PrefParam param[] = { /* Other */ {"uri_open_command", DEFAULT_BROWSER_CMD, - &prefs_common.uri_cmd, P_STRING, - &other.uri_entry, prefs_set_data_from_entry, prefs_set_entry}, + &prefs_common.uri_cmd, P_STRING, NULL, NULL, NULL}, {"print_command", "lpr %s", &prefs_common.print_cmd, P_STRING, - &other.printcmd_entry, prefs_set_data_from_entry, prefs_set_entry}, + NULL, NULL, NULL}, {"ext_editor_command", "gedit %s", - &prefs_common.ext_editor_cmd, P_STRING, - &other.exteditor_entry, prefs_set_data_from_entry, prefs_set_entry}, + &prefs_common.ext_editor_cmd, P_STRING, NULL, NULL, NULL}, {"add_address_by_click", "FALSE", &prefs_common.add_address_by_click, P_BOOL, &other.checkbtn_addaddrbyclick, @@ -2232,21 +2224,8 @@ static void prefs_interface_create(void) static void prefs_other_create(void) { GtkWidget *vbox1; - GtkWidget *ext_frame; - GtkWidget *ext_table; GtkWidget *hbox1; - GtkWidget *uri_label; - GtkWidget *uri_combo; - GtkWidget *uri_entry; - - GtkWidget *printcmd_label; - GtkWidget *printcmd_entry; - - GtkWidget *exteditor_label; - GtkWidget *exteditor_combo; - GtkWidget *exteditor_entry; - GtkWidget *frame_addr; GtkWidget *vbox_addr; GtkWidget *checkbtn_addaddrbyclick; @@ -2283,73 +2262,6 @@ static void prefs_other_create(void) gtk_container_add (GTK_CONTAINER (dialog.notebook), vbox1); gtk_container_set_border_width (GTK_CONTAINER (vbox1), VBOX_BORDER); - PACK_FRAME(vbox1, ext_frame, - _("External commands (%s will be replaced with file name / URI)")); - - ext_table = gtk_table_new (3, 2, FALSE); - gtk_widget_show (ext_table); - gtk_container_add (GTK_CONTAINER (ext_frame), ext_table); - gtk_container_set_border_width (GTK_CONTAINER (ext_table), 8); - gtk_table_set_row_spacings (GTK_TABLE (ext_table), VSPACING_NARROW); - gtk_table_set_col_spacings (GTK_TABLE (ext_table), 8); - - uri_label = gtk_label_new (_("Web browser")); - gtk_widget_show(uri_label); - gtk_table_attach (GTK_TABLE (ext_table), uri_label, 0, 1, 0, 1, - GTK_FILL, GTK_EXPAND | GTK_FILL, 0, 0); - gtk_misc_set_alignment (GTK_MISC (uri_label), 1, 0.5); - - uri_combo = gtk_combo_new (); - gtk_widget_show (uri_combo); - gtk_table_attach (GTK_TABLE (ext_table), uri_combo, 1, 2, 0, 1, - GTK_EXPAND | GTK_FILL, 0, 0, 0); - gtkut_combo_set_items (GTK_COMBO (uri_combo), - DEFAULT_BROWSER_CMD, - "galeon --new-tab '%s'", - "galeon '%s'", - "mozilla -remote 'openurl(%s,new-window)'", - "netscape -remote 'openURL(%s, new-window)'", - "netscape '%s'", - "gnome-moz-remote --newwin '%s'", - "kfmclient openURL '%s'", - "opera -newwindow '%s'", - "kterm -e w3m '%s'", - "kterm -e lynx '%s'", - NULL); - uri_entry = GTK_COMBO (uri_combo)->entry; - - printcmd_label = gtk_label_new (_("Print")); - gtk_widget_show (printcmd_label); - gtk_table_attach (GTK_TABLE (ext_table), printcmd_label, 0, 1, 1, 2, - GTK_FILL, GTK_EXPAND | GTK_FILL, 0, 0); - gtk_misc_set_alignment (GTK_MISC (printcmd_label), 1, 0.5); - - printcmd_entry = gtk_entry_new (); - gtk_widget_show (printcmd_entry); - gtk_table_attach (GTK_TABLE (ext_table), printcmd_entry, 1, 2, 1, 2, - GTK_EXPAND | GTK_FILL, 0, 0, 0); - - exteditor_label = gtk_label_new (_("Editor")); - gtk_widget_show (exteditor_label); - gtk_table_attach (GTK_TABLE (ext_table), exteditor_label, 0, 1, 2, 3, - GTK_FILL, GTK_EXPAND | GTK_FILL, 0, 0); - gtk_misc_set_alignment (GTK_MISC (exteditor_label), 1, 0.5); - - exteditor_combo = gtk_combo_new (); - gtk_widget_show (exteditor_combo); - gtk_table_attach (GTK_TABLE (ext_table), exteditor_combo, 1, 2, 2, 3, - GTK_EXPAND | GTK_FILL, 0, 0, 0); - gtkut_combo_set_items (GTK_COMBO (exteditor_combo), - "gedit %s", - "kedit %s", - "mgedit --no-fork %s", - "emacs %s", - "xemacs %s", - "kterm -e jed %s", - "kterm -e vi %s", - NULL); - exteditor_entry = GTK_COMBO (exteditor_combo)->entry; - PACK_FRAME (vbox1, frame_addr, _("Address book")); vbox_addr = gtk_vbox_new (FALSE, 0); @@ -2455,13 +2367,6 @@ static void prefs_other_create(void) gtk_widget_show (label_iotimeout); gtk_box_pack_start (GTK_BOX (hbox1), label_iotimeout, FALSE, FALSE, 0); - other.uri_combo = uri_combo; - other.uri_entry = uri_entry; - other.printcmd_entry = printcmd_entry; - - other.exteditor_combo = exteditor_combo; - other.exteditor_entry = exteditor_entry; - other.checkbtn_addaddrbyclick = checkbtn_addaddrbyclick; other.checkbtn_cliplog = checkbtn_cliplog; @@ -3593,6 +3498,7 @@ static void prefs_common_apply(void) prefs_set_data_from_dialog(param); sock_set_io_timeout(prefs_common.io_timeout_secs); + main_window_reflect_prefs_all_real(FALSE); prefs_common_save_config(); mainwindow = mainwindow_get_mainwindow(); diff --git a/src/prefs_ext_prog.c b/src/prefs_ext_prog.c new file mode 100644 index 000000000..3276b2005 --- /dev/null +++ b/src/prefs_ext_prog.c @@ -0,0 +1,277 @@ +/* + * Sylpheed -- a GTK+ based, lightweight, and fast e-mail client + * Copyright (C) 2004 Hiroyuki Yamamoto & the Sylpheed-Claws team + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + */ + +#ifdef HAVE_CONFIG_H +# include "config.h" +#endif + +#include "defs.h" + +#include +#include + +#include +#include +#include + +#include "intl.h" +#include "utils.h" +#include "prefs_common.h" +#include "prefs_gtk.h" + +#include "gtk/gtkutils.h" +#include "gtk/prefswindow.h" + +#include "manage_window.h" + +typedef struct _ExtProgPage +{ + PrefsPage page; + + GtkWidget *window; /* do not modify */ + + GtkWidget *uri_label; + GtkWidget *uri_combo; + GtkWidget *uri_entry; + + GtkWidget *printcmd_label; + GtkWidget *printcmd_entry; + + GtkWidget *exteditor_label; + GtkWidget *exteditor_combo; + GtkWidget *exteditor_entry; + + GtkWidget *image_viewer_label; + GtkWidget *image_viewer_entry; + + GtkWidget *audio_player_label; + GtkWidget *audio_player_entry; +} ExtProgPage; + +void prefs_ext_prog_create_widget(PrefsPage *_page, GtkWindow *window, + gpointer data) +{ + ExtProgPage *prefs_ext_prog = (ExtProgPage *) _page; + + GtkWidget *table; + GtkWidget *vbox; + GtkWidget *hint_label; + GtkWidget *table2; + GtkWidget *uri_label; + GtkWidget *uri_combo; + GtkWidget *uri_entry; + GtkWidget *printcmd_label; + GtkWidget *printcmd_entry; + GtkWidget *exteditor_label; + GtkWidget *exteditor_combo; + GtkWidget *exteditor_entry; + GtkWidget *image_viewer_label; + GtkWidget *image_viewer_entry; + GtkWidget *audio_player_label; + GtkWidget *audio_player_entry; + + table = gtk_table_new(2, 1, FALSE); + gtk_widget_show(table); + gtk_container_set_border_width(GTK_CONTAINER(table), 8); + gtk_table_set_row_spacings(GTK_TABLE(table), 4); + gtk_table_set_col_spacings(GTK_TABLE(table), 8); + + vbox = gtk_vbox_new(TRUE, 0); + gtk_widget_show(vbox); + + gtk_table_attach(GTK_TABLE (table), vbox, 0, 1, 0, 1, + (GtkAttachOptions) (GTK_SHRINK), + (GtkAttachOptions) (0), 0, 0); + + hint_label = gtk_label_new(_("%s will be replaced with file name / URI")); + gtk_widget_show(hint_label); + gtk_box_pack_start(GTK_BOX (vbox), + hint_label, FALSE, FALSE, 4); + gtk_label_set_justify(GTK_LABEL (hint_label), GTK_JUSTIFY_LEFT); + + table2 = gtk_table_new(5, 2, FALSE); + gtk_widget_show(table2); + gtk_container_set_border_width(GTK_CONTAINER(table2), 8); + gtk_table_set_row_spacings(GTK_TABLE(table2), 4); + gtk_table_set_col_spacings(GTK_TABLE(table2), 8); + + gtk_table_attach(GTK_TABLE (table), table2, 0, 1, 1, 2, + (GtkAttachOptions) (GTK_FILL), + (GtkAttachOptions) (0), 0, 0); + + uri_label = gtk_label_new (_("Web browser")); + gtk_widget_show(uri_label); + + gtk_table_attach(GTK_TABLE (table2), uri_label, 0, 1, 0, 1, + (GtkAttachOptions) (GTK_FILL), + (GtkAttachOptions) (0), 0, 2); + gtk_label_set_justify(GTK_LABEL (hint_label), GTK_JUSTIFY_RIGHT); + gtk_misc_set_alignment(GTK_MISC (hint_label), 1, 0.5); + + uri_combo = gtk_combo_new (); + gtk_widget_show (uri_combo); + gtk_table_attach (GTK_TABLE (table2), uri_combo, 1, 2, 0, 1, + GTK_EXPAND | GTK_FILL, 0, 0, 0); + gtkut_combo_set_items (GTK_COMBO (uri_combo), + DEFAULT_BROWSER_CMD, + "galeon --new-tab '%s'", + "galeon '%s'", + "mozilla -remote 'openurl(%s,new-window)'", + "netscape -remote 'openURL(%s, new-window)'", + "netscape '%s'", + "gnome-moz-remote --newwin '%s'", + "kfmclient openURL '%s'", + "opera -newwindow '%s'", + "kterm -e w3m '%s'", + "kterm -e lynx '%s'", + NULL); + uri_entry = GTK_COMBO (uri_combo)->entry; + gtk_entry_set_text(GTK_ENTRY(uri_entry), prefs_common.uri_cmd); + + printcmd_label = gtk_label_new (_("Print command")); + gtk_widget_show(printcmd_label); + + gtk_table_attach(GTK_TABLE (table2), printcmd_label, 0, 1, 1, 2, + (GtkAttachOptions) (GTK_FILL), + (GtkAttachOptions) (0), 0, 2); + gtk_label_set_justify(GTK_LABEL (hint_label), GTK_JUSTIFY_RIGHT); + gtk_misc_set_alignment(GTK_MISC (hint_label), 1, 0.5); + + printcmd_entry = gtk_entry_new (); + gtk_widget_show (printcmd_entry); + gtk_table_attach(GTK_TABLE (table2), printcmd_entry, 1, 2, 1, 2, + (GtkAttachOptions) (GTK_EXPAND | GTK_FILL), + (GtkAttachOptions) (0), 0, 0); + gtk_entry_set_text(GTK_ENTRY(printcmd_entry), prefs_common.print_cmd); + + exteditor_label = gtk_label_new (_("Text editor")); + gtk_widget_show(exteditor_label); + + gtk_table_attach(GTK_TABLE (table2), exteditor_label, 0, 1, 2, 3, + (GtkAttachOptions) (GTK_FILL), + (GtkAttachOptions) (0), 0, 2); + gtk_label_set_justify(GTK_LABEL (exteditor_label), GTK_JUSTIFY_RIGHT); + gtk_misc_set_alignment(GTK_MISC (exteditor_label), 1, 0.5); + + exteditor_combo = gtk_combo_new (); + gtk_widget_show (exteditor_combo); + gtk_table_attach (GTK_TABLE (table2), exteditor_combo, 1, 2, 2, 3, + GTK_EXPAND | GTK_FILL, 0, 0, 0); + gtkut_combo_set_items (GTK_COMBO (exteditor_combo), + "gedit %s", + "kedit %s", + "mgedit --no-fork %s", + "emacs %s", + "xemacs %s", + "kterm -e jed %s", + "kterm -e vi %s", + NULL); + exteditor_entry = GTK_COMBO (exteditor_combo)->entry; + gtk_entry_set_text(GTK_ENTRY(exteditor_entry), + prefs_common.ext_editor_cmd); + + image_viewer_label = gtk_label_new (_("Image viewer")); + gtk_widget_show(image_viewer_label); + + gtk_table_attach(GTK_TABLE (table2), image_viewer_label, 0, 1, 3, 4, + (GtkAttachOptions) (GTK_FILL), + (GtkAttachOptions) (0), 0, 2); + gtk_label_set_justify(GTK_LABEL (image_viewer_label), GTK_JUSTIFY_RIGHT); + gtk_misc_set_alignment(GTK_MISC (image_viewer_label), 1, 0.5); + + image_viewer_entry = gtk_entry_new (); + gtk_widget_show(image_viewer_entry); + + gtk_table_attach(GTK_TABLE (table2), image_viewer_entry, 1, 2, 3, 4, + (GtkAttachOptions) (GTK_EXPAND | GTK_FILL), + (GtkAttachOptions) (0), 0, 0); + gtk_entry_set_text(GTK_ENTRY(image_viewer_entry), + prefs_common.mime_image_viewer); + + audio_player_label = gtk_label_new (_("Audio player")); + gtk_widget_show(audio_player_label); + + gtk_table_attach(GTK_TABLE (table2), audio_player_label, 0, 1, 4, 5, + (GtkAttachOptions) (GTK_FILL), + (GtkAttachOptions) (0), 0, 2); + gtk_label_set_justify(GTK_LABEL (audio_player_label), GTK_JUSTIFY_RIGHT); + gtk_misc_set_alignment(GTK_MISC (audio_player_label), 1, 0.5); + + audio_player_entry = gtk_entry_new (); + gtk_widget_show(audio_player_entry); + + gtk_table_attach(GTK_TABLE (table2), audio_player_entry, 1, 2, 4, 5, + (GtkAttachOptions) (GTK_EXPAND | GTK_FILL), + (GtkAttachOptions) (0), 0, 0); + gtk_entry_set_text(GTK_ENTRY(audio_player_entry), + prefs_common.mime_audio_player); + + prefs_ext_prog->window = GTK_WIDGET(window); + prefs_ext_prog->uri_entry = uri_entry; + prefs_ext_prog->printcmd_entry = printcmd_entry; + prefs_ext_prog->exteditor_entry = exteditor_entry; + prefs_ext_prog->image_viewer_entry = image_viewer_entry; + prefs_ext_prog->audio_player_entry = audio_player_entry; + + prefs_ext_prog->page.widget = table; +} + +void prefs_ext_prog_save(PrefsPage *_page) +{ + ExtProgPage *ext_prog = (ExtProgPage *) _page; + + prefs_common.uri_cmd = gtk_editable_get_chars + (GTK_EDITABLE(ext_prog->uri_entry), 0, -1); + prefs_common.print_cmd = gtk_editable_get_chars + (GTK_EDITABLE(ext_prog->printcmd_entry), 0, -1); + prefs_common.ext_editor_cmd = gtk_editable_get_chars + (GTK_EDITABLE(ext_prog->exteditor_entry), 0, -1); + prefs_common.mime_image_viewer = gtk_editable_get_chars + (GTK_EDITABLE(ext_prog->image_viewer_entry), 0, -1); + prefs_common.mime_audio_player = gtk_editable_get_chars + (GTK_EDITABLE(ext_prog->audio_player_entry), 0, -1); +} + +static void prefs_ext_prog_destroy_widget(PrefsPage *_page) +{ + /* ExtProgPage *ext_prog = (ExtProgPage *) _page; */ + +} + +ExtProgPage *prefs_ext_prog; + +void prefs_ext_prog_init(void) +{ + ExtProgPage *page; + + page = g_new0(ExtProgPage, 1); + page->page.path = _("Message View/External Programs"); + page->page.create_widget = prefs_ext_prog_create_widget; + page->page.destroy_widget = prefs_ext_prog_destroy_widget; + page->page.save_page = prefs_ext_prog_save; + page->page.weight = 45.0; + prefs_gtk_register_page((PrefsPage *) page); + prefs_ext_prog = page; +} + +void prefs_ext_prog_done(void) +{ + prefs_gtk_unregister_page((PrefsPage *) prefs_ext_prog); + g_free(prefs_ext_prog); +} diff --git a/src/prefs_ext_prog.h b/src/prefs_ext_prog.h new file mode 100644 index 000000000..c4a87af69 --- /dev/null +++ b/src/prefs_ext_prog.h @@ -0,0 +1,26 @@ +/* + * Sylpheed -- a GTK+ based, lightweight, and fast e-mail client + * Copyright (C) 2004 Hiroyuki Yamamoto & the Sylpheed-Claws team + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + */ + +#ifndef PREFS_EXT_PROG_H +#define PREFS_EXT_PROG_H + +void prefs_ext_prog_init (void); +void prefs_ext_prog_done (void); + +#endif /* PREFS_EXT_PROG_H */