[Goodies-commits] r5038 - xfburn/trunk/xfburn

David Mohr squisher at xfce.org
Wed Jul 9 18:29:27 CEST 2008


Author: squisher
Date: 2008-07-09 16:29:27 +0000 (Wed, 09 Jul 2008)
New Revision: 5038

Modified:
   xfburn/trunk/xfburn/xfburn-burn-data-composition-base-dialog.c
   xfburn/trunk/xfburn/xfburn-burn-data-composition-base-dialog.h
   xfburn/trunk/xfburn/xfburn-device-box.c
   xfburn/trunk/xfburn/xfburn-hal-manager.c
   xfburn/trunk/xfburn/xfburn-hal-manager.h
   xfburn/trunk/xfburn/xfburn-main.c
Log:
Creating global instance of hal manager, prepared code for a switching proceed button's funcitonality

Modified: xfburn/trunk/xfburn/xfburn-burn-data-composition-base-dialog.c
===================================================================
--- xfburn/trunk/xfburn/xfburn-burn-data-composition-base-dialog.c	2008-07-09 10:48:27 UTC (rev 5037)
+++ xfburn/trunk/xfburn/xfburn-burn-data-composition-base-dialog.c	2008-07-09 16:29:27 UTC (rev 5038)
@@ -59,7 +59,14 @@
   GtkWidget *hbox_iso;
   GtkWidget *entry_path_iso;
   GtkWidget *check_dummy;
-  GtkWidget *burn_button;
+  GtkWidget *button_proceed;
+  /*
+   * Disabled: change button_proceed functionality
+  GtkWidget *label_proceed;
+  GtkWidget *image_proceed;
+  */
+
+  gint response;
 } XfburnBurnDataCompositionBaseDialogPrivate;
 
 enum {
@@ -67,6 +74,19 @@
   PROP_IMAGE
 };
 
+/*
+ * Disabled: change button_proceed functionality
+char *proceed_text[] = {
+  "Burn Composition",
+  "   Blank Disc   ",
+};
+
+char *proceed_image[] = {
+  "xfburn-burn-cd",
+  "xfburn-blank-cdrw",
+};
+*/
+
 /* prototypes */
 static void xfburn_burn_data_composition_base_dialog_class_init (XfburnBurnDataCompositionBaseDialogClass * klass);
 static GObject * xfburn_burn_data_composition_base_dialog_constructor (GType type, guint n_construct_properties, GObjectConstructParam *construct_properties);
@@ -75,7 +95,12 @@
 static void xfburn_burn_data_composition_base_dialog_get_property (GObject * object, guint prop_id, GValue * value, GParamSpec * pspec);
 static void xfburn_burn_data_composition_base_dialog_set_property (GObject * object, guint prop_id, const GValue * value, GParamSpec * pspec);
 
+/*
+GtkWidget * create_proceed_button (XfburnBurnDataCompositionBaseDialog * dialog, const gchar *stock, const gchar *text);
+void update_proceed_button (XfburnBurnDataCompositionBaseDialog * dialog);
+*/
 static void cb_check_only_iso_toggled (GtkToggleButton * button, XfburnBurnDataCompositionBaseDialog * dialog);
