2000-08-10 Bradford Hovinen * screensavers/Makefile.am (Screensavers_DATA): Added ant.xml, bsod.xml, compass.xml, and flag.xml (courtesy of James Antill ) * screensaver-prefs-dialog.c (write_command_line): Fix memory leak (read_select): Disable all widgets associated with unselected nodes before enabling those associated with selected one (read_select): Don't iterate through menu items (read_number): Don't crash if person used bad argument * expr.c (int_parse_atom): Have string -> boolean conversion always convert to FALSE (int_parse_factor): Set result to boolean TRUE when symbol of value 1 encountered. * screensaver-prefs-dialog.c (read_select): Don't crash if there are fewer menu_item_nodes than nodes * preview.c (show_preview): Map window before showing screensaver (close_preview): Unmap window after killing screensaver 2000-08-09 Bradford Hovinen * preview.c (setup_path): Use get_screensaver_dir_list; iterate through all the directories listed in list; use g_getenv * rc-parse.c (get_screensaver_dir_list): Implement. Get a list of possible directories where screensavers may be found by scanning the XScreensaver binary. (command_exists): Search through list of screensaver directories from get_screensaver_dir_list rather than using the hardcoded one (get_screensaver_dir_list): Make public, cache return value (command_exists): Don't cache screensaver_dir_list 2000-08-07 Bradford Hovinen * screensavers/Makefile.am (EXTRA_DIST): Added README * expr.c: Allow values of multiple types * main.c (main): Don't initialize glade * screensaver-prefs-dialog.c (screensaver_prefs_dialog_destroy): Free structures only if they were ever allocated * selection-dialog.c (get_known_savers): Implement. Read the screensaver directory for a list of valid screensavers (place_screensaver_list): Use known_savers rather than XML data * preferences.c (screensaver_get_label): Implement. Copy from get_label in resources.c * prefs-widget.c (deselect_saver_cb): Toggle only if event was a mouse button press, not a keyboard press (prefs_widget_init): Change vertical size of preview window to 200 (prefs_widget_init): Use a table for the buttons below the screensaver list (prefs_widget_init): Change label of edit button to Settings... (prefs_widget_init): Don't have description and preview frames expand, have selection frame expand * Makefile.am (screensaver_properties_capplet_LDADD): Don't link against glade (INCLUDES): Don't set glade compilation flags * screensaver-prefs-dialog.c (get_select_widget): Show menu item (populate_table): Don't skip hgroups that lack ids (place_number): (place_boolean): Attach items with GTK_FILL (get_check_button): (get_select_widget): Set object data to point back to dialog (populate_table): Pass dialog, remove extraneous arguments (get_check_button): Connect toggled signal from here (get_select_widget): Set data and connect activate signals from here (place_number): Set default from default attribute (get_spinbutton): Set step_increment, page_increment, and page_size on adjustment (get_spinbutton): (place_number): Set default to average of high and low if not supplied (get_argument_data): Add i18n support (read_boolean): (read_number): (read_select): (write_boolean): (write_number): (write_select): Check if id is NULL before trying to look up a node (screensaver_prefs_dialog_new): Make sure CLI arguments and XML data were read successfully before trying to build the widget (get_argument_data): Return pointer to document rather than root node (screensaver_prefs_dialog_new): Set argument_data from argument_doc (screensaver_prefs_dialog_class_init): Set parent_class (screensaver_prefs_dialog_destroy): Implement; free all structures (free_set_cb): Implement (write_number): Don't assume correct format on the output string; just replace the '%' with the appropriate argument (write_command_line): Free arg iff generated from number 2000-08-06 Bradford Hovinen * screensaver-prefs-dialog.c (get_screensaver_widget): Accept ScreensaverPrefsDialog as option (get_argument_data): Assume one file per screensaver (get_spinbutton): (get_check_button): (get_select_widget): (place_number): (place_boolean): (place_hgroup): (place_select): (populate_table): Implement (get_screensaver_widget): Rewrite to build screensaver config dialogs manually from the XML data (activate_option_cb): (toggle_check_cb): Pass dialog to set_widgets_sensitive (set_widgets_sensitive): Rewrite to use dialog->widget_db (write_boolean): (write_number): (write_select): Use widget_db (write_select): (write_command_line): Don't check no-output (write_command_line): Pass widget_db (read_boolean): (read_number): (read_select): Use widget_db (place_screensaver_properties): Pass dialog->widget_db to above functions (arg_mapping_exists): Use XML file rather than Glade definition (screensaver_prefs_dialog_new): Initialize settings_widget with the widget to be placed in the settings frame (place_screensaver_properties): Take xml node; process hgroups recursively (write_command_line): Process hgroups recursively (read_boolean): (read_number): (read_select): Check if set and set->value_widget are set before proceeding * screensaver-prefs-dialog.h (struct _PrefsDialogConfigOption): New structure (struct _ScreensaverPrefsDialog ): New member widget_db -- key-value database of PrefsDialogConfigOptions indexed by id attribute from XML 2000-07-31 Bradford Hovinen * all: Removed ENABLE_{LIBGLADE|CAPPLET|PREVIEW} ifdefs 2000-07-26 Bradford Hovinen * src/rc-parse.c (command_exists): Use gnome_is_program_in_path, return stat results if program is a full path 2000-07-20 Bradford Hovinen * src/prefs-widget.c: Include check button xpms (set_pixmap): Use gdk_pixbuf_new_from_xpm_data * src/Makefile.am (screensaver_properties_capplet_SOURCES): Put headers in sources list (pixmap_DATA): Don't install xpms (EXTRA_DIST): Add check button xpms 2000-06-25 Bradford Hovinen * src/prefs-widget.c (screensaver_remove_cb): Select next row, not next saver in list * src/selection-dialog.c (place_screensaver_list): Don't crash if node is null * src/rc-parse.c (parse_screensaver_list): Code cleanup * src/selection-dialog.c (place_screensaver_list): Code cleanup * src/preferences.c (screensaver_remove): Return pointer to new head of list, take pointer to start of screensaver list, use g_list_remove_link * src/prefs-widget.c (screensaver_remove_cb): Get new head pointer and assign to screensaver list entry, assign widget->selected_saver (screensaver_prefs_ok_cb): Set text in clist * src/main.c (demo_cb): Save a copy of prefs_widget->screensavers in prefs before saving preferences 2000-06-24 Bradford Hovinen * src/screensaver-prefs-dialog.c (read_boolean): Set toggle button correctly * src/expr.c (int_parse_factor): Handle G_TOKEN_IDENTIFIER * src/screensaver-prefs-dialog.c (read_command_line): Use GScanner (arg_is_set): Rewrite for sentance parser * src/expr.c (int_parse_factor): Use g_scanner_error (parse_sentance): (int_parse_sentance): (int_parse_unary): (int_parse_atom): Implement 2000-06-23 Bradford Hovinen * src/prefs-widget.c (prefs_widget_init): Tweak table attach policies for screensaver selection page * src/main.c (setup_capplet_widget): Set window policy * src/preview.c (strip_arg): (setup_path): (add_window_arg): (show_screensaver): Compile only if ENABLE_PREVIEW set * src/prefs-widget.c (prefs_widget_init): Use table for positioning basic controls * src/main.c (main): Start xscreensaver only if screensaver is not disabled (try_cb): (revert_cb): (ok_cb): (cancel_cb): Start and stop xscreensaver based on whether screensaver is disabled * src/screensaver-prefs-dialog.c (get_basic_screensaver_widget): Add visual combo box, set border width to 5 (screensaver_prefs_dialog_new): Don't set container border width for frame (store_cli): Save visual * src/prefs-widget.c (prefs_widget_init): Set frame border width after adding scrolled window * src/preferences.c (preferences_load): Make default selection mode 3 * src/preferences.h: Add SM_DISABLE_SCREENSAVER and SM_BLANK_SCREEN * src/prefs-widget.c (prefs_widget_init): Use table for power management (prefs_widget_init): Add disable screensaver and black screen only controls * src/main.c (setup_capplet_widget): Don't call prefs_widget_set_screensavers * src/prefs-widget.c (prefs_widget_get_prefs): Call prefs_widget_set_screensavers (prefs_widget_set_screensavers): Clear clist * src/preview.c: gdk-pixbuf should be mandatory (show_screensaver): Don't fork off second process (show_screensaver_timeout): Implement (close_preview): Clear preview_pid, cancel timeout (show_preview): Set timeout id Declare preview_window, preview_pid, and timeout_id only if preview is enabled * src/prefs-widget.c (prefs_widget_init): Make viewport declaration depend on whether ENABLE_PREVIEW is declared 2000-06-22 Bradford Hovinen * src/preview.c: Removed demo_pid and demo_window (print_args): Disabled compilation * src/screensaver-prefs-dialog.c (get_argument_data): (get_screensaver_widget): (arg_mapping_exists): Use SSPROP_DATADIR * src/preview.c (show_screensaver): Use SSPROP_DATADIR * src/prefs-widget.c (set_pixmap): Use SSPROP_DATADIR * configure.in (SSPROP_DATADIR): Define * src/prefs-widget.c (prefs_widget_init): Autosort screensaver list on column 1 (select_saver_cb): (deselect_saver_cb): (create_list_item): Use gtk_clist_{get|set}_row_data (set_pixmap): Accept row (set_toggle_buttons_sensitive): Use gtk_clist_get_row_data (set_screensavers_enabled): Don't call set_pixmap (set_all_pixmaps): Rename from set_toggle_buttons_sensitive (one_screensaver_cb): (random_cb): Don't call set_all_pixmaps (toggle_saver): Accept row (demo_next_cb): (demo_prev_cb): Use gtk_clist_find_row_with_data to get row (select_row): Implement (create_list_item): Return row (prefs_widget_init): Don't create viewport (prefs_widget_set_screensavers): Find enabled screensaver manually, freeze and thaw screensaver list * src/main.c (setup_capplet_widget): Don't sort * src/prefs-widget.c (deselect_saver_cb): (toggle_saver): Implement (set_pixmap): Create pixmaps here, use GdkPixbuf (prefs_widget_store_prefs): Store selection mode (set_pixmap): (set_toggle_buttons_sensitive): Pass selection mode (prefs_widget_set_screensavers): (demo_next_cb): (demo_prev_cb): (screensaver_remove_cb): (one_screensaver_cb): (add_select_cb): Call gtk_clist_moveto after selecting widget * src/preferences.h (struct _Screensaver ): Remove widgets * src/prefs-widget.c (prefs_widget_class_init): Set up pixmaps for screensaver list (prefs_widget_init): Construct clist for screensaver_list, connect signal for selecting rows (create_list_item): (add_select_cb): (prefs_widget_set_screensavers): (select_saver_cb): (set_toggle_buttons_sensitive): (set_screensavers_enabled): (choose_from_selected_cb): (demo_next_cb): (demo_prev_cb): Rewrite for clist (demo_next_cb): (demo_prev_cb): Don't stop preview (screensaver_toggle_cb): Remove (prefs_widget_init): Remove disabled code * src/preferences.c (get_selection_mode): Remove (preferences_load): (preferences_save): Use gnome_config to store selection mode (preferences_destroy): (screensaver_destroy): Don't act if object is NULL (preferences_load): (preferences_save): (screensaver_add): (screensaver_remove): (screensaver_get_desc): Add assertions * src/prefs-widget.c (choose_from_selected_cb): Check off active screensaver when moving from one screensaver only mode to choose from selected mode * configure.in: Eliminate option to use xscreensaver command to start demo (made mandatory) * src/preview.c (show_screensaver): Lower priority on preview (show_demo): Don't close preview when showing demo Eliminate version of show_demo that calls screensaver directly * src/prefs-widget.c (prefs_widget_init): Make priority range from -20 to 0 2000-06-21 Bradford Hovinen * src/pref-file.c (get_line): Don't subtract off len, don't use len-2 when doing line number increase test * src/prefs-widget.c (prefs_widget_init): Change "selected" to "checked off" * src/main.c (setup_capplet_widget): Set screensavers after showing the widget * src/prefs-widget.c (demo_next_cb): (demo_prev_cb): Kill off the preview (set_screensavers_enabled): Implement (random_cb): Enable all screensavers (one_screensaver_cb): Disable all screensavers, then select the first one if none selected (prefs_widget_set_screensavers): Select enabled item when in one screensaver only mode * src/screensaver-prefs-dialog.c (screensaver_prefs_dialog_init): Add help button (help_cb): Implement * src/prefs-widget.c (prefs_demo_cb): Implement * src/screensaver-prefs-dialog.c (get_basic_screensaver_widget): Remove message to choose a screensaver from the list, set padding to 5 pixels (arg_mapping_exists): Return FALSE if name is NULL (screensaver_prefs_dialog_init): Add demo button (screensaver_prefs_dialog_new): Connect demo button signal (store_cli): (demo_cb): Implement (screensaver_prefs_dialog_class_init): Add signal demo * src/preferences.c (screensaver_get_desc): Set screensaver description to default value if it cannot be found * src/selection-dialog.c (selection_dialog_ok_cb): Use g_strdup for name, set name and command_line only when selected node is valid * src/preferences.c (screensaver_add): Implement * src/prefs-widget.c (screensaver_add_cb): Use SelectionDialog (create_list_item): Implement (add_select_cb): Select the item just created * src/selection-dialog.c (selection_dialog_get_type): (selection_dialog_init): (selection_dialog_class_init): (selection_dialog_new): (select_program_cb): (selection_dialog_ok_cb): (selection_dialog_cancel_cb): (append_list_item): Implement * src/prefs-widget.c (prefs_widget_set_screensavers): Make item a member of the saver * src/preferences.c (screensaver_destroy): Don't remove link from list; assume that's already done (screensaver_remove): Don't destroy screensaver * src/prefs-widget.c (prefs_widget_store_prefs): Use gtk_spin_button_get_value_as_{float|int} (make_screensaver_selection_dialog): (add_cancel_cb): (add_select_cb): Implement * src/preferences.c (store_prefs_in_db): (read_prefs_from_db): Remove password timeout * src/rc-parse.c (write_minutes): Accept gdouble (parse_minutes_resource): Return gdouble * src/preferences.h (struct _Preferences ): Make timeouts doubles * src/prefs-widget.c (prefs_widget_set_screensavers): Use member label_widget rather than auto label (prefs_widget_init): Remove controls dealing with password timeout, make lock timeout in minutes * src/preferences.c (screensaver_remove): Implement * src/prefs-widget.c (prefs_widget_init): Add demo previous button (demo_prev_cb): Implement * src/rc-parse.c (parse_screensaver_list): Use our own procedure to append the item to the end of the list * src/prefs-widget.c (demo_next_cb): (settings_cb): Check if a screensaver is selected before proceeding (demo_next_cb): Implement * src/rc-parse.c (parse_screensaver_list): Set saver->link * src/prefs-widget.c (prefs_widget_init): Make remove button a member of the structure (select_saver_cb): Sensitive remove_button (prefs_widget_init): Add demo next button * src/preview.c (find_xscreensaver_window): Fixed up the code to trap errors better 2000-06-20 Bradford Hovinen * src/screensaver-prefs-dialog.c (screensaver_prefs_dialog_init): Add code to support name entry (screensaver_prefs_dialog_new): Set name entry to label, add preferences widget only if it exists, make basic_widget an element of the structure (screensaver_prop_ok_cb): Set label from name entry, free old command line and label, use g_strdup when getting text from entries (add_screensaver_selector): Implement (get_basic_screensaver_widget): Use a different label if the screensaver is not yet defined * src/prefs-widget.c (set_standby_time_sensitive): (set_suspend_time_sensitive): (set_power_controls_sensitive): Implement (set_power_down_time_sensitive): Disable only the control, not the labels (power_management_toggled_cb): Use set_power_controls_sensitive (prefs_widget_get_prefs): Code cleanup * src/daemon.c (setup_dpms): Use standby and suspend times, add prefs->timeout, sanitize values before sending to xset, return if power management disabled * src/preferences.c (preferences_load): (preferences_save): Load/save standby and suspend times * src/prefs-widget.c (prefs_widget_init): Remove extraneous code, add support for all dpms timings (prefs_widget_store_prefs): (prefs_widget_get_prefs): Read/store standby and suspend times * src/daemon.c (setup_dpms): Don't call the command to enable dpms, use unsigned formats, multiply times by 60 * src/main.c (state_changed_cb): (try_cb): (revert_cb): (ok_cb): Call setup_dpms * src/rc-parse.c (get_settings_name): (get_label): Use g_strdup rather than strdup * src/pref-file.c (preferences_save_to_file): (write_entry): Use g_file_test rather than stat * src/main.c (main): Set up to start xscreensaver on startup * src/rc-parse.c (get_settings_name): Use g_basename (command_exists): Use g_file_test rather than stat (parse_boolean_resource): Use g_strncasecmp * src/pref-file.c (init_file_name): Use g_concat_dir_and_file and g_get_home_dir * src/daemon.c (start_xscreensaver): (stop_xscreensaver): (restart_xscreensaver): (setup_dpms): Use gnome_execute_shell rather than system * src/main.c (cancel_cb): (ok_cb): (revert_cb): (try_cb): Don't restart xscreensaver * src/prefs-widget.c (prefs_widget_get_prefs): Don't divide minute values by 60 before displaying (prefs_widget_store_prefs): Don't multiply minute values by 60 before storing * src/pref-file.c (preferences_save_to_file): Use g_warning rather than sprintf and perror (parse_config_file): Use g_warning directly rather than g_strdup_printf * src/preferences.h (struct _Preferences ): Change be_verbose to verbose * src/preferences.c (preferences_get_screensaver_list): Remove (preferences_load): Call read_prefs_from_db (preferences_save): Call store_prefs_in_db (read_prefs_from_db): (store_prefs_in_db): Implement * src/rc-parse.c (format_command): (stab_to): (string_columns): (format_hack): Move to rc-parse.c (write_screensaver_list): Implement; copy from pref-file.c, preferences_save_to_file (write_screensaver_list): Fixed memory leak with output from format_hack * src/pref-file.c (preferences_save_to_file): Remove code to write out programs resource string * src/preferences.c (preferences_destroy): Remove check on prefs->shell * src/prefs-widget.c (prefs_widget_init): Remove lock_vts widget 2000-06-19 Bradford Hovinen * src/prefs-widget.c (prefs_widget_init): Create GtkText prefs->description rather than prefs->description_label; put inside a scrolled window (select_saver_cb): Fill GtkText with description (set_description_text): Implement * src/preview.c (show_demo): Make xscreensaver_window automatic * src/prefs-widget.c (prefs_widget_class_init): New signal: activate-demo (demo_cb): Emit activate-demo signal * src/main.c (setup_capplet_widget): Connect activate-demo signal * src/preview.c (find_xscreensaver_window): Use free rather than g_free for data allocated by Xlib (show_demo): Free allocated event structure * src/pref-file.c: Use g_strstrip rather than strip (transform_line): Add default action to copy escaped character over * src/rc-parse.c (command_exists): Check for string termination when looking for the first whitespace * src/resources.c (get_resource): Use g_strconcat rather than strcpy and strcat * src/rc-parse.c (parse_screensaver): Use g_strdup rather than malloc and strncpy * src/screensaver-prefs-dialog.c (arg_mapping_exists): Implement (screensaver_prefs_dialog_new): Check if glade definition exists before trying to load data * src/pref-file.c (transform_line): Terminate loop when i > len (strip): Code cleanup (init_file_name): (init_file_tmp_name): Use g_strconcat rather than legacy functions * src/prefs-widget.c (prefs_widget_init): Add line to set data type for fade_ticks_widget to integer 2000-06-18 Bradford Hovinen * src/pref-file.c (place_preferences): Delete (preferences_load_from_file): Return gboolean rather than int (preferences_save_to_file): Use g_tree_traverse on config_db (write_preference_cb): Implement (preferences_save_to_file): Store programs resource in config_db after building it (transform_line): Added support for backslash escape * src/resources.c (preferences_load_from_xrdb): Update to use config_db (get_string_resource): Rename to get_resource * src/pref-file.c (preferences_load_from_file): Use GTree for config_db rather than GHashTable * src/prefs-widget.c (prefs_widget_init): Put preview above description * src/preferences.h (struct _Preferences ): Add config_db * src/screensaver-prefs-dialog.c (screensaver_prefs_dialog_new): Set dialog title to label + " properties"