CVSROOT: /sources/gnash Module name: gnash Changes by: Benjamin Wolsey <bwy> 08/01/16 17:14:04
Modified files: . : ChangeLog gui : gtk.cpp gtksup.h Log message: * gui/gtk{sup.h,.cpp}: redesign preferences dialogue; send changes to rcfile (nothing gets saved yet, but some changes work without a restart). Once libbase supports written the rcfile to disk, changes from the dialogue can be saved. Only ASCodingErrors and possibly some of the SOL / local connection options make a difference at the moment. CVSWeb URLs: http://cvs.savannah.gnu.org/viewcvs/gnash/ChangeLog?cvsroot=gnash&r1=1.5415&r2=1.5416 http://cvs.savannah.gnu.org/viewcvs/gnash/gui/gtk.cpp?cvsroot=gnash&r1=1.132&r2=1.133 http://cvs.savannah.gnu.org/viewcvs/gnash/gui/gtksup.h?cvsroot=gnash&r1=1.58&r2=1.59 Patches: Index: ChangeLog =================================================================== RCS file: /sources/gnash/gnash/ChangeLog,v retrieving revision 1.5415 retrieving revision 1.5416 diff -u -b -r1.5415 -r1.5416 --- ChangeLog 16 Jan 2008 16:09:04 -0000 1.5415 +++ ChangeLog 16 Jan 2008 17:14:03 -0000 1.5416 @@ -1,3 +1,9 @@ +2008-01-16 Benjamin Wolsey <[EMAIL PROTECTED]> + + * gui/gtk{sup.h,.cpp}: redesign preferences dialogue; send changes + to rcfile (nothing gets saved yet, but some changes work without a + restart). + 2008-01-16 Sandro Santilli <[EMAIL PROTECTED]> * gui/gui.cpp (getMovieInfo): add class info of hit character. Index: gui/gtk.cpp =================================================================== RCS file: /sources/gnash/gnash/gui/gtk.cpp,v retrieving revision 1.132 retrieving revision 1.133 diff -u -b -r1.132 -r1.133 --- gui/gtk.cpp 13 Jan 2008 14:00:26 -0000 1.132 +++ gui/gtk.cpp 16 Jan 2008 17:14:04 -0000 1.133 @@ -17,7 +17,7 @@ // Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA // -/* $Id: gtk.cpp,v 1.132 2008/01/13 14:00:26 bwy Exp $ */ +/* $Id: gtk.cpp,v 1.133 2008/01/16 17:14:04 bwy Exp $ */ #ifdef HAVE_CONFIG_H #include "config.h" @@ -771,283 +771,268 @@ #endif } -/////////////////////////////////////////////////////////////////////////////// -/////////////////////////////////////////////////////////////////////////////// -/// /// -/// Dialogues /// -/// /// -/////////////////////////////////////////////////////////////////////////////// -/////////////////////////////////////////////////////////////////////////////// +// Callback to read values from the preferences dialogue and set rcfile +// values accordingly. void -GtkGui::showPreferencesDialog() +GtkGui::updateRC (GtkWidget* dialog, gint response, gpointer data) { + + if (response == GTK_RESPONSE_ACCEPT) { + + // If 'OK' was clicked, set all the values in rcfile + prefData *prefs = static_cast<prefData*>(data); RcInitFile& rcfile = RcInitFile::getDefaultInstance(); + // For getting from const gchar* to std::string& + std::string tmp; - GtkWidget *window1 = gtk_window_new (GTK_WINDOW_TOPLEVEL); - gtk_window_set_title (GTK_WINDOW (window1), _("Gnash preferences")); + rcfile.useSound(gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(prefs->soundToggle))); - addGnashIcon(GTK_WINDOW(window1)); + rcfile.useActionDump( + gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(prefs->actionDumpToggle))); + rcfile.useParserDump( + gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(prefs->parserDumpToggle))); - GtkWidget *notebook1 = gtk_notebook_new (); - gtk_widget_show (notebook1); - gtk_container_add (GTK_CONTAINER (window1), notebook1); + tmp = gtk_entry_get_text(GTK_ENTRY(prefs->logfileName)); + rcfile.setDebugLog(tmp); - GtkWidget *frame1 = gtk_frame_new (NULL); - gtk_widget_show (frame1); - gtk_container_add (GTK_CONTAINER (notebook1), frame1); - gtk_frame_set_shadow_type (GTK_FRAME (frame1), GTK_SHADOW_NONE); - - GtkWidget *alignment1 = gtk_alignment_new (0.5, 0.5, 1, 1); - gtk_widget_show (alignment1); - gtk_container_add (GTK_CONTAINER (frame1), alignment1); - gtk_alignment_set_padding (GTK_ALIGNMENT (alignment1), 0, 0, 12, 0); - - GtkWidget *table1 = gtk_table_new (6, 2, FALSE); - gtk_widget_show (table1); - gtk_container_add (GTK_CONTAINER (alignment1), table1); - - GtkWidget *label5 = gtk_label_new (_("Verbosity")); - gtk_widget_show (label5); - gtk_table_attach (GTK_TABLE (table1), label5, 0, 1, 0, 1, - (GtkAttachOptions) (GTK_FILL), - (GtkAttachOptions) (0), 0, 0); - gtk_misc_set_alignment (GTK_MISC (label5), 0, 0.5); + rcfile.useWriteLog( + gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(prefs->writeLogToggle))); - GtkWidget *hscale1 = gtk_hscale_new (GTK_ADJUSTMENT (gtk_adjustment_new (rcfile.verbosityLevel(), 0, 10, 1, 0, 0))); - gtk_widget_show (hscale1); - gtk_table_attach (GTK_TABLE (table1), hscale1, 1, 2, 0, 1, - (GtkAttachOptions) (GTK_EXPAND | GTK_FILL), - (GtkAttachOptions) (GTK_FILL), 0, 0); - gtk_scale_set_digits (GTK_SCALE (hscale1), 0); - gtk_range_set_update_policy (GTK_RANGE (hscale1), GTK_UPDATE_DISCONTINUOUS); - - GtkWidget *label6 = gtk_label_new (_("Log to file")); - gtk_widget_show (label6); - gtk_table_attach (GTK_TABLE (table1), label6, 0, 1, 1, 2, - (GtkAttachOptions) (GTK_FILL), - (GtkAttachOptions) (0), 0, 0); - gtk_misc_set_alignment (GTK_MISC (label6), 0, 0.5); + rcfile.verbosityLevel( + gtk_range_get_value(GTK_RANGE(prefs->verbosityScale))); - GtkWidget *checkbutton1 = gtk_check_button_new_with_mnemonic (""); - gtk_widget_show (checkbutton1); - gtk_table_attach (GTK_TABLE (table1), checkbutton1, 1, 2, 1, 2, - (GtkAttachOptions) (GTK_FILL), - (GtkAttachOptions) (0), 0, 0); + rcfile.showASCodingErrors( + gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(prefs->ASCodingErrorToggle))); - if ( rcfile.useWriteLog() == true ) - gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (checkbutton1), TRUE); - else - gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (checkbutton1), FALSE); - - GtkWidget *label7 = gtk_label_new (_("Log File name")); - gtk_widget_show (label7); - gtk_table_attach (GTK_TABLE (table1), label7, 0, 1, 2, 3, - (GtkAttachOptions) (GTK_FILL), - (GtkAttachOptions) (0), 0, 0); - gtk_misc_set_alignment (GTK_MISC (label7), 0, 0.5); + //rcfile.showMalformedSWFErrors( + // gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(prefs->malformedSWFToggle))); - GtkWidget *logfilenameentry = gtk_entry_new (); - gtk_widget_show (logfilenameentry); - gtk_table_attach (GTK_TABLE (table1), logfilenameentry, 1, 2, 2, 3, - (GtkAttachOptions) (GTK_EXPAND | GTK_FILL), - (GtkAttachOptions) (0), 0, 0); + rcfile.useLocalHost( + gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(prefs->localHostToggle))); - if (rcfile.useWriteLog() == true ) { - log_msg (_("Debug log filename: %s"), rcfile.getDebugLog().c_str()); - gtk_entry_set_text( (GtkEntry*) logfilenameentry, rcfile.getDebugLog().c_str()); - gtk_widget_set_sensitive(logfilenameentry,TRUE); - } else { - gtk_widget_set_sensitive(logfilenameentry,FALSE); - } + rcfile.useLocalDomain( + gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(prefs->localDomainToggle))); - GtkWidget *label8 = gtk_label_new (_("Parser output")); - gtk_widget_show (label8); - gtk_table_attach (GTK_TABLE (table1), label8, 0, 1, 3, 4, - (GtkAttachOptions) (GTK_FILL), - (GtkAttachOptions) (0), 0, 0); - gtk_misc_set_alignment (GTK_MISC (label8), 0, 0.5); + rcfile.setSOLLocalDomain( + gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(prefs->solLocalDomainToggle))); - GtkWidget *parseroutputcheckbutton2 = gtk_check_button_new_with_mnemonic (""); - gtk_widget_show (parseroutputcheckbutton2); - gtk_table_attach (GTK_TABLE (table1), parseroutputcheckbutton2, 1, 2, 3, 4, - (GtkAttachOptions) (GTK_FILL), - (GtkAttachOptions) (0), 0, 0); + rcfile.setSOLReadOnly( + gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(prefs->solReadOnlyToggle))); - if ( rcfile.useParserDump() == true ) - gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (parseroutputcheckbutton2), TRUE); - else - gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (parseroutputcheckbutton2), FALSE); - - GtkWidget *label9 = gtk_label_new (_("Debug ActionScript")); - gtk_widget_show (label9); - gtk_table_attach (GTK_TABLE (table1), label9, 0, 1, 4, 5, - (GtkAttachOptions) (GTK_FILL), - (GtkAttachOptions) (0), 0, 0); - gtk_misc_set_alignment (GTK_MISC (label9), 0, 0.5); + rcfile.setLocalConnection( + gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(prefs->localConnectionToggle))); - GtkWidget *debugActionScriptcheckbutton3 = gtk_check_button_new_with_mnemonic (""); - gtk_widget_show (debugActionScriptcheckbutton3); - gtk_table_attach (GTK_TABLE (table1), debugActionScriptcheckbutton3, 1, 2, 4, 5, - (GtkAttachOptions) (GTK_FILL), - (GtkAttachOptions) (0), 0, 0); + rcfile.setLCTrace( + gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(prefs->lcTraceToggle))); + + tmp = gtk_entry_get_text(GTK_ENTRY(prefs->solSandbox)); + rcfile.setSOLSafeDir(tmp); - if (rcfile.useActionDump() == true) { - gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (debugActionScriptcheckbutton3), TRUE); - } else { - gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (debugActionScriptcheckbutton3), FALSE); } - GtkWidget *label10 = gtk_label_new (_("Debugger")); - gtk_widget_show (label10); - gtk_table_attach (GTK_TABLE (table1), label10, 0, 1, 5, 6, - (GtkAttachOptions) (GTK_FILL), - (GtkAttachOptions) (0), 0, 0); - gtk_misc_set_alignment (GTK_MISC (label10), 0, 0.5); + // Make sure the dialogue is destroyed, whatever button is clicked. + gtk_widget_destroy(dialog); - GtkWidget *debuggercheckbutton4 = gtk_check_button_new_with_mnemonic (""); - gtk_widget_show (debuggercheckbutton4); - gtk_table_attach (GTK_TABLE (table1), debuggercheckbutton4, 1, 2, 5, 6, - (GtkAttachOptions) (GTK_FILL), - (GtkAttachOptions) (0), 0, 0); +} - if (rcfile.useDebugger() == true) { - gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (debuggercheckbutton4), TRUE); - } else { - gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (debuggercheckbutton4), FALSE); - } +/////////////////////////////////////////////////////////////////////////////// +/////////////////////////////////////////////////////////////////////////////// +/// /// +/// Dialogues /// +/// /// +/////////////////////////////////////////////////////////////////////////////// +/////////////////////////////////////////////////////////////////////////////// - GtkWidget *label4 = gtk_label_new (_("<b>Logging preferences</b>")); - gtk_widget_show (label4); - gtk_frame_set_label_widget (GTK_FRAME (frame1), label4); - gtk_label_set_use_markup (GTK_LABEL (label4), TRUE); - - GtkWidget *label1 = gtk_label_new (_("Logging")); - gtk_widget_show (label1); - gtk_notebook_set_tab_label (GTK_NOTEBOOK (notebook1), gtk_notebook_get_nth_page (GTK_NOTEBOOK (notebook1), 0), label1); - - GtkWidget *frame2 = gtk_frame_new (NULL); - gtk_widget_show (frame2); - gtk_container_add (GTK_CONTAINER (notebook1), frame2); - gtk_frame_set_shadow_type (GTK_FRAME (frame2), GTK_SHADOW_NONE); - - GtkWidget *alignment2 = gtk_alignment_new (0.5, 0.5, 1, 1); - gtk_widget_show (alignment2); - gtk_container_add (GTK_CONTAINER (frame2), alignment2); - gtk_alignment_set_padding (GTK_ALIGNMENT (alignment2), 0, 0, 12, 0); - - GtkWidget *table4 = gtk_table_new (4, 2, FALSE); - gtk_widget_show (table4); - gtk_container_add (GTK_CONTAINER (alignment2), table4); - - GtkWidget *label13 = gtk_label_new (_("Allow remote access from: ")); - gtk_widget_show (label13); - gtk_table_attach (GTK_TABLE (table4), label13, 0, 1, 0, 1, - (GtkAttachOptions) (GTK_FILL), - (GtkAttachOptions) (0), 0, 0); - gtk_misc_set_alignment (GTK_MISC (label13), 0, 0.5); +void +GtkGui::showPreferencesDialog() +{ - GtkWidget *label15 = gtk_label_new (_("Whitelist")); - gtk_widget_show (label15); - gtk_table_attach (GTK_TABLE (table4), label15, 0, 1, 2, 3, - (GtkAttachOptions) (GTK_FILL), - (GtkAttachOptions) (0), 0, 0); - gtk_misc_set_alignment (GTK_MISC (label15), 0, 0.5); + prefData *prefs(new prefData); - GtkWidget *label16 = gtk_label_new (_("Blacklist")); - gtk_widget_show (label16); - gtk_table_attach (GTK_TABLE (table4), label16, 0, 1, 3, 4, - (GtkAttachOptions) (GTK_FILL), - (GtkAttachOptions) (0), 0, 0); - gtk_misc_set_alignment (GTK_MISC (label16), 0, 0.5); + RcInitFile& rcfile = RcInitFile::getDefaultInstance(); - GtkWidget *whitelistcomboboxentry1 = gtk_combo_box_entry_new_text (); - gtk_widget_show (whitelistcomboboxentry1); - gtk_table_attach (GTK_TABLE (table4), whitelistcomboboxentry1, 1, 2, 2, 3, - (GtkAttachOptions) (GTK_FILL), - (GtkAttachOptions) (GTK_FILL), 0, 0); + // Create top-level window + GtkWidget *prefsDialog = gtk_dialog_new_with_buttons(_("Gnash preferences"), + GTK_WINDOW(_window), + GTK_DIALOG_DESTROY_WITH_PARENT, + GTK_STOCK_CANCEL, GTK_RESPONSE_REJECT, + GTK_STOCK_OK, GTK_RESPONSE_ACCEPT, + NULL); + // Add Gnash icon + addGnashIcon(GTK_WINDOW(prefsDialog)); - GtkWidget *blacklistcomboboxentry2 = gtk_combo_box_entry_new_text (); - gtk_widget_show (blacklistcomboboxentry2); - gtk_table_attach (GTK_TABLE (table4), blacklistcomboboxentry2, 1, 2, 3, 4, - (GtkAttachOptions) (GTK_FILL), - (GtkAttachOptions) (GTK_FILL), 0, 0); + // Add notebook (tabs) to dialogue's vbox + GtkWidget *notebook1 = gtk_notebook_new (); + gtk_container_add ( + GTK_CONTAINER(GTK_DIALOG(prefsDialog)->vbox), notebook1); - GtkWidget *localhostcheckbutton8 = gtk_check_button_new_with_mnemonic (_("local host only")); - gtk_widget_show (localhostcheckbutton8); - gtk_table_attach (GTK_TABLE (table4), localhostcheckbutton8, 1, 2, 0, 1, - (GtkAttachOptions) (GTK_FILL), - (GtkAttachOptions) (0), 0, 0); + // Pass the widgets containing settings to the callback function + // when any button is clicked. + g_signal_connect (prefsDialog, "response", G_CALLBACK(&updateRC), prefs); + + // Logging Tab + 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); + + // Logging options + GtkWidget *logginglabel = gtk_label_new (_("<b>Logging options</b>")); + gtk_label_set_use_markup (GTK_LABEL (logginglabel), TRUE); + gtk_box_pack_start(GTK_BOX(loggingvbox), logginglabel, FALSE, FALSE, 0); + + GtkWidget *verbositylabel = gtk_label_new (_("Verbosity level:")); + 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->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); + // Put debug filename in the entry box + 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()); + +#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 + gtk_toggle_button_set_active ( + GTK_TOGGLE_BUTTON (prefs->DebuggerToggle), + rcfile.useDebugger()); + +#endif + + // 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); + + // 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->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()); - if ( rcfile.useLocalHost() == true ) { - gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (localhostcheckbutton8), TRUE); - } else { - gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (localhostcheckbutton8), FALSE); - } + GtkWidget *whitelistexpander = gtk_expander_new_with_mnemonic (_("_Whitelist")); + gtk_box_pack_start (GTK_BOX (securityvbox), whitelistexpander, FALSE, FALSE, 0); - GtkWidget *localdomaincheckbutton9 = gtk_check_button_new_with_mnemonic (_("local domain only")); - gtk_widget_show (localdomaincheckbutton9); - gtk_table_attach (GTK_TABLE (table4), localdomaincheckbutton9, 1, 2, 1, 2, - (GtkAttachOptions) (GTK_FILL), - (GtkAttachOptions) (0), 0, 0); + GtkWidget *whitelistcomboboxentry1 = gtk_combo_box_entry_new_text (); + gtk_container_add (GTK_CONTAINER(whitelistexpander), whitelistcomboboxentry1); - if ( rcfile.useLocalDomain() == true ) { - gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (localdomaincheckbutton9), TRUE); - } else { - gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (localdomaincheckbutton9), FALSE); - } + GtkWidget *blacklistexpander = gtk_expander_new_with_mnemonic (_("_Blacklist")); + gtk_box_pack_start (GTK_BOX (securityvbox), blacklistexpander, FALSE, FALSE, 0); - GtkWidget *label11 = gtk_label_new (_("<b>Security preferences</b>")); - gtk_widget_show (label11); - gtk_frame_set_label_widget (GTK_FRAME (frame2), label11); - gtk_label_set_use_markup (GTK_LABEL (label11), TRUE); - - GtkWidget *label2 = gtk_label_new (_("Security")); - gtk_widget_show (label2); - gtk_notebook_set_tab_label (GTK_NOTEBOOK (notebook1), gtk_notebook_get_nth_page (GTK_NOTEBOOK (notebook1), 1), label2); - - GtkWidget *frame3 = gtk_frame_new (NULL); - gtk_widget_show (frame3); - gtk_container_add (GTK_CONTAINER (notebook1), frame3); - gtk_frame_set_shadow_type (GTK_FRAME (frame3), GTK_SHADOW_NONE); - - GtkWidget *alignment3 = gtk_alignment_new (0.5, 0.5, 1, 1); - gtk_widget_show (alignment3); - gtk_container_add (GTK_CONTAINER (frame3), alignment3); - gtk_alignment_set_padding (GTK_ALIGNMENT (alignment3), 0, 0, 12, 0); - - GtkWidget *table5 = gtk_table_new (3, 2, FALSE); - gtk_widget_show (table5); - gtk_container_add (GTK_CONTAINER (alignment3), table5); - - GtkWidget *label17 = gtk_label_new (_("Enable sound")); - gtk_widget_show (label17); - gtk_table_attach (GTK_TABLE (table5), label17, 0, 1, 0, 1, - (GtkAttachOptions) (GTK_FILL), - (GtkAttachOptions) (0), 0, 0); - gtk_misc_set_alignment (GTK_MISC (label17), 0, 0.5); + GtkWidget *blacklistcomboboxentry2 = gtk_combo_box_entry_new_text (); + gtk_container_add (GTK_CONTAINER(blacklistexpander), blacklistcomboboxentry2); - GtkWidget *checkbutton7 = gtk_check_button_new_with_mnemonic (""); - gtk_widget_show (checkbutton7); - gtk_table_attach (GTK_TABLE (table5), checkbutton7, 1, 2, 0, 1, - (GtkAttachOptions) (GTK_FILL), - (GtkAttachOptions) (0), 0, 0); - if (rcfile.useSound() == true) { - gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (checkbutton7), TRUE); - } else { - gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (checkbutton7), FALSE); - } + // Privacy + GtkWidget *privacylabel = gtk_label_new (_("<b>Privacy</b>")); + gtk_label_set_use_markup (GTK_LABEL (privacylabel), TRUE); + gtk_box_pack_start (GTK_BOX(securityvbox), privacylabel, FALSE, FALSE, 0); + + GtkWidget *solsandboxlabel = gtk_label_new (_("Shared objects directory:")); + 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->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()); + + 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()); + + 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()); + + prefs->lcTraceToggle = gtk_check_button_new_with_mnemonic ( + _("_Trace local connection activity")); + gtk_box_pack_start (GTK_BOX(securityvbox), prefs->lcTraceToggle, FALSE, FALSE, 0); + gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (prefs->lcTraceToggle), + rcfile.getLCTrace()); + + // Sound Tab + + // Security Tab + GtkWidget *mediavbox = gtk_vbox_new (FALSE, 2); + + // Security tab title + GtkWidget *mediatablabel = gtk_label_new_with_mnemonic (_("_Media")); + + gtk_notebook_append_page(GTK_NOTEBOOK(notebook1), 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); - GtkWidget *label12 = gtk_label_new (_("<b>Sound preferences</b>")); - gtk_widget_show (label12); - gtk_frame_set_label_widget (GTK_FRAME (frame3), label12); - gtk_label_set_use_markup (GTK_LABEL (label12), TRUE); + prefs->soundToggle = gtk_check_button_new_with_mnemonic ("Use sound _handler"); + gtk_box_pack_start (GTK_BOX(mediavbox), prefs->soundToggle, FALSE, FALSE, 0); - GtkWidget *label3 = gtk_label_new (_("Sound")); - gtk_widget_show (label3); - gtk_notebook_set_tab_label (GTK_NOTEBOOK (notebook1), gtk_notebook_get_nth_page (GTK_NOTEBOOK (notebook1), 2), label3); + gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (prefs->soundToggle), rcfile.useSound()); - gtk_widget_show (window1); + gtk_widget_show_all (prefsDialog); } void Index: gui/gtksup.h =================================================================== RCS file: /sources/gnash/gnash/gui/gtksup.h,v retrieving revision 1.58 retrieving revision 1.59 diff -u -b -r1.58 -r1.59 --- gui/gtksup.h 7 Jan 2008 09:47:29 -0000 1.58 +++ gui/gtksup.h 16 Jan 2008 17:14:04 -0000 1.59 @@ -202,6 +202,31 @@ static gnash::key::code gdk_to_gnash_key(guint key); static int gdk_to_gnash_modifier(int state); + + // A struct containing widgets for passing preference + // data from the dialogue + typedef 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 *lcTraceToggle; + GtkWidget *solSandbox; +#ifdef USE_DEBUGGER + GtkWidget *DebuggerToggle; +#endif + } prefData; + + static void updateRC(GtkWidget* widget, gint response, gpointer data); static void open_file(GtkWidget* dialog, gpointer data); }; _______________________________________________ Gnash-commit mailing list Gnash-commit@gnu.org http://lists.gnu.org/mailman/listinfo/gnash-commit