summaryrefslogtreecommitdiff
path: root/settings
diff options
context:
space:
mode:
authorSimon Steinbeiss <simon.steinbeiss@elfenbeinturm.at>2019-05-11 00:12:01 +0200
committerSimon Steinbeiss <simon.steinbeiss@elfenbeinturm.at>2019-05-13 22:10:28 +0200
commit38b5353a1b682cb5d88a779e3d46fa24d852db69 (patch)
tree5ae5364de2fde2c5034c659930193614eccb7f79 /settings
parentbaa7a70003751689e837048647722808fa67db6a (diff)
downloadxfce4-session-38b5353a1b682cb5d88a779e3d46fa24d852db69.tar.gz
Show saved sessions in settings dialog
Diffstat (limited to 'settings')
-rw-r--r--settings/main.c34
-rw-r--r--settings/session-editor.c33
-rw-r--r--settings/xfce4-session-settings.ui50
3 files changed, 109 insertions, 8 deletions
diff --git a/settings/main.c b/settings/main.c
index cd488c7b..720cec16 100644
--- a/settings/main.c
+++ b/settings/main.c
@@ -33,6 +33,8 @@
#include <libxfce4util/libxfce4util.h>
#include <libxfce4ui/libxfce4ui.h>
+#include <libxfsm/xfsm-util.h>
+
#include "xfae-window.h"
#include "xfce4-session-settings-common.h"
#include "xfce4-session-settings_ui.h"
@@ -49,6 +51,26 @@ static void xfce4_session_settings_dialog_response (GtkDialog *dialog, gint resp
}
}
+static void
+xfce4_session_settings_show_saved_sessions (GtkBuilder *builder,
+ XfceRc *rc,
+ gboolean visible)
+{
+ GtkWidget *notebook = GTK_WIDGET (gtk_builder_get_object (builder, "plug-child"));
+ GtkWidget *sessions_treeview = GTK_WIDGET (gtk_builder_get_object (builder, "saved-sessions-list"));
+ GtkTreeModel *model;
+ GList *sessions;
+
+ gtk_widget_set_visible (gtk_notebook_get_nth_page (GTK_NOTEBOOK (notebook), 3), visible);
+ if (visible == FALSE)
+ return;
+
+ settings_list_sessions_treeview_init (GTK_TREE_VIEW (sessions_treeview));
+ sessions = settings_list_sessions (rc);
+ model = gtk_tree_view_get_model (GTK_TREE_VIEW (sessions_treeview));
+ settings_list_sessions_populate (model, sessions);
+}
+
int
main(int argc,
char **argv)
@@ -59,6 +81,8 @@ main(int argc,
GtkWidget *lbl;
GError *error = NULL;
XfconfChannel *channel;
+ XfceRc *rc;
+ gboolean visible;
Window opt_socket_id = 0;
gboolean opt_version = FALSE;
@@ -125,6 +149,8 @@ main(int argc,
session_editor_init(builder);
+ channel = xfconf_channel_get (SETTINGS_CHANNEL);
+
/* FIXME: someday, glade-ify this, maybe. */
xfae_page = xfae_window_new();
gtk_widget_show(xfae_page);
@@ -133,7 +159,13 @@ main(int argc,
gtk_widget_show(lbl);
gtk_notebook_insert_page(GTK_NOTEBOOK(notebook), xfae_page, lbl, 1);
- channel = xfconf_channel_get(SETTINGS_CHANNEL);
+ /* Check if there are saved sessions and if so, show the "Saved Sessions" tab */
+ rc = settings_list_sessions_open_rc ();
+ if (rc)
+ visible = TRUE;
+ else
+ visible = FALSE;
+ xfce4_session_settings_show_saved_sessions (builder, rc, visible);
/* bind widgets to xfconf */
xfconf_g_property_bind(channel, "/chooser/AlwaysDisplay", G_TYPE_BOOLEAN,
diff --git a/settings/session-editor.c b/settings/session-editor.c
index 8d3b809a..b9dd1939 100644
--- a/settings/session-editor.c
+++ b/settings/session-editor.c
@@ -33,6 +33,8 @@
#include <libxfce4util/libxfce4util.h>
#include <libxfce4ui/libxfce4ui.h>
+#include <libxfsm/xfsm-util.h>
+
#include "xfce4-session-settings-common.h"
#include "xfce4-session-marshal.h"
#include "xfsm-client-dbus-client.h"
@@ -113,9 +115,16 @@ pulse_session_save_dialog(gpointer data)
static void
session_editor_save_session(GtkWidget *btn,
- GtkWidget *dialog)
+ GtkBuilder *builder)
{
+ GtkWidget *dialog = GTK_WIDGET (gtk_builder_get_object (builder, "dialog_saving"));
+ GtkWidget *treeview = GTK_WIDGET (gtk_builder_get_object (builder, "saved-sessions-list"));
+ GtkWidget *notebook = GTK_WIDGET (gtk_builder_get_object (builder, "plug-child"));
+ GtkWidget *btn_clear = GTK_WIDGET (gtk_builder_get_object(builder, "btn_clear_sessions"));
GtkWidget *pbar = g_object_get_data(G_OBJECT(dialog), "pbar");
+ GtkTreeModel *model;
+ GList *sessions;
+ XfceRc *rc;
guint pulse_id;
guint sig_id;
GError *error = NULL;
@@ -147,6 +156,17 @@ session_editor_save_session(GtkWidget *btn,
g_signal_handler_disconnect(manager_dbus_proxy, sig_id);
gtk_widget_hide(dialog);
gtk_widget_set_sensitive(btn, TRUE);
+ /* After saving the session we ensure the clear button is sensitive */
+ gtk_widget_set_sensitive (btn_clear, TRUE);
+ /* Always make sure the "Saved Sessions" tab is visible and the treeview is populated after saving a session */
+ rc = settings_list_sessions_open_rc ();
+ if (rc)
+ {
+ gtk_widget_show (gtk_notebook_get_nth_page (GTK_NOTEBOOK (notebook), 3));
+ sessions = settings_list_sessions (rc);
+ model = gtk_tree_view_get_model (GTK_TREE_VIEW (treeview));
+ settings_list_sessions_populate (model, sessions);
+ }
}
static void
@@ -160,8 +180,10 @@ session_editor_sel_changed_btn(GtkTreeSelection *sel,
static void
session_editor_clear_sessions(GtkWidget *btn,
- GtkWidget *treeview)
+ GtkBuilder *builder)
{
+ GtkWidget *treeview = GTK_WIDGET (gtk_builder_get_object (builder, "treeview_clients"));
+ GtkWidget *notebook = GTK_WIDGET (gtk_builder_get_object (builder, "plug-child"));
TRACE("entering");
gtk_widget_set_sensitive(btn, FALSE);
@@ -218,6 +240,9 @@ session_editor_clear_sessions(GtkWidget *btn,
g_dir_close(cache_dir);
g_free(cache_dir_path);
+
+ /* Always make sure the "Saved Sessions" tab is hidden after deleting all sessions */
+ gtk_widget_hide (gtk_notebook_get_nth_page (GTK_NOTEBOOK (notebook), 3));
}
else {
gtk_widget_set_sensitive(btn, TRUE);
@@ -833,11 +858,11 @@ session_editor_init(GtkBuilder *builder)
btn_save = gtk_builder_get_object(builder, "btn_save_session");
g_signal_connect(btn_save, "clicked",
- G_CALLBACK(session_editor_save_session), GTK_WIDGET(dlg_saving));
+ G_CALLBACK(session_editor_save_session), builder);
btn_clear = gtk_builder_get_object(builder, "btn_clear_sessions");
g_signal_connect(btn_clear, "clicked",
- G_CALLBACK(session_editor_clear_sessions), treeview);
+ G_CALLBACK(session_editor_clear_sessions), builder);
btn_quit = gtk_builder_get_object(builder, "btn_quit_client");
g_signal_connect(btn_quit, "clicked",
diff --git a/settings/xfce4-session-settings.ui b/settings/xfce4-session-settings.ui
index 5d513d0e..d77e34ae 100644
--- a/settings/xfce4-session-settings.ui
+++ b/settings/xfce4-session-settings.ui
@@ -372,7 +372,7 @@
<object class="GtkLabel" id="label3">
<property name="visible">True</property>
<property name="can_focus">False</property>
- <property name="label" translatable="yes">Sessio_n</property>
+ <property name="label" translatable="yes">Current Sessio_n</property>
<property name="use_underline">True</property>
</object>
<packing>
@@ -381,6 +381,50 @@
</packing>
</child>
<child>
+ <object class="GtkBox">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="border_width">12</property>
+ <property name="orientation">vertical</property>
+ <child>
+ <object class="GtkScrolledWindow" id="saved-sessions">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="shadow_type">in</property>
+ <child>
+ <object class="GtkTreeView" id="saved-sessions-list">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <child internal-child="selection">
+ <object class="GtkTreeSelection"/>
+ </child>
+ </object>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="position">3</property>
+ <property name="reorderable">True</property>
+ </packing>
+ </child>
+ <child type="tab">
+ <object class="GtkLabel">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label" translatable="yes">Saved Sessions</property>
+ </object>
+ <packing>
+ <property name="position">1</property>
+ <property name="tab_fill">False</property>
+ </packing>
+ </child>
+ <child>
<object class="GtkBox" id="vbox3">
<property name="visible">True</property>
<property name="can_focus">False</property>
@@ -546,7 +590,7 @@
</child>
</object>
<packing>
- <property name="position">2</property>
+ <property name="position">3</property>
</packing>
</child>
<child type="tab">
@@ -557,7 +601,7 @@
<property name="use_underline">True</property>
</object>
<packing>
- <property name="position">2</property>
+ <property name="position">3</property>
<property name="tab_fill">False</property>
</packing>
</child>