gnash-commit
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Gnash-commit] /srv/bzr/gnash/trunk r9925: Make creation of preferences


From: Sandro Santilli
Subject: [Gnash-commit] /srv/bzr/gnash/trunk r9925: Make creation of preferences dialogue easier to read and hack on; add Network preferences tab (streamsTimeout)
Date: Sun, 05 Oct 2008 02:43:20 +0200
User-agent: Bazaar (1.5)

------------------------------------------------------------
revno: 9925
committer: Sandro Santilli <address@hidden>
branch nick: trunk
timestamp: Sun 2008-10-05 02:43:20 +0200
message:
  Make creation of preferences dialogue easier to read and hack on; add Network 
preferences tab (streamsTimeout)
modified:
  gui/gtk.cpp
  gui/gtksup.h
=== modified file 'gui/gtk.cpp'
--- a/gui/gtk.cpp       2008-10-01 17:52:26 +0000
+++ b/gui/gtk.cpp       2008-10-05 00:43:20 +0000
@@ -936,88 +936,240 @@
 }
 
 
+///////////////////////////////////////////////////////////////////////////////
+///////////////////////////////////////////////////////////////////////////////
+///                                                                         ///
+///                             Dialogues                                   ///
+///                                                                         ///
+///////////////////////////////////////////////////////////////////////////////
+///////////////////////////////////////////////////////////////////////////////
+
+namespace { // anonimous
+
+class PreferencesDialog {
+
+public:
+
+       PreferencesDialog(GtkWidget* window);
+
+    void show();
+
+private:
+
+    // A struct containing pointers to widgets for passing preference 
+    // data from the dialogue   
+    struct PrefWidgets {
+        GtkWidget *soundToggle;
+        GtkWidget *actionDumpToggle;
+        GtkWidget *parserDumpToggle;
+        GtkWidget *malformedSWFToggle;
+        GtkWidget *ASCodingErrorToggle;
+        GtkWidget *logfileName;
+        GtkWidget *writeLogToggle;
+        GtkWidget *verbosityScale;
+        GtkWidget *streamsTimeoutScale;
+        GtkWidget *localDomainToggle;
+        GtkWidget *localHostToggle;
+        GtkWidget *solReadOnlyToggle;
+        GtkWidget *solLocalDomainToggle;
+        GtkWidget *localConnectionToggle;
+        GtkWidget *insecureSSLToggle; 
+        GtkWidget *lcTraceToggle;
+        GtkWidget *solSandbox;
+        GtkWidget *osText;
+        GtkWidget *versionText;
+        GtkWidget *urlOpenerText;
+        GtkWidget *librarySize;
+        GtkWidget *startStoppedToggle;
+#ifdef USE_DEBUGGER
+        GtkWidget *DebuggerToggle;
+#endif
+
+       PrefWidgets()
+               :
+               soundToggle(0),
+               actionDumpToggle(0),
+               parserDumpToggle(0),
+               malformedSWFToggle(0),
+               ASCodingErrorToggle(0),
+               logfileName(0),
+               writeLogToggle(0),
+               verbosityScale(0),
+               streamsTimeoutScale(0),
+               localDomainToggle(0),
+               localHostToggle(0),
+               solReadOnlyToggle(0),
+               solLocalDomainToggle(0),
+               localConnectionToggle(0),
+               insecureSSLToggle(0), 
+               lcTraceToggle(0),
+               solSandbox(0),
+               osText(0),
+               versionText(0),
+               urlOpenerText(0),
+               librarySize(0),
+               startStoppedToggle(0)
+#ifdef USE_DEBUGGER
+               ,DebuggerToggle(0)
+#endif
+       {}
+    };
+    
+
+    static void handlePrefs(GtkWidget* widget, gint response, gpointer data);
+
+    /// Network Tab
+    void addNetworkTab();
+
+    /// Logging Tab
+    void addLoggingTab();
+
+    void addSecurityTab();
+
+    void addMediaTab();
+
+    void addPlayerTab();
+
+    GtkWidget* _window;
+
+    PrefWidgets* _prefs;
+
+    RcInitFile& _rcfile;
+
+    GtkWidget* _prefsDialog;
+
+    GtkWidget* _notebook;
+
+
+};
+
 // Callback to read values from the preferences dialogue and set rcfile
 // values accordingly.
 void
-GtkGui::handlePrefs (GtkWidget* dialog, gint response, gpointer data)
+PreferencesDialog::handlePrefs (GtkWidget* dialog, gint response, gpointer 
data)
 {
 
-    prefData *prefs = static_cast<prefData*>(data);
+    PrefWidgets *prefs = static_cast<PrefWidgets*>(data);
 
     if (response == GTK_RESPONSE_OK) {
 
-        // If 'Save' was clicked, set all the values in rcfile
-        RcInitFile& rcfile = RcInitFile::getDefaultInstance();
+        // If 'Save' was clicked, set all the values in _rcfile
+        RcInitFile& _rcfile = RcInitFile::getDefaultInstance();
         // For getting from const gchar* to std::string&
         std::string tmp;
     
-        
rcfile.useSound(gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(prefs->soundToggle)));
+        if ( prefs->soundToggle )
+            
_rcfile.useSound(gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(prefs->soundToggle)));
     
-        rcfile.useActionDump(
-               
gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(prefs->actionDumpToggle)));
-        rcfile.useParserDump(
-               
gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(prefs->parserDumpToggle)));
+        if ( prefs->actionDumpToggle )
+            _rcfile.useActionDump(
+                   
gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(prefs->actionDumpToggle)));
+
+        if ( prefs->parserDumpToggle )
+            _rcfile.useParserDump(
+                   
gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(prefs->parserDumpToggle)));
        
