diff options
Diffstat (limited to 'sfshare-gui/src/sfshare.c')
-rw-r--r-- | sfshare-gui/src/sfshare.c | 74 |
1 files changed, 55 insertions, 19 deletions
diff --git a/sfshare-gui/src/sfshare.c b/sfshare-gui/src/sfshare.c index b7c2978..a3c8f9f 100644 --- a/sfshare-gui/src/sfshare.c +++ b/sfshare-gui/src/sfshare.c @@ -1,3 +1,20 @@ +/* + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Library General Public License for more details. + * + * You should have received a copy of the GNU General Public + * License along with this library; if not, write to the Free + * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + * + */ + #include <gtk/gtk.h> #include <string.h> /* strlen */ @@ -38,7 +55,6 @@ typedef struct _sfsdialog /* Dialog window */ SFSDialog sfsdialog; - /* Is directory shared? */ gboolean shared_smbconf = FALSE; @@ -50,6 +66,21 @@ gchar *dir_path; void +sfshare_dialog_destroy () +{ + gtk_widget_destroy (sfsdialog.gui_guestok); + gtk_widget_destroy (sfsdialog.gui_readonly); + gtk_widget_destroy (sfsdialog.gui_comment); + gtk_widget_destroy (sfsdialog.gui_sharename); + gtk_widget_destroy (sfsdialog.gui_share); + gtk_widget_destroy (sfsdialog.gui_save); + gtk_widget_destroy (sfsdialog.gui_close); + gtk_widget_destroy (sfsdialog.window); +} + + + +void gui_changed ( void ) { if (!change_in_gui) @@ -65,25 +96,22 @@ gui_changed ( void ) void show_message (GtkMessageType type, const gchar *format, gchar *msgtxt, const gchar *format_sec, gchar *msgtxt_sec) { - GtkWidget *msg_widget; + GtkWidget *dialog; - msg_widget = gtk_message_dialog_new ( GTK_WINDOW (sfsdialog.window), - GTK_DIALOG_MODAL, + dialog = gtk_message_dialog_new ( GTK_WINDOW (sfsdialog.window), + GTK_DIALOG_DESTROY_WITH_PARENT, type, GTK_BUTTONS_OK, format, msgtxt); - gtk_message_dialog_format_secondary_text ( GTK_MESSAGE_DIALOG (msg_widget), + gtk_message_dialog_format_secondary_text ( GTK_MESSAGE_DIALOG (dialog), format_sec, msgtxt_sec); - g_signal_connect_swapped ( msg_widget, - "response", - G_CALLBACK (gtk_widget_destroy), - msg_widget); + gtk_dialog_run ( GTK_DIALOG (dialog)); - gtk_widget_show (msg_widget); + gtk_widget_destroy (dialog); } @@ -150,7 +178,7 @@ void reload_share_info ( void ) { /* Reload info */ - load_share_info (); + load_share_info (); } void @@ -194,7 +222,7 @@ sfshare_authority_check ( void ) * Call set_share */ void -save_share_button ( void ) +save_share ( void ) { gboolean shared_gui = FALSE; @@ -248,7 +276,8 @@ main ( int argc, char **argv ) { GtkBuilder *builder; - gchar *filename; + const gchar *ui_filename; + GError *error = NULL; if (argc < 2) { @@ -256,22 +285,28 @@ main ( int argc, char **argv ) exit(1); } + /* First parameter is path to shared folder */ dir_path = argv[1]; gtk_init( &argc, &argv ); /* Create builder and load interface */ - builder = gtk_builder_new(); + builder = gtk_builder_new (); - filename = "/usr/share/sfshare/sfshare_window.ui"; - if (!g_file_test (filename, G_FILE_TEST_EXISTS)) - filename = "../data/sfshare_window.ui"; + ui_filename = "/usr/share/sfshare/sfshare_window.ui"; + if (!g_file_test (ui_filename, G_FILE_TEST_EXISTS)) + ui_filename = "../data/sfshare_window.ui"; - gtk_builder_add_from_file( builder, filename, NULL ); + + if (!gtk_builder_add_from_file ( builder, ui_filename, &error )) + { + g_warning ("gtk_builder_add_from_file failed: %s", error->message); + g_error_free (error); + return -1; + } /* Obtain widgets that we need */ sfsdialog.window = GTK_WIDGET ( gtk_builder_get_object( builder, "sfshare_window" )); - g_signal_connect (sfsdialog.window, "destroy", gtk_main_quit, NULL); sfsdialog.gui_close = GTK_WIDGET( gtk_builder_get_object( builder, "button_close" )); @@ -313,6 +348,7 @@ main ( int argc, char **argv ) gtk_main(); dbus_sfshare_disconnect (); + polkit_sfshare_free (); return(0); } |