/* Perform full initialization of this application instance */ static gboolean _xfdashboard_application_initialize_full(XfdashboardApplication *self, XfdashboardStage **outStage) { XfdashboardApplicationPrivate *priv; GError *error; ClutterActor *stage; #if !GARCON_CHECK_VERSION(0,3,0) const gchar *desktop; #endif g_return_val_if_fail(XFDASHBOARD_IS_APPLICATION(self), FALSE); g_return_val_if_fail(outStage==NULL || *outStage==NULL, FALSE); priv=self->priv; error=NULL; /* Initialize garcon for current desktop environment */ #if !GARCON_CHECK_VERSION(0,3,0) desktop=g_getenv("XDG_CURRENT_DESKTOP"); if(G_LIKELY(desktop==NULL)) { /* If we could not determine current desktop environment * assume Xfce as this application is developed for this DE. */ desktop="XFCE"; } /* If desktop enviroment was found but has no name * set NULL to get all menu items shown. */ else if(*desktop==0) desktop=NULL; garcon_set_environment(desktop); #else garcon_set_environment_xdg(GARCON_ENVIRONMENT_XFCE); #endif /* Setup the session management */ priv->sessionManagementClient=xfce_sm_client_get(); xfce_sm_client_set_priority(priv->sessionManagementClient, XFCE_SM_CLIENT_PRIORITY_DEFAULT); xfce_sm_client_set_restart_style(priv->sessionManagementClient, XFCE_SM_CLIENT_RESTART_IMMEDIATELY); g_signal_connect_swapped(priv->sessionManagementClient, "quit", G_CALLBACK(_xfdashboard_application_on_session_quit), self); if(!xfce_sm_client_connect(priv->sessionManagementClient, &error)) { g_warning("Failed to connect to session manager: %s", (error && error->message) ? error->message : _("unknown error")); g_clear_error(&error); } /* Initialize xfconf */ if(!xfconf_init(&error)) { g_critical(_("Could not initialize xfconf: %s"), (error && error->message) ? error->message : _("unknown error")); if(error) g_error_free(error); return(FALSE); } priv->xfconfChannel=xfconf_channel_get(XFDASHBOARD_XFCONF_CHANNEL); /* Set up keyboard and pointer bindings */ priv->bindings=xfdashboard_bindings_pool_get_default(); if(!priv->bindings) { g_critical(_("Could not initialize bindings")); return(FALSE); } if(!xfdashboard_bindings_pool_load(priv->bindings, &error)) { g_critical(_("Could not load bindings: %s"), (error && error->message) ? error->message : _("unknown error")); if(error!=NULL) g_error_free(error); return(FALSE); } /* Set up application database */ priv->appDatabase=xfdashboard_application_database_get_default(); if(!priv->appDatabase) { g_critical(_("Could not initialize application database")); return(FALSE); } if(!xfdashboard_application_database_load(priv->appDatabase, &error)) { g_critical(_("Could not load application database: %s"), (error && error->message) ? error->message : _("unknown error")); if(error!=NULL) g_error_free(error); return(FALSE); } /* Set up application tracker */ priv->appTracker=xfdashboard_application_tracker_get_default(); if(!priv->appTracker) { g_critical(_("Could not initialize application tracker")); return(FALSE); } /* Set up and load theme */ priv->xfconfThemeChangedSignalID=xfconf_g_property_bind(priv->xfconfChannel, THEME_NAME_XFCONF_PROP, G_TYPE_STRING, self, "theme-name"); if(!priv->xfconfThemeChangedSignalID) { g_warning(_("Could not create binding between xfconf property and local resource for theme change notification.")); } /* Set up default theme in Xfcond if property in channel does not exist * because it indicates first start. */ if(!xfconf_channel_has_property(priv->xfconfChannel, THEME_NAME_XFCONF_PROP)) { xfconf_channel_set_string(priv->xfconfChannel, THEME_NAME_XFCONF_PROP, DEFAULT_THEME_NAME); } /* At this time the theme must have been loaded, either because we * set the default theme name because of missing theme property in * xfconf channel or the value of xfconf channel property has been read * and set when setting up binding (between xfconf property and local property) * what caused a call to function to set theme name in this object * and also caused a reload of theme. * So if no theme object is set in this object then loading theme has * failed and we have to return FALSE. */ if(!priv->theme) return(FALSE); /* Register built-in views (order of registration is important) */ priv->viewManager=xfdashboard_view_manager_get_default(); xfdashboard_view_manager_register(priv->viewManager, XFDASHBOARD_TYPE_WINDOWS_VIEW); xfdashboard_view_manager_register(priv->viewManager, XFDASHBOARD_TYPE_APPLICATIONS_VIEW); xfdashboard_view_manager_register(priv->viewManager, XFDASHBOARD_TYPE_SEARCH_VIEW); /* Register built-in search providers */ priv->searchManager=xfdashboard_search_manager_get_default(); xfdashboard_search_manager_register(priv->searchManager, XFDASHBOARD_TYPE_APPLICATIONS_SEARCH_PROVIDER); /* Create single-instance of focus manager to keep it alive while * application is running. */ priv->focusManager=xfdashboard_focus_manager_get_default(); /* Create stage containing all monitors */ stage=xfdashboard_stage_new(); g_signal_connect_swapped(stage, "delete-event", G_CALLBACK(_xfdashboard_application_on_delete_stage), self); /* Emit signal 'theme-changed' to get current theme loaded at each stage created */ g_signal_emit(self, XfdashboardApplicationSignals[SIGNAL_THEME_CHANGED], 0, priv->theme); /* Set return results */ if(outStage) *outStage=XFDASHBOARD_STAGE(stage); /* Initialization was successful so return TRUE */ #ifdef DEBUG xfdashboard_notify(NULL, NULL, _("Welcome to %s (%s)!"), PACKAGE_NAME, PACKAGE_VERSION); #else xfdashboard_notify(NULL, NULL, _("Welcome to %s!"), PACKAGE_NAME); #endif return(TRUE); }
static void accessibility_settings_dialog_configure_widgets (GtkBuilder *builder) { GObject *box, *object; /* assistive technologies */ object = gtk_builder_get_object (builder, "start-at"); xfconf_g_property_bind (session_channel, "/general/StartAssistiveTechnologies", G_TYPE_BOOLEAN, object, "active"); g_signal_connect (object, "toggled", G_CALLBACK (accessibility_settings_at), builder); accessibility_settings_at (GTK_TOGGLE_BUTTON (object), builder); /* Sticky keys */ object = gtk_builder_get_object (builder, "sticky-keys-enabled"); box = gtk_builder_get_object (builder, "sticky-keys-box"); g_signal_connect (object, "toggled", G_CALLBACK (accessibility_settings_sensitivity), box); xfconf_g_property_bind (accessibility_channel, "/StickyKeys", G_TYPE_BOOLEAN, object, "active"); object = gtk_builder_get_object (builder, "sticky-keys-latch-to-lock"); xfconf_g_property_bind (accessibility_channel, "/StickyKeys/LatchToLock", G_TYPE_BOOLEAN, object, "active"); object = gtk_builder_get_object (builder, "sticky-keys-two-keys-disable"); xfconf_g_property_bind (accessibility_channel, "/StickyKeys/TwoKeysDisable", G_TYPE_BOOLEAN, object, "active"); /* Slow keys */ object = gtk_builder_get_object (builder, "slow-keys-enabled"); box = gtk_builder_get_object (builder, "slow-keys-box"); g_signal_connect (object, "toggled", G_CALLBACK (accessibility_settings_sensitivity), box); xfconf_g_property_bind (accessibility_channel, "/SlowKeys", G_TYPE_BOOLEAN, object, "active"); object = gtk_builder_get_object (builder, "slow-keys-delay"); xfconf_g_property_bind (accessibility_channel, "/SlowKeys/Delay", G_TYPE_INT, object, "value"); /* Bounce keys */ object = gtk_builder_get_object (builder, "bounce-keys-enabled"); box = gtk_builder_get_object (builder, "bounce-keys-box"); g_signal_connect (object, "toggled", G_CALLBACK (accessibility_settings_sensitivity), box); xfconf_g_property_bind (accessibility_channel, "/BounceKeys", G_TYPE_BOOLEAN, object, "active"); object = gtk_builder_get_object (builder, "bounce-keys-delay"); xfconf_g_property_bind (accessibility_channel, "/BounceKeys/Delay", G_TYPE_INT, object, "value"); /* Mouse keys */ object = gtk_builder_get_object (builder, "mouse-emulation-enabled"); box = gtk_builder_get_object (builder, "mouse-emulation-box"); g_signal_connect (object, "toggled", G_CALLBACK (accessibility_settings_sensitivity), box); xfconf_g_property_bind (accessibility_channel, "/MouseKeys", G_TYPE_BOOLEAN, object, "active"); object = gtk_builder_get_object (builder, "mouse-emulation-delay"); xfconf_g_property_bind (accessibility_channel, "/MouseKeys/Delay", G_TYPE_INT, object, "value"); object = gtk_builder_get_object (builder, "mouse-emulation-interval"); xfconf_g_property_bind (accessibility_channel, "/MouseKeys/Interval", G_TYPE_INT, object, "value"); object = gtk_builder_get_object (builder, "mouse-emulation-time-to-max"); xfconf_g_property_bind (accessibility_channel, "/MouseKeys/TimeToMax", G_TYPE_INT, object, "value"); object = gtk_builder_get_object (builder, "mouse-emulation-max-speed"); xfconf_g_property_bind (accessibility_channel, "/MouseKeys/MaxSpeed", G_TYPE_INT, object, "value"); object = gtk_builder_get_object (builder, "mouse-emulation-curve"); xfconf_g_property_bind (accessibility_channel, "/MouseKeys/Curve", G_TYPE_INT, object, "value"); }
static void rstto_settings_init (GObject *object) { gchar *accelmap_path = NULL; RsttoSettings *settings = RSTTO_SETTINGS (object); settings->priv = g_new0 (RsttoSettingsPriv, 1); settings->priv->channel = xfconf_channel_new ("ristretto"); accelmap_path = xfce_resource_lookup (XFCE_RESOURCE_CONFIG, "ristretto/accels.scm"); if (accelmap_path) { gtk_accel_map_load (accelmap_path); g_free (accelmap_path); accelmap_path = NULL; } else { /* If the accels.scm file is missing, we are probably * dealing with a first-boot. Add default accelerators. */ gtk_accel_map_change_entry ("<Window>/fullscreen", GDK_KEY_F, 0, FALSE); gtk_accel_map_change_entry ("<Window>/unfullscreen", GDK_KEY_Escape, 0, FALSE); gtk_accel_map_change_entry ("<Window>/next-image", GDK_KEY_Page_Down, 0, FALSE); gtk_accel_map_change_entry ("<Window>/previous-image", GDK_KEY_Page_Up, 0, FALSE); gtk_accel_map_change_entry ("<Window>/quit", GDK_KEY_q, 0, FALSE); gtk_accel_map_change_entry ("<Window>/delete", GDK_KEY_Delete, GDK_SHIFT_MASK, FALSE); gtk_accel_map_change_entry ("<Window>/refresh", GDK_KEY_r, GDK_CONTROL_MASK, FALSE); gtk_accel_map_change_entry ("<Actions>/RsttoWindow/play", GDK_KEY_F5, 0, FALSE); } settings->priv->slideshow_timeout = 5; settings->priv->bgcolor = g_new0 (GdkColor, 1); settings->priv->bgcolor_fullscreen = g_new0 (GdkColor, 1); settings->priv->navigationbar_position = g_strdup ("left"); settings->priv->show_toolbar = TRUE; settings->priv->window_width = 600; settings->priv->window_height = 440; settings->priv->wrap_images = TRUE; settings->priv->show_thumbnailbar = TRUE; settings->priv->show_statusbar = TRUE; settings->priv->use_thunar_properties = TRUE; settings->priv->maximize_on_startup = TRUE; settings->priv->hide_thumbnails_fullscreen = TRUE; settings->priv->errors.missing_thumbnailer = TRUE; settings->priv->thumbnail_size = THUMBNAIL_SIZE_NORMAL; xfconf_g_property_bind ( settings->priv->channel, "/window/width", G_TYPE_UINT, settings, "window-width"); xfconf_g_property_bind ( settings->priv->channel, "/window/height", G_TYPE_UINT, settings, "window-height"); xfconf_g_property_bind ( settings->priv->channel, "/file/current-uri", G_TYPE_STRING, settings, "current-uri"); xfconf_g_property_bind ( settings->priv->channel, "/window/toolbar/show", G_TYPE_BOOLEAN, settings, "show-toolbar"); xfconf_g_property_bind ( settings->priv->channel, "/window/navigationbar/sort-type", G_TYPE_UINT, settings, "sort-type"); xfconf_g_property_bind ( settings->priv->channel, "/window/navigationbar/position", G_TYPE_STRING, settings, "navigationbar-position"); xfconf_g_property_bind ( settings->priv->channel, "/window/thumbnails/show", G_TYPE_BOOLEAN, settings, "show-thumbnailbar"); xfconf_g_property_bind ( settings->priv->channel, "/window/statusbar/show", G_TYPE_BOOLEAN, settings, "show-statusbar"); xfconf_g_property_bind ( settings->priv->channel, "/window/thumbnails/size", G_TYPE_UINT, settings, "thumbnail-size"); xfconf_g_property_bind ( settings->priv->channel, "/window/thumbnails/hide-fullscreen", G_TYPE_BOOLEAN, settings, "hide-thumbnails-fullscreen"); xfconf_g_property_bind ( settings->priv->channel, "/slideshow/timeout", G_TYPE_UINT, settings, "slideshow-timeout"); xfconf_g_property_bind ( settings->priv->channel, "/window/bgcolor-override", G_TYPE_BOOLEAN, settings, "bgcolor-override"); xfconf_g_property_bind_gdkcolor ( settings->priv->channel, "/window/bgcolor", settings, "bgcolor"); xfconf_g_property_bind_gdkcolor ( settings->priv->channel, "/window/bgcolor-fullscreen", settings, "bgcolor-fullscreen"); xfconf_g_property_bind ( settings->priv->channel, "/window/invert-zoom-direction", G_TYPE_BOOLEAN, settings, "invert-zoom-direction"); xfconf_g_property_bind ( settings->priv->channel, "/window/show-clock", G_TYPE_BOOLEAN, settings, "show-clock"); xfconf_g_property_bind ( settings->priv->channel, "/image/wrap", G_TYPE_BOOLEAN, settings, "wrap-images"); xfconf_g_property_bind ( settings->priv->channel, "/image/limit-quality", G_TYPE_BOOLEAN, settings, "limit-quality"); xfconf_g_property_bind ( settings->priv->channel, "/window/use-thunar-properties", G_TYPE_BOOLEAN, settings, "use-thunar-properties"); xfconf_g_property_bind ( settings->priv->channel, "/window/maximize-on-startup", G_TYPE_BOOLEAN, settings, "maximize-on-startup"); xfconf_g_property_bind ( settings->priv->channel, "/errors/missing-thumbnailer", G_TYPE_BOOLEAN, settings, "show-error-missing-thumbnailer"); xfconf_g_property_bind ( settings->priv->channel, "/desktop/type", G_TYPE_STRING, settings, "desktop-type"); }
static void xfce_workspace_connect_backdrop_settings(XfceWorkspace *workspace, XfceBackdrop *backdrop, guint monitor) { XfconfChannel *channel = workspace->priv->channel; char buf[1024]; gint pp_len; gchar *monitor_name = NULL; TRACE("entering"); monitor_name = gdk_screen_get_monitor_plug_name(workspace->priv->gscreen, monitor); if(monitor_name == NULL) { g_snprintf(buf, sizeof(buf), "%smonitor%d/workspace%d/", workspace->priv->property_prefix, monitor, workspace->priv->workspace_num); } else { g_snprintf(buf, sizeof(buf), "%smonitor%s/workspace%d/", workspace->priv->property_prefix, monitor_name, workspace->priv->workspace_num); } pp_len = strlen(buf); DBG("prefix string: %s", buf); g_strlcat(buf, "color-style", sizeof(buf)); xfconf_g_property_bind(channel, buf, XFCE_TYPE_BACKDROP_COLOR_STYLE, G_OBJECT(backdrop), "color-style"); buf[pp_len] = 0; g_strlcat(buf, "color1", sizeof(buf)); workspace->priv->first_color_id[monitor] = xfconf_g_property_bind_gdkcolor(channel, buf, G_OBJECT(backdrop), "first-color"); buf[pp_len] = 0; g_strlcat(buf, "color2", sizeof(buf)); workspace->priv->second_color_id[monitor] = xfconf_g_property_bind_gdkcolor(channel, buf, G_OBJECT(backdrop), "second-color"); buf[pp_len] = 0; g_strlcat(buf, "image-style", sizeof(buf)); xfconf_g_property_bind(channel, buf, XFCE_TYPE_BACKDROP_IMAGE_STYLE, G_OBJECT(backdrop), "image-style"); buf[pp_len] = 0; g_strlcat(buf, "backdrop-cycle-enable", sizeof(buf)); xfconf_g_property_bind(channel, buf, G_TYPE_BOOLEAN, G_OBJECT(backdrop), "backdrop-cycle-enable"); buf[pp_len] = 0; g_strlcat(buf, "backdrop-cycle-period", sizeof(buf)); xfconf_g_property_bind(channel, buf, XFCE_TYPE_BACKDROP_CYCLE_PERIOD, G_OBJECT(backdrop), "backdrop-cycle-period"); buf[pp_len] = 0; g_strlcat(buf, "backdrop-cycle-timer", sizeof(buf)); xfconf_g_property_bind(channel, buf, G_TYPE_UINT, G_OBJECT(backdrop), "backdrop-cycle-timer"); buf[pp_len] = 0; g_strlcat(buf, "backdrop-cycle-random-order", sizeof(buf)); xfconf_g_property_bind(channel, buf, G_TYPE_BOOLEAN, G_OBJECT(backdrop), "backdrop-cycle-random-order"); buf[pp_len] = 0; g_strlcat(buf, "last-image", sizeof(buf)); xfconf_g_property_bind(channel, buf, G_TYPE_STRING, G_OBJECT(backdrop), "image-filename"); /* If we didn't get a filename try to load one from a previous version */ if(xfce_backdrop_get_image_filename(backdrop) == NULL) xfce_workspace_migrate_backdrop_image(workspace, backdrop, monitor); /* If we didn't get a proper color style, attempt to get the old one */ if(xfce_backdrop_get_color_style(backdrop) == XFCE_BACKDROP_COLOR_INVALID) xfce_workspace_migrate_backdrop_color_style(workspace, backdrop, monitor); /* Same for image style, this also deals with 'Auto' */ if(xfce_backdrop_get_image_style(backdrop) == XFCE_BACKDROP_IMAGE_INVALID) xfce_workspace_migrate_backdrop_image_style(workspace, backdrop, monitor); /* determine if the backdrop will be required to keep a ref of it's pixbuf * when it generates one */ xfce_backdrop_set_cache_pixbuf(backdrop, workspace->priv->cache_pixbufs); g_free(monitor_name); }
static void wm_tweaks_dialog_configure_widgets (GtkBuilder *builder) { GtkWidget *vbox; GtkTreeIter iter; GtkListStore *list_store; GtkCellRenderer *renderer; XfconfChannel *xfwm4_channel = xfconf_channel_new ("xfwm4"); gchar *easy_click = NULL; gchar *activate_action = NULL; gchar *default_placement = NULL; gboolean modifier_set = FALSE; guint n; /* Cycling tab */ GtkWidget *cycle_workspaces_check = GTK_WIDGET (gtk_builder_get_object (builder, "cycle_workspaces_check")); GtkWidget *cycle_hidden_check = GTK_WIDGET (gtk_builder_get_object (builder, "cycle_hidden_check")); GtkWidget *cycle_minimum_check = GTK_WIDGET (gtk_builder_get_object (builder, "cycle_minimum_check")); GtkWidget *cycle_draw_frame = GTK_WIDGET (gtk_builder_get_object (builder, "cycle_draw_frame")); GtkWidget *cycle_tabwin_mode = GTK_WIDGET (gtk_builder_get_object (builder, "cycle_tabwin_mode")); /* Focus tab */ GtkWidget *prevent_focus_stealing_check = GTK_WIDGET (gtk_builder_get_object (builder, "prevent_focus_stealing_check")); GtkWidget *focus_hint_check = GTK_WIDGET (gtk_builder_get_object (builder, "focus_hint_check")); GtkWidget *activate_action_bring_option = GTK_WIDGET (gtk_builder_get_object (builder, "activate_action_bring_option")); GtkWidget *activate_action_switch_option = GTK_WIDGET (gtk_builder_get_object (builder, "activate_action_switch_option")); GtkWidget *activate_action_none_option = GTK_WIDGET (gtk_builder_get_object (builder, "activate_action_none_option")); /* Accessibility tab */ GtkWidget *easy_click_combo_box = GTK_WIDGET (gtk_builder_get_object (builder, "easy_click_combo_box")); GtkWidget *raise_with_any_button_check = GTK_WIDGET (gtk_builder_get_object (builder, "raise_with_any_button_check")); GtkWidget *borderless_maximize_check = GTK_WIDGET (gtk_builder_get_object (builder, "borderless_maximize_check")); GtkWidget *titleless_maximize_check = GTK_WIDGET (gtk_builder_get_object (builder, "titleless_maximize_check")); GtkWidget *tile_on_move_check = GTK_WIDGET (gtk_builder_get_object (builder, "tile_on_move_check")); GtkWidget *snap_resist_check = GTK_WIDGET (gtk_builder_get_object (builder, "snap_resist_check")); GtkWidget *urgent_blink = GTK_WIDGET (gtk_builder_get_object (builder, "urgent_blink")); GtkWidget *repeat_urgent_blink = GTK_WIDGET (gtk_builder_get_object (builder, "repeat_urgent_blink")); GtkWidget *mousewheel_rollup = GTK_WIDGET (gtk_builder_get_object (builder, "mousewheel_rollup")); /* Workspaces tab */ GtkWidget *scroll_workspaces_check = GTK_WIDGET (gtk_builder_get_object (builder, "scroll_workspaces_check")); GtkWidget *toggle_workspaces_check = GTK_WIDGET (gtk_builder_get_object (builder, "toggle_workspaces_check")); GtkWidget *wrap_layout_check = GTK_WIDGET (gtk_builder_get_object (builder, "wrap_layout_check")); GtkWidget *wrap_cycle_check = GTK_WIDGET (gtk_builder_get_object (builder, "wrap_cycle_check")); /* Placement tab */ GtkWidget *placement_ratio_scale = GTK_WIDGET (gtk_builder_get_object (builder, "placement_ratio_scale")); GtkWidget *placement_center_option = GTK_WIDGET (gtk_builder_get_object (builder, "placement_center_option")); GtkWidget *placement_mouse_option = GTK_WIDGET (gtk_builder_get_object (builder, "placement_mouse_option")); /* Compositing tab */ GtkWidget *use_compositing_check = GTK_WIDGET (gtk_builder_get_object (builder, "use_compositing_check")); GtkWidget *use_compositing_box = GTK_WIDGET (gtk_builder_get_object (builder, "use_compositing_box")); GtkWidget *unredirect_overlays_check = GTK_WIDGET (gtk_builder_get_object (builder, "unredirect_overlays_check")); GtkWidget *sync_to_vblank_check = GTK_WIDGET (gtk_builder_get_object (builder, "sync_to_vblank_check")); GtkWidget *cycle_preview_check = GTK_WIDGET (gtk_builder_get_object (builder, "cycle_preview_check")); GtkWidget *show_frame_shadow_check = GTK_WIDGET (gtk_builder_get_object (builder, "show_frame_shadow_check")); GtkWidget *show_popup_shadow_check = GTK_WIDGET (gtk_builder_get_object (builder, "show_popup_shadow_check")); GtkWidget *show_dock_shadow_check = GTK_WIDGET (gtk_builder_get_object (builder, "show_dock_shadow_check")); GtkWidget *frame_opacity_scale = GTK_WIDGET (gtk_builder_get_object (builder, "frame_opacity_scale")); GtkWidget *inactive_opacity_scale = GTK_WIDGET (gtk_builder_get_object (builder, "inactive_opacity_scale")); GtkWidget *move_opacity_scale = GTK_WIDGET (gtk_builder_get_object (builder, "move_opacity_scale")); GtkWidget *popup_opacity_scale = GTK_WIDGET (gtk_builder_get_object (builder, "popup_opacity_scale")); GtkWidget *resize_opacity_scale = GTK_WIDGET (gtk_builder_get_object (builder, "resize_opacity_scale")); /* Fill combo-box */ list_store = gtk_list_store_new (1, G_TYPE_STRING); easy_click = xfconf_channel_get_string (xfwm4_channel, "/general/easy_click", "Alt"); gtk_cell_layout_clear (GTK_CELL_LAYOUT (easy_click_combo_box)); renderer = gtk_cell_renderer_text_new (); gtk_cell_layout_pack_start (GTK_CELL_LAYOUT (easy_click_combo_box), renderer, TRUE); gtk_cell_layout_add_attribute (GTK_CELL_LAYOUT (easy_click_combo_box), renderer, "text", 0); gtk_combo_box_set_model (GTK_COMBO_BOX (easy_click_combo_box), GTK_TREE_MODEL (list_store)); for (n = 0; modifier_list[n]; n++) { gtk_list_store_append (list_store, &iter); gtk_list_store_set (list_store, &iter, 0, N_(modifier_list[n]), -1); if (!modifier_set && !strcmp (easy_click, modifier_list[n])) { gtk_combo_box_set_active (GTK_COMBO_BOX (easy_click_combo_box), n); modifier_set = TRUE; } } /* If not specified, set to "None" */ if (!modifier_set) gtk_combo_box_set_active (GTK_COMBO_BOX (easy_click_combo_box), 0); activate_action = xfconf_channel_get_string (xfwm4_channel, "/general/activate_action", "bring"); if (!strcmp (activate_action, "switch")) { gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (activate_action_bring_option), FALSE); gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (activate_action_switch_option), TRUE); } if (!strcmp (activate_action, "none")) gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (activate_action_none_option), TRUE); default_placement = xfconf_channel_get_string (xfwm4_channel, "/general/placement_mode", "center"); if (!strcmp (default_placement, "mouse")) { gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (placement_center_option), FALSE); gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (placement_mouse_option), TRUE); } /* not so easy properties */ g_signal_connect (G_OBJECT (activate_action_bring_option), "toggled", G_CALLBACK (cb_activate_action_bring_radio_toggled), xfwm4_channel); g_signal_connect (G_OBJECT (activate_action_switch_option), "toggled", G_CALLBACK (cb_activate_action_switch_radio_toggled), xfwm4_channel); g_signal_connect (G_OBJECT (activate_action_none_option), "toggled", G_CALLBACK (cb_activate_action_none_radio_toggled), xfwm4_channel); g_signal_connect (G_OBJECT (borderless_maximize_check), "toggled", G_CALLBACK (cb_borderless_maximize_button_toggled), titleless_maximize_check); g_signal_connect (G_OBJECT (placement_center_option), "toggled", G_CALLBACK (cb_activate_placement_center_radio_toggled), xfwm4_channel); g_signal_connect (G_OBJECT (placement_mouse_option), "toggled", G_CALLBACK (cb_activate_placement_mouse_radio_toggled), xfwm4_channel); g_signal_connect (G_OBJECT (use_compositing_check), "toggled", G_CALLBACK (cb_use_compositing_check_button_toggled), use_compositing_box); g_signal_connect (G_OBJECT (easy_click_combo_box), "changed", G_CALLBACK (cb_easy_click_combo_box_changed), xfwm4_channel); g_signal_connect (G_OBJECT (urgent_blink), "toggled", G_CALLBACK (cb_urgent_blink_button_toggled), repeat_urgent_blink); /* Bind easy properties */ /* Cycling tab */ xfconf_g_property_bind (xfwm4_channel, "/general/cycle_minimum", G_TYPE_BOOLEAN, (GObject *)cycle_minimum_check, "active"); xfconf_g_property_bind (xfwm4_channel, "/general/cycle_hidden", G_TYPE_BOOLEAN, (GObject *)cycle_hidden_check, "active"); xfconf_g_property_bind (xfwm4_channel, "/general/cycle_workspaces", G_TYPE_BOOLEAN, (GObject *)cycle_workspaces_check, "active"); xfconf_g_property_bind (xfwm4_channel, "/general/cycle_draw_frame", G_TYPE_BOOLEAN, (GObject *)cycle_draw_frame, "active"); xfconf_g_property_bind (xfwm4_channel, "/general/cycle_tabwin_mode", G_TYPE_INT, (GObject *)cycle_tabwin_mode, "active"); /* Focus tab */ xfconf_g_property_bind (xfwm4_channel, "/general/prevent_focus_stealing", G_TYPE_BOOLEAN, (GObject *)prevent_focus_stealing_check, "active"); xfconf_g_property_bind (xfwm4_channel, "/general/focus_hint", G_TYPE_BOOLEAN, (GObject *)focus_hint_check, "active"); /* Accessibility tab */ xfconf_g_property_bind (xfwm4_channel, "/general/raise_with_any_button", G_TYPE_BOOLEAN, (GObject *)raise_with_any_button_check, "active"); xfconf_g_property_bind (xfwm4_channel, "/general/borderless_maximize", G_TYPE_BOOLEAN, (GObject *)borderless_maximize_check, "active"); xfconf_g_property_bind (xfwm4_channel, "/general/titleless_maximize", G_TYPE_BOOLEAN, (GObject *)titleless_maximize_check, "active"); xfconf_g_property_bind (xfwm4_channel, "/general/tile_on_move", G_TYPE_BOOLEAN, (GObject *)tile_on_move_check, "active"); xfconf_g_property_bind (xfwm4_channel, "/general/snap_resist", G_TYPE_BOOLEAN, (GObject *)snap_resist_check, "active"); xfconf_g_property_bind (xfwm4_channel, "/general/urgent_blink", G_TYPE_BOOLEAN, (GObject *)urgent_blink, "active"); xfconf_g_property_bind (xfwm4_channel, "/general/repeat_urgent_blink", G_TYPE_BOOLEAN, (GObject *)repeat_urgent_blink, "active"); xfconf_g_property_bind (xfwm4_channel, "/general/mousewheel_rollup", G_TYPE_BOOLEAN, (GObject *)mousewheel_rollup, "active"); gtk_widget_set_sensitive (repeat_urgent_blink, gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (urgent_blink))); gtk_widget_set_sensitive (titleless_maximize_check, gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (borderless_maximize_check))); /* Workspaces tab */ xfconf_g_property_bind (xfwm4_channel, "/general/toggle_workspaces", G_TYPE_BOOLEAN, (GObject *)toggle_workspaces_check, "active"); xfconf_g_property_bind (xfwm4_channel, "/general/scroll_workspaces", G_TYPE_BOOLEAN, (GObject *)scroll_workspaces_check, "active"); xfconf_g_property_bind (xfwm4_channel, "/general/wrap_layout", G_TYPE_BOOLEAN, (GObject *)wrap_layout_check, "active"); xfconf_g_property_bind (xfwm4_channel, "/general/wrap_cycle", G_TYPE_BOOLEAN, (GObject *)wrap_cycle_check, "active"); /* Placement tab */ xfconf_g_property_bind (xfwm4_channel, "/general/placement_ratio", G_TYPE_INT, (GObject *) gtk_range_get_adjustment (GTK_RANGE (placement_ratio_scale)), "value"); /* Compositing tab */ xfconf_g_property_bind (xfwm4_channel, "/general/use_compositing", G_TYPE_BOOLEAN, (GObject *)use_compositing_check, "active"); xfconf_g_property_bind (xfwm4_channel, "/general/unredirect_overlays", G_TYPE_BOOLEAN, (GObject *)unredirect_overlays_check, "active"); #ifdef HAVE_LIBDRM xfconf_g_property_bind (xfwm4_channel, "/general/sync_to_vblank", G_TYPE_BOOLEAN, (GObject *)sync_to_vblank_check, "active"); #else gtk_widget_hide (sync_to_vblank_check); #endif xfconf_g_property_bind (xfwm4_channel, "/general/cycle_preview", G_TYPE_BOOLEAN, (GObject *)cycle_preview_check, "active"); xfconf_g_property_bind (xfwm4_channel, "/general/show_frame_shadow", G_TYPE_BOOLEAN, (GObject *)show_frame_shadow_check, "active"); xfconf_g_property_bind (xfwm4_channel, "/general/show_popup_shadow", G_TYPE_BOOLEAN, (GObject *)show_popup_shadow_check, "active"); xfconf_g_property_bind (xfwm4_channel, "/general/show_dock_shadow", G_TYPE_BOOLEAN, (GObject *)show_dock_shadow_check, "active"); xfconf_g_property_bind (xfwm4_channel, "/general/frame_opacity", G_TYPE_INT, (GObject *) gtk_range_get_adjustment (GTK_RANGE (frame_opacity_scale)), "value"); xfconf_g_property_bind (xfwm4_channel, "/general/resize_opacity", G_TYPE_INT, (GObject *) gtk_range_get_adjustment (GTK_RANGE (resize_opacity_scale)), "value"); xfconf_g_property_bind (xfwm4_channel, "/general/move_opacity", G_TYPE_INT, (GObject *) gtk_range_get_adjustment (GTK_RANGE (move_opacity_scale)), "value"); xfconf_g_property_bind (xfwm4_channel, "/general/inactive_opacity", G_TYPE_INT, (GObject *) gtk_range_get_adjustment (GTK_RANGE (inactive_opacity_scale)), "value"); xfconf_g_property_bind (xfwm4_channel, "/general/popup_opacity", G_TYPE_INT, (GObject *) gtk_range_get_adjustment (GTK_RANGE (popup_opacity_scale)), "value"); vbox = GTK_WIDGET (gtk_builder_get_object (builder, "main-vbox")); gtk_widget_show_all (vbox); g_free (easy_click); g_free (activate_action); }
int main(int argc, char **argv) { GtkBuilder *builder; GtkWidget *notebook, *xfae_page, *lbl; GError *error = NULL; XfconfChannel *channel; xfce_textdomain(GETTEXT_PACKAGE, LOCALEDIR, "UTF-8"); if(!gtk_init_with_args (&argc, &argv, "", option_entries, GETTEXT_PACKAGE, &error)) { if(G_LIKELY(error)) { g_print("%s: %s.\n", G_LOG_DOMAIN, error->message); g_print(_("Type '%s --help' for usage."), G_LOG_DOMAIN); g_print("\n"); g_error_free (error); } else g_error("Unable to open display."); return EXIT_FAILURE; } if(G_UNLIKELY(opt_version)) { g_print("%s %s (Xfce %s)\n\n", G_LOG_DOMAIN, PACKAGE_VERSION, xfce_version_string ()); g_print("%s\n", "Copyright (c) 2004-2014"); g_print("\t%s\n\n", _("The Xfce development team. All rights reserved.")); g_print(_("Please report bugs to <%s>."), PACKAGE_BUGREPORT); g_print("\n"); return EXIT_SUCCESS; } if(G_UNLIKELY(!xfconf_init(&error))) { xfce_dialog_show_error (NULL, error, _("Unable to contact settings server")); g_error_free(error); return EXIT_FAILURE; } gtk_window_set_default_icon_name("xfce4-session"); /* hook to make sure the libxfce4ui library is linked */ if (xfce_titled_dialog_get_type() == 0) return EXIT_FAILURE; builder = gtk_builder_new(); gtk_builder_add_from_string(builder, xfce4_session_settings_ui, xfce4_session_settings_ui_length, &error); if(!builder) { xfce_dialog_show_error(NULL, error, _("Unable to create user interface from embedded definition data")); g_error_free (error); return EXIT_FAILURE; } splash_settings_init(builder); session_editor_init(builder); /* FIXME: someday, glade-ify this, maybe. */ xfae_page = xfae_window_new(); gtk_widget_show(xfae_page); notebook = GTK_WIDGET(gtk_builder_get_object(builder, "plug-child")); lbl = gtk_label_new_with_mnemonic(_("App_lication Autostart")); gtk_widget_show(lbl); gtk_notebook_insert_page(GTK_NOTEBOOK(notebook), xfae_page, lbl, 2); channel = xfconf_channel_get(SETTINGS_CHANNEL); /* bind widgets to xfconf */ xfconf_g_property_bind(channel, "/chooser/AlwaysDisplay", G_TYPE_BOOLEAN, gtk_builder_get_object(builder, "chk_display_chooser"), "active"); xfconf_g_property_bind(channel, "/general/AutoSave", G_TYPE_BOOLEAN, gtk_builder_get_object(builder, "chk_session_autosave"), "active"); xfconf_g_property_bind(channel, "/general/PromptOnLogout", G_TYPE_BOOLEAN, gtk_builder_get_object(builder, "chk_logout_prompt"), "active"); xfconf_g_property_bind(channel, "/compat/LaunchGNOME", G_TYPE_BOOLEAN, gtk_builder_get_object(builder, "chk_compat_gnome"), "active"); xfconf_g_property_bind(channel, "/compat/LaunchKDE", G_TYPE_BOOLEAN, gtk_builder_get_object(builder, "chk_compat_kde"), "active"); xfconf_g_property_bind(channel, "/security/EnableTcp", G_TYPE_BOOLEAN, gtk_builder_get_object(builder, "chk_enable_tcp"), "active"); xfconf_g_property_bind(channel, "/shutdown/LockScreen", G_TYPE_BOOLEAN, gtk_builder_get_object(builder, "chk_lock_screen"), "active"); if(G_UNLIKELY(opt_socket_id == 0)) { GtkWidget *dialog = GTK_WIDGET(gtk_builder_get_object(builder, "xfce4_session_settings_dialog")); g_signal_connect(dialog, "response", G_CALLBACK(xfce4_session_settings_dialog_response), NULL); g_signal_connect(dialog, "delete-event", G_CALLBACK(gtk_main_quit), NULL); gtk_widget_show(dialog); /* To prevent the settings dialog to be saved in the session */ gdk_set_sm_client_id ("FAKE ID"); gtk_main(); } else { GtkWidget *plug, *plug_child; plug = gtk_plug_new(opt_socket_id); gtk_widget_show(plug); g_signal_connect(plug, "delete-event", G_CALLBACK(gtk_main_quit), NULL); plug_child = GTK_WIDGET(gtk_builder_get_object(builder, "plug-child")); gtk_widget_reparent(plug_child, plug); gtk_widget_show(plug_child); /* Stop startup notification */ gdk_notify_startup_complete(); gtk_main(); } g_object_unref(builder); return EXIT_SUCCESS; }
PlacesCfg* places_cfg_new(XfcePanelPlugin *plugin) { PlacesCfg *cfg; XfconfChannel *channel; gchar *property; cfg = g_object_new (XFCE_TYPE_PLACES_CFG, NULL); cfg->plugin = plugin; xfconf_init(NULL); channel = xfconf_channel_get ("xfce4-panel"); property = g_strconcat (xfce_panel_plugin_get_property_base (plugin), "/show-button-type", NULL); xfconf_g_property_bind (channel, property, G_TYPE_INT, cfg, "show-button-type"); g_free (property); property = g_strconcat (xfce_panel_plugin_get_property_base (plugin), "/button-label", NULL); xfconf_g_property_bind (channel, property, G_TYPE_STRING, cfg, "button-label"); g_free (property); property = g_strconcat (xfce_panel_plugin_get_property_base (plugin), "/show-icons", NULL); xfconf_g_property_bind (channel, property, G_TYPE_BOOLEAN, cfg, "show-icons"); g_free (property); property = g_strconcat (xfce_panel_plugin_get_property_base (plugin), "/show-volumes", NULL); xfconf_g_property_bind (channel, property, G_TYPE_BOOLEAN, cfg, "show-volumes"); g_free (property); property = g_strconcat (xfce_panel_plugin_get_property_base (plugin), "/mount-open-volumes", NULL); xfconf_g_property_bind (channel, property, G_TYPE_BOOLEAN, cfg, "mount-open-volumes"); g_free (property); property = g_strconcat (xfce_panel_plugin_get_property_base (plugin), "/show-bookmarks", NULL); xfconf_g_property_bind (channel, property, G_TYPE_BOOLEAN, cfg, "show-bookmarks"); g_free (property); property = g_strconcat (xfce_panel_plugin_get_property_base (plugin), "/server-connect-cmd", NULL); xfconf_g_property_bind (channel, property, G_TYPE_STRING, cfg, "server-connect-cmd"); g_free (property); property = g_strconcat (xfce_panel_plugin_get_property_base (plugin), "/network-cmd", NULL); xfconf_g_property_bind (channel, property, G_TYPE_STRING, cfg, "network-cmd"); g_free (property); property = g_strconcat (xfce_panel_plugin_get_property_base (plugin), "/show-recent", NULL); xfconf_g_property_bind (channel, property, G_TYPE_BOOLEAN, cfg, "show-recent"); g_free (property); property = g_strconcat (xfce_panel_plugin_get_property_base (plugin), "/show-recent-clear", NULL); xfconf_g_property_bind (channel, property, G_TYPE_BOOLEAN, cfg, "show-recent-clear"); g_free (property); property = g_strconcat (xfce_panel_plugin_get_property_base (plugin), "/show-recent-number", NULL); xfconf_g_property_bind (channel, property, G_TYPE_INT, cfg, "show-recent-number"); g_free (property); property = g_strconcat (xfce_panel_plugin_get_property_base (plugin), "/search-cmd", NULL); xfconf_g_property_bind (channel, property, G_TYPE_STRING, cfg, "search-cmd"); g_free (property); g_signal_connect_swapped(G_OBJECT(plugin), "configure-plugin", G_CALLBACK(places_cfg_open_dialog), cfg); xfce_panel_plugin_menu_show_configure(plugin); return cfg; }
/* Create and set up GtkBuilder */ static gboolean _xfdashboard_settings_create_builder(XfdashboardSettings *self) { XfdashboardSettingsPrivate *priv; gchar *builderFile; GtkBuilder *builder; GError *error; g_return_val_if_fail(XFDASHBOARD_IS_SETTINGS(self), FALSE); priv=self->priv; builderFile=NULL; builder=NULL; error=NULL; /* If builder is already set up return immediately */ if(priv->builder) return(TRUE); /* Find UI file */ builderFile=g_build_filename(PACKAGE_DATADIR, "xfdashboard", PREFERENCES_UI_FILE, NULL); g_debug("Trying UI file: %s", builderFile); if(!g_file_test(builderFile, G_FILE_TEST_EXISTS | G_FILE_TEST_IS_REGULAR)) { g_critical(_("Could not find UI file '%s'."), builderFile); /* Release allocated resources */ g_free(builderFile); /* Return fail result */ return(FALSE); } /* Create builder */ builder=gtk_builder_new(); if(!gtk_builder_add_from_file(builder, builderFile, &error)) { g_critical(_("Could not load UI resources from '%s': %s"), builderFile, error ? error->message : _("Unknown error")); /* Release allocated resources */ g_free(builderFile); g_object_unref(builder); if(error) g_error_free(error); /* Return fail result */ return(FALSE); } /* Loading UI resource was successful so take extra reference * from builder object to keep it alive. Also get widget, set up * xfconf bindings and connect signals. * REMEMBER: Set (widget's) default value _before_ setting up * xfconf binding. */ priv->builder=GTK_BUILDER(g_object_ref(builder)); g_debug("Loaded UI resources from '%s' successfully.", builderFile); /* Tab: General */ priv->widgetResetSearchOnResume=GTK_WIDGET(gtk_builder_get_object(priv->builder, "reset-search-on-resume")); gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(priv->widgetResetSearchOnResume), DEFAULT_RESET_SEARCH_ON_RESUME); xfconf_g_property_bind(priv->xfconfChannel, "/reset-search-on-resume", G_TYPE_BOOLEAN, priv->widgetResetSearchOnResume, "active"); priv->widgetSwitchViewOnResume=GTK_WIDGET(gtk_builder_get_object(priv->builder, "switch-view-on-resume")); if(priv->widgetSwitchViewOnResume) { GtkCellRenderer *renderer; GtkListStore *listStore; GtkTreeIter listStoreIter; GtkTreeIter *defaultListStoreIter; XfdashboardSettingsResumableViews *iter; gchar *defaultValue; /* Get default value from settings */ defaultValue=xfconf_channel_get_string(priv->xfconfChannel, "/switch-view-on-resume", DEFAULT_SWITCH_VIEW_ON_RESUME); if(!defaultValue) defaultValue=g_strdup(""); /* Clear combo box */ gtk_cell_layout_clear(GTK_CELL_LAYOUT(priv->widgetSwitchViewOnResume)); /* Set up renderer for combo box */ renderer=gtk_cell_renderer_text_new(); gtk_cell_layout_pack_start(GTK_CELL_LAYOUT(priv->widgetSwitchViewOnResume), renderer, TRUE); gtk_cell_layout_add_attribute(GTK_CELL_LAYOUT(priv->widgetSwitchViewOnResume), renderer, "text", 0); /* Set up list to show at combo box */ defaultListStoreIter=NULL; listStore=gtk_list_store_new(2, G_TYPE_STRING, G_TYPE_STRING); for(iter=resumableViews; iter->displayName; ++iter) { gtk_list_store_append(listStore, &listStoreIter); gtk_list_store_set(listStore, &listStoreIter, 0, _(iter->displayName), 1, iter->viewName, -1); if(!g_strcmp0(iter->viewName, defaultValue)) { defaultListStoreIter=gtk_tree_iter_copy(&listStoreIter); } } gtk_combo_box_set_model(GTK_COMBO_BOX(priv->widgetSwitchViewOnResume), GTK_TREE_MODEL(listStore)); g_object_unref(G_OBJECT(listStore)); /* Set up default value */ if(defaultListStoreIter) { gtk_combo_box_set_active_iter(GTK_COMBO_BOX(priv->widgetSwitchViewOnResume), defaultListStoreIter); gtk_tree_iter_free(defaultListStoreIter); defaultListStoreIter=NULL; } /* Connect signals */ g_signal_connect_swapped(priv->widgetSwitchViewOnResume, "changed", G_CALLBACK(_xfdashboard_settings_widget_changed_switch_view_on_resume), self); g_signal_connect_swapped(priv->xfconfChannel, "property-changed::/switch-view-on-resume", G_CALLBACK(_xfdashboard_settings_xfconf_changed_switch_view_on_resume), self); /* Release allocated resources */ if(defaultValue) g_free(defaultValue); } priv->widgetNotificationTimeout=GTK_WIDGET(gtk_builder_get_object(priv->builder, "notification-timeout")); if(priv->widgetNotificationTimeout) { GtkAdjustment *adjustment; gdouble defaultValue; /* Get default value */ defaultValue=xfconf_channel_get_uint(priv->xfconfChannel, "/min-notification-timeout", DEFAULT_NOTIFICATION_TIMEOUT)/1000.0; /* Set up scaling settings of widget */ adjustment=GTK_ADJUSTMENT(gtk_builder_get_object(priv->builder, "notification-timeout-adjustment")); gtk_range_set_adjustment(GTK_RANGE(priv->widgetNotificationTimeout), adjustment); /* Set up default value */ gtk_range_set_value(GTK_RANGE(priv->widgetNotificationTimeout), defaultValue); /* Connect signals */ g_signal_connect(priv->widgetNotificationTimeout, "format-value", G_CALLBACK(_xfdashboard_settings_on_format_notification_timeout_value), NULL); g_signal_connect_swapped(priv->widgetNotificationTimeout, "value-changed", G_CALLBACK(_xfdashboard_settings_widget_changed_notification_timeout), self); g_signal_connect_swapped(priv->xfconfChannel, "property-changed::/min-notification-timeout", G_CALLBACK(_xfdashboard_settings_xfconf_changed_notification_timeout), self); } priv->widgetEnableUnmappedWindowWorkaround=GTK_WIDGET(gtk_builder_get_object(priv->builder, "enable-unmapped-window-workaround")); gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(priv->widgetEnableUnmappedWindowWorkaround), FALSE); xfconf_g_property_bind(priv->xfconfChannel, "/enable-unmapped-window-workaround", G_TYPE_BOOLEAN, priv->widgetEnableUnmappedWindowWorkaround, "active"); priv->widgetShowAllApps=GTK_WIDGET(gtk_builder_get_object(priv->builder, "show-all-apps")); gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(priv->widgetShowAllApps), FALSE); xfconf_g_property_bind(priv->xfconfChannel, "/components/applications-view/show-all-apps", G_TYPE_BOOLEAN, priv->widgetShowAllApps, "active"); priv->widgetScrollEventChangedWorkspace=GTK_WIDGET(gtk_builder_get_object(priv->builder, "scroll-event-changes-workspace")); gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(priv->widgetScrollEventChangedWorkspace), FALSE); xfconf_g_property_bind(priv->xfconfChannel, "/components/windows-view/scroll-event-changes-workspace", G_TYPE_BOOLEAN, priv->widgetScrollEventChangedWorkspace, "active"); priv->widgetCloseButton=GTK_WIDGET(gtk_builder_get_object(priv->builder, "close-button")); g_signal_connect_swapped(priv->widgetCloseButton, "clicked", G_CALLBACK(_xfdashboard_settings_on_close_clicked), self); /* Tab: Themes */ priv->widgetThemeScreenshot=GTK_WIDGET(gtk_builder_get_object(priv->builder, "theme-screenshot")); priv->widgetThemeNameLabel=GTK_WIDGET(gtk_builder_get_object(priv->builder, "theme-name-label")); priv->widgetThemeName=GTK_WIDGET(gtk_builder_get_object(priv->builder, "theme-name")); priv->widgetThemeAuthorLabel=GTK_WIDGET(gtk_builder_get_object(priv->builder, "theme-author-label")); priv->widgetThemeAuthor=GTK_WIDGET(gtk_builder_get_object(priv->builder, "theme-author")); priv->widgetThemeVersionLabel=GTK_WIDGET(gtk_builder_get_object(priv->builder, "theme-version-label")); priv->widgetThemeVersion=GTK_WIDGET(gtk_builder_get_object(priv->builder, "theme-version")); priv->widgetThemeDescriptionLabel=GTK_WIDGET(gtk_builder_get_object(priv->builder, "theme-description-label")); priv->widgetThemeDescription=GTK_WIDGET(gtk_builder_get_object(priv->builder, "theme-description")); priv->widgetThemes=GTK_WIDGET(gtk_builder_get_object(priv->builder, "themes")); if(priv->widgetThemes) { gchar *currentTheme; GValue defaultValue=G_VALUE_INIT; GtkTreeSelection *selection; GtkCellRenderer *renderer; /* Get default value */ currentTheme=xfconf_channel_get_string(priv->xfconfChannel, "/theme", DEFAULT_THEME); g_value_init(&defaultValue, G_TYPE_STRING); g_value_set_string(&defaultValue, currentTheme); g_free(currentTheme); /* Themes widget has only one column displaying theme's name. * Set up column and renderer. */ renderer=gtk_cell_renderer_text_new(); gtk_tree_view_insert_column_with_attributes(GTK_TREE_VIEW(priv->widgetThemes), 0, _("Theme"), renderer, "text", COLUMN_THEME_NAME, NULL); /* Ensure only one selection at time is possible */ selection=gtk_tree_view_get_selection(GTK_TREE_VIEW(priv->widgetThemes)); gtk_tree_selection_set_mode(selection, GTK_SELECTION_SINGLE); /* Populate list of available themes */ _xfdashboard_settings_populate_themes_list(self, priv->widgetThemes); /* Select default value */ _xfdashboard_settings_xfconf_changed_theme(self, "/theme", &defaultValue, priv->xfconfChannel); _xfdashboard_settings_widget_changed_theme(self, selection); /* Connect signals */ g_signal_connect_swapped(selection, "changed", G_CALLBACK(_xfdashboard_settings_widget_changed_theme), self); g_signal_connect_swapped(priv->xfconfChannel, "property-changed::/theme", G_CALLBACK(_xfdashboard_settings_xfconf_changed_theme), self); /* Release allocated resources */ g_value_unset(&defaultValue); } /* Release allocated resources */ g_free(builderFile); g_object_unref(builder); /* Return success result */ return(TRUE); }