Commit 31e921fc authored by Pierre Wieser's avatar Pierre Wieser

Setup new auto-save preferences

parent 08c3ed08
2010-08-07 Pierre Wieser <pwieser@trychlos.org>
Setup auto-save in preferences.
* data/nautilus-actions-prefs.schemas.in:
Describe new auto-save-on and auto-save-period preference keys.
* src/nact/nact-iprefs.c:
* src/nact/nact-iprefs.h
(nact_iprefs_read_uint, nact_iprefs_write_uint): New functions.
IPREFS_AUTOSAVE_ON, IPREFS_AUTOSAVE_PERIOD: New preference keys.
* src/nact/nact-preferences-editor.c:
Update the new auto-save-on and auto-save-period preference keys.
* src/nact/nact-preferences.ui:
* src/nact/nautilus-actions-config-tool.ui: New preference frame.
2010-08-05 Pierre Wieser <pwieser@trychlos.org>
* src/api/na-core-utils.h:
......
......@@ -26,6 +26,28 @@
<default>true</default>
</schema>
<schema>
<key>/schemas/apps/nautilus-actions/preferences/auto-save-on</key>
<owner>nautilus-actions</owner>
<type>bool</type>
<locale name="C">
<short>Whether the auto-save feature should be activated</short>
<long>If TRUE, the pending modifications will be periodically and automatically saved.</long>
</locale>
<default>false</default>
</schema>
<schema>
<key>/schemas/apps/nautilus-actions/preferences/auto-save-period</key>
<owner>nautilus-actions</owner>
<type>int</type>
<locale name="C">
<short>Periodicity of the auto-save</short>
<long>Defines the periodicity in minutes of the automatic save.</long>
</locale>
<default>5</default>
</schema>
<schema>
<key>/schemas/apps/nautilus-actions/preferences/export-assistant</key>
<owner>nautilus-actions</owner>
......
......@@ -231,6 +231,35 @@ nact_iprefs_migrate_key( const BaseWindow *window, const gchar *old_key, const g
}
}
/**
* nact_iprefs_read_uint:
* @window: this #BaseWindow-derived window.
* @name: the preference entry.
* @default_value: the value to be returned if the key is not found.
*
* Returns: the uint value associated with the given key.
*/
guint
nact_iprefs_read_uint( const BaseWindow *window, const gchar *name, guint default_value )
{
guint value;
gchar *path;
g_return_val_if_fail( BASE_IS_WINDOW( window ), 0 );
g_return_val_if_fail( NACT_IS_IPREFS( window ), 0 );
value = 0;
if( st_initialized && !st_finalized ){
path = gconf_concat_dir_and_key( IPREFS_GCONF_PREFS_PATH, name );
value = na_gconf_utils_read_int( NACT_IPREFS_GET_INTERFACE( window )->private->client, path, TRUE, default_value );
g_free( path );
}
return( value );
}
/**
* nact_iprefs_write_bool:
* @window: this #BaseWindow-derived window.
......@@ -255,6 +284,30 @@ nact_iprefs_write_bool( const BaseWindow *window, const gchar *name, gboolean va
}
}
/**
* nact_iprefs_write_uint:
* @window: this #BaseWindow-derived window.
* @name: the preference entry.
* @value: the value to be written.
*
* Writes the given uint value.
*/
void
nact_iprefs_write_uint( const BaseWindow *window, const gchar *name, guint value )
{
gchar *path;
g_return_if_fail( BASE_IS_WINDOW( window ));
g_return_if_fail( NACT_IS_IPREFS( window ));
if( st_initialized && !st_finalized ){
path = gconf_concat_dir_and_key( IPREFS_GCONF_PREFS_PATH, name );
na_gconf_utils_write_int( NACT_IPREFS_GET_INTERFACE( window )->private->client, path, value, NULL );
g_free( path );
}
}
/**
* nact_iprefs_write_string:
* @window: this #BaseWindow-derived window.
......
......@@ -61,13 +61,12 @@ typedef struct {
#define IPREFS_EXPORT_ITEMS_FOLDER_URI "export-folder-uri"
#define IPREFS_EXPORT_FORMAT "export-format"
#define IPREFS_EXPORT_ASK_LAST_FORMAT "export-ask-user-last-format"
#define IPREFS_EXPORT_FORMAT_DEFAULT "GConfEntry"
#define IPREFS_IMPORT_ITEMS_FOLDER_URI "import-folder-uri"
#define IPREFS_ASSIST_ESC_QUIT "assistant-esc-quit"
#define IPREFS_ASSIST_ESC_CONFIRM "assistant-esc-confirm"
#define IPREFS_AUTOSAVE_ON "auto-save-on"
#define IPREFS_AUTOSAVE_PERIOD "auto-save-period"
/* these are special export formats
*/
......@@ -83,7 +82,9 @@ void nact_iprefs_set_export_format( const BaseWindow *window, const gchar *pre
void nact_iprefs_migrate_key ( const BaseWindow *window, const gchar *old_key, const gchar *new_key );
guint nact_iprefs_read_uint ( const BaseWindow *window, const gchar *key, guint defaut_value );
void nact_iprefs_write_bool ( const BaseWindow *window, const gchar *key, gboolean value );
void nact_iprefs_write_uint ( const BaseWindow *window, const gchar *key, guint value );
void nact_iprefs_write_string ( const BaseWindow *window, const gchar *name, const gchar *value );
G_END_DECLS
......
......@@ -73,6 +73,9 @@ static void on_base_initial_load_dialog( NactPreferencesEditor *editor, gpoi
static void on_base_runtime_init_dialog( NactPreferencesEditor *editor, gpointer user_data );
static void on_base_all_widgets_showed( NactPreferencesEditor *editor, gpointer user_data );
static void on_esc_quit_toggled( GtkToggleButton *button, NactPreferencesEditor *editor );
static void esc_quit_activated( NactPreferencesEditor *editor, gboolean esc_quit_active );
static void on_auto_save_toggled( GtkToggleButton *button, NactPreferencesEditor *editor );
static void auto_save_activated( NactPreferencesEditor *editor, gboolean auto_save_active );
static void on_cancel_clicked( GtkButton *button, NactPreferencesEditor *editor );
static void on_ok_clicked( GtkButton *button, NactPreferencesEditor *editor );
static void enable_order_mode_buttons( NactPreferencesEditor *editor );
......@@ -311,6 +314,9 @@ on_base_runtime_init_dialog( NactPreferencesEditor *editor, gpointer user_data )
GtkWidget *button;
gboolean esc_quit, esc_confirm;
GtkTreeView *listview;
gboolean auto_save_on;
guint auto_save_period;
GtkAdjustment *adjustment;
g_debug( "%s: editor=%p, user_data=%p", thisfn, ( void * ) editor, ( void * ) user_data );
......@@ -369,11 +375,28 @@ on_base_runtime_init_dialog( NactPreferencesEditor *editor, gpointer user_data )
esc_quit = na_iprefs_read_bool( NA_IPREFS( updater ), IPREFS_ASSIST_ESC_QUIT, TRUE );
gtk_toggle_button_set_active( GTK_TOGGLE_BUTTON( button ), esc_quit );
esc_quit_activated( editor, esc_quit );
esc_confirm = na_iprefs_read_bool( NA_IPREFS( updater ), IPREFS_ASSIST_ESC_CONFIRM, TRUE );
button = base_window_get_widget( BASE_WINDOW( editor ), "EscConfirmButton" );
gtk_toggle_button_set_active( GTK_TOGGLE_BUTTON( button ), esc_confirm );
auto_save_on = na_iprefs_read_bool( NA_IPREFS( updater ), IPREFS_AUTOSAVE_ON, FALSE );
button = base_window_get_widget( BASE_WINDOW( editor ), "AutoSaveCheckButton" );
gtk_toggle_button_set_active( GTK_TOGGLE_BUTTON( button ), auto_save_on );
auto_save_activated( editor, auto_save_on );
base_window_signal_connect(
BASE_WINDOW( editor ),
G_OBJECT( button ),
"toggled",
G_CALLBACK( on_auto_save_toggled ));
auto_save_period = nact_iprefs_read_uint( BASE_WINDOW( editor ), IPREFS_AUTOSAVE_PERIOD, 5 );
button = base_window_get_widget( BASE_WINDOW( editor ), "AutoSavePeriodicitySpinButton" );
adjustment = gtk_spin_button_get_adjustment( GTK_SPIN_BUTTON( button ));
gtk_adjustment_configure( adjustment, auto_save_period, 1, 999, 1, 10, 0 );
/* third tab: import tool
*/
import_mode = na_iprefs_get_import_mode( editor->private->gconf, IPREFS_IMPORT_ITEMS_IMPORT_MODE );
......@@ -445,11 +468,42 @@ static void
on_esc_quit_toggled( GtkToggleButton *button, NactPreferencesEditor *editor )
{
gboolean is_active;
GtkWidget *toggle;
is_active = gtk_toggle_button_get_active( button );
esc_quit_activated( editor, is_active );
}
static void
esc_quit_activated( NactPreferencesEditor *editor, gboolean esc_quit_active )
{
GtkWidget *toggle;
toggle = base_window_get_widget( BASE_WINDOW( editor ), "EscConfirmButton" );
gtk_widget_set_sensitive( toggle, is_active );
gtk_widget_set_sensitive( toggle, esc_quit_active );
}
static void
on_auto_save_toggled( GtkToggleButton *button, NactPreferencesEditor *editor )
{
gboolean is_active;
is_active = gtk_toggle_button_get_active( button );
auto_save_activated( editor, is_active );
}
static void
auto_save_activated( NactPreferencesEditor *editor, gboolean auto_save_activated )
{
GtkWidget *widget;
widget = base_window_get_widget( BASE_WINDOW( editor ), "AutoSavePeriodicitySpinButton" );
gtk_widget_set_sensitive( widget, auto_save_activated );
widget = base_window_get_widget( BASE_WINDOW( editor ), "AutoSaveLabel1" );
gtk_widget_set_sensitive( widget, auto_save_activated );
widget = base_window_get_widget( BASE_WINDOW( editor ), "AutoSaveLabel2" );
gtk_widget_set_sensitive( widget, auto_save_activated );
}
static void
......@@ -503,6 +557,9 @@ save_preferences( NactPreferencesEditor *editor )
GtkWidget *container;
NAExportFormat *export_format;
gboolean esc_quit, esc_confirm;
gboolean auto_save_on;
guint auto_save_period;
GtkAdjustment *adjustment;
application = NACT_APPLICATION( base_window_get_application( BASE_WINDOW( editor )));
updater = nact_application_get_updater( application );
......@@ -556,6 +613,15 @@ save_preferences( NactPreferencesEditor *editor )
esc_confirm = gtk_toggle_button_get_active( GTK_TOGGLE_BUTTON( button ));
nact_iprefs_write_bool( BASE_WINDOW( editor ), IPREFS_ASSIST_ESC_CONFIRM, esc_confirm );
button = base_window_get_widget( BASE_WINDOW( editor ), "AutoSaveCheckButton" );
auto_save_on = gtk_toggle_button_get_active( GTK_TOGGLE_BUTTON( button ));
nact_iprefs_write_bool( BASE_WINDOW( editor ), IPREFS_AUTOSAVE_ON, auto_save_on );
button = base_window_get_widget( BASE_WINDOW( editor ), "AutoSavePeriodicitySpinButton" );
adjustment = gtk_spin_button_get_adjustment( GTK_SPIN_BUTTON( button ));
auto_save_period = ( guint ) gtk_adjustment_get_value( adjustment );
nact_iprefs_write_uint( BASE_WINDOW( editor ), IPREFS_AUTOSAVE_PERIOD, auto_save_period );
/* third tab: import tool
*/
import_mode = IMPORTER_MODE_NO_IMPORT;
......
......@@ -293,7 +293,7 @@ Note that this item will be displayed only if a unique menu is defined in the Na
<property name="orientation">vertical</property>
<child>
<object class="GtkCheckButton" id="EscCloseButton">
<property name="label" translatable="yes">Esc key quits the assistant</property>
<property name="label" translatable="yes">Esc key _quits the assistant</property>
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="receives_default">False</property>
......@@ -307,7 +307,7 @@ Note that this item will be displayed only if a unique menu is defined in the Na
</child>
<child>
<object class="GtkCheckButton" id="EscConfirmButton">
<property name="label" translatable="yes">Ask for a confirmation when quitting the assistant on Esc key</property>
<property name="label" translatable="yes">Ask for a _confirmation when quitting the assistant on Esc key</property>
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="receives_default">False</property>
......@@ -340,6 +340,99 @@ Note that this item will be displayed only if a unique menu is defined in the Na
<property name="position">1</property>
</packing>
</child>
<child>
<object class="GtkFrame" id="frame8">
<property name="visible">True</property>
<property name="border_width">6</property>
<property name="label_xalign">0</property>
<property name="shadow_type">in</property>
<child>
<object class="GtkAlignment" id="alignment8">
<property name="visible">True</property>
<property name="left_padding">12</property>
<child>
<object class="GtkVBox" id="vbox3">
<property name="visible">True</property>
<property name="border_width">6</property>
<property name="orientation">vertical</property>
<child>
<object class="GtkCheckButton" id="AutoSaveCheckButton">
<property name="label" translatable="yes">Automatically _saves pending modifications</property>
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="receives_default">False</property>
<property name="tooltip_text" translatable="yes">When this option is checked, pending modification will be periodically and automatically saved.</property>
<property name="use_underline">True</property>
<property name="draw_indicator">True</property>
</object>
<packing>
<property name="position">0</property>
</packing>
</child>
<child>
<object class="GtkHBox" id="hbox2">
<property name="visible">True</property>
<child>
<object class="GtkLabel" id="AutoSaveLabel1">
<property name="visible">True</property>
<property name="xalign">1</property>
<property name="xpad">4</property>
<property name="label" translatable="yes">Periodicity :</property>
</object>
<packing>
<property name="expand">False</property>
<property name="position">0</property>
</packing>
</child>
<child>
<object class="GtkSpinButton" id="AutoSavePeriodicitySpinButton">
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="invisible_char">&#x25CF;</property>
<property name="width_chars">5</property>
<property name="snap_to_ticks">True</property>
<property name="numeric">True</property>
<property name="update_policy">if-valid</property>
</object>
<packing>
<property name="expand">False</property>
<property name="position">1</property>
</packing>
</child>
<child>
<object class="GtkLabel" id="AutoSaveLabel2">
<property name="visible">True</property>
<property name="xalign">0</property>
<property name="xpad">4</property>
<property name="label" translatable="yes">minutes</property>
</object>
<packing>
<property name="position">2</property>
</packing>
</child>
</object>
<packing>
<property name="position">1</property>
</packing>
</child>
</object>
</child>
</object>
</child>
<child type="label">
<object class="GtkLabel" id="label4">
<property name="visible">True</property>
<property name="xpad">5</property>
<property name="label" translatable="yes">&lt;b&gt;Auto-save&lt;/b&gt;</property>
<property name="use_markup">True</property>
</object>
</child>
</object>
<packing>
<property name="expand">False</property>
<property name="position">2</property>
</packing>
</child>
</object>
<packing>
<property name="position">1</property>
......
......@@ -1926,6 +1926,7 @@ Filters may be negated to specify for which capabilities your item must not appe
<property name="tooltip_text" translatable="yes">Select the operator which will be used when comparing your count with those of the current selection.</property>
</object>
<packing>
<property name="expand">False</property>
<property name="position">2</property>
</packing>
</child>
......@@ -1935,12 +1936,21 @@ Filters may be negated to specify for which capabilities your item must not appe
<property name="can_focus">True</property>
<property name="tooltip_text" translatable="yes">Your count limit as a positive integer.</property>
<property name="invisible_char">&#x25CF;</property>
<property name="width_chars">5</property>
</object>
<packing>
<property name="expand">False</property>
<property name="position">3</property>
</packing>
</child>
<child>
<object class="GtkLabel" id="label87">
<property name="visible">True</property>
</object>
<packing>
<property name="position">4</property>
</packing>
</child>
</object>
</child>
</object>
......@@ -2751,6 +2761,9 @@ If the command is not found, or does not display the correct result, your item w
<child>
<placeholder/>
</child>
<child>
<placeholder/>
</child>
<child>
<object class="GtkLabel" id="label3">
<property name="visible">True</property>
......@@ -2768,8 +2781,8 @@ If the command is not found, or does not display the correct result, your item w
<object class="GtkFileChooserWidget" id="ImportFileChooser">
<property name="visible">True</property>
<property name="select_multiple">True</property>
<property name="local_only">False</property>
<property name="use_preview_label">False</property>
<property name="local_only">False</property>
<property name="preview_widget_active">False</property>
</object>
<packing>
......@@ -3790,39 +3803,39 @@ Be warned: this mode may be dangerous. You will not be prompted another time.</p
</object>
<object class="GtkSizeGroup" id="CommandLabelSizeGroup">
<widgets>
<widget name="ProfileLabelLabel"/>
<widget name="CommandPathLabel"/>
<widget name="CommandParametersLabel"/>
<widget name="label4"/>
<widget name="CommandParametersLabel"/>
<widget name="CommandPathLabel"/>
<widget name="ProfileLabelLabel"/>
</widgets>
</object>
<object class="GtkSizeGroup" id="CommandButtonSizeGroup">
<widgets>
<widget name="CommandPathButton"/>
<widget name="CommandLegendButton"/>
<widget name="CommandPathButton"/>
</widgets>
</object>
<object class="GtkSizeGroup" id="ActionLabelSizeGroup">
<widgets>
<widget name="ActionIconLabel"/>
<widget name="ActionTooltipLabel"/>
<widget name="ActionToolbarLabelLabel"/>
<widget name="ActionMenuLabelLabel"/>
<widget name="ActionToolbarLabelLabel"/>
<widget name="ActionTooltipLabel"/>
<widget name="ActionIconLabel"/>
</widgets>
</object>
<object class="GtkSizeGroup" id="ExecutionModeSizeGroup">
<widgets>
<widget name="label45"/>
<widget name="label44"/>
<widget name="label43"/>
<widget name="label44"/>
<widget name="label45"/>
</widgets>
</object>
<object class="GtkSizeGroup" id="PropertiesLabelSizeGroup">
<widgets>
<widget name="label19"/>
<widget name="label49"/>
<widget name="label39"/>
<widget name="label18"/>
<widget name="label39"/>
<widget name="label49"/>
<widget name="label19"/>
</widgets>
</object>
</interface>
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment