[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