move External Program prefs to Other Prefs
authorPaul Mangan <paul@claws-mail.org>
Fri, 9 Jan 2004 12:40:14 +0000 (12:40 +0000)
committerPaul Mangan <paul@claws-mail.org>
Fri, 9 Jan 2004 12:40:14 +0000 (12:40 +0000)
ChangeLog.claws
configure.ac
po/POTFILES.in
src/Makefile.am
src/main.c
src/prefs_common.c
src/prefs_ext_prog.c [new file with mode: 0644]
src/prefs_ext_prog.h [new file with mode: 0644]

index c915371fc6a37da557b3ca370678d0687e54f993..b7af12c98ded3ee715d028dca4e4f54c1d559b4a 100644 (file)
@@ -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
 2004-01-09 [paul]      0.9.8claws22
 
        * src/compose.c
index 8f7902dd5b0875c8ca042b4917f2e5e20ed50898..f07894396bd9bfb1f5dd1d275fa6e354d23ec7db 100644 (file)
@@ -11,7 +11,7 @@ MINOR_VERSION=9
 MICRO_VERSION=8
 INTERFACE_AGE=0
 BINARY_AGE=0
 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
 if test $EXTRA_VERSION -eq 0; then
     VERSION=${MAJOR_VERSION}.${MINOR_VERSION}.${MICRO_VERSION}claws
 else
index 491d85ae52c8f59f5ad1d01eb43d0e1367ad7653..37cb1a46952e8ff0ca17a8b8d02b303a3be6ff3e 100644 (file)
@@ -80,6 +80,7 @@ src/prefs_actions.c
 src/prefs_common.c
 src/prefs_customheader.c
 src/prefs_display_header.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
 src/prefs_filtering_action.c
 src/prefs_filtering.c
 src/prefs_folder_item.c
index d0184a85cfb7de1a471bf7fbd0308e26ad4f8dba..bbdfe3787630a73c4883bde5ccbb889a2720dad7 100644 (file)
@@ -83,6 +83,7 @@ sylpheed_SOURCES = \
        prefs_common.c \
        prefs_customheader.c \
        prefs_display_header.c \
        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 \
        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_common.h \
        prefs_customheader.h \
        prefs_display_header.h \
+       prefs_ext_prog.h \
        prefs_filtering_action.h \
        prefs_filtering.h \
        prefs_folder_item.h \
        prefs_filtering_action.h \
        prefs_filtering.h \
        prefs_folder_item.h \
index c78cdef412d32f3148b4827063e1f91f3b526f91..9f0a75c0f6838ef789abaeaa69fc1f67448f2240 100644 (file)
@@ -51,6 +51,7 @@
 #include "prefs_common.h"
 #include "prefs_account.h"
 #include "prefs_actions.h"
 #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"
 #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
        sgpgme_init();
        pgpmime_init();
 #endif
+       prefs_ext_prog_init();
        prefs_themes_init();
        prefs_fonts_init();
 #ifdef USE_ASPELL
        prefs_themes_init();
        prefs_fonts_init();
 #ifdef USE_ASPELL
@@ -424,6 +426,7 @@ static void exit_sylpheed(MainWindow *mainwin)
        pgpmime_done();
        sgpgme_done();
 #endif
        pgpmime_done();
        sgpgme_done();
 #endif
+       prefs_ext_prog_done();
        prefs_themes_done();
        prefs_fonts_done();
 #ifdef USE_ASPELL       
        prefs_themes_done();
        prefs_fonts_done();
 #ifdef USE_ASPELL       
index 4a6978c868a264f92b7a7494206d003eaf74fd4c..5d6776b055679769426434ab69dcbecef67c56e5 100644 (file)
@@ -184,12 +184,6 @@ static struct Interface {
 } interface;
 
 static struct Other {
 } 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;
        GtkWidget *checkbtn_addaddrbyclick;
        GtkWidget *checkbtn_confonexit;
        GtkWidget *checkbtn_cleanonexit;
@@ -720,13 +714,11 @@ static PrefParam param[] = {
        
        /* Other */
        {"uri_open_command", DEFAULT_BROWSER_CMD,
        
        /* 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,
        {"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",
        {"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,
 
        {"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;
 static void prefs_other_create(void)
 {
        GtkWidget *vbox1;
-       GtkWidget *ext_frame;
-       GtkWidget *ext_table;
        GtkWidget *hbox1;
 
        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;
        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);
 
        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);
        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);
 
        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;
        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);
 
        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();
        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 (file)
index 0000000..3276b20
--- /dev/null
@@ -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 <stdio.h>
+#include <stdlib.h>
+
+#include <glib.h>
+#include <gtk/gtk.h>
+#include <gdk/gdkkeysyms.h>
+
+#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 (file)
index 0000000..c4a87af
--- /dev/null
@@ -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 */