-       tmp = gtk_entry_get_text(GTK_ENTRY(prefs->logfileName));
-        rcfile.setDebugLog(tmp);
+        if ( prefs->logfileName ) {
+           tmp = gtk_entry_get_text(GTK_ENTRY(prefs->logfileName));
+            _rcfile.setDebugLog(tmp);
+        }
         
-        rcfile.useWriteLog(
-               
gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(prefs->writeLogToggle)));
+        if ( prefs->writeLogToggle ) {
+            _rcfile.useWriteLog(
+                   
gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(prefs->writeLogToggle)));
+        }
                
-        rcfile.verbosityLevel(static_cast<int>(
-               gtk_range_get_value(GTK_RANGE(prefs->verbosityScale))));
-
-        rcfile.showASCodingErrors(
-               
gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(prefs->ASCodingErrorToggle)));
-
-        rcfile.showMalformedSWFErrors(
-               
gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(prefs->malformedSWFToggle)));
-
-        rcfile.useLocalHost(
-               
gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(prefs->localHostToggle)));
-
-        rcfile.useLocalDomain(
-               
gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(prefs->localDomainToggle)));
-
-        rcfile.setSOLLocalDomain(
-               
gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(prefs->solLocalDomainToggle)));
-
-        rcfile.setSOLReadOnly(
-               
gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(prefs->solReadOnlyToggle)));
-
-        rcfile.setLocalConnection(
-               
gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(prefs->localConnectionToggle)));
-
-        rcfile.insecureSSL(
-               
gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(prefs->insecureSSLToggle)));
-
-        rcfile.setLCTrace(
-               
gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(prefs->lcTraceToggle)));
+        if ( prefs->verbosityScale ) {
+            _rcfile.verbosityLevel(static_cast<int>(
+                   gtk_range_get_value(GTK_RANGE(prefs->verbosityScale))));
+        }
+
+        if ( prefs->streamsTimeoutScale ) {
+            _rcfile.setStreamsTimeout(
+                   gtk_range_get_value(GTK_RANGE(prefs->streamsTimeoutScale)));
+        }
+
+        if ( prefs->ASCodingErrorToggle ) {
+            _rcfile.showASCodingErrors(
+                
gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(prefs->ASCodingErrorToggle)));
+        }
+
+        if ( prefs->malformedSWFToggle ) {
+            _rcfile.showMalformedSWFErrors(
+                
gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(prefs->malformedSWFToggle)));
+        }
+
+        if ( prefs->localHostToggle ) {
+            _rcfile.useLocalHost(
+                
gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(prefs->localHostToggle)));
+        }
+
+        if ( prefs->localDomainToggle ) {
+            _rcfile.useLocalDomain(
+                
gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(prefs->localDomainToggle)));
+        }
+
+        if ( prefs->solLocalDomainToggle ) {
+            _rcfile.setSOLLocalDomain(
+                
gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(prefs->solLocalDomainToggle)));
+        }
+
+        if ( prefs->solReadOnlyToggle ) {
+            _rcfile.setSOLReadOnly(
+                
gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(prefs->solReadOnlyToggle)));
+        }
+
+        if ( prefs->localConnectionToggle ) {
+            _rcfile.setLocalConnection(
+                
gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(prefs->localConnectionToggle)));
+        }
+
+        if ( prefs->insecureSSLToggle ) {
+            _rcfile.insecureSSL(
+                
gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(prefs->insecureSSLToggle)));
+        }
+
+        if ( prefs->lcTraceToggle ) {
+            _rcfile.setLCTrace(
+                
gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(prefs->lcTraceToggle)));
+        }
                
-        tmp = gtk_entry_get_text(GTK_ENTRY(prefs->solSandbox));
-       rcfile.setSOLSafeDir(tmp);
-
-        tmp = gtk_entry_get_text(GTK_ENTRY(prefs->osText));
-       rcfile.setFlashSystemOS(tmp);
-       
-        tmp = gtk_entry_get_text(GTK_ENTRY(prefs->versionText));
-       rcfile.setFlashVersionString(tmp);      
-
-        rcfile.setMovieLibraryLimit(
-               
gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(prefs->librarySize)));
-
-        rcfile.startStopped(
-               
gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(prefs->startStoppedToggle)));
-
-        tmp = gtk_entry_get_text(GTK_ENTRY(prefs->urlOpenerText));             
-        rcfile.setURLOpenerFormat(tmp);
-       
-       // Let rcfile decide which file to update: generally the file being 
used if
+        if ( prefs->solSandbox ) {
+            tmp = gtk_entry_get_text(GTK_ENTRY(prefs->solSandbox));
+            _rcfile.setSOLSafeDir(tmp);
+        }
+
+        if ( prefs->osText ) {
+            tmp = gtk_entry_get_text(GTK_ENTRY(prefs->osText));
+            _rcfile.setFlashSystemOS(tmp);
+        }
+       
+        if ( prefs->versionText ) {
+            tmp = gtk_entry_get_text(GTK_ENTRY(prefs->versionText));
+            _rcfile.setFlashVersionString(tmp);        
+        }
+
+        if ( prefs->librarySize ) {
+            _rcfile.setMovieLibraryLimit(
+                
gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(prefs->librarySize)));
+        }
+
+        if ( prefs->startStoppedToggle ) {
+            _rcfile.startStopped(
+                
gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(prefs->startStoppedToggle)));
+        }
+
+        if ( prefs->urlOpenerText ) {
+            tmp = gtk_entry_get_text(GTK_ENTRY(prefs->urlOpenerText));         
+            _rcfile.setURLOpenerFormat(tmp);
+        }
+       
+       // Let _rcfile decide which file to update: generally the file being 
used if
        // specified in GNASHRC environment variable, or in the user's home 
