diff options
Diffstat (limited to 'applets/wncklet/window-list.c')
-rw-r--r-- | applets/wncklet/window-list.c | 196 |
1 files changed, 43 insertions, 153 deletions
diff --git a/applets/wncklet/window-list.c b/applets/wncklet/window-list.c index feebff0d..0b393bed 100644 --- a/applets/wncklet/window-list.c +++ b/applets/wncklet/window-list.c @@ -15,17 +15,18 @@ #include <string.h> #include <mate-panel-applet.h> -#include <mate-panel-applet-mateconf.h> +#include <mate-panel-applet-gsettings.h> #include <glib/gi18n.h> #include <gtk/gtk.h> #include <libmatewnck/libmatewnck.h> -#include <mateconf/mateconf-client.h> +#include <gio/gio.h> #include "wncklet.h" #include "window-list.h" #define WINDOW_LIST_ICON "mate-panel-window-list" +#define WINDOW_LIST_SCHEMA "org.mate.panel.applet.window-list" typedef struct { GtkWidget* applet; @@ -51,8 +52,7 @@ typedef struct { GtkWidget* move_minimized_radio; GtkWidget* change_workspace_radio; - /* mateconf listeners id */ - guint listeners [3]; + GSettings* settings; } TasklistData; static void callSystemMonitor(GtkAction* action, TasklistData* tasklist); @@ -144,17 +144,7 @@ static void applet_change_pixel_size(MatePanelApplet* applet, gint size, Tasklis static void destroy_tasklist(GtkWidget* widget, TasklistData* tasklist) { - MateConfClient* client = mateconf_client_get_default(); - - mateconf_client_notify_remove(client, tasklist->listeners[0]); - mateconf_client_notify_remove(client, tasklist->listeners[1]); - mateconf_client_notify_remove(client, tasklist->listeners[2]); - - g_object_unref(G_OBJECT(client)); - - tasklist->listeners[0] = 0; - tasklist->listeners[1] = 0; - tasklist->listeners[2] = 0; + g_object_unref(tasklist->settings); if (tasklist->properties_dialog) gtk_widget_destroy(tasklist->properties_dialog); @@ -228,14 +218,11 @@ static void tasklist_properties_update_content_radio(TasklistData* tasklist) gtk_widget_set_sensitive(tasklist->change_workspace_radio, tasklist->include_all_workspaces); } -static void display_all_workspaces_changed(MateConfClient* client, guint cnxn_id, MateConfEntry* entry, TasklistData* tasklist) +static void display_all_workspaces_changed(GSettings* settings, gchar* key, TasklistData* tasklist) { gboolean value; - if (!entry->value || entry->value->type != MATECONF_VALUE_BOOL) - return; - - value = mateconf_value_get_bool(entry->value); + value = g_settings_get_boolean(settings, key); tasklist->include_all_workspaces = (value != 0); tasklist_update(tasklist); @@ -243,40 +230,6 @@ static void display_all_workspaces_changed(MateConfClient* client, guint cnxn_id tasklist_properties_update_content_radio(tasklist); } -static MatewnckTasklistGroupingType get_grouping_type(MateConfValue* value) -{ - MatewnckTasklistGroupingType type = -1; - const char* str; - - g_assert(value != NULL); - - /* Backwards compat for old type: */ - if (value->type == MATECONF_VALUE_BOOL) - { - type = (mateconf_value_get_bool(value)) ? MATEWNCK_TASKLIST_AUTO_GROUP : MATEWNCK_TASKLIST_NEVER_GROUP; - - } - else if (value->type == MATECONF_VALUE_STRING) - { - str = mateconf_value_get_string(value); - - if (g_ascii_strcasecmp(str, "never") == 0) - { - type = MATEWNCK_TASKLIST_NEVER_GROUP; - } - else if (g_ascii_strcasecmp(str, "auto") == 0) - { - type = MATEWNCK_TASKLIST_AUTO_GROUP; - } - else if (g_ascii_strcasecmp(str, "always") == 0) - { - type = MATEWNCK_TASKLIST_ALWAYS_GROUP; - } - } - - return type; -} - static GtkWidget* get_grouping_button(TasklistData* tasklist, MatewnckTasklistGroupingType type) { switch (type) @@ -294,21 +247,12 @@ static GtkWidget* get_grouping_button(TasklistData* tasklist, MatewnckTasklistGr } } -static void group_windows_changed(MateConfClient* client, guint cnxn_id, MateConfEntry* entry, TasklistData* tasklist) +static void group_windows_changed(GSettings* settings, gchar* key, TasklistData* tasklist) { MatewnckTasklistGroupingType type; GtkWidget* button; - if (!entry->value || (entry->value->type != MATECONF_VALUE_BOOL && entry->value->type != MATECONF_VALUE_STRING)) - return; - - type = get_grouping_type(entry->value); - - if (type == -1) - { - g_warning("tasklist: Unknown value for MateConf key 'group_windows'"); - return; - } + type = g_settings_get_enum (settings, key); tasklist->grouping = type; tasklist_update(tasklist); @@ -342,14 +286,11 @@ static void tasklist_update_unminimization_radio(TasklistData* tasklist) } -static void move_unminimized_windows_changed(MateConfClient* client, guint cnxn_id, MateConfEntry* entry, TasklistData* tasklist) +static void move_unminimized_windows_changed(GSettings* settings, gchar* key, TasklistData* tasklist) { gboolean value; - if (!entry->value || entry->value->type != MATECONF_VALUE_BOOL) - return; - - value = mateconf_value_get_bool(entry->value); + value = g_settings_get_boolean(settings, key); tasklist->move_unminimized_windows = (value != 0); tasklist_update(tasklist); @@ -357,26 +298,22 @@ static void move_unminimized_windows_changed(MateConfClient* client, guint cnxn_ tasklist_update_unminimization_radio(tasklist); } -static void setup_mateconf(TasklistData* tasklist) +static void setup_gsettings(TasklistData* tasklist) { - MateConfClient* client; - char* key; - - client = mateconf_client_get_default(); - - key = mate_panel_applet_mateconf_get_full_key(MATE_PANEL_APPLET(tasklist->applet), "display_all_workspaces"); - tasklist->listeners[0] = mateconf_client_notify_add(client, key, (MateConfClientNotifyFunc) display_all_workspaces_changed, tasklist, NULL, NULL); - g_free(key); - - key = mate_panel_applet_mateconf_get_full_key(MATE_PANEL_APPLET(tasklist->applet), "group_windows"); - tasklist->listeners[1] = mateconf_client_notify_add(client, key, (MateConfClientNotifyFunc) group_windows_changed, tasklist, NULL, NULL); - g_free(key); - - key = mate_panel_applet_mateconf_get_full_key(MATE_PANEL_APPLET(tasklist->applet), "move_unminimized_windows"); - tasklist->listeners[2] = mateconf_client_notify_add(client, key, (MateConfClientNotifyFunc) move_unminimized_windows_changed, tasklist, NULL, NULL); - g_free(key); - - g_object_unref(G_OBJECT(client)); + tasklist->settings = mate_panel_applet_settings_new (MATE_PANEL_APPLET (tasklist->applet), WINDOW_LIST_SCHEMA); + + g_signal_connect (tasklist->settings, + "changed::display-all-workspaces", + G_CALLBACK (display_all_workspaces_changed), + tasklist); + g_signal_connect (tasklist->settings, + "changed::group-windows", + G_CALLBACK (group_windows_changed), + tasklist); + g_signal_connect (tasklist->settings, + "changed::move-unminimized-windows", + G_CALLBACK (move_unminimized_windows_changed), + tasklist); } static void applet_size_request(GtkWidget* widget, GtkRequisition* requisition, TasklistData* tasklist) @@ -445,8 +382,6 @@ gboolean window_list_applet_fill(MatePanelApplet* applet) TasklistData* tasklist; GtkActionGroup* action_group; gchar* ui_path; - GError* error; - MateConfValue* value; tasklist = g_new0(TasklistData, 1); @@ -454,46 +389,13 @@ gboolean window_list_applet_fill(MatePanelApplet* applet) mate_panel_applet_set_flags(MATE_PANEL_APPLET(tasklist->applet), MATE_PANEL_APPLET_EXPAND_MAJOR | MATE_PANEL_APPLET_EXPAND_MINOR | MATE_PANEL_APPLET_HAS_HANDLE); - mate_panel_applet_add_preferences(applet, "/schemas/apps/window_list_applet/prefs", NULL); - - setup_mateconf(tasklist); - - error = NULL; - - tasklist->include_all_workspaces = mate_panel_applet_mateconf_get_bool(applet, "display_all_workspaces", &error); - - if (error) - { - g_error_free(error); - tasklist->include_all_workspaces = FALSE; /* Default value */ - } - - error = NULL; - tasklist->grouping = -1; + setup_gsettings(tasklist); - value = mate_panel_applet_mateconf_get_value(applet, "group_windows", &error); + tasklist->include_all_workspaces = g_settings_get_boolean (tasklist->settings, "display-all-workspaces"); - if (error) - { - g_error_free(error); - } - else if (value) - { - tasklist->grouping = get_grouping_type(value); - mateconf_value_free(value); - } + tasklist->grouping = g_settings_get_enum (tasklist->settings, "group-windows"); - if (tasklist->grouping < 0) - tasklist->grouping = MATEWNCK_TASKLIST_AUTO_GROUP; /* Default value */ - - error = NULL; - tasklist->move_unminimized_windows = mate_panel_applet_mateconf_get_bool(applet, "move_unminimized_windows", &error); - - if (error) - { - g_error_free(error); - tasklist->move_unminimized_windows = TRUE; /* Default value */ - } + tasklist->move_unminimized_windows = g_settings_get_boolean (tasklist->settings, "move-unminimized-windows"); tasklist->size = mate_panel_applet_get_size(applet); @@ -647,8 +549,8 @@ static void group_windows_toggled(GtkToggleButton* button, TasklistData* tasklis { if (gtk_toggle_button_get_active(button)) { - char* str = g_object_get_data(G_OBJECT(button), "group_value"); - mate_panel_applet_mateconf_set_string(MATE_PANEL_APPLET(tasklist->applet), "group_windows", str, NULL); + gint value = g_object_get_data(G_OBJECT(button), "group_value"); + g_settings_set_enum (tasklist->settings, "group-windows", value); } } @@ -660,38 +562,32 @@ static void group_windows_toggled(GtkToggleButton* button, TasklistData* tasklis printf("str: %s\n", str); // Add later! - //mate_panel_applet_mateconf_set_string(MATE_PANEL_APPLET(tasklist->applet), "group_button", str, NULL); + //mate_panel_applet_mate_conf_set_string(MATE_PANEL_APPLET(tasklist->applet), "group_button", str, NULL); } }*/ static void move_minimized_toggled(GtkToggleButton* button, TasklistData* tasklist) { - mate_panel_applet_mateconf_set_bool(MATE_PANEL_APPLET(tasklist->applet), "move_unminimized_windows", gtk_toggle_button_get_active(button), NULL); + g_settings_set_boolean(tasklist->settings, "move-unminimized-windows", gtk_toggle_button_get_active(button)); } static void display_all_workspaces_toggled(GtkToggleButton* button, TasklistData* tasklist) { - mate_panel_applet_mateconf_set_bool(MATE_PANEL_APPLET(tasklist->applet), "display_all_workspaces", gtk_toggle_button_get_active(button), NULL); + g_settings_set_boolean(tasklist->settings, "display-all-workspaces", gtk_toggle_button_get_active(button)); } #define WID(s) GTK_WIDGET(gtk_builder_get_object(builder, s)) -static void setup_sensitivity(TasklistData* tasklist, MateConfClient* client, GtkBuilder* builder, const char* wid1, const char* wid2, const char* wid3, const char* key) +static void setup_sensitivity(TasklistData* tasklist, GtkBuilder* builder, const char* wid1, const char* wid2, const char* wid3, const char* key) { MatePanelApplet* applet = MATE_PANEL_APPLET(tasklist->applet); - char* fullkey; GtkWidget* w; - fullkey = mate_panel_applet_mateconf_get_full_key(applet, key); - - if (mateconf_client_key_is_writable(client, fullkey, NULL)) + if (g_settings_is_writable(tasklist->settings, key)) { - g_free(fullkey); return; } - g_free(fullkey); - w = WID(wid1); g_assert(w != NULL); gtk_widget_set_sensitive(w, FALSE); @@ -713,39 +609,35 @@ static void setup_sensitivity(TasklistData* tasklist, MateConfClient* client, Gt static void setup_dialog(GtkBuilder* builder, TasklistData* tasklist) { - MateConfClient* client; GtkWidget* button; - client = mateconf_client_get_default(); - tasklist->show_current_radio = WID("show_current_radio"); tasklist->show_all_radio = WID("show_all_radio"); - setup_sensitivity(tasklist, client, builder, "show_current_radio", "show_all_radio", NULL, "display_all_workspaces" /* key */); + setup_sensitivity(tasklist, builder, "show_current_radio", "show_all_radio", NULL, "display-all-workspaces" /* key */); tasklist->never_group_radio = WID("never_group_radio"); tasklist->auto_group_radio = WID("auto_group_radio"); tasklist->always_group_radio = WID("always_group_radio"); - setup_sensitivity(tasklist, client, builder, "never_group_radio", "auto_group_radio", "always_group_radio", "group_windows" /* key */); + setup_sensitivity(tasklist, builder, "never_group_radio", "auto_group_radio", "always_group_radio", "group-windows" /* key */); tasklist->minimized_windows_label = WID("minimized_windows_label"); tasklist->move_minimized_radio = WID("move_minimized_radio"); tasklist->change_workspace_radio = WID("change_workspace_radio"); - /*tasklist->style_group_radio = WID("style_button_radio"); tasklist->icon_group_radio = WID("icon_only_radio"); tasklist->text_group_radio = WID("text_only_radio");*/ - setup_sensitivity(tasklist, client, builder, "move_minimized_radio", "change_workspace_radio", NULL, "move_unminimized_windows" /* key */); + setup_sensitivity(tasklist, builder, "move_minimized_radio", "change_workspace_radio", NULL, "move-unminimized-windows" /* key */); /* Window grouping: */ button = get_grouping_button(tasklist, tasklist->grouping); gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(button), TRUE); - g_object_set_data(G_OBJECT(tasklist->never_group_radio), "group_value", "never"); - g_object_set_data(G_OBJECT(tasklist->auto_group_radio), "group_value", "auto"); - g_object_set_data(G_OBJECT(tasklist->always_group_radio), "group_value", "always"); + g_object_set_data(G_OBJECT(tasklist->never_group_radio), "group_value", MATEWNCK_TASKLIST_NEVER_GROUP); + g_object_set_data(G_OBJECT(tasklist->auto_group_radio), "group_value", MATEWNCK_TASKLIST_AUTO_GROUP); + g_object_set_data(G_OBJECT(tasklist->always_group_radio), "group_value", MATEWNCK_TASKLIST_ALWAYS_GROUP); g_signal_connect(G_OBJECT(tasklist->never_group_radio), "toggled", (GCallback) group_windows_toggled, tasklist); g_signal_connect(G_OBJECT(tasklist->auto_group_radio), "toggled", (GCallback) group_windows_toggled, tasklist); @@ -772,8 +664,6 @@ static void setup_dialog(GtkBuilder* builder, TasklistData* tasklist) g_signal_connect_swapped(WID("done_button"), "clicked", (GCallback) gtk_widget_hide, tasklist->properties_dialog); g_signal_connect(tasklist->properties_dialog, "response", G_CALLBACK(response_cb), tasklist); - - g_object_unref(G_OBJECT(client)); } static void display_properties_dialog(GtkAction* action, TasklistData* tasklist) |