diff options
| author | Stefano Karapetsas <[email protected]> | 2012-11-18 10:26:47 -0800 | 
|---|---|---|
| committer | Stefano Karapetsas <[email protected]> | 2012-11-18 10:26:47 -0800 | 
| commit | 4bf85370cb70b15e8401a2477a6734528a88d257 (patch) | |
| tree | 12d8fac0a43fda29116866a7b131960fb5d27c49 /baobab/src | |
| parent | 266894647388df80ab6bc6d3b38201db863a9488 (diff) | |
| parent | 507090e64e66315d6dad960791489a477dced017 (diff) | |
| download | mate-utils-4bf85370cb70b15e8401a2477a6734528a88d257.tar.bz2 mate-utils-4bf85370cb70b15e8401a2477a6734528a88d257.tar.xz  | |
Merge pull request #9 from bhull2010/master
Port disk-usage-analyzer to Gsettings
Diffstat (limited to 'baobab/src')
| -rw-r--r-- | baobab/src/Makefile.am | 8 | ||||
| -rw-r--r-- | baobab/src/baobab-prefs.c | 69 | ||||
| -rw-r--r-- | baobab/src/baobab-ringschart.c | 2 | ||||
| -rw-r--r-- | baobab/src/baobab-utils.c | 11 | ||||
| -rw-r--r-- | baobab/src/baobab-utils.h | 1 | ||||
| -rw-r--r-- | baobab/src/baobab.c | 366 | ||||
| -rw-r--r-- | baobab/src/baobab.h | 26 | ||||
| -rw-r--r-- | baobab/src/callbacks.c | 82 | ||||
| -rw-r--r-- | baobab/src/callbacks.h | 5 | 
9 files changed, 247 insertions, 323 deletions
diff --git a/baobab/src/Makefile.am b/baobab/src/Makefile.am index 224ca126..0361a9a2 100644 --- a/baobab/src/Makefile.am +++ b/baobab/src/Makefile.am @@ -37,13 +37,17 @@ mate_disk_usage_analyzer_SOURCES = \  	baobab-treemap.h  mate_disk_usage_analyzer_CFLAGS = \ -	$(MATE_UTILS_CFLAGS) \ +	$(GLIB_CFLAGS) \ +	$(GIO_CFLAGS) \ +	$(GTK_CFLAGS) \  	$(LIBGTOP_CFLAGS) \  	$(NULL)  mate_disk_usage_analyzer_LDFLAGS = -export-dynamic  mate_disk_usage_analyzer_LDADD = \  	-lm \ -	$(MATE_UTILS_LIBS) \ +	$(GLIB_LIBS) \ +	$(GIO_LIBS) \ +	$(GTK_LIBS) \  	$(LIBGTOP_LIBS) \  	$(NULL) diff --git a/baobab/src/baobab-prefs.c b/baobab/src/baobab-prefs.c index 48a75b9c..33af5159 100644 --- a/baobab/src/baobab-prefs.c +++ b/baobab/src/baobab-prefs.c @@ -28,13 +28,14 @@  #include <gtk/gtk.h>  #include <glib/gi18n.h>  #include <glib/gstdio.h> -#include <mateconf/mateconf-client.h>  #include <glibtop/mountlist.h>  #include <glibtop/fsusage.h>  #include "baobab.h"  #include "baobab-utils.h"  #include "baobab-prefs.h" +#define BAOBAB_PREFERENCES_UI_FILE PKGDATADIR "/baobab-dialog-scan-props.ui" +  enum  {  	COL_CHECK, @@ -51,14 +52,11 @@ static gboolean  add_excluded_item (GtkTreeModel  *model,  		   GtkTreePath   *path,  		   GtkTreeIter   *iter, -		   GSList       **list) +		   GPtrArray     *uris)  { -	GSList *l;  	gchar *mount;  	gboolean check; -	l = *list; -  	gtk_tree_model_get (model,  			    iter,  			    COL_MOUNT, &mount, @@ -66,53 +64,43 @@ add_excluded_item (GtkTreeModel  *model,  			    -1);  	if (!check) { -		l = g_slist_prepend (l, mount); +		g_ptr_array_add (uris, mount); +	} +	else { +		g_free (mount);  	} - -	*list = l;  	return FALSE;  } -static GSList * +static gchar **  get_excluded_locations (GtkTreeModel *model)  { -	GSList *l = NULL; +	GPtrArray *uris; + +	uris = g_ptr_array_new ();  	gtk_tree_model_foreach (model,  				(GtkTreeModelForeachFunc) add_excluded_item, -				&l); - -	return g_slist_reverse (l); -} - -static void -save_mateconf (GtkTreeModel *model) -{ -	GSList *l; - -	l = get_excluded_locations (model); +				uris); -	mateconf_client_set_list (baobab.mateconf_client, -			       BAOBAB_EXCLUDED_DIRS_KEY, MATECONF_VALUE_STRING, -			       l, NULL); +	g_ptr_array_add (uris, NULL); -	g_slist_foreach (l, (GFunc) g_free, NULL); -	g_slist_free (l); +	return (gchar **) g_ptr_array_free (uris, FALSE);  }  static void -enable_home_cb (GtkToggleButton *togglebutton, gpointer user_data) +save_excluded_uris (GtkTreeModel *model)  { -	gboolean enable; +	gchar **uris; -	enable = gtk_toggle_button_get_active (togglebutton); +	uris = get_excluded_locations (model); -	mateconf_client_set_bool (baobab.mateconf_client, -			       BAOBAB_ENABLE_HOME_MONITOR_KEY, -			       enable, -			       NULL); +	g_settings_set_strv (baobab.prefs_settings, +			     BAOBAB_SETTINGS_EXCLUDED_URIS, +			     (const gchar * const *) uris); +	g_strfreev (uris);  }  static void @@ -127,7 +115,7 @@ filechooser_response_cb (GtkDialog *dialog,  			break;  		case GTK_RESPONSE_DELETE_EVENT:  		case GTK_RESPONSE_CLOSE: -			save_mateconf (model);  +			save_excluded_uris (model);  		default:  			gtk_widget_destroy (GTK_WIDGET (dialog));  			break; @@ -301,7 +289,9 @@ baobab_prefs_dialog (void)  	GError *error = NULL;  	builder = gtk_builder_new (); -	gtk_builder_add_from_file (builder, BAOBAB_DIALOG_SCAN_UI_FILE, &error); +	gtk_builder_add_from_file (builder, +				   BAOBAB_PREFERENCES_UI_FILE, +				   &error);  	if (error) {  		g_critical ("Can't load user interface file for the scan properties dialog: %s", @@ -331,11 +321,10 @@ baobab_prefs_dialog (void)  	fill_props_model (model);  	check_enablehome = GTK_WIDGET (gtk_builder_get_object (builder, "check_enable_home")); -	gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (check_enablehome), -				      baobab.monitor_home != NULL); - -	g_signal_connect (check_enablehome, "toggled", -			  G_CALLBACK (enable_home_cb), NULL); +	g_settings_bind (baobab.prefs_settings, +			 BAOBAB_SETTINGS_MONITOR_HOME, +			 check_enablehome, "active", +			 G_SETTINGS_BIND_DEFAULT);  	g_signal_connect (dlg, "response",  			  G_CALLBACK (filechooser_response_cb), model); diff --git a/baobab/src/baobab-ringschart.c b/baobab/src/baobab-ringschart.c index 4e51c01e..5418561c 100644 --- a/baobab/src/baobab-ringschart.c +++ b/baobab/src/baobab-ringschart.c @@ -623,7 +623,7 @@ baobab_ringschart_post_draw (GtkWidget *chart, cairo_t *cr)    priv = BAOBAB_RINGSCHART_GET_PRIVATE (chart); -  if (priv->drawing_subtips) +  if (priv->subfoldertips_enabled)      {        /* Reverse the glist, which was created from the tail */        priv->subtip_items = g_list_reverse (priv->subtip_items); diff --git a/baobab/src/baobab-utils.c b/baobab/src/baobab-utils.c index 5b3a0b46..3d2efe6d 100644 --- a/baobab/src/baobab-utils.c +++ b/baobab/src/baobab-utils.c @@ -505,17 +505,6 @@ trash_file (GFile *file)  	return TRUE;  } -gchar * -baobab_mateconf_get_string_with_default (MateConfClient *client, -				      const gchar *key, -				      const gchar *def) -{ -	gchar *val; - -	val = mateconf_client_get_string (client, key, NULL); -	return val ? val : g_strdup (def); -} -  gboolean  baobab_help_display (GtkWindow   *parent,  		     const gchar *file_name, diff --git a/baobab/src/baobab-utils.h b/baobab/src/baobab-utils.h index 37330240..27428313 100644 --- a/baobab/src/baobab-utils.h +++ b/baobab/src/baobab-utils.h @@ -42,7 +42,6 @@ gboolean can_trash_file (GFile *file);  gboolean trash_file (GFile *file);  void set_ui_action_sens (const gchar *name, gboolean sens);  void set_ui_widget_sens (const gchar *name, gboolean sens); -gchar *baobab_mateconf_get_string_with_default (MateConfClient *client, const gchar *key, const gchar *def);  gboolean baobab_help_display (GtkWindow *parent, const gchar *file_name, const gchar *link_id);  gboolean is_virtual_filesystem (GFile *file); diff --git a/baobab/src/baobab.c b/baobab/src/baobab.c index 433628b4..02f3a480 100644 --- a/baobab/src/baobab.c +++ b/baobab/src/baobab.c @@ -25,7 +25,6 @@  #include <gtk/gtk.h>  #include <glib/gi18n.h>  #include <gio/gio.h> -#include <mateconf/mateconf-client.h>  #include <glibtop.h>  #include "baobab.h" @@ -38,6 +37,8 @@  #include "baobab-treemap.h"  #include "baobab-ringschart.h" +#define BAOBAB_UI_FILE PKGDATADIR "/baobab-main-window.ui" +  static void push_iter_in_stack (GtkTreeIter *);  static GtkTreeIter pop_iter_from_stack (void); @@ -630,36 +631,6 @@ monitor_home (gboolean enable)  }  void -baobab_set_toolbar_visible (gboolean visible) -{ -	GtkToggleAction *action; - -	if (visible) -		gtk_widget_show (baobab.toolbar); -	else -		gtk_widget_hide (baobab.toolbar); - -	/* make sure the check menu item is consistent */ -	action = GTK_TOGGLE_ACTION (gtk_builder_get_object (baobab.main_ui, "view_tb")); -	gtk_toggle_action_set_active (action, visible); -} - -void -baobab_set_statusbar_visible (gboolean visible) -{ -	GtkToggleAction *action; - -	if (visible) -		gtk_widget_show (baobab.statusbar); -	else -		gtk_widget_hide (baobab.statusbar); - -	/* make sure the check menu item is consistent */ -	action = GTK_TOGGLE_ACTION (gtk_builder_get_object (baobab.main_ui, "view_sb")); -	gtk_toggle_action_set_active (action, visible); -} - -void  baobab_set_statusbar (const gchar *text)  {  	gtk_statusbar_pop (GTK_STATUSBAR (baobab.statusbar), 1); @@ -691,38 +662,6 @@ toolbar_reconfigured_cb (GtkToolItem *item,  }  static void -baobab_toolbar_style (MateConfClient *client, -	      	      guint cnxn_id, -	      	      MateConfEntry *entry, -	      	      gpointer user_data) -{ -	gchar *toolbar_setting; - -	toolbar_setting = baobab_mateconf_get_string_with_default (baobab.mateconf_client, -								SYSTEM_TOOLBAR_STYLE_KEY, -								"both"); - -	if (!strcmp(toolbar_setting, "icons")) { -		gtk_toolbar_set_style (GTK_TOOLBAR(baobab.toolbar), -				       GTK_TOOLBAR_ICONS); -	} -	else if (!strcmp(toolbar_setting, "both")) { -		gtk_toolbar_set_style (GTK_TOOLBAR(baobab.toolbar), -				       GTK_TOOLBAR_BOTH); -	} -	else if (!strcmp(toolbar_setting, "both-horiz")) { -		gtk_toolbar_set_style (GTK_TOOLBAR(baobab.toolbar), -				       GTK_TOOLBAR_BOTH_HORIZ); -	} -	else if (!strcmp(toolbar_setting, "text")) { -		gtk_toolbar_set_style (GTK_TOOLBAR(baobab.toolbar), -				       GTK_TOOLBAR_TEXT); -	} - -	g_free (toolbar_setting); -} - -static void  baobab_create_toolbar (void)  {  	GtkWidget *toolbar; @@ -754,13 +693,15 @@ baobab_create_toolbar (void)  			  G_CALLBACK (toolbar_reconfigured_cb), baobab.spinner);  	toolbar_reconfigured_cb (item, baobab.spinner); -	baobab_toolbar_style (NULL, 0, NULL, NULL); - -	visible = mateconf_client_get_bool (baobab.mateconf_client, -					 BAOBAB_TOOLBAR_VISIBLE_KEY, -					 NULL); +	g_settings_bind (baobab.ui_settings, +			 BAOBAB_SETTINGS_TOOLBAR_VISIBLE, +			 baobab.toolbar, "visible", +			 G_SETTINGS_BIND_DEFAULT); +	g_settings_bind (baobab.ui_settings, +			 BAOBAB_SETTINGS_TOOLBAR_VISIBLE, +			 GTK_TOGGLE_ACTION (gtk_builder_get_object (baobab.main_ui, "view_tb")), "active", +			 G_SETTINGS_BIND_DEFAULT); -	baobab_set_toolbar_visible (visible);  }  static void @@ -775,36 +716,37 @@ baobab_create_statusbar (void)  		return;  	} -	visible = mateconf_client_get_bool (baobab.mateconf_client, -					 BAOBAB_STATUSBAR_VISIBLE_KEY, -					 NULL); - -	baobab_set_statusbar_visible (visible); +	g_settings_bind (baobab.ui_settings, +			 BAOBAB_SETTINGS_STATUSBAR_VISIBLE, +			 baobab.statusbar, "visible", +			 G_SETTINGS_BIND_DEFAULT); +	g_settings_bind (baobab.ui_settings, +			 BAOBAB_SETTINGS_STATUSBAR_VISIBLE, +			 GTK_TOGGLE_ACTION (gtk_builder_get_object (baobab.main_ui, "view_sb")), "active", +			 G_SETTINGS_BIND_DEFAULT);  } -static void -baobab_subfolderstips_toggled (MateConfClient *client, -			       guint cnxn_id, -			       MateConfEntry *entry, -			       gpointer user_data) +baobab_settings_subfoldertips_changed (GSettings *settings, +									   const gchar *key, +									   gpointer user_data)  { -	baobab_ringschart_set_subfoldertips_enabled (baobab.rings_chart, -						     mateconf_client_get_bool (baobab.mateconf_client, -									    BAOBAB_SUBFLSTIPS_VISIBLE_KEY, -									    NULL)); +	gboolean visible; + +	visible = g_settings_get_boolean (settings, key); +	baobab_ringschart_set_subfoldertips_enabled (baobab.rings_chart, visible);  }  static void -baobab_set_excluded_locations (GSList *excluded_uris) +baobab_set_excluded_locations (gchar **uris)  { -	GSList *l; +	gint i;  	g_slist_foreach (baobab.excluded_locations, (GFunc) g_object_unref, NULL);  	g_slist_free (baobab.excluded_locations);  	baobab.excluded_locations = NULL; -	for (l = excluded_uris; l != NULL; l = l->next) { +	for (i = 0; uris[i] != NULL; ++i) {  		baobab.excluded_locations = g_slist_prepend (baobab.excluded_locations, -						g_file_new_for_uri (l->data)); +						g_file_new_for_uri (uris[i]));  	}  } @@ -812,22 +754,22 @@ static void  store_excluded_locations (void)  {  	GSList *l; +	GPtrArray *uris;  	GSList *uri_list = NULL; -	for (l = baobab.excluded_locations; l != NULL; l = l->next) { -		GSList *uri_list = NULL; +	uris = g_ptr_array_new (); -		uri_list = g_slist_prepend (uri_list, g_file_get_uri(l->data)); +	for (l = baobab.excluded_locations; l != NULL; l = l->next) { +		g_ptr_array_add (uris, g_file_get_uri (l->data));  	} -	mateconf_client_set_list (baobab.mateconf_client, -			       BAOBAB_EXCLUDED_DIRS_KEY, -			       MATECONF_VALUE_STRING, -			       uri_list, -			       NULL); +	g_ptr_array_add (uris, NULL); + +	g_settings_set_strv (baobab.prefs_settings, +			     BAOBAB_SETTINGS_EXCLUDED_URIS, +			     (const gchar *const *) uris->pdata); -	g_slist_foreach (uri_list, (GFunc) g_free, NULL); -	g_slist_free (uri_list); +	g_ptr_array_free (uris, TRUE);  }  static void @@ -836,7 +778,7 @@ sanity_check_excluded_locations (void)  	GFile *root;  	GSList *l; -	/* Verify if mateconf wrongly contains root dir exclusion, and remove it from mateconf. */ +	/* Make sure the root dir is not excluded */  	root = g_file_new_for_uri ("file:///");  	for (l = baobab.excluded_locations; l != NULL; l = l->next) { @@ -851,20 +793,15 @@ sanity_check_excluded_locations (void)  }  static void -excluded_locations_changed (MateConfClient *client, -			    guint cnxn_id, -			    MateConfEntry *entry, -			    gpointer user_data) +excluded_uris_changed (GSettings   *settings, +		       const gchar *key, +		       gpointer     user_data)  { -	GSList *uris; +	gchar **uris; -	uris = 	mateconf_client_get_list (client, -				       BAOBAB_EXCLUDED_DIRS_KEY, -				       MATECONF_VALUE_STRING, -				       NULL); +	uris = g_settings_get_strv (settings, key);  	baobab_set_excluded_locations (uris); -	g_slist_foreach (uris, (GFunc) g_free, NULL); -	g_slist_free (uris); +	g_strfreev (uris);  	baobab_update_filesystem (); @@ -873,16 +810,49 @@ excluded_locations_changed (MateConfClient *client,  }  static void -baobab_monitor_home_toggled (MateConfClient *client, -			     guint cnxn_id, -			     MateConfEntry *entry, -			     gpointer user_data) +baobab_setup_excluded_locations (void) +{ +	gchar **uris; + +	uris = g_settings_get_strv (baobab.prefs_settings, +				    BAOBAB_SETTINGS_EXCLUDED_URIS); +	baobab_set_excluded_locations (uris); +	g_strfreev (uris); + +	sanity_check_excluded_locations (); + +	g_signal_connect (baobab.prefs_settings, +			 "changed::" BAOBAB_SETTINGS_EXCLUDED_URIS, +			  G_CALLBACK (excluded_uris_changed), +			  NULL); +} + +static void +baobab_settings_monitor_home_changed (GSettings *settings, +				      const gchar *key, +				      gpointer user_data)  {  	gboolean enable; -	enable = mateconf_client_get_bool (baobab.mateconf_client, -					BAOBAB_ENABLE_HOME_MONITOR_KEY, -					NULL); +	enable = g_settings_get_boolean (settings, key); + +	monitor_home (enable); +} + +static void +baobab_setup_monitors (void) +{ +	gboolean enable; + +	monitor_volume (); + +	enable = g_settings_get_boolean (baobab.prefs_settings, +					 BAOBAB_SETTINGS_MONITOR_HOME); + +	g_signal_connect (baobab.prefs_settings, +			  "changed::" BAOBAB_SETTINGS_MONITOR_HOME, +			  G_CALLBACK (baobab_settings_monitor_home_changed), +			  NULL);  	monitor_home (enable);  } @@ -890,9 +860,7 @@ baobab_monitor_home_toggled (MateConfClient *client,  static void  baobab_init (void)  { -	GSList *uri_list;  	GError *error = NULL; -	gboolean enable;  	/* FileSystem usage */  	baobab_get_filesystem (&baobab.fs); @@ -910,55 +878,33 @@ baobab_init (void)  	gtk_builder_connect_signals (baobab.main_ui, NULL); +	/* Settings */ +	baobab.ui_settings = g_settings_new (BAOBAB_UI_SETTINGS_SCHEMA); +	baobab.prefs_settings = g_settings_new (BAOBAB_PREFS_SETTINGS_SCHEMA); +	  	/* Misc */  	baobab.CONTENTS_CHANGED_DELAYED = FALSE;  	baobab.STOP_SCANNING = TRUE;  	baobab.show_allocated = TRUE;  	baobab.is_local = TRUE; -	/* MateConf */ -	baobab.mateconf_client = mateconf_client_get_default (); -	mateconf_client_add_dir (baobab.mateconf_client, BAOBAB_KEY_DIR, -			      MATECONF_CLIENT_PRELOAD_NONE, NULL); -	mateconf_client_notify_add (baobab.mateconf_client, BAOBAB_EXCLUDED_DIRS_KEY, excluded_locations_changed, -				 NULL, NULL, NULL); -	mateconf_client_notify_add (baobab.mateconf_client, SYSTEM_TOOLBAR_STYLE_KEY, baobab_toolbar_style, -				 NULL, NULL, NULL); -	mateconf_client_notify_add (baobab.mateconf_client, BAOBAB_SUBFLSTIPS_VISIBLE_KEY, baobab_subfolderstips_toggled, -				 NULL, NULL, NULL); -	mateconf_client_notify_add (baobab.mateconf_client, BAOBAB_ENABLE_HOME_MONITOR_KEY, baobab_monitor_home_toggled, -				 NULL, NULL, NULL); - -	uri_list = mateconf_client_get_list (baobab.mateconf_client, -						      BAOBAB_EXCLUDED_DIRS_KEY, -						      MATECONF_VALUE_STRING, -						      NULL); - -	baobab_set_excluded_locations (uri_list); - -	g_slist_foreach (uri_list, (GFunc) g_free, NULL); -	g_slist_free (uri_list); - -	sanity_check_excluded_locations (); +	baobab_setup_excluded_locations ();  	baobab_create_toolbar (); -  	baobab_create_statusbar (); -	monitor_volume (); - -	enable = mateconf_client_get_bool (baobab.mateconf_client, -					BAOBAB_ENABLE_HOME_MONITOR_KEY, -					NULL); +	baobab_setup_monitors (); -	monitor_home (enable); +	g_signal_connect (baobab.ui_settings, "changed::" BAOBAB_SETTINGS_SUBFLSTIPS_VISIBLE, +					  (GCallback) baobab_settings_subfoldertips_changed, NULL);  }  static void  baobab_shutdown (void)  { -	if (baobab.current_location) +	if (baobab.current_location) {  		g_object_unref (baobab.current_location); +	}  	if (baobab.monitor_vol) {  		g_object_unref (baobab.monitor_vol); @@ -974,8 +920,12 @@ baobab_shutdown (void)  	g_slist_foreach (baobab.excluded_locations, (GFunc) g_object_unref, NULL);  	g_slist_free (baobab.excluded_locations); -	if (baobab.mateconf_client) { -		g_object_unref (baobab.mateconf_client); +	if (baobab.ui_settings) { +		g_object_unref (baobab.ui_settings); +	} + +	if (baobab.prefs_settings) { +		g_object_unref (baobab.prefs_settings);  	}  } @@ -1121,19 +1071,69 @@ drag_data_received_handl (GtkWidget *widget,  }  static void +set_active_chart (GtkWidget *chart) +{ +	if (baobab.current_chart != chart) { +		if (baobab.current_chart) { +			baobab_chart_freeze_updates (baobab.current_chart); + +			g_object_ref (baobab.current_chart); +			gtk_container_remove (GTK_CONTAINER (baobab.chart_frame), +					      baobab.current_chart); +		} + +		gtk_container_add (GTK_CONTAINER (baobab.chart_frame), chart); +		g_object_unref (chart); + +		baobab_chart_thaw_updates (chart); + +		baobab.current_chart = chart; + +		gtk_widget_show_all (baobab.chart_frame); + +		g_settings_set_string (baobab.ui_settings, +				       BAOBAB_SETTINGS_ACTIVE_CHART, +				       baobab.current_chart == baobab.rings_chart ? "rings" : "treemap"); +	} +} + +static void +on_chart_type_change (GtkWidget *combo, gpointer user_data) +{ +	GtkWidget *chart; +	guint active; + +	active = gtk_combo_box_get_active (GTK_COMBO_BOX (combo)); + +	switch (active) { +	case 0: +		chart = baobab.rings_chart; +		break; +	case 1: +		chart = baobab.treemap_chart; +		break; +	default: +		g_return_if_reached (); +	} + +	set_active_chart (chart); +} + +static void  initialize_charts (void)  {  	GtkWidget *hpaned_main; -	GtkWidget *chart_frame;  	GtkWidget *hbox1; +	char *saved_chart; +	gboolean visible; -	chart_frame = gtk_frame_new (NULL); -	gtk_frame_set_label_align (GTK_FRAME (chart_frame), 0.0, 0.0); -	gtk_frame_set_shadow_type (GTK_FRAME (chart_frame), GTK_SHADOW_IN); +	baobab.chart_frame = gtk_frame_new (NULL); +	gtk_frame_set_label_align (GTK_FRAME (baobab.chart_frame), 0.0, 0.0); +	gtk_frame_set_shadow_type (GTK_FRAME (baobab.chart_frame), GTK_SHADOW_IN);  	hpaned_main = GTK_WIDGET (gtk_builder_get_object (baobab.main_ui, "hpaned_main"));  	gtk_paned_pack2 (GTK_PANED (hpaned_main), -			 chart_frame, TRUE, TRUE); +			 baobab.chart_frame, TRUE, TRUE);  	gtk_paned_set_position (GTK_PANED (hpaned_main), 480);  	baobab.chart_type_combo = gtk_combo_box_new_text (); @@ -1141,7 +1141,6 @@ initialize_charts (void)  				   _("View as Rings Chart"));  	gtk_combo_box_append_text (GTK_COMBO_BOX (baobab.chart_type_combo),  				   _("View as Treemap Chart")); -	gtk_combo_box_set_active (GTK_COMBO_BOX (baobab.chart_type_combo), 0);  	gtk_widget_show (baobab.chart_type_combo);  	g_signal_connect (baobab.chart_type_combo,  			  "changed", @@ -1170,13 +1169,14 @@ initialize_charts (void)  					     NULL);  	baobab_chart_set_max_depth (baobab.treemap_chart, 1);  	g_signal_connect (baobab.treemap_chart, "item_activated", -					G_CALLBACK (on_chart_item_activated), NULL); +			  G_CALLBACK (on_chart_item_activated), NULL);  	g_signal_connect (baobab.treemap_chart, "button-release-event", -					G_CALLBACK (on_chart_button_release), NULL); +			  G_CALLBACK (on_chart_button_release), NULL);  	g_signal_connect (baobab.treemap_chart, "drag-data-received", -					G_CALLBACK (drag_data_received_handl), NULL); +			  G_CALLBACK (drag_data_received_handl), NULL);  	gtk_widget_show (baobab.treemap_chart); -	/* Ends Baobab's Treemap Chart */ +	g_object_ref_sink (baobab.treemap_chart); +	baobab_chart_freeze_updates (baobab.treemap_chart);  	/* Baobab's Rings Chart */  	baobab.rings_chart = (GtkWidget *) baobab_ringschart_new (); @@ -1188,32 +1188,43 @@ initialize_charts (void)  					     COL_H_PERC,  					     COL_H_ELEMENTS,  					     NULL); -	baobab_ringschart_set_subfoldertips_enabled (baobab.rings_chart, -						     mateconf_client_get_bool (baobab.mateconf_client, -									    BAOBAB_SUBFLSTIPS_VISIBLE_KEY, -									    NULL)); + +	visible = g_settings_get_boolean (baobab.ui_settings, +									  BAOBAB_SETTINGS_SUBFLSTIPS_VISIBLE); +	baobab_ringschart_set_subfoldertips_enabled (baobab.rings_chart, visible); +  	baobab_chart_set_max_depth (baobab.rings_chart, 1);  	g_signal_connect (baobab.rings_chart, "item_activated", -					G_CALLBACK (on_chart_item_activated), NULL); +			  G_CALLBACK (on_chart_item_activated), NULL);  	g_signal_connect (baobab.rings_chart, "button-release-event", -					G_CALLBACK (on_chart_button_release), NULL); +			  G_CALLBACK (on_chart_button_release), NULL);  	g_signal_connect (baobab.rings_chart, "drag-data-received", -					G_CALLBACK (drag_data_received_handl), NULL); +			  G_CALLBACK (drag_data_received_handl), NULL);  	gtk_widget_show (baobab.rings_chart); -	/* Ends Baobab's Treemap Chart */ +	g_object_ref_sink (baobab.rings_chart); +	baobab_chart_freeze_updates (baobab.rings_chart); -	baobab.current_chart = baobab.rings_chart; - -	g_object_ref_sink (baobab.treemap_chart); -	baobab_chart_freeze_updates (baobab.treemap_chart); +	saved_chart = g_settings_get_string (baobab.ui_settings, +					     BAOBAB_SETTINGS_ACTIVE_CHART); -	gtk_container_add (GTK_CONTAINER (chart_frame), -			   baobab.current_chart); -	gtk_widget_show_all (chart_frame); +	if (0 == g_ascii_strcasecmp (saved_chart, "treemap")) { +		set_active_chart (baobab.treemap_chart); +		gtk_combo_box_set_active (GTK_COMBO_BOX (baobab.chart_type_combo), 1); +	} else { +		set_active_chart (baobab.rings_chart); +		gtk_combo_box_set_active (GTK_COMBO_BOX (baobab.chart_type_combo), 0); +	}  	check_drop_targets (FALSE);  } +void +baobab_quit () +{ +	baobab_stop_scan (); +	gtk_main_quit (); +} +  static gboolean  start_proc_on_command_line (GFile *file)  { @@ -1315,7 +1326,6 @@ main (int argc, char *argv[])  	first_row ();  	baobab_set_statusbar (_("Ready")); -	/* The ringschart */  	initialize_charts ();  	/* commandline */ diff --git a/baobab/src/baobab.h b/baobab/src/baobab.h index bab9b8bb..eb7c4a58 100644 --- a/baobab/src/baobab.h +++ b/baobab/src/baobab.h @@ -28,22 +28,18 @@  #include <glib.h>  #include <gtk/gtk.h>  #include <gio/gio.h> -#include <mateconf/mateconf-client.h> -typedef struct _baobab_fs baobab_fs;  struct BaobabSearchOpt; -#define BAOBAB_UI_FILE PKGDATADIR "/baobab-main-window.ui" -#define BAOBAB_DIALOG_SCAN_UI_FILE PKGDATADIR "/baobab-dialog-scan-props.ui" -  /* Settings */ -#define BAOBAB_KEY_DIR "/apps/baobab" -#define BAOBAB_TOOLBAR_VISIBLE_KEY	BAOBAB_KEY_DIR "/ui/toolbar_visible" -#define BAOBAB_STATUSBAR_VISIBLE_KEY	BAOBAB_KEY_DIR "/ui/statusbar_visible" -#define BAOBAB_SUBFLSTIPS_VISIBLE_KEY   BAOBAB_KEY_DIR "/ui/baobab_subfoldertips_visible" -#define BAOBAB_EXCLUDED_DIRS_KEY	BAOBAB_KEY_DIR "/properties/skip_scan_uri_list" -#define BAOBAB_ENABLE_HOME_MONITOR_KEY	BAOBAB_KEY_DIR "/properties/enable_home_monitor" -#define SYSTEM_TOOLBAR_STYLE_KEY	"/desktop/mate/interface/toolbar_style" +#define BAOBAB_UI_SETTINGS_SCHEMA "org.mate.disk-usage-analyzer.ui" +#define BAOBAB_PREFS_SETTINGS_SCHEMA "org.mate.disk-usage-analyzer.preferences" +#define BAOBAB_SETTINGS_TOOLBAR_VISIBLE "toolbar-visible" +#define BAOBAB_SETTINGS_STATUSBAR_VISIBLE "statusbar-visible" +#define BAOBAB_SETTINGS_SUBFLSTIPS_VISIBLE "subfoldertips-visible" +#define BAOBAB_SETTINGS_ACTIVE_CHART "active-chart" +#define BAOBAB_SETTINGS_MONITOR_HOME "monitor-home" +#define BAOBAB_SETTINGS_EXCLUDED_URIS "excluded-uris"  typedef struct _BaobabChartMenu BaobabChartMenu; @@ -73,6 +69,7 @@ struct _BaobabApplication {  	GtkBuilder *main_ui;  	GtkWidget *window;  	GtkWidget *tree_view; +	GtkWidget *chart_frame;  	GtkWidget *rings_chart;  	GtkWidget *treemap_chart;  	GtkWidget *current_chart; @@ -95,8 +92,10 @@ struct _BaobabApplication {  	GVolumeMonitor *monitor_vol;  	GFileMonitor *monitor_home; -	MateConfClient *mateconf_client;  	gint model_max_depth; + +	GSettings *ui_settings; +	GSettings *prefs_settings;  };  /* Application singleton */ @@ -124,5 +123,6 @@ gboolean baobab_is_excluded_location (GFile *);  void baobab_set_toolbar_visible (gboolean visible);  void baobab_set_statusbar_visible (gboolean visible);  void baobab_set_statusbar (const gchar *); +void baobab_quit (void);  #endif /* __BAOBAB_H_ */ diff --git a/baobab/src/callbacks.c b/baobab/src/callbacks.c index 3dc8ede4..72894222 100644 --- a/baobab/src/callbacks.c +++ b/baobab/src/callbacks.c @@ -27,7 +27,6 @@  #include <string.h>  #include <gtk/gtk.h>  #include <glib/gi18n.h> -#include <mateconf/mateconf-client.h>  #include <gio/gio.h>  #include "baobab.h" @@ -39,6 +38,12 @@  #include "baobab-chart.h"  void +on_quit_activate (GtkMenuItem *menuitem, gpointer user_data) +{ +	baobab_quit (); +} + +void  on_menuscanhome_activate (GtkMenuItem *menuitem, gpointer user_data)  {  	baobab_scan_home (); @@ -57,15 +62,9 @@ on_menuscandir_activate (GtkMenuItem *menuitem, gpointer user_data)  }  void -on_esci1_activate (GtkObject *menuitem, gpointer user_data) -{ -	baobab_stop_scan (); -	gtk_main_quit (); -} - -void on_about_activate(GtkMenuItem* menuitem, gpointer user_data) +on_about_activate (GtkMenuItem *menuitem, gpointer user_data)  { -	const gchar* const authors[] = { +	const gchar * const authors[] = {  		"Fabio Marzocca <[email protected]>",  		"Paolo Borelli <[email protected]>",  		"BenoĆ®t Dejean <[email protected]>", @@ -185,7 +184,7 @@ gboolean  on_delete_activate (GtkWidget *widget,  		    GdkEvent *event, gpointer user_data)  { -	on_esci1_activate (NULL, NULL); +	baobab_quit ();  	return TRUE;  } @@ -265,36 +264,6 @@ on_ck_allocated_activate (GtkToggleAction *action,  }  void -on_view_tb_activate (GtkToggleAction *action, -                     gpointer         user_data) -{ -	gboolean visible; - -	visible = gtk_toggle_action_get_active (action); -	baobab_set_toolbar_visible (visible); - -	mateconf_client_set_bool (baobab.mateconf_client, -			       BAOBAB_TOOLBAR_VISIBLE_KEY, -			       visible, -			       NULL); -} - -void -on_view_sb_activate (GtkToggleAction *action, -                     gpointer         user_data) -{ -	gboolean visible; - -	visible = gtk_toggle_action_get_active (action); -	baobab_set_statusbar_visible (visible); - -	mateconf_client_set_bool (baobab.mateconf_client, -			       BAOBAB_STATUSBAR_VISIBLE_KEY, -			       visible, -			       NULL); -} - -void  on_helpcontents_activate (GtkAction *a, gpointer user_data)  {  	baobab_help_display (GTK_WINDOW (baobab.window), "baobab", NULL); @@ -359,36 +328,3 @@ on_chart_snapshot_cb (GtkCheckMenuItem *checkmenuitem, gpointer user_data)  	baobab_chart_save_snapshot (baobab.current_chart);  } -void -on_chart_type_change (GtkWidget *combo, gpointer user_data) -{ -	GtkWidget *chart; -	GtkWidget *frame; - -	guint active; - -	active = gtk_combo_box_get_active (GTK_COMBO_BOX (combo)); - -	switch (active) { -	case 0: -		chart = baobab.rings_chart; -		break; -	case 1: -		chart = baobab.treemap_chart; -		break; -	default: -		g_return_if_reached (); -	} - -	frame = gtk_widget_get_parent (baobab.current_chart); - -	baobab_chart_freeze_updates (baobab.current_chart); -	baobab_chart_thaw_updates (chart); - -	g_object_ref_sink (baobab.current_chart); -	gtk_container_remove (GTK_CONTAINER (frame), baobab.current_chart); -	gtk_container_add (GTK_CONTAINER (frame), chart); - -	baobab.current_chart = chart; -} - diff --git a/baobab/src/callbacks.h b/baobab/src/callbacks.h index 93e70fbc..0f517968 100644 --- a/baobab/src/callbacks.h +++ b/baobab/src/callbacks.h @@ -26,6 +26,7 @@  #include <gtk/gtk.h>  #include "baobab-chart.h" +void on_quit_activate (GtkMenuItem *menuitem, gpointer user_data);  void on_about_activate (GtkMenuItem *menuitem, gpointer user_data);  void on_menuscanhome_activate (GtkMenuItem *menuitem, gpointer user_data);  void on_menuallfs_activate (GtkMenuItem *menuitem, gpointer user_data); @@ -39,7 +40,6 @@ void on_tbstop_clicked (GtkToolButton *toolbutton, gpointer user_data);  void on_tbrescan_clicked (GtkToolButton *toolbutton, gpointer user_data);  void on_radio_allfs_clicked (GtkButton *button, gpointer user_data);  void on_radio_dir_clicked (GtkButton *button, gpointer user_data); -void on_esci1_activate (GtkObject *object, gpointer user_data);  gboolean on_delete_activate (GtkWidget *widget, GdkEvent *event, gpointer user_data);  void open_file_cb (GtkMenuItem *pmenu, gpointer dummy);  void scan_folder_cb (GtkMenuItem *pmenu, gpointer dummy); @@ -48,8 +48,6 @@ void list_all_cb (GtkMenuItem *pmenu, gpointer dummy);  void on_pref_menu (GtkAction *a, gpointer user_data);  void on_tb_scan_remote_clicked (GtkToolButton *toolbutton, gpointer user_data);  void on_menu_scan_rem_activate (GtkMenuItem *menuitem, gpointer user_data); -void on_view_tb_activate (GtkToggleAction *action, gpointer user_data);  -void on_view_sb_activate (GtkToggleAction *action, gpointer         user_data);  void on_ck_allocated_activate (GtkToggleAction *action, gpointer user_data);  void on_helpcontents_activate (GtkAction *a, gpointer user_data);  void on_tv_selection_changed (GtkTreeSelection *selection, gpointer user_data); @@ -57,6 +55,5 @@ void on_move_upwards_cb (GtkCheckMenuItem *checkmenuitem, gpointer user_data);  void on_zoom_in_cb (GtkCheckMenuItem *checkmenuitem, gpointer user_data);  void on_zoom_out_cb (GtkCheckMenuItem *checkmenuitem, gpointer user_data);  void on_chart_snapshot_cb (GtkCheckMenuItem *checkmenuitem, gpointer user_data); -void on_chart_type_change (GtkWidget *combo, gpointer user_data);  #endif /* __BAOBAB_CALLBACKS_H__ */  | 