directory
        // if that can be found.
        // TODO: We can also specify here which file should be written by 
passing
        // that instead. How might that best be done?
-       rcfile.updateFile();
+       _rcfile.updateFile();
 
         // Close the window when 'ok' is clicked
         gtk_widget_destroy(dialog);
@@ -1033,24 +1185,21 @@
     if (prefs) delete prefs;
 }
 
-///////////////////////////////////////////////////////////////////////////////
-///////////////////////////////////////////////////////////////////////////////
-///                                                                         ///
-///                             Dialogues                                   ///
-///                                                                         ///
-///////////////////////////////////////////////////////////////////////////////
-///////////////////////////////////////////////////////////////////////////////
 
 void
-GtkGui::showPreferencesDialog()
-{
-    
-    prefData *prefs = new prefData;
-
-    RcInitFile& rcfile = RcInitFile::getDefaultInstance();
-
+PreferencesDialog::show()
+{
+    gtk_widget_show_all (_prefsDialog);    
+}
+
+PreferencesDialog::PreferencesDialog(GtkWidget* window)
+    :
+    _window(window),
+    _prefs(new PrefWidgets),
+    _rcfile(RcInitFile::getDefaultInstance())
+{
     // Create top-level window
-    GtkWidget *prefsDialog = gtk_dialog_new_with_buttons(
+    _prefsDialog = gtk_dialog_new_with_buttons(
                                _("Gnash preferences"),
                                GTK_WINDOW(_window),
                                // Needs an explicit cast in C++
@@ -1062,23 +1211,60 @@
                                GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL,
                                NULL);
     // Add Gnash icon
-    addGnashIcon(GTK_WINDOW(prefsDialog));
+    GtkGui::addGnashIcon(GTK_WINDOW(_prefsDialog));
 
     // Add notebook (tabs) to dialogue's vbox
-    GtkWidget *notebook1 = gtk_notebook_new ();
+    _notebook = gtk_notebook_new ();
     gtk_container_add (
-               GTK_CONTAINER(GTK_DIALOG(prefsDialog)->vbox), notebook1);
+               GTK_CONTAINER(GTK_DIALOG(_prefsDialog)->vbox), _notebook);
 
     // Pass the widgets containing settings to the callback function
     // when any button is clicked or when the dialogue is destroyed.
-    g_signal_connect (prefsDialog, "response", G_CALLBACK(&handlePrefs), 
prefs);
-
-    // Logging Tab
+    g_signal_connect (_prefsDialog, "response", G_CALLBACK(&handlePrefs), 
_prefs);
+
+    addLoggingTab();
+    addSecurityTab();
+    addNetworkTab();
+    addMediaTab();
+    addPlayerTab();
+}
+
+void
+PreferencesDialog::addNetworkTab()
+{
+    GtkWidget *vbox = gtk_vbox_new (FALSE, 10);
+
+    // Tab label
+    GtkWidget *label = gtk_label_new_with_mnemonic (_("_Network"));
+    gtk_notebook_append_page(GTK_NOTEBOOK(_notebook), GTK_WIDGET(vbox), 
label); 
+
+    // Network preferences 
+    label = gtk_label_new (_("<b>Network preferences</b>"));
+    gtk_label_set_use_markup (GTK_LABEL (label), TRUE);
+    gtk_box_pack_start(GTK_BOX(vbox), label, FALSE, FALSE, 0);
+
+    // Streams timeout
+    label = gtk_label_new (_("Streams timeout (in seconds -- 0 to never 
timeout):"));
+    gtk_box_pack_start(GTK_BOX(vbox), label, FALSE, FALSE, 0);
+    gtk_misc_set_alignment (GTK_MISC (label), 0, 0.5);
+
+    GtkWidget* scale = gtk_hscale_new (GTK_ADJUSTMENT (gtk_adjustment_new 
(_rcfile.getStreamsTimeout(), 0, 10, 1, 0, 0)));
+    gtk_scale_set_digits (GTK_SCALE (scale), 0);
+    gtk_range_set_update_policy (GTK_RANGE (scale), GTK_UPDATE_DISCONTINUOUS);
+    gtk_box_pack_start(GTK_BOX(vbox), scale, FALSE, FALSE, 0);
+
+    _prefs->streamsTimeoutScale = scale;
+
+}
+
+void
+PreferencesDialog::addLoggingTab()
+{
     GtkWidget *loggingvbox = gtk_vbox_new (FALSE, 10);
    
     // Tab label
     GtkWidget *loggingtablabel = gtk_label_new_with_mnemonic (_("_Logging"));
-    gtk_notebook_append_page(GTK_NOTEBOOK(notebook1), GTK_WIDGET(loggingvbox), 
loggingtablabel); 
+    gtk_notebook_append_page(GTK_NOTEBOOK(_notebook), GTK_WIDGET(loggingvbox), 
loggingtablabel); 
 
     // Logging options
     GtkWidget *logginglabel = gtk_label_new (_("<b>Logging options</b>"));
@@ -1089,91 +1275,96 @@
     gtk_box_pack_start(GTK_BOX(loggingvbox), verbositylabel, FALSE, FALSE, 0);
     gtk_misc_set_alignment (GTK_MISC (verbositylabel), 0, 0.5);
 
-    prefs->verbosityScale = gtk_hscale_new (GTK_ADJUSTMENT (gtk_adjustment_new 
(rcfile.verbosityLevel(), 0, 10, 1, 0, 0)));
-    gtk_scale_set_digits (GTK_SCALE (prefs->verbosityScale), 0);
-    gtk_range_set_update_policy (GTK_RANGE (prefs->verbosityScale), 
GTK_UPDATE_DISCONTINUOUS);
-    gtk_box_pack_start(GTK_BOX(loggingvbox), prefs->verbosityScale, FALSE, 
FALSE, 0);
+    _prefs->verbosityScale = gtk_hscale_new (GTK_ADJUSTMENT 
(gtk_adjustment_new (_rcfile.verbosityLevel(), 0, 10, 1, 0, 0)));
+    gtk_scale_set_digits (GTK_SCALE (_prefs->verbosityScale), 0);
+    gtk_range_set_update_policy (GTK_RANGE (_prefs->verbosityScale), 
GTK_UPDATE_DISCONTINUOUS);
+    gtk_box_pack_start(GTK_BOX(loggingvbox), _prefs->verbosityScale, FALSE, 
FALSE, 0);
     
-    prefs->writeLogToggle = gtk_check_button_new_with_mnemonic (_("Log to 
_file"));
-    gtk_box_pack_start(GTK_BOX(loggingvbox), prefs->writeLogToggle, FALSE, 
FALSE, 0);
-    gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (prefs->writeLogToggle), 
rcfile.useWriteLog());
+    _prefs->writeLogToggle = gtk_check_button_new_with_mnemonic (_("Log to 
_file"));
+    gtk_box_pack_start(GTK_BOX(loggingvbox), _prefs->writeLogToggle, FALSE, 
FALSE, 0);
+    gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (_prefs->writeLogToggle), 
_rcfile.useWriteLog());
     
     GtkWidget *logfilelabel = gtk_label_new (_("Logfile name:"));
     gtk_box_pack_start(GTK_BOX(loggingvbox), logfilelabel, FALSE, FALSE, 0);
     gtk_misc_set_alignment (GTK_MISC (logfilelabel), 0, 0.5);
     
-    prefs->logfileName = gtk_entry_new ();
-    gtk_box_pack_start(GTK_BOX(loggingvbox), prefs->logfileName, FALSE, FALSE, 
0);
+    _prefs->logfileName = gtk_entry_new ();
+    gtk_box_pack_start(GTK_BOX(loggingvbox), _prefs->logfileName, FALSE, 
FALSE, 0);
     // Put debug filename in the entry box      
-    gtk_entry_set_text(GTK_ENTRY(prefs->logfileName), 
rcfile.getDebugLog().c_str());
+    gtk_entry_set_text(GTK_ENTRY(_prefs->logfileName), 
_rcfile.getDebugLog().c_str());
     
-    prefs->parserDumpToggle = gtk_check_button_new_with_mnemonic (_("Log 
_parser output"));
-    gtk_box_pack_start(GTK_BOX(loggingvbox), prefs->parserDumpToggle, FALSE, 
FALSE, 0);
-    // Align button state with rcfile
-    gtk_toggle_button_set_active (
-               GTK_TOGGLE_BUTTON (prefs->parserDumpToggle),
-               rcfile.useParserDump());
-
-    prefs->actionDumpToggle = gtk_check_button_new_with_mnemonic (_("Log SWF 
_actions"));
-    gtk_box_pack_start(GTK_BOX(loggingvbox), prefs->actionDumpToggle, FALSE, 
FALSE, 0);
-    // Align button state with rcfile
-    gtk_toggle_button_set_active (
-               GTK_TOGGLE_BUTTON (prefs->actionDumpToggle),
-               rcfile.useActionDump());
-
-    prefs->malformedSWFToggle = gtk_check_button_new_with_mnemonic (_("Log 
malformed SWF _errors"));
-    gtk_box_pack_start(GTK_BOX(loggingvbox), prefs->malformedSWFToggle, FALSE, 
FALSE, 0);
-    // Align button state with rcfile
-    gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON 
(prefs->malformedSWFToggle),
-                       rcfile.showMalformedSWFErrors());
-
-    prefs->ASCodingErrorToggle = gtk_check_button_new_with_mnemonic (_("Log 
ActionScript _coding errors"));
-    gtk_box_pack_start(GTK_BOX(loggingvbox), prefs->ASCodingErrorToggle, 
FALSE, FALSE, 0);
-    // Align button state with rcfile
-    gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON 
(prefs->ASCodingErrorToggle),
-                       rcfile.showASCodingErrors());
-
-    prefs->lcTraceToggle = gtk_check_button_new_with_mnemonic (
+    _prefs->parserDumpToggle = gtk_check_button_new_with_mnemonic (_("Log 
_parser output"));
+    gtk_box_pack_start(GTK_BOX(loggingvbox), _prefs->parserDumpToggle, FALSE, 
FALSE, 0);
+    // Align button state with _rcfile
+    gtk_toggle_button_set_active (
+               GTK_TOGGLE_BUTTON (_prefs->parserDumpToggle),
+               _rcfile.useParserDump());
+
+    _prefs->actionDumpToggle = gtk_check_button_new_with_mnemonic (_("Log SWF 
_actions"));
+    gtk_box_pack_start(GTK_BOX(loggingvbox), _prefs->actionDumpToggle, FALSE, 
FALSE, 0);
+    // Align button state with _rcfile
+    gtk_toggle_button_set_active (
+               GTK_TOGGLE_BUTTON (_prefs->actionDumpToggle),
+               _rcfile.useActionDump());
+
+    _prefs->malformedSWFToggle = gtk_check_button_new_with_mnemonic (_("Log 
malformed SWF _errors"));
+    gtk_box_pack_start(GTK_BOX(loggingvbox), _prefs->malformedSWFToggle, 
FALSE, FALSE, 0);
+    // Align button state with _rcfile
+    gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON 
(_prefs->malformedSWFToggle),
+                       _rcfile.showMalformedSWFErrors());
+
+    _prefs->ASCodingErrorToggle = gtk_check_button_new_with_mnemonic (_("Log 
ActionScript _coding errors"));
+    gtk_box_pack_start(GTK_BOX(loggingvbox), _prefs->ASCodingErrorToggle, 
FALSE, FALSE, 0);
+    // Align button state with _rcfile
+    gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON 
(_prefs->ASCodingErrorToggle),
+                       _rcfile.showASCodingErrors());
+
+    _prefs->lcTraceToggle = gtk_check_button_new_with_mnemonic (
                                _("Log _Local Connection activity"));
-    gtk_box_pack_start (GTK_BOX(loggingvbox), prefs->lcTraceToggle, FALSE, 
FALSE, 0);
-    gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (prefs->lcTraceToggle),
-                       rcfile.getLCTrace()); 
+    gtk_box_pack_start (GTK_BOX(loggingvbox), _prefs->lcTraceToggle, FALSE, 
FALSE, 0);
+    gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (_prefs->lcTraceToggle),
+                       _rcfile.getLCTrace()); 
 
 #ifdef USE_DEBUGGER
 
-    prefs->DebuggerToggle = gtk_check_button_new_with_mnemonic (_("Enable 
_debugger"));
-    gtk_box_pack_start(GTK_BOX(loggingvbox), prefs->DebuggerToggle, FALSE, 
FALSE, 0);
-    // Align button state with rcfile
+    _prefs->DebuggerToggle = gtk_check_button_new_with_mnemonic (_("Enable 
_debugger"));
+    gtk_box_pack_start(GTK_BOX(loggingvbox), _prefs->DebuggerToggle, FALSE, 
FALSE, 0);
+    // Align button state with _rcfile
     gtk_toggle_button_set_active (
-                       GTK_TOGGLE_BUTTON (prefs->DebuggerToggle),
-                       rcfile.useDebugger());
+                       GTK_TOGGLE_BUTTON (_prefs->DebuggerToggle),
+                       _rcfile.useDebugger());
 
 #endif
 
+}
+
+void
+PreferencesDialog::addSecurityTab()
+{
     // Security Tab
     GtkWidget *securityvbox = gtk_vbox_new (FALSE, 14);
 
     // Security tab title
     GtkWidget *securitytablabel = gtk_label_new_with_mnemonic (_("_Security"));
     
-    gtk_notebook_append_page(GTK_NOTEBOOK(notebook1), 
GTK_WIDGET(securityvbox), securitytablabel); 
+    gtk_notebook_append_page(GTK_NOTEBOOK(_notebook), 
GTK_WIDGET(securityvbox), securitytablabel); 
     
     // Network connection
     GtkWidget *netconnectionslabel = gtk_label_new (_("<b>Network 
connections</b>"));
     gtk_label_set_use_markup (GTK_LABEL (netconnectionslabel), TRUE);
     gtk_box_pack_start(GTK_BOX(securityvbox), netconnectionslabel, FALSE, 
FALSE, 0);
  
-    prefs->localHostToggle = gtk_check_button_new_with_mnemonic (_("Connect 
only to local _host"));
-    gtk_box_pack_start (GTK_BOX(securityvbox), prefs->localHostToggle, FALSE, 
FALSE, 0);
-    gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (prefs->localHostToggle), 
rcfile.useLocalHost());
+    _prefs->localHostToggle = gtk_check_button_new_with_mnemonic (_("Connect 
only to local _host"));
+    gtk_box_pack_start (GTK_BOX(securityvbox), _prefs->localHostToggle, FALSE, 
FALSE, 0);
+    gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (_prefs->localHostToggle), 
_rcfile.useLocalHost());
     
-    prefs->localDomainToggle = gtk_check_button_new_with_mnemonic (_("Connect 
only to local _domain"));
-    gtk_box_pack_start (GTK_BOX(securityvbox), prefs->localDomainToggle, 
FALSE, FALSE, 0);
-    gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON 
(prefs->localDomainToggle), rcfile.useLocalDomain());
+    _prefs->localDomainToggle = gtk_check_button_new_with_mnemonic (_("Connect 
only to local _domain"));
+    gtk_box_pack_start (GTK_BOX(securityvbox), _prefs->localDomainToggle, 
FALSE, FALSE, 0);
+    gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON 
(_prefs->localDomainToggle), _rcfile.useLocalDomain());
 
-    prefs->insecureSSLToggle = gtk_check_button_new_with_mnemonic (_("Disable 
SSL _verification"));
-    gtk_box_pack_start (GTK_BOX(securityvbox), prefs->insecureSSLToggle, 
FALSE, FALSE, 0);
-    gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON 
(prefs->insecureSSLToggle), rcfile.insecureSSL());
+    _prefs->insecureSSLToggle = gtk_check_button_new_with_mnemonic (_("Disable 
SSL _verification"));
+    gtk_box_pack_start (GTK_BOX(securityvbox), _prefs->insecureSSLToggle, 
FALSE, FALSE, 0);
+    gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON 
(_prefs->insecureSSLToggle), _rcfile.insecureSSL());
     
     GtkWidget *whitelistexpander = gtk_expander_new_with_mnemonic 
(_("_Whitelist"));
     gtk_box_pack_start (GTK_BOX (securityvbox), whitelistexpander, FALSE, 
FALSE, 0);
@@ -1196,55 +1387,61 @@
     gtk_box_pack_start (GTK_BOX(securityvbox), solsandboxlabel, FALSE, FALSE, 
0);
     gtk_misc_set_alignment (GTK_MISC (solsandboxlabel), 0, 0.5);
 
-    prefs->solSandbox = gtk_entry_new();
-    gtk_entry_set_text(GTK_ENTRY(prefs->solSandbox), 
rcfile.getSOLSafeDir().c_str());
-    gtk_box_pack_start (GTK_BOX(securityvbox), prefs->solSandbox, FALSE, 
FALSE, 0);
+    _prefs->solSandbox = gtk_entry_new();
+    gtk_entry_set_text(GTK_ENTRY(_prefs->solSandbox), 
_rcfile.getSOLSafeDir().c_str());
+    gtk_box_pack_start (GTK_BOX(securityvbox), _prefs->solSandbox, FALSE, 
FALSE, 0);
 
-    prefs->solReadOnlyToggle = gtk_check_button_new_with_mnemonic ( 
+    _prefs->solReadOnlyToggle = gtk_check_button_new_with_mnemonic ( 
                                _("Do _not write Shared Object files"));
-    gtk_box_pack_start (GTK_BOX(securityvbox), prefs->solReadOnlyToggle, 
FALSE, FALSE, 0);
-    gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (prefs->solReadOnlyToggle),
-                       rcfile.getSOLReadOnly());
+    gtk_box_pack_start (GTK_BOX(securityvbox), _prefs->solReadOnlyToggle, 
FALSE, FALSE, 0);
+    gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON 
(_prefs->solReadOnlyToggle),
+                       _rcfile.getSOLReadOnly());
 
-    prefs->solLocalDomainToggle = gtk_check_button_new_with_mnemonic (
+    _prefs->solLocalDomainToggle = gtk_check_button_new_with_mnemonic (
                                _("Only _access local Shared Object files"));
-    gtk_box_pack_start (GTK_BOX(securityvbox), prefs->solLocalDomainToggle, 
FALSE, FALSE, 0);
-    gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON 
(prefs->solLocalDomainToggle),
-                       rcfile.getSOLLocalDomain());
+    gtk_box_pack_start (GTK_BOX(securityvbox), _prefs->solLocalDomainToggle, 
FALSE, FALSE, 0);
+    gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON 
(_prefs->solLocalDomainToggle),
+                       _rcfile.getSOLLocalDomain());
 
-    prefs->localConnectionToggle = gtk_check_button_new_with_mnemonic (
+    _prefs->localConnectionToggle = gtk_check_button_new_with_mnemonic (
                                _("Disable Local _Connection object"));
-    gtk_box_pack_start (GTK_BOX(securityvbox), prefs->localConnectionToggle, 
FALSE, FALSE, 0);
-    gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON 
(prefs->localConnectionToggle),
-                       rcfile.getLocalConnection()); 
-    
-    // Sound Tab
+    gtk_box_pack_start (GTK_BOX(securityvbox), _prefs->localConnectionToggle, 
FALSE, FALSE, 0);
+    gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON 
(_prefs->localConnectionToggle),
+                       _rcfile.getLocalConnection()); 
+}
 
+void
+PreferencesDialog::addMediaTab()
+{
     // Media Tab
     GtkWidget *mediavbox = gtk_vbox_new (FALSE, 2);
 
     // Media tab title
     GtkWidget *mediatablabel = gtk_label_new_with_mnemonic (_("_Media"));
     
-    gtk_notebook_append_page(GTK_NOTEBOOK(notebook1), GTK_WIDGET(mediavbox), 
mediatablabel); 
+    gtk_notebook_append_page(GTK_NOTEBOOK(_notebook), GTK_WIDGET(mediavbox), 
mediatablabel); 
     
     // Sound
     GtkWidget *soundlabel = gtk_label_new (_("<b>Sound</b>"));
     gtk_label_set_use_markup (GTK_LABEL (soundlabel), TRUE);
     gtk_box_pack_start(GTK_BOX(mediavbox), soundlabel, FALSE, FALSE, 0);
    
-    prefs->soundToggle = gtk_check_button_new_with_mnemonic (_("Use sound 
_handler"));
-    gtk_box_pack_start (GTK_BOX(mediavbox), prefs->soundToggle, FALSE, FALSE, 
0);
+    _prefs->soundToggle = gtk_check_button_new_with_mnemonic (_("Use sound 
_handler"));
+    gtk_box_pack_start (GTK_BOX(mediavbox), _prefs->soundToggle, FALSE, FALSE, 
0);
     // Align button state with rcfile
-    gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (prefs->soundToggle), 
rcfile.useSound());
+    gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (_prefs->soundToggle), 
_rcfile.useSound());
+}
 
+void
+PreferencesDialog::addPlayerTab()
+{
     // Player Tab
     GtkWidget *playervbox = gtk_vbox_new (FALSE, 14);
 
     // Player tab title
     GtkWidget *playertablabel = gtk_label_new_with_mnemonic (_("_Player"));
     
-    gtk_notebook_append_page(GTK_NOTEBOOK(notebook1), GTK_WIDGET(playervbox), 
playertablabel); 
+    gtk_notebook_append_page(GTK_NOTEBOOK(_notebook), GTK_WIDGET(playervbox), 
playertablabel); 
 
     // Player description
     GtkWidget *descriptionlabel = gtk_label_new (_("<b>Player 
description</b>"));
@@ -1259,10 +1456,10 @@
     gtk_misc_set_alignment (GTK_MISC (versionlabel), 0, 0.5);
     gtk_box_pack_start(GTK_BOX(versionhbox), versionlabel, FALSE, FALSE, 0);
 
-    prefs->versionText = gtk_entry_new ();
-    gtk_box_pack_start(GTK_BOX(versionhbox), prefs->versionText, FALSE, FALSE, 
0);
+    _prefs->versionText = gtk_entry_new ();
+    gtk_box_pack_start(GTK_BOX(versionhbox), _prefs->versionText, FALSE, 
FALSE, 0);
     // Put text in the entry box      
-    gtk_entry_set_text(GTK_ENTRY(prefs->versionText), 
rcfile.getFlashVersionString().c_str());
+    gtk_entry_set_text(GTK_ENTRY(_prefs->versionText), 
_rcfile.getFlashVersionString().c_str());
 
     // OS label
     GtkWidget *oshbox = gtk_hbox_new (FALSE, 2);
@@ -1272,10 +1469,10 @@
     gtk_misc_set_alignment (GTK_MISC (OSlabel), 0, 0.5);
     gtk_box_pack_start(GTK_BOX(oshbox), OSlabel, FALSE, FALSE, 0);
     
-    prefs->osText = gtk_entry_new ();
-    gtk_box_pack_start(GTK_BOX(oshbox), prefs->osText, FALSE, FALSE, 0);
+    _prefs->osText = gtk_entry_new ();
+    gtk_box_pack_start(GTK_BOX(oshbox), _prefs->osText, FALSE, FALSE, 0);
     // Put text in the entry box      
-    gtk_entry_set_text(GTK_ENTRY(prefs->osText), 
rcfile.getFlashSystemOS().c_str());
+    gtk_entry_set_text(GTK_ENTRY(_prefs->osText), 
_rcfile.getFlashSystemOS().c_str());
     
     GtkWidget *OSadvicelabel = gtk_label_new (_("<i>If blank, Gnash will "
                                           "detect your OS</i>"));
@@ -1291,10 +1488,10 @@
     gtk_misc_set_alignment (GTK_MISC (urlopenerlabel), 0, 0.5);
     gtk_box_pack_start(GTK_BOX(urlopenerbox), urlopenerlabel, FALSE, FALSE, 0);
     
-    prefs->urlOpenerText = gtk_entry_new ();
-    gtk_box_pack_start(GTK_BOX(urlopenerbox), prefs->urlOpenerText, FALSE, 
FALSE, 0);
+    _prefs->urlOpenerText = gtk_entry_new ();
+    gtk_box_pack_start(GTK_BOX(urlopenerbox), _prefs->urlOpenerText, FALSE, 
FALSE, 0);
     // Put text in the entry box      
-    gtk_entry_set_text(GTK_ENTRY(prefs->urlOpenerText), 
rcfile.getURLOpenerFormat().c_str());
+    gtk_entry_set_text(GTK_ENTRY(_prefs->urlOpenerText), 
_rcfile.getURLOpenerFormat().c_str());
 
     // Performance
     GtkWidget *performancelabel = gtk_label_new (_("<b>Performance</b>"));
@@ -1309,18 +1506,29 @@
     gtk_misc_set_alignment (GTK_MISC (librarylabel), 0, 0.5);
     gtk_box_pack_start(GTK_BOX(libraryhbox), librarylabel, FALSE, FALSE, 0);
 
-    prefs->librarySize = gtk_spin_button_new_with_range(0, 100, 1);
-    gtk_box_pack_start(GTK_BOX(libraryhbox), prefs->librarySize, FALSE, FALSE, 
0);
-    // Align to rcfile value:
-    gtk_spin_button_set_value(GTK_SPIN_BUTTON(prefs->librarySize), 
rcfile.getMovieLibraryLimit());
+    _prefs->librarySize = gtk_spin_button_new_with_range(0, 100, 1);
+    gtk_box_pack_start(GTK_BOX(libraryhbox), _prefs->librarySize, FALSE, 
FALSE, 0);
+    // Align to _rcfile value:
+    gtk_spin_button_set_value(GTK_SPIN_BUTTON(_prefs->librarySize), 
_rcfile.getMovieLibraryLimit());
 
-    prefs->startStoppedToggle = gtk_check_button_new_with_mnemonic (
+    _prefs->startStoppedToggle = gtk_check_button_new_with_mnemonic (
                                _("Start _Gnash in pause mode"));
-    gtk_box_pack_start (GTK_BOX(playervbox), prefs->startStoppedToggle, FALSE, 
FALSE, 0);
-    gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON 
(prefs->startStoppedToggle),
-                       rcfile.startStopped());
-
-    gtk_widget_show_all (prefsDialog);    
+    gtk_box_pack_start (GTK_BOX(playervbox), _prefs->startStoppedToggle, 
FALSE, FALSE, 0);
+    gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON 
(_prefs->startStoppedToggle),
+                       _rcfile.startStopped());
+} // end of ::addPlayerTab
+
+
+
+} // end of anonimous namespace
+
+
+void
+GtkGui::showPreferencesDialog()
+{
+    
+    PreferencesDialog preferencesDialog(_window);
+    preferencesDialog.show();
 }
 
 void

=== modified file 'gui/gtksup.h'
--- a/gui/gtksup.h      2008-07-15 08:31:09 +0000
+++ b/gui/gtksup.h      2008-10-05 00:43:20 +0000
@@ -177,7 +177,7 @@
     
     void add_pixmap_directory(const gchar *directory);
 
-    gchar* find_pixmap_file(const gchar *filename);
+    static gchar* find_pixmap_file(const gchar *filename);
     
     void expose(const GdkRegion* region);
 
@@ -191,6 +191,9 @@
 
     virtual void showMenu(bool show);
 
+    // Adds the gnash icon to a window.
+    static void addGnashIcon(GtkWindow* window);
+
  private:
 #ifdef GUI_HILDON
     HildonProgram *_hildon_program;
@@ -208,9 +211,6 @@
     GtkWidget   *_menubar;
     GtkWidget   *_vbox;
 
-    // Adds the gnash icon to a window.
-    void addGnashIcon(GtkWindow* window);
-
     /// Add key press events to the toplevel window.
     //
     /// The plugin fullscreen creates a new top level
@@ -218,7 +218,7 @@
     /// the drawing area is reparented.
     void setupWindowEvents();
     
-    GdkPixbuf* createPixbuf(const gchar *filename);
+    static GdkPixbuf* createPixbuf(const gchar *filename);
 
 #ifdef USE_SWFTREE
     // Create a tree model for displaying movie info
@@ -230,36 +230,6 @@
     static gnash::key::code gdk_to_gnash_key(guint key);
     static int gdk_to_gnash_modifier(int state);
 
-    // A struct containing pointers to widgets for passing preference 
-    // data from the dialogue   
-    struct prefData {
-        GtkWidget *soundToggle;
-        GtkWidget *actionDumpToggle;
-        GtkWidget *parserDumpToggle;
-        GtkWidget *malformedSWFToggle;
-        GtkWidget *ASCodingErrorToggle;
-        GtkWidget *logfileName;
-        GtkWidget *writeLogToggle;
-        GtkWidget *verbosityScale;
-        GtkWidget *localDomainToggle;
-        GtkWidget *localHostToggle;
-        GtkWidget *solReadOnlyToggle;
-        GtkWidget *solLocalDomainToggle;
-        GtkWidget *localConnectionToggle;
-        GtkWidget *insecureSSLToggle; 
-        GtkWidget *lcTraceToggle;
-        GtkWidget *solSandbox;
-        GtkWidget *osText;
-        GtkWidget *versionText;
-        GtkWidget *urlOpenerText;
-        GtkWidget *librarySize;
-        GtkWidget *startStoppedToggle;
-#ifdef USE_DEBUGGER
-        GtkWidget *DebuggerToggle;
-#endif
-    };
-    
-    static void handlePrefs(GtkWidget* widget, gint response, gpointer data);
     static void openFile(GtkWidget* dialog, gpointer data);
 
     void stopHook();


reply via email to

[Prev in Thread] Current Thread [Next in Thread]