+static void cb_proceed_clicked (GtkButton * button, XfburnBurnDataCompositionBaseDialog * dialog);
 static void cb_browse_iso (GtkButton * button, XfburnBurnDataCompositionBaseDialog * dialog);
 static void cb_disc_refreshed (GtkWidget *device_box, XfburnDevice *device, XfburnBurnDataCompositionBaseDialog * dialog);
 static void cb_dialog_response (XfburnBurnDataCompositionBaseDialog * dialog, gint response_id,
@@ -249,9 +274,13 @@
   gtk_widget_show (button);
   gtk_dialog_add_action_widget (GTK_DIALOG (obj), button, GTK_RESPONSE_CANCEL);
 
-  priv->burn_button = button = xfce_create_mixed_button ("xfburn-burn-cd", _("_Burn Composition"));
+  priv->button_proceed = button = xfce_create_mixed_button ("xfburn-burn-cd", _("Burn Composition"));
+  //button = create_proceed_button (obj, "xfburn-burn-cd", "");
+  g_signal_connect (G_OBJECT (button), "clicked", G_CALLBACK (cb_proceed_clicked), obj);
+
   gtk_widget_show (button);
-  gtk_dialog_add_action_widget (GTK_DIALOG (obj), button, GTK_RESPONSE_OK);
+  //gtk_dialog_add_action_widget (GTK_DIALOG (obj), button, GTK_RESPONSE_OK);
+  gtk_box_pack_start (GTK_BOX (GTK_DIALOG(obj)->action_area), button, TRUE, TRUE, 0);
   GTK_WIDGET_SET_FLAGS (button, GTK_CAN_DEFAULT);
   gtk_widget_grab_focus (button);
   gtk_widget_grab_default (button);
@@ -303,6 +332,43 @@
 }
 
 /* internals */
+/*
+ * Disabled: change button_proceed functionality
+GtkWidget *
+create_proceed_button (XfburnBurnDataCompositionBaseDialog * dialog, const gchar *stock, const gchar *text)
+{
+  XfburnBurnDataCompositionBaseDialogPrivate *priv = XFBURN_BURN_DATA_COMPOSITION_BASE_DIALOG_GET_PRIVATE (dialog);
+  GtkWidget *button, *align, *image, *hbox, *label;
+
+  priv->button_proceed = button = gtk_button_new ();
+  priv->label_proceed = label = gtk_label_new_with_mnemonic (text);
+  gtk_label_set_mnemonic_widget (GTK_LABEL (label), button);
+
+  priv->image_proceed = image = gtk_image_new_from_stock (stock, GTK_ICON_SIZE_BUTTON);
+  hbox = gtk_hbox_new (FALSE, 2);
+
+  align = gtk_alignment_new (0.5, 0.5, 0.0, 0.0);
+
+  gtk_box_pack_start (GTK_BOX (hbox), image, FALSE, FALSE, 0);
+  gtk_box_pack_end (GTK_BOX (hbox), label, FALSE, FALSE, 0);
+
+  gtk_container_add (GTK_CONTAINER (button), align);
+  gtk_container_add (GTK_CONTAINER (align), hbox);
+  gtk_widget_show_all (align);
+
+  return button;
+}
+
+void 
+update_proceed_button (XfburnBurnDataCompositionBaseDialog * dialog)
+{
+  XfburnBurnDataCompositionBaseDialogPrivate *priv = XFBURN_BURN_DATA_COMPOSITION_BASE_DIALOG_GET_PRIVATE (dialog);
+
+  gtk_label_set_text (GTK_LABEL (priv->label_proceed), _(proceed_text[priv->response]));
+  gtk_image_set_from_stock (GTK_IMAGE (priv->image_proceed), proceed_image[priv->response], GTK_ICON_SIZE_BUTTON);
+}
+*/
+
 static void
 cb_check_only_iso_toggled (GtkToggleButton * button, XfburnBurnDataCompositionBaseDialog * dialog)
 {
@@ -318,13 +384,18 @@
   gtk_widget_set_sensitive (priv->check_dummy, !gtk_toggle_button_get_active (button));
   if (!gtk_toggle_button_get_active (button)) {
     g_object_get (G_OBJECT (priv->device_box), "valid", &valid_disc, NULL);
-    gtk_widget_set_sensitive (priv->burn_button, valid_disc);
+    gtk_widget_set_sensitive (priv->button_proceed, valid_disc);
   } else {
-    gtk_widget_set_sensitive (priv->burn_button, TRUE);
+    gtk_widget_set_sensitive (priv->button_proceed, TRUE);
   }
 }
 
 static void
