[Goodies-commits] r5227 - in thunar-shares-plugin/trunk: . data po thunar-plugin
Daniel Morales
danielm at xfce.org
Thu Aug 14 16:41:35 CEST 2008
Author: danielm
Date: 2008-08-14 14:41:35 +0000 (Thu, 14 Aug 2008)
New Revision: 5227
Removed:
thunar-shares-plugin/trunk/data/admin-dialog.xml
Modified:
thunar-shares-plugin/trunk/ChangeLog
thunar-shares-plugin/trunk/data/Makefile.am
thunar-shares-plugin/trunk/po/POTFILES.in
thunar-shares-plugin/trunk/thunar-plugin/thunar-shares-plugin.c
thunar-shares-plugin/trunk/thunar-plugin/tsp-admin-editor.c
thunar-shares-plugin/trunk/thunar-plugin/tsp-admin-editor.h
thunar-shares-plugin/trunk/thunar-plugin/tsp-admin.c
thunar-shares-plugin/trunk/thunar-plugin/tsp-admin.h
thunar-shares-plugin/trunk/thunar-plugin/tsp-provider.c
Log:
* data/Makefile.am:
* po/POTFILES.in:
* data/admin-dialog.xml: Removed XML file
* thunar-plugin/tsp-provider.c:
* thunar-plugin/thunar-shares-plugin.c:
* thunar-plugin/tsp-admin-editor.[ch]:
* thunar-plugin/tsp-admin.[ch]: Drop GtkBuilder code and writes a
GObject to handle the shares-admin manager. (Thunar preferences dialog) $
Modified: thunar-shares-plugin/trunk/ChangeLog
===================================================================
--- thunar-shares-plugin/trunk/ChangeLog 2008-08-13 16:59:00 UTC (rev 5226)
+++ thunar-shares-plugin/trunk/ChangeLog 2008-08-14 14:41:35 UTC (rev 5227)
@@ -1,3 +1,14 @@
+2008-08-14 Daniel Morales <daniel at daniel.com.uy>
+
+ * data/Makefile.am:
+ * po/POTFILES.in:
+ * data/admin-dialog.xml: Removed XML file
+ * thunar-plugin/tsp-provider.c:
+ * thunar-plugin/thunar-shares-plugin.c:
+ * thunar-plugin/tsp-admin-editor.[ch]:
+ * thunar-plugin/tsp-admin.[ch]: Drop GtkBuilder code and writes a
+ GObject to handle the shares-admin manager. (Thunar preferences dialog)
+
2008-08-13 Daniel Morales <daniel at daniel.com.uy>
* data/admin-dialog-editor.xml: Removed file
Modified: thunar-shares-plugin/trunk/data/Makefile.am
===================================================================
--- thunar-shares-plugin/trunk/data/Makefile.am 2008-08-13 16:59:00 UTC (rev 5226)
+++ thunar-shares-plugin/trunk/data/Makefile.am 2008-08-14 14:41:35 UTC (rev 5227)
@@ -1,8 +1,7 @@
xmldir = $(datadir)/thunar-shares
-xml_DATA = admin-dialog.xml \
- dialogs.xml
+xml_DATA = dialogs.xml
EXTRA_DIST = $(xml_DATA)
Deleted: thunar-shares-plugin/trunk/data/admin-dialog.xml
Modified: thunar-shares-plugin/trunk/po/POTFILES.in
===================================================================
--- thunar-shares-plugin/trunk/po/POTFILES.in 2008-08-13 16:59:00 UTC (rev 5226)
+++ thunar-shares-plugin/trunk/po/POTFILES.in 2008-08-14 14:41:35 UTC (rev 5227)
@@ -9,6 +9,4 @@
thunar-plugin/tsp-admin-editor.c
thunar-plugin/tsp-page.c
thunar-plugin/tsp-provider.c
-[type: gettext/glade]data/admin-dialog-editor.xml
-[type: gettext/glade]data/admin-dialog.xml
[type: gettext/glade]data/dialogs.xml
Modified: thunar-shares-plugin/trunk/thunar-plugin/thunar-shares-plugin.c
===================================================================
--- thunar-shares-plugin/trunk/thunar-plugin/thunar-shares-plugin.c 2008-08-13 16:59:00 UTC (rev 5226)
+++ thunar-shares-plugin/trunk/thunar-plugin/thunar-shares-plugin.c 2008-08-14 14:41:35 UTC (rev 5227)
@@ -27,6 +27,7 @@
#include "tsp-admin-editor.h"
#include "tsp-provider.h"
+#include "tsp-admin.h"
#include "tsp-page.h"
static GType type_list[1];
@@ -57,6 +58,7 @@
/* register the types provided by this plugin */
tsp_page_register_type (plugin);
tsp_admin_editor_register_type (plugin);
+ tsp_admin_manager_register_type (plugin);
tsp_provider_register_type (plugin);
/* setup the plugin provider type list */
Modified: thunar-shares-plugin/trunk/thunar-plugin/tsp-admin-editor.c
===================================================================
--- thunar-shares-plugin/trunk/thunar-plugin/tsp-admin-editor.c 2008-08-13 16:59:00 UTC (rev 5226)
+++ thunar-shares-plugin/trunk/thunar-plugin/tsp-admin-editor.c 2008-08-14 14:41:35 UTC (rev 5227)
@@ -64,8 +64,6 @@
/* Current share name */
gchar *old_name;
-
- gpointer admin;
};
THUNARX_DEFINE_TYPE (TspAdminEditor, tsp_admin_editor, GTK_TYPE_DIALOG);
@@ -208,10 +206,16 @@
if (share_info)
{
+ GtkWindow *manager;
+
shares_free_share_info (share_info);
/* Reload share list */
- tsp_admin_load_shares (editor->admin);
+ //tsp_admin_manager_reload_shares (editor->manager);
+ manager = gtk_window_get_transient_for (GTK_WINDOW (editor));
+
+ if (manager != NULL && TSP_ADMIN_IS_MANAGER (manager))
+ tsp_admin_manager_reload_shares (TSP_ADMIN_MANAGER (manager));
return TRUE;
}
@@ -253,28 +257,23 @@
}
GtkWidget *
-tsp_admin_editor_new (GtkWindow *parent,
- gpointer data)
+tsp_admin_editor_new (TspAdminManager *manager)
{
GtkWidget *dialog;
dialog = g_object_new (TSP_ADMIN_TYPE_EDITOR, NULL);
- if (parent != NULL)
- gtk_window_set_transient_for (GTK_WINDOW (dialog), GTK_WINDOW (parent));
+ if (manager != NULL)
+ gtk_window_set_transient_for (GTK_WINDOW (dialog), GTK_WINDOW (manager));
- if (data != NULL)
- TSP_ADMIN_EDITOR(dialog)->admin = data;
-
return dialog;
}
GtkWidget *
-tsp_admin_editor_new_with_path (GtkWindow *parent,
- gpointer data,
- const char *path)
+tsp_admin_editor_new_with_path (TspAdminManager *manager,
+ const char *path)
{
- GtkWidget *dialog = tsp_admin_editor_new (parent, data);
+ GtkWidget *dialog = tsp_admin_editor_new (manager);
if (path != NULL)
tsp_admin_editor_set_path (TSP_ADMIN_EDITOR (dialog), path);
Modified: thunar-shares-plugin/trunk/thunar-plugin/tsp-admin-editor.h
===================================================================
--- thunar-shares-plugin/trunk/thunar-plugin/tsp-admin-editor.h 2008-08-13 16:59:00 UTC (rev 5226)
+++ thunar-shares-plugin/trunk/thunar-plugin/tsp-admin-editor.h 2008-08-14 14:41:35 UTC (rev 5227)
@@ -23,6 +23,7 @@
#define __TSP_ADMIN_EDITOR_H__
#include <thunarx/thunarx.h>
+#include "tsp-admin.h"
G_BEGIN_DECLS;
@@ -39,9 +40,9 @@
GType tsp_admin_editor_get_type (void) G_GNUC_CONST G_GNUC_INTERNAL;
void tsp_admin_editor_register_type (ThunarxProviderPlugin *plugin) G_GNUC_INTERNAL;
-GtkWidget *tsp_admin_editor_new (GtkWindow *parent, gpointer data);
+GtkWidget *tsp_admin_editor_new (TspAdminManager *manager);
-GtkWidget *tsp_admin_editor_new_with_path (GtkWindow *parent, gpointer data, const char *path);
+GtkWidget *tsp_admin_editor_new_with_path (TspAdminManager *manager, const char *path);
G_END_DECLS;
Modified: thunar-shares-plugin/trunk/thunar-plugin/tsp-admin.c
===================================================================
--- thunar-shares-plugin/trunk/thunar-plugin/tsp-admin.c 2008-08-13 16:59:00 UTC (rev 5226)
+++ thunar-shares-plugin/trunk/thunar-plugin/tsp-admin.c 2008-08-14 14:41:35 UTC (rev 5227)
@@ -24,245 +24,323 @@
#endif
#include <gtk/gtk.h>
+#include <glib/gi18n.h>
#include <libshares/shares.h>
-#include <libshares/libshares-xml.h>
#include <libshares/libshares-util.h>
#include "tsp-admin.h"
#include "tsp-admin-editor.h"
-#define XML_FILE "admin-dialog.xml"
-
#define SHARES_ICON_NAME "gnome-fs-share"
enum {
- TSP_ADMIN_COL_ICON = 0,
- TSP_ADMIN_COL_TXT,
- TSP_ADMIN_COL_PATH
+ TSP_MANAGER_COL_ICON = 0,
+ TSP_MANAGER_COL_TXT,
+ TSP_MANAGER_COL_PATH,
+ TSP_MANAGER_N_COLS
};
-typedef struct {
- GtkWidget *dialog;
+static void tsp_admin_manager_class_init (TspAdminManagerClass *klass);
+static void tsp_admin_manager_init (TspAdminManager *manager);
+static void tsp_admin_manager_finalize (GObject *object);
- GtkWidget *share_list;
- GtkWidget *share_edit;
- GtkWidget *share_remove;
-} TspAdmin;
+static void tsp_admin_manager_response (GtkDialog *dialog,
+ gint response);
-static void admin_response_cb (GtkWidget *widget,
- gint response,
- TspAdmin *admin);
+static void tsp_admin_manager_select_cb (GtkTreeSelection *selection,
+ TspAdminManager *manager);
-static void admin_destroy_cb (GtkWidget *widget,
- TspAdmin *admin);
+static void tsp_admin_manager_add_cb (GtkButton *button,
+ TspAdminManager *manager);
+static void tsp_admin_manager_edit_cb (GtkButton *button,
+ TspAdminManager *manager);
+static void tsp_admin_manager_remove_cb (GtkButton *button,
+ TspAdminManager *manager);
-static void admin_selection_cb (GtkTreeSelection *selection,
- TspAdmin *admin);
+static void tsp_admin_manager_foreach (gpointer data,
+ gpointer user_data);
-static void admin_add_cb (GtkButton *button,
- TspAdmin *admin);
-static void admin_edit_cb (GtkButton *button,
- TspAdmin *admin);
-static void admin_remove_cb (GtkButton *button,
- TspAdmin *admin);
+struct _TspAdminManagerClass
+{
+ GtkDialogClass __parent__;
+};
-static void admin_shares_foreach (gpointer data,
- gpointer user_data);
+struct _TspAdminManager
+{
+ GtkDialog __parent__;
+
+ GtkWidget *share_list;
+ GtkWidget *share_edit;
+ GtkWidget *share_remove;
+};
+THUNARX_DEFINE_TYPE (TspAdminManager, tsp_admin_manager, GTK_TYPE_DIALOG);
+
static void
-admin_response_cb (GtkWidget *widget,
- gint response,
- TspAdmin *admin)
+tsp_admin_manager_class_init (TspAdminManagerClass *klass)
{
- if (response == GTK_RESPONSE_OK)
- {
- /* Bleh.. */
- }
- gtk_widget_destroy (widget);
+ GtkDialogClass *gtkdialog_class;
+ GObjectClass *gobject_class;
+
+ gobject_class = G_OBJECT_CLASS (klass);
+ gobject_class->finalize = tsp_admin_manager_finalize;
+
+ gtkdialog_class = GTK_DIALOG_CLASS (klass);
+ gtkdialog_class->response = tsp_admin_manager_response;
}
static void
-admin_destroy_cb (GtkWidget *widget,
- TspAdmin *admin)
+tsp_admin_manager_init (TspAdminManager *manager)
{
- g_free (admin);
+ GtkWidget *vbox;
+ GtkWidget *hbox;
+ GtkWidget *widget;
+ GtkWidget *buttonbox;
+ GtkListStore *liststore;
+ GtkCellRenderer *renderer;
+ GtkTreeViewColumn *column;
+ GtkTreeSelection *selection;
+
+ vbox = GTK_WIDGET (GTK_DIALOG (manager)->vbox);
+
+ /* Dialog setup */
+ gtk_window_set_title (GTK_WINDOW (manager), _("Thunar - Manage Shared Folders"));
+ gtk_dialog_set_has_separator (GTK_DIALOG (manager), FALSE);
+ gtk_window_set_destroy_with_parent (GTK_WINDOW (manager), TRUE);
+ gtk_window_set_modal (GTK_WINDOW (manager), TRUE);
+ gtk_window_set_position (GTK_WINDOW (manager), GTK_WIN_POS_CENTER_ON_PARENT);
+ gtk_window_set_type_hint (GTK_WINDOW (manager), GDK_WINDOW_TYPE_HINT_DIALOG);
+ gtk_window_set_default_size (GTK_WINDOW (manager), 500, 280);
+ gtk_container_set_border_width (GTK_CONTAINER (manager), 5);
+
+ /* Dialog response and buttons */
+ gtk_dialog_add_button (GTK_DIALOG (manager), GTK_STOCK_CLOSE, GTK_RESPONSE_CLOSE);
+ gtk_dialog_set_default_response (GTK_DIALOG (manager), GTK_RESPONSE_CLOSE);
+
+ hbox = gtk_hbox_new (FALSE, 10);
+ gtk_box_pack_start (GTK_BOX (vbox), hbox, TRUE, TRUE, 5);
+
+ /* List view */
+ widget = gtk_scrolled_window_new (NULL, NULL);
+ gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (widget), GTK_POLICY_NEVER, GTK_POLICY_AUTOMATIC);
+ gtk_scrolled_window_set_shadow_type (GTK_SCROLLED_WINDOW (widget), GTK_SHADOW_IN);
+ gtk_box_pack_start (GTK_BOX (hbox), widget, TRUE, TRUE, 0);
+
+ manager->share_list = gtk_tree_view_new ();
+ gtk_tree_view_set_enable_search (GTK_TREE_VIEW (manager->share_list), FALSE);
+ gtk_tree_view_set_headers_visible (GTK_TREE_VIEW (manager->share_list), FALSE);
+ gtk_container_add (GTK_CONTAINER (widget), manager->share_list);
+
+ /* List model */
+ liststore = gtk_list_store_new (TSP_MANAGER_N_COLS, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_STRING);
+ gtk_tree_view_set_model (GTK_TREE_VIEW (manager->share_list), GTK_TREE_MODEL (liststore));
+
+ /* Tree view columns and renders */
+ column = gtk_tree_view_column_new ();
+ gtk_tree_view_column_set_expand (column, TRUE);
+ gtk_tree_view_column_set_resizable (column, FALSE);
+ gtk_tree_view_append_column (GTK_TREE_VIEW (manager->share_list), column);
+
+ renderer = gtk_cell_renderer_pixbuf_new ();
+ g_object_set (G_OBJECT (renderer), "xpad", 2, "ypad", 2, "stock-size", GTK_ICON_SIZE_DND, NULL);
+ gtk_tree_view_column_pack_start (column, renderer, FALSE);
+ gtk_tree_view_column_set_attributes (column, renderer, "icon-name", TSP_MANAGER_COL_ICON, NULL);
+
+ renderer = gtk_cell_renderer_text_new ();
+ gtk_tree_view_column_pack_start (column, renderer, TRUE);
+ gtk_tree_view_column_set_attributes (column, renderer, "markup", TSP_MANAGER_COL_TXT, NULL);
+
+ /* Setup selection changes */
+ selection = gtk_tree_view_get_selection (GTK_TREE_VIEW (manager->share_list));
+ gtk_tree_selection_set_mode (selection, GTK_SELECTION_SINGLE);
+ g_signal_connect (G_OBJECT (selection), "changed", G_CALLBACK (tsp_admin_manager_select_cb), manager);
+
+ /* Buttons */
+ buttonbox = gtk_vbutton_box_new ();
+ gtk_box_set_spacing (GTK_BOX (buttonbox), 5);
+ gtk_button_box_set_layout (GTK_BUTTON_BOX (buttonbox), GTK_BUTTONBOX_START);
+ gtk_box_pack_start (GTK_BOX (hbox), buttonbox, FALSE, FALSE, 0);
+
+ widget = gtk_button_new_from_stock (GTK_STOCK_ADD);
+ g_signal_connect (G_OBJECT (widget), "clicked", G_CALLBACK (tsp_admin_manager_add_cb), manager);
+ gtk_container_add (GTK_CONTAINER (buttonbox), widget);
+
+ manager->share_edit = gtk_button_new_from_stock (GTK_STOCK_EDIT);
+ g_signal_connect (G_OBJECT (manager->share_edit), "clicked", G_CALLBACK (tsp_admin_manager_edit_cb), manager);
+ gtk_container_add (GTK_CONTAINER (buttonbox), manager->share_edit);
+
+ manager->share_remove = gtk_button_new_from_stock (GTK_STOCK_REMOVE);
+ g_signal_connect (G_OBJECT (manager->share_remove), "clicked", G_CALLBACK (tsp_admin_manager_remove_cb), manager);
+ gtk_container_add (GTK_CONTAINER (buttonbox), manager->share_remove);
+
+ /* Disable edit and remove buttons */
+ gtk_widget_set_sensitive (manager->share_edit, FALSE);
+ gtk_widget_set_sensitive (manager->share_remove, FALSE);
+
+ /* Let's show all ;) */
+ gtk_widget_show_all (vbox);
+
+ /* Load shares */
+ tsp_admin_manager_reload_shares (manager);
}
+static void
+tsp_admin_manager_finalize (GObject *object)
+{
+ /*TspAdminManager *manager = TSP_ADMIN_MANAGER (object);*/
+
+ /* Cleanup... */
+
+ (*G_OBJECT_CLASS (tsp_admin_manager_parent_class)->finalize) (object);
+}
+
+static void
+tsp_admin_manager_response (GtkDialog *dialog,
+ gint response)
+{
+ if (response == GTK_RESPONSE_CLOSE){
+
+ gtk_widget_destroy (GTK_WIDGET (dialog));
+
+ } else if (GTK_DIALOG_CLASS (tsp_admin_manager_parent_class)->response != NULL){
+
+ (*GTK_DIALOG_CLASS (tsp_admin_manager_parent_class)->response) (dialog, response);
+
+ }
+}
+
/* Adding a shared folder */
static void
-admin_add_cb (GtkButton *button,
- TspAdmin *admin)
+tsp_admin_manager_add_cb (GtkButton *button,
+ TspAdminManager *manager)
{
- GtkWidget *dialog;
-
- dialog = tsp_admin_editor_new (GTK_WINDOW (admin->dialog), admin);
+ GtkWidget *dialog;
- gtk_widget_show (dialog);
+ dialog = tsp_admin_editor_new (manager);
+
+ gtk_widget_show (dialog);
}
/* Editing a shared folder */
static void
-admin_edit_cb (GtkButton *button,
- TspAdmin *admin)
+tsp_admin_manager_edit_cb (GtkButton *button,
+ TspAdminManager *manager)
{
- GtkTreeSelection *selection;
- GtkWidget *dialog;
- GtkTreeModel *model;
- GtkTreeIter iter;
- gchar *path;
-
- selection = gtk_tree_view_get_selection (GTK_TREE_VIEW (admin->share_list));
- if (gtk_tree_selection_get_selected (selection, &model, &iter))
- {
- gtk_tree_model_get (model, &iter, TSP_ADMIN_COL_PATH, &path, -1);
+ GtkTreeSelection *selection;
+ GtkWidget *dialog;
+ GtkTreeModel *model;
+ GtkTreeIter iter;
+ gchar *path;
- dialog = tsp_admin_editor_new_with_path (GTK_WINDOW (admin->dialog), admin, path);
+ selection = gtk_tree_view_get_selection (GTK_TREE_VIEW (manager->share_list));
+ if (gtk_tree_selection_get_selected (selection, &model, &iter))
+ {
+ gtk_tree_model_get (model, &iter, TSP_MANAGER_COL_PATH, &path, -1);
- gtk_widget_show (dialog);
+ dialog = tsp_admin_editor_new_with_path (manager, path);
- g_free (path);
- }
+ gtk_widget_show (dialog);
+
+ g_free (path);
+ }
}
/* Removing a shared folder */
static void
-admin_remove_cb (GtkButton *button,
- TspAdmin *admin)
+tsp_admin_manager_remove_cb (GtkButton *button,
+ TspAdminManager *manager)
{
- GtkTreeSelection *selection;
- GtkTreeModel *model;
- GtkTreeIter iter;
- gchar *path;
+ GtkTreeSelection *selection;
+ GtkTreeModel *model;
+ GtkTreeIter iter;
+ gchar *path;
- selection = gtk_tree_view_get_selection (GTK_TREE_VIEW (admin->share_list));
- if (gtk_tree_selection_get_selected (selection, &model, &iter))
- {
- gtk_tree_model_get (model, &iter, TSP_ADMIN_COL_PATH, &path, -1);
-
- /* Remove from shares */
- if (tsp_shares_unshare (path)){
- gtk_list_store_remove (GTK_LIST_STORE (model), &iter);
- }
+ selection = gtk_tree_view_get_selection (GTK_TREE_VIEW (manager->share_list));
+ if (gtk_tree_selection_get_selected (selection, &model, &iter))
+ {
+ gtk_tree_model_get (model, &iter, TSP_MANAGER_COL_PATH, &path, -1);
- g_free (path);
- }
+ /* Remove from shares */
+ if (tsp_shares_unshare (path)){
+ gtk_list_store_remove (GTK_LIST_STORE (model), &iter);
+ }
+
+ g_free (path);
+ }
}
-/* Changing the folder selection */
+/* Selection of the list view */
static void
-admin_selection_cb (GtkTreeSelection *selection,
- TspAdmin *admin)
+tsp_admin_manager_select_cb (GtkTreeSelection *selection,
+ TspAdminManager *manager)
{
- GtkTreeModel *model;
- GtkTreeIter iter;
- gboolean has_selection;
+ GtkTreeModel *model;
+ GtkTreeIter iter;
+ gboolean has_selection;
- has_selection = gtk_tree_selection_get_selected (selection, &model, &iter);
+ has_selection = gtk_tree_selection_get_selected (selection, &model, &iter);
- /* Update buttons sensitivity */
- gtk_widget_set_sensitive (admin->share_edit, has_selection);
- gtk_widget_set_sensitive (admin->share_remove, has_selection);
+ /* Update buttons sensitivity */
+ gtk_widget_set_sensitive (manager->share_edit, has_selection);
+ gtk_widget_set_sensitive (manager->share_remove, has_selection);
}
/* Add a share to the list view */
static void
-admin_shares_foreach (gpointer data,
- gpointer user_data)
+tsp_admin_manager_foreach (gpointer data,
+ gpointer user_data)
{
- GtkListStore *store = GTK_LIST_STORE (user_data);
- GtkTreeIter iter;
- ShareInfo *share = (ShareInfo *)data;
- gchar *text_string;
+ GtkListStore *store = GTK_LIST_STORE (user_data);
+ GtkTreeIter iter;
+ ShareInfo *share = (ShareInfo *)data;
+ gchar *text_string;
- gtk_list_store_append (store, &iter);
+ gtk_list_store_append (store, &iter);
- text_string = g_strdup_printf ("<b>%s</b>\n<small>%s</small>",
- share->share_name, share->path);
+ text_string = g_strdup_printf ("<b>%s</b>\n<small>%s</small>",
+ share->share_name, share->path);
- gtk_list_store_set (store, &iter,
- TSP_ADMIN_COL_ICON, SHARES_ICON_NAME,
- TSP_ADMIN_COL_TXT, text_string,
- TSP_ADMIN_COL_PATH, share->path,
- -1);
+ gtk_list_store_set (store, &iter,
+ TSP_MANAGER_COL_ICON, SHARES_ICON_NAME,
+ TSP_MANAGER_COL_TXT, text_string,
+ TSP_MANAGER_COL_PATH, share->path,
+ -1);
- g_free (text_string);
+ g_free (text_string);
}
/* (Re)loads the shares list */
void
-tsp_admin_load_shares (gpointer data)
+tsp_admin_manager_reload_shares (TspAdminManager *manager)
{
- TspAdmin *admin = (TspAdmin *)data;
- GSList *info_list = NULL;
+ GSList *info_list = NULL;
- shares_get_share_info_list (&info_list, NULL);
+ shares_get_share_info_list (&info_list, NULL);
- if (info_list)
- {
- GtkTreeModel *model;
+ if (info_list)
+ {
+ GtkTreeModel *model;
- /* Reset the list */
- model = gtk_tree_view_get_model (GTK_TREE_VIEW (admin->share_list));
- gtk_list_store_clear (GTK_LIST_STORE (model));
+ /* Reset the list */
+ model = gtk_tree_view_get_model (GTK_TREE_VIEW (manager->share_list));
+ gtk_list_store_clear (GTK_LIST_STORE (model));
- g_slist_foreach (info_list, admin_shares_foreach, model);
+ g_slist_foreach (info_list, tsp_admin_manager_foreach, model);
- shares_free_share_info_list (info_list);
- }
+ shares_free_share_info_list (info_list);
+ }
}
-/* Displays the main admin dialog */
-void
-tsp_admin_dialog_show (GtkWindow *parent)
+GtkWidget *
+tsp_admin_manager_new (GtkWindow *parent)
{
- GtkTreeSelection *selection;
- static TspAdmin *admin;
- GtkBuilder *ui;
+ GtkWidget *dialog;
- if (admin)
- {
- /* Bring the dialog to front */
- gtk_window_present (GTK_WINDOW (admin->dialog));
- return;
- }
+ dialog = g_object_new (TSP_ADMIN_TYPE_MANAGER, NULL);
- admin = g_new0 (TspAdmin, 1);
+ if (parent != NULL)
+ gtk_window_set_transient_for (GTK_WINDOW (dialog), GTK_WINDOW (parent));
- /* Get widgets */
- ui = tsp_xml_get_file (XML_FILE,
- "shares_admin", &admin->dialog,
- "share_list", &admin->share_list,
- "share_edit", &admin->share_edit,
- "share_remove", &admin->share_remove,
- NULL);
-
- /* Connect signals */
- tsp_xml_connect (ui, admin,
- "shares_admin", "destroy", admin_destroy_cb,
- "shares_admin", "response", admin_response_cb,
- "share_add", "clicked", admin_add_cb,
- "share_edit", "clicked", admin_edit_cb,
- "share_remove", "clicked", admin_remove_cb,
- NULL);
-
- g_object_unref (ui);
-
- g_object_add_weak_pointer (G_OBJECT (admin->dialog), (gpointer) &admin);
-
- /* Disable edit and remove buttons */
- gtk_widget_set_sensitive (admin->share_edit, FALSE);
- gtk_widget_set_sensitive (admin->share_remove, FALSE);
-
- /* Load current shares */
- tsp_admin_load_shares (admin);
-
- /* Setup selection changes */
- selection = gtk_tree_view_get_selection (GTK_TREE_VIEW (admin->share_list));
- gtk_tree_selection_set_mode (selection, GTK_SELECTION_SINGLE);
- g_signal_connect (G_OBJECT (selection), "changed", G_CALLBACK (admin_selection_cb), admin);
-
- /* Show the dialog */
- gtk_window_set_transient_for (GTK_WINDOW (admin->dialog), parent);
- gtk_widget_show (admin->dialog);
+ return dialog;
}
Modified: thunar-shares-plugin/trunk/thunar-plugin/tsp-admin.h
===================================================================
--- thunar-shares-plugin/trunk/thunar-plugin/tsp-admin.h 2008-08-13 16:59:00 UTC (rev 5226)
+++ thunar-shares-plugin/trunk/thunar-plugin/tsp-admin.h 2008-08-14 14:41:35 UTC (rev 5227)
@@ -22,13 +22,28 @@
#ifndef __TSP_ADMIN_H__
#define __TSP_ADMIN_H__
-#include <gtk/gtkwindow.h>
+#include <thunarx/thunarx.h>
G_BEGIN_DECLS;
-void tsp_admin_dialog_show (GtkWindow *parent);
-void tsp_admin_load_shares (gpointer data);
+typedef struct _TspAdminManagerClass TspAdminManagerClass;
+typedef struct _TspAdminManager TspAdminManager;
+#define TSP_ADMIN_TYPE_MANAGER (tsp_admin_manager_get_type ())
+#define TSP_ADMIN_MANAGER(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TSP_ADMIN_TYPE_MANAGER, TspAdminManager))
+#define TSP_ADMIN_MANAGER_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TSP_ADMIN_TYPE_MANAGER, TspAdminManagerClass))
+#define TSP_ADMIN_IS_MANAGER(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TSP_ADMIN_TYPE_MANAGER))
+#define TSP_ADMIN_IS_MANAGER_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TSP_ADMIN_TYPE_MANAGER))
+#define TSP_ADMIN_MANAGER_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TSP_ADMIN_TYPE_MANAGER, TspAdminManagerClass))
+
+GType tsp_admin_manager_get_type (void) G_GNUC_CONST G_GNUC_INTERNAL;
+void tsp_admin_manager_register_type (ThunarxProviderPlugin *plugin) G_GNUC_INTERNAL;
+
+GtkWidget *tsp_admin_manager_new (GtkWindow *parent);
+
+void tsp_admin_manager_reload_shares (TspAdminManager *manager);
+
+
G_END_DECLS;
-#endif /* __TSP_ADMIN_H__ */
+#endif /* !__TSP_ADMIN_H__ */
Modified: thunar-shares-plugin/trunk/thunar-plugin/tsp-provider.c
===================================================================
--- thunar-shares-plugin/trunk/thunar-plugin/tsp-provider.c 2008-08-13 16:59:00 UTC (rev 5226)
+++ thunar-shares-plugin/trunk/thunar-plugin/tsp-provider.c 2008-08-14 14:41:35 UTC (rev 5227)
@@ -137,5 +137,9 @@
static void
tsp_provider_prefs_activated (GtkWindow *window)
{
- tsp_admin_dialog_show (window);
+ GtkWidget *dialog;
+
+ dialog = tsp_admin_manager_new (window);
+
+ gtk_widget_show (dialog);
}
More information about the Goodies-commits
mailing list