config_dialog_generic($glade,$config_array); $conf->btn_ok->connect("pressed",array(&$this,"update_config")); to display it: $conf->prefs = $current_config_array; $conf->show(); function update_config() { $new_config_array = $conf->get_results(); $conf->hide(); } */ class config_dialog extends phpide_dialog_generic { var $prefs; // where stuff is stored and retrieved from function config_dialog() { $this->phpide_Dialog_Generic(dirname(__FILE__)."/config_dialog.glade"); } function show() { $this->load_prefs(); $this->ok_pressed_callback = array(&$this,"save_prefs"); $this->__show(); } function load_prefs() { global $application; foreach($application->prefs->prefs as $k => $v) { $kname = ereg_replace("[^a-z0-9]+", "_", trim(strtolower($k))); $kname2 = ereg_replace("[^a-z0-9]+", "_", trim(strtolower($k." ".sprintf("%01d",$v)))); $widget = $this->widget->get_widget($kname); if (!$widget) $widget = $this->widget->get_widget($kname2); if (!$widget) continue; switch (get_class($widget)) { case "GtkCheckButton": $vv=0; if ($v) $vv = 1; $widget->set_active($vv); break; case "GtkSpinButton": $widget->set_value($v); break; case "GtkButton": $this->set_fontname( $kname,$v); break; case "GtkDrawingArea": $this->set_buttoncolor($kname,$v); break; case "GtkRadioButton": $widget->set_active(0); break; case "GtkText": $len = $widget->get_length(); $widget->delete_text(0,$len); $widget->insert_text($v,0); break; } } } function save_prefs() { global $application; foreach($application->prefs->prefs as $k => $v) { $kname = ereg_replace("[^a-z0-9]+", "_", trim(strtolower($k))); $kname2 = ereg_replace("[^a-z0-9]+", "_", trim(strtolower($k." ".sprintf("%01d",$v)))); $widget = $this->widget->get_widget($kname); if (!$widget) $widget = $this->widget->get_widget($kname2); if (!$widget) continue; switch (get_class($widget)) { case "GtkCheckButton": $application->prefs->prefs[$k] = $widget->get_active(); break; case "GtkSpinButton": $application->prefs->prefs[$k] = $widget->get_value_as_int(); break; case "GtkRadioButton": // now this is a bit more complex!!! $application->prefs[$k] = 0; // default it for ($i=0;$i<9;$i++) { $w = $this->widget->get_widget($kname . "_".sprintf("%01d",$i)); if (!$w) break; if ($w->get_active()) $this->prefs[$k] = $i; } break; } } $application->prefs->save_user_prefs(); } } ?>