+cb_proceed_clicked (GtkButton * button, XfburnBurnDataCompositionBaseDialog * dialog)
+{
+}
+
+static void
 cb_browse_iso (GtkButton * button, XfburnBurnDataCompositionBaseDialog * dialog)
 {
   XfburnBurnDataCompositionBaseDialogPrivate *priv = XFBURN_BURN_DATA_COMPOSITION_BASE_DIALOG_GET_PRIVATE (dialog);
@@ -339,7 +410,18 @@
   gboolean valid_disc;
 
   g_object_get (G_OBJECT (priv->device_box), "valid", &valid_disc, NULL);
-  gtk_widget_set_sensitive (priv->burn_button, valid_disc);
+
+  /*
+   * Disabled: change button_proceed functionality
+  if (!valid_disc && xfburn_device_list_get_disc_status () == BURN_DISC_FULL && xfburn_device_list_disc_is_erasable ()) {
+    priv->response = XFBURN_BURN_DATA_COMPOSITION_DIALOG_BLANK;
+    valid_disc = TRUE;
+  } else {
+    priv->response = XFBURN_BURN_DATA_COMPOSITION_DIALOG_BURN;
+  }
+  update_proceed_button (dialog);
+  */
+  gtk_widget_set_sensitive (priv->button_proceed, valid_disc);
 }
 
 typedef struct {

Modified: xfburn/trunk/xfburn/xfburn-burn-data-composition-base-dialog.h
===================================================================
--- xfburn/trunk/xfburn/xfburn-burn-data-composition-base-dialog.h	2008-07-09 10:48:27 UTC (rev 5037)
+++ xfburn/trunk/xfburn/xfburn-burn-data-composition-base-dialog.h	2008-07-09 16:29:27 UTC (rev 5038)
@@ -38,6 +38,12 @@
 #define XFBURN_IS_BURN_DATA_COMPOSITION_BASE_DIALOG_CLASS(k)  (G_TYPE_CHECK_CLASS_TYPE ((k), XFBURN_TYPE_BURN_DATA_COMPOSITION_BASE_DIALOG))
 #define XFBURN_BURN_DATA_COMPOSITION_BASE_DIALOG_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), XFBURN_TYPE_BURN_DATA_COMPOSITION_BASE_DIALOG, XfburnBurnDataCompositionBaseDialogClass))
 
+enum {
+  XFBURN_BURN_DATA_COMPOSITION_DIALOG_CANCEL = -1,
+  XFBURN_BURN_DATA_COMPOSITION_DIALOG_BURN,
+  XFBURN_BURN_DATA_COMPOSITION_DIALOG_BLANK,
+};
+
 typedef struct
 {
   XfceTitledDialog parent;

Modified: xfburn/trunk/xfburn/xfburn-device-box.c
===================================================================
--- xfburn/trunk/xfburn/xfburn-device-box.c	2008-07-09 10:48:27 UTC (rev 5037)
+++ xfburn/trunk/xfburn/xfburn-device-box.c	2008-07-09 16:29:27 UTC (rev 5038)
@@ -97,9 +97,6 @@
 #ifdef HAVE_THUNAR_VFS
   ThunarVfsVolumeManager *thunar_volman;
 #endif
-#ifdef HAVE_HAL
-  GObject *hal_manager;
-#endif
 } XfburnDeviceBoxPrivate;
 
 /* prototypes */
@@ -314,8 +311,7 @@
   gtk_combo_box_set_active (GTK_COMBO_BOX (priv->combo_device), 0);
 
 #ifdef HAVE_HAL
-  priv->hal_manager = xfburn_hal_manager_new();
-  g_signal_connect (priv->hal_manager, "volume-changed", G_CALLBACK (cb_volumes_changed), box);
+  g_signal_connect (G_OBJECT (xfburn_hal_manager_get_instance ()), "volume-changed", G_CALLBACK (cb_volumes_changed), box);
 #endif
 #ifdef HAVE_THUNAR_VFS
   priv->thunar_volman = thunar_vfs_volume_manager_get_default ();
@@ -338,9 +334,11 @@
 #ifdef HAVE_THUNAR_VFS
   g_object_unref (priv->thunar_volman);
 #endif
+/*
 #ifdef HAVE_HAL
   g_object_unref (priv->hal_manager);
 #endif
+*/
 
   G_OBJECT_CLASS (parent_class)->finalize (object);
 }

