// Copyright (C) 2001 Jean-Marc Valin & Dominic Letourneau
#ifdef HAVE_CONFIG_H
# include <config.h>
#endif
#include <iostream>
#include <stdlib.h>
#include <fstream>
#include <sstream>
#include <locale.h>
#include <gnome.h>
#include "vflow_pref.h"
#include "flow_pref.h"
#include "vflow.h"
using namespace std;
namespace FD {
static void pref_apply (GnomePropertyBox *propertybox, gint arg1, VFlowPrefDialog* user_data)
{
//cerr << "user_data = " << user_data << endl;
user_data->apply();
}
static void pref_close (GnomePropertyBox *propertybox, VFlowPrefDialog* user_data)
{
//cerr << "user_data = " << user_data << endl;
user_data->close();
}
static void pref_changed (GtkToggleButton *togglebutton, GtkWidget *propertybox1)
{
gnome_property_box_set_state (GNOME_PROPERTY_BOX(propertybox1), TRUE);
}
static void color_changed (GnomeColorPicker *colorpicker,
guint arg1,
guint arg2,
guint arg3,
guint arg4,
GtkWidget *propertybox1)
{
//cerr << "color changed" << endl;
gnome_color_picker_set_i16(colorpicker, arg1, arg2, arg3, arg4);
gnome_property_box_set_state (GNOME_PROPERTY_BOX(propertybox1), TRUE);
}
VFlowPrefDialog::VFlowPrefDialog()
{
//cerr << "For the moment, this preference dialog box is only half functional (and half decoration), sorry:-(" << endl;
GtkWidget *notebook1;
GtkWidget *vbox3;
GtkWidget *frame1;
GtkWidget *vbox4;
GtkWidget *frame2;
GtkWidget *vbox5;
GtkWidget *label1;
GtkWidget *vbox1;
GtkWidget *mdiframe;
GtkWidget *table2;
GtkWidget *label7;
GtkWidget *label8;
GtkWidget *optionmenu1;
GtkWidget *optionmenu1_menu;
GtkWidget *glade_menuitem;
GtkWidget *optionmenu2;
GtkWidget *optionmenu2_menu;
GtkWidget *label2;
GtkWidget *vbox2;
GtkWidget *colorframe;
GtkWidget *table1;
GtkWidget *label4;
GtkWidget *label5;
GtkWidget *label6;
GtkWidget *label3;
propertybox1 = gnome_property_box_new ();
gtk_object_set_data (GTK_OBJECT (propertybox1), "propertybox1", propertybox1);
gtk_window_set_policy (GTK_WINDOW (propertybox1), FALSE, FALSE, FALSE);
notebook1 = GNOME_PROPERTY_BOX (propertybox1)->notebook;
gtk_object_set_data (GTK_OBJECT (propertybox1), "notebook1", notebook1);
gtk_widget_show (notebook1);
vbox3 = gtk_vbox_new (FALSE, 0);
gtk_widget_ref (vbox3);
gtk_object_set_data_full (GTK_OBJECT (propertybox1), "vbox3", vbox3,
(GtkDestroyNotify) gtk_widget_unref);
gtk_widget_show (vbox3);
gtk_container_add (GTK_CONTAINER (notebook1), vbox3);
frame1 = gtk_frame_new (_("Display"));
gtk_widget_ref (frame1);
gtk_object_set_data_full (GTK_OBJECT (propertybox1), "frame1", frame1,
(GtkDestroyNotify) gtk_widget_unref);
gtk_widget_show (frame1);
gtk_box_pack_start (GTK_BOX (vbox3), frame1, TRUE, TRUE, 0);
vbox4 = gtk_vbox_new (FALSE, 0);
gtk_widget_ref (vbox4);
gtk_object_set_data_full (GTK_OBJECT (propertybox1), "vbox4", vbox4,
(GtkDestroyNotify) gtk_widget_unref);
gtk_widget_show (vbox4);
gtk_container_add (GTK_CONTAINER (frame1), vbox4);
showallio = gtk_check_button_new_with_label (_("Show all Input/Output names"));
gtk_widget_ref (showallio);
gtk_object_set_data_full (GTK_OBJECT (propertybox1), "showallio", showallio,
(GtkDestroyNotify) gtk_widget_unref);
gtk_widget_show (showallio);
gtk_box_pack_start (GTK_BOX (vbox4), showallio, FALSE, FALSE, 0);
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(showallio), FlowPref::getBool("VFLOW", "ShowAllInOut"));
gtk_signal_connect (GTK_OBJECT (showallio), "toggled",
GTK_SIGNAL_FUNC(pref_changed), propertybox1);
showtooltip = gtk_check_button_new_with_label (_("Show tooltips"));
gtk_widget_ref (showtooltip);
gtk_object_set_data_full (GTK_OBJECT (propertybox1), "showtooltip", showtooltip,
(GtkDestroyNotify) gtk_widget_unref);
gtk_widget_show (showtooltip);
gtk_box_pack_start (GTK_BOX (vbox4), showtooltip, FALSE, FALSE, 0);
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(showtooltip), FlowPref::getBool("VFLOW", "ShowTooltips"));
gtk_signal_connect (GTK_OBJECT (showtooltip), "toggled",
GTK_SIGNAL_FUNC(pref_changed), propertybox1);
showtreeview = gtk_check_button_new_with_label(_("Show Node Tree View"));
gtk_widget_ref(showtreeview);
gtk_object_set_data_full(GTK_OBJECT(propertybox1), "showtreeview", showtreeview,
(GtkDestroyNotify) gtk_widget_unref);
gtk_widget_show(showtreeview);
gtk_box_pack_start(GTK_BOX(vbox4),showtreeview,FALSE,FALSE,0);
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(showtreeview), FlowPref::getBool("VFLOW","ShowTreeView"));
gtk_signal_connect(GTK_OBJECT(showtreeview), "toggled",
GTK_SIGNAL_FUNC(pref_changed), propertybox1);
frame2 = gtk_frame_new (_("Run"));
gtk_widget_ref (frame2);
gtk_object_set_data_full (GTK_OBJECT (propertybox1), "frame2", frame2,
(GtkDestroyNotify) gtk_widget_unref);
gtk_widget_show (frame2);
gtk_box_pack_start (GTK_BOX (vbox3), frame2, TRUE, TRUE, 0);
vbox5 = gtk_vbox_new (FALSE, 0);
gtk_widget_ref (vbox5);
gtk_object_set_data_full (GTK_OBJECT (propertybox1), "vbox5", vbox5,
(GtkDestroyNotify) gtk_widget_unref);
gtk_widget_show (vbox5);
gtk_container_add (GTK_CONTAINER (frame2), vbox5);
printout = gtk_check_button_new_with_label (_("Print program output in text area"));
gtk_widget_ref (printout);
gtk_object_set_data_full (GTK_OBJECT (propertybox1), "printout", printout,
(GtkDestroyNotify) gtk_widget_unref);
gtk_widget_show (printout);
gtk_box_pack_start (GTK_BOX (vbox5), printout, FALSE, FALSE, 0);
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(printout), FlowPref::getBool("VFLOW", "PrintOutput"));
gtk_signal_connect (GTK_OBJECT (printout), "toggled",
GTK_SIGNAL_FUNC(pref_changed), propertybox1);
runprocess = gtk_check_button_new_with_label (_("Run in a separate process"));
gtk_widget_ref (runprocess);
gtk_object_set_data_full (GTK_OBJECT (propertybox1), "runprocess", runprocess,
(GtkDestroyNotify) gtk_widget_unref);
gtk_widget_show (runprocess);
gtk_box_pack_start (GTK_BOX (vbox5), runprocess, FALSE, FALSE, 0);
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(runprocess), FlowPref::getBool("VFLOW", "RunProcess"));
gtk_signal_connect (GTK_OBJECT (runprocess), "toggled",
GTK_SIGNAL_FUNC(pref_changed), propertybox1);
label1 = gtk_label_new (_("General"));
gtk_widget_ref (label1);
gtk_object_set_data_full (GTK_OBJECT (propertybox1), "label1", label1,
(GtkDestroyNotify) gtk_widget_unref);
gtk_widget_show (label1);
gtk_notebook_set_tab_label (GTK_NOTEBOOK (notebook1), gtk_notebook_get_nth_page (GTK_NOTEBOOK (notebook1), 0), label1);
vbox1 = gtk_vbox_new (FALSE, 0);
gtk_widget_ref (vbox1);
gtk_object_set_data_full (GTK_OBJECT (propertybox1), "vbox1", vbox1,
(GtkDestroyNotify) gtk_widget_unref);
gtk_widget_show (vbox1);
gtk_container_add (GTK_CONTAINER (notebook1), vbox1);
mdiframe = gtk_frame_new (_("Multi Document Interface (MDI)"));
gtk_widget_ref (mdiframe);
gtk_object_set_data_full (GTK_OBJECT (propertybox1), "mdiframe", mdiframe,
(GtkDestroyNotify) gtk_widget_unref);
gtk_widget_show (mdiframe);
gtk_box_pack_start (GTK_BOX (vbox1), mdiframe, TRUE, TRUE, 0);
table2 = gtk_table_new (2, 2, FALSE);
gtk_widget_ref (table2);
gtk_object_set_data_full (GTK_OBJECT (propertybox1), "table2", table2,
(GtkDestroyNotify) gtk_widget_unref);
gtk_widget_show (table2);
gtk_container_add (GTK_CONTAINER (mdiframe), table2);
label7 = gtk_label_new (_("Mode"));
gtk_widget_ref (label7);
gtk_object_set_data_full (GTK_OBJECT (propertybox1), "label7", label7,
(GtkDestroyNotify) gtk_widget_unref);
gtk_widget_show (label7);
gtk_table_attach (GTK_TABLE (table2), label7, 0, 1, 0, 1,
(GtkAttachOptions) (GTK_FILL),
(GtkAttachOptions) (0), 0, 0);
gtk_label_set_justify (GTK_LABEL (label7), GTK_JUSTIFY_RIGHT);
gtk_misc_set_alignment (GTK_MISC (label7), 0, 0.5);
label8 = gtk_label_new (_("Notebook Tab Position"));
gtk_widget_ref (label8);
gtk_object_set_data_full (GTK_OBJECT (propertybox1), "label8", label8,
(GtkDestroyNotify) gtk_widget_unref);
gtk_widget_show (label8);
gtk_table_attach (GTK_TABLE (table2), label8, 0, 1, 1, 2,
(GtkAttachOptions) (GTK_FILL),
(GtkAttachOptions) (0), 0, 0);
gtk_label_set_justify (GTK_LABEL (label8), GTK_JUSTIFY_RIGHT);
gtk_misc_set_alignment (GTK_MISC (label8), 0, 0.5);
optionmenu1 = gtk_option_menu_new ();
gtk_widget_ref (optionmenu1);
gtk_object_set_data_full (GTK_OBJECT (propertybox1), "optionmenu1", optionmenu1,
(GtkDestroyNotify) gtk_widget_unref);
gtk_widget_show (optionmenu1);
gtk_table_attach (GTK_TABLE (table2), optionmenu1, 1, 2, 0, 1,
(GtkAttachOptions) (GTK_FILL),
(GtkAttachOptions) (0), 0, 0);
optionmenu1_menu = gtk_menu_new ();
glade_menuitem = gtk_menu_item_new_with_label (_("Notebook"));
gtk_widget_show (glade_menuitem);
gtk_menu_append (GTK_MENU (optionmenu1_menu), glade_menuitem);
glade_menuitem = gtk_menu_item_new_with_label (_("Toplevel"));
gtk_widget_show (glade_menuitem);
gtk_menu_append (GTK_MENU (optionmenu1_menu), glade_menuitem);
glade_menuitem = gtk_menu_item_new_with_label (_("Modal"));
gtk_widget_show (glade_menuitem);
gtk_menu_append (GTK_MENU (optionmenu1_menu), glade_menuitem);
glade_menuitem = gtk_menu_item_new_with_label (_("Default"));
gtk_widget_show (glade_menuitem);
gtk_menu_append (GTK_MENU (optionmenu1_menu), glade_menuitem);
gtk_option_menu_set_menu (GTK_OPTION_MENU (optionmenu1), optionmenu1_menu);
optionmenu2 = gtk_option_menu_new ();
gtk_widget_ref (optionmenu2);
gtk_object_set_data_full (GTK_OBJECT (propertybox1), "optionmenu2", optionmenu2,
(GtkDestroyNotify) gtk_widget_unref);
gtk_widget_show (optionmenu2);
gtk_table_attach (GTK_TABLE (table2), optionmenu2, 1, 2, 1, 2,
(GtkAttachOptions) (GTK_FILL),
(GtkAttachOptions) (0), 0, 0);
optionmenu2_menu = gtk_menu_new ();
glade_menuitem = gtk_menu_item_new_with_label (_("Left"));
gtk_widget_show (glade_menuitem);
gtk_menu_append (GTK_MENU (optionmenu2_menu), glade_menuitem);
glade_menuitem = gtk_menu_item_new_with_label (_("Right"));
gtk_widget_show (glade_menuitem);
gtk_menu_append (GTK_MENU (optionmenu2_menu), glade_menuitem);
glade_menuitem = gtk_menu_item_new_with_label (_("Top"));
gtk_widget_show (glade_menuitem);
gtk_menu_append (GTK_MENU (optionmenu2_menu), glade_menuitem);
glade_menuitem = gtk_menu_item_new_with_label (_("Bottom"));
gtk_widget_show (glade_menuitem);
gtk_menu_append (GTK_MENU (optionmenu2_menu), glade_menuitem);
gtk_option_menu_set_menu (GTK_OPTION_MENU (optionmenu2), optionmenu2_menu);
gtk_option_menu_set_history (GTK_OPTION_MENU (optionmenu2), 2);
label2 = gtk_label_new (_("Documents"));
gtk_widget_ref (label2);
gtk_object_set_data_full (GTK_OBJECT (propertybox1), "label2", label2,
(GtkDestroyNotify) gtk_widget_unref);
gtk_widget_show (label2);
gtk_notebook_set_tab_label (GTK_NOTEBOOK (notebook1), gtk_notebook_get_nth_page (GTK_NOTEBOOK (notebook1), 1), label2);
vbox2 = gtk_vbox_new (FALSE, 0);
gtk_widget_ref (vbox2);
gtk_object_set_data_full (GTK_OBJECT (propertybox1), "vbox2", vbox2,
(GtkDestroyNotify) gtk_widget_unref);
gtk_widget_show (vbox2);
gtk_container_add (GTK_CONTAINER (notebook1), vbox2);
colorframe = gtk_frame_new (_("Colors"));
gtk_widget_ref (colorframe);
gtk_object_set_data_full (GTK_OBJECT (propertybox1), "colorframe", colorframe,
(GtkDestroyNotify) gtk_widget_unref);
gtk_widget_show (colorframe);
gtk_box_pack_start (GTK_BOX (vbox2), colorframe, TRUE, TRUE, 0);
table1 = gtk_table_new (3, 2, FALSE);
gtk_widget_ref (table1);
gtk_object_set_data_full (GTK_OBJECT (propertybox1), "table1", table1,
(GtkDestroyNotify) gtk_widget_unref);
gtk_widget_show (table1);
gtk_container_add (GTK_CONTAINER (colorframe), table1);
colorpicker1 = gnome_color_picker_new ();
gtk_widget_ref (colorpicker1);
gtk_object_set_data_full (GTK_OBJECT (propertybox1), "colorpicker1", colorpicker1,
(GtkDestroyNotify) gtk_widget_unref);
guint32 col = FlowPref::getColor("VFLOW", "RegularColor");
gnome_color_picker_set_i8(GNOME_COLOR_PICKER(colorpicker1), (col>>24)&0xff, (col>>16)&0xff, (col>>8)&0xff, (col&0xff));
gtk_widget_show (colorpicker1);
gtk_table_attach (GTK_TABLE (table1), colorpicker1, 0, 1, 0, 1,
(GtkAttachOptions) (GTK_FILL),
(GtkAttachOptions) (0), 0, 0);
gtk_signal_connect (GTK_OBJECT (colorpicker1), "color-set",
GTK_SIGNAL_FUNC(color_changed), propertybox1);
colorpicker2 = gnome_color_picker_new ();
gtk_widget_ref (colorpicker2);
gtk_object_set_data_full (GTK_OBJECT (propertybox1), "colorpicker2", colorpicker2,
(GtkDestroyNotify) gtk_widget_unref);
col = FlowPref::getColor("VFLOW", "SelectedColor");
gnome_color_picker_set_i8(GNOME_COLOR_PICKER(colorpicker2), (col>>24)&0xff, (col>>16)&0xff, (col>>8)&0xff, (col&0xff));
gtk_widget_show (colorpicker2);
gtk_table_attach (GTK_TABLE (table1), colorpicker2, 0, 1, 1, 2,
(GtkAttachOptions) (GTK_FILL),
(GtkAttachOptions) (0), 0, 0);
gtk_signal_connect (GTK_OBJECT (colorpicker2), "color-set",
GTK_SIGNAL_FUNC(color_changed), propertybox1);
colorpicker3 = gnome_color_picker_new ();
gtk_widget_ref (colorpicker3);
gtk_object_set_data_full (GTK_OBJECT (propertybox1), "colorpicker3", colorpicker3,
(GtkDestroyNotify) gtk_widget_unref);
col = FlowPref::getColor("VFLOW", "ErrorColor");
gnome_color_picker_set_i8(GNOME_COLOR_PICKER(colorpicker3), (col>>24)&0xff, (col>>16)&0xff, (col>>8)&0xff, (col&0xff));
gtk_widget_show (colorpicker3);
gtk_table_attach (GTK_TABLE (table1), colorpicker3, 0, 1, 2, 3,
(GtkAttachOptions) (GTK_FILL),
(GtkAttachOptions) (0), 0, 0);
gtk_signal_connect (GTK_OBJECT (colorpicker3), "color-set",
GTK_SIGNAL_FUNC(color_changed), propertybox1);
label4 = gtk_label_new (_("Regular nodes"));
gtk_widget_ref (label4);
gtk_object_set_data_full (GTK_OBJECT (propertybox1), "label4", label4,
(GtkDestroyNotify) gtk_widget_unref);
gtk_widget_show (label4);
gtk_table_attach (GTK_TABLE (table1), label4, 1, 2, 0, 1,
(GtkAttachOptions) (GTK_FILL),
(GtkAttachOptions) (0), 0, 0);
gtk_misc_set_alignment (GTK_MISC (label4), 0, 0.5);
label5 = gtk_label_new (_("Highlited nodes"));
gtk_widget_ref (label5);
gtk_object_set_data_full (GTK_OBJECT (propertybox1), "label5", label5,
(GtkDestroyNotify) gtk_widget_unref);
gtk_widget_show (label5);
gtk_table_attach (GTK_TABLE (table1), label5, 1, 2, 1, 2,
(GtkAttachOptions) (GTK_FILL),
(GtkAttachOptions) (0), 0, 0);
gtk_misc_set_alignment (GTK_MISC (label5), 0, 0.5);
label6 = gtk_label_new (_("Errors"));
gtk_widget_ref (label6);
gtk_object_set_data_full (GTK_OBJECT (propertybox1), "label6", label6,
(GtkDestroyNotify) gtk_widget_unref);
gtk_widget_show (label6);
gtk_table_attach (GTK_TABLE (table1), label6, 1, 2, 2, 3,
(GtkAttachOptions) (GTK_FILL),
(GtkAttachOptions) (0), 0, 0);
gtk_misc_set_alignment (GTK_MISC (label6), 0, 0.5);
label3 = gtk_label_new (_("Colors"));
gtk_widget_ref (label3);
gtk_object_set_data_full (GTK_OBJECT (propertybox1), "label3", label3,
(GtkDestroyNotify) gtk_widget_unref);
gtk_widget_show (label3);
gtk_notebook_set_tab_label (GTK_NOTEBOOK (notebook1), gtk_notebook_get_nth_page (GTK_NOTEBOOK (notebook1), 2), label3);
gtk_signal_connect (GTK_OBJECT (propertybox1), "apply",
GTK_SIGNAL_FUNC(pref_apply), this);
gtk_signal_connect (GTK_OBJECT (propertybox1), "close",
GTK_SIGNAL_FUNC(pref_close), this);
gnome_property_box_set_state (GNOME_PROPERTY_BOX(propertybox1), FALSE);
gtk_widget_show(propertybox1);
}
VFlowPrefDialog::~VFlowPrefDialog()
{
gtk_widget_destroy(propertybox1);
}
void VFlowPrefDialog::apply()
{
//cerr << "apply\n";
FlowPref::setBool("VFLOW", "RunProcess", gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(runprocess)));
FlowPref::setBool("VFLOW", "PrintOutput", gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(printout)));
FlowPref::setBool("VFLOW", "ShowAllInOut", gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(showallio)));
FlowPref::setBool("VFLOW", "ShowTooltips", gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(showtooltip)));
FlowPref::setBool("VFLOW", "ShowTreeView", gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(showtreeview)));
guint8 r, g, b, a;
guint32 rr, gg, bb, aa;
gnome_color_picker_get_i8(GNOME_COLOR_PICKER(colorpicker1), &r, &g, &b, &a);
rr=r;gg=g;bb=b;aa=a;
guint32 col = (rr<<24) + (gg<<16) + (bb<<8) + aa;
FlowPref::setColor("VFLOW", "RegularColor", col);
gnome_color_picker_get_i8(GNOME_COLOR_PICKER(colorpicker2), &r, &g, &b, &a);
rr=r;gg=g;bb=b;aa=a;
col = (rr<<24) + (gg<<16) + (bb<<8) + aa;
FlowPref::setColor("VFLOW", "SelectedColor", col);
gnome_color_picker_get_i8(GNOME_COLOR_PICKER(colorpicker3), &r, &g, &b, &a);
rr=r;gg=g;bb=b;aa=a;
col = (rr<<24) + (gg<<16) + (bb<<8) + aa;
FlowPref::setColor("VFLOW", "ErrorColor", col);
FlowPref::Save();
vflowGUI::instance()->update_prefs();
}
void VFlowPrefDialog::close()
{
delete this;
}
}//namespace FD
syntax highlighted by Code2HTML, v. 0.9.1