Modified: xfburn/trunk/xfburn/xfburn-hal-manager.c
===================================================================
--- xfburn/trunk/xfburn/xfburn-hal-manager.c	2008-07-09 10:48:27 UTC (rev 5037)
+++ xfburn/trunk/xfburn/xfburn-hal-manager.c	2008-07-09 16:29:27 UTC (rev 5038)
@@ -226,13 +226,32 @@
 GObject *
 xfburn_hal_manager_new ()
 {
-
-  /* register 'global' for halman, because the callback from libhal does not support
-   * user data, and otherwise we can't get the reference to emit the g_signal on */
   if (G_UNLIKELY (halman != NULL))
-    g_warning ("Existing instance of hal-manager detected! This is a bug, please report this.");
-  halman = XFBURN_HAL_MANAGER (g_object_new (XFBURN_TYPE_HAL_MANAGER, NULL));
+    g_error ("Trying to create a second instance of hal manager!");
+  return g_object_new (XFBURN_TYPE_HAL_MANAGER, NULL);
+}
 
-  return G_OBJECT (halman);
+void
+xfburn_hal_manager_create_global ()
+{
+  halman = XFBURN_HAL_MANAGER (xfburn_hal_manager_new ());
 }
+
+XfburnHalManager *
+xfburn_hal_manager_get_instance ()
+{
+  if (G_UNLIKELY (halman == NULL))
+    g_error ("There is no instance of a hal manager!");
+  return halman;
+}
+
+void
+xfburn_hal_manager_shutdown ()
+{
+  if (G_UNLIKELY (halman == NULL))
+    g_error ("There is no instance of a hal manager!");
+  g_object_unref (halman);
+  halman = NULL;
+}
+
 #endif /* HAVE_HAL */

Modified: xfburn/trunk/xfburn/xfburn-hal-manager.h
===================================================================
--- xfburn/trunk/xfburn/xfburn-hal-manager.h	2008-07-09 10:48:27 UTC (rev 5037)
+++ xfburn/trunk/xfburn/xfburn-hal-manager.h	2008-07-09 16:29:27 UTC (rev 5038)
@@ -54,6 +54,9 @@
 
 GtkType xfburn_hal_manager_get_type ();
 GObject *xfburn_hal_manager_new ();
+void xfburn_hal_manager_create_global ();
+XfburnHalManager * xfburn_hal_manager_get_instance ();
+void xfburn_hal_manager_shutdown ();
 
 G_END_DECLS
 

Modified: xfburn/trunk/xfburn/xfburn-main.c
===================================================================
--- xfburn/trunk/xfburn/xfburn-main.c	2008-07-09 10:48:27 UTC (rev 5037)
+++ xfburn/trunk/xfburn/xfburn-main.c	2008-07-09 16:29:27 UTC (rev 5038)
@@ -44,6 +44,7 @@
 #include "xfburn-burn-image-dialog.h"
 #include "xfburn-main-window.h"
 #include "xfburn-blank-dialog.h"
+#include "xfburn-hal-manager.h"
 
 
 /* internal prototypes */
@@ -138,6 +139,10 @@
   g_message ("Thunar-VFS not available, using default implementation");
 #endif
   
+#ifdef HAVE_HAL
+  xfburn_hal_manager_create_global ();
+#endif
+
   xfburn_stock_init ();
   n_drives = xfburn_device_list_init ();
   if (n_drives < 1) {
@@ -203,6 +208,10 @@
   thunar_vfs_shutdown ();
 #endif
   
+#ifdef HAVE_HAL
+  xfburn_hal_manager_shutdown ();
+#endif
+
   xfburn_settings_flush ();
   xfburn_settings_free ();
   




More information about the Goodies-commits mailing list