[Goodies-commits] r5230 - xfburn/trunk/xfburn
David Mohr
squisher at xfce.org
Sat Aug 16 06:16:02 CEST 2008
Author: squisher
Date: 2008-08-16 04:16:01 +0000 (Sat, 16 Aug 2008)
New Revision: 5230
Added:
xfburn/trunk/xfburn/xfburn-disc-usage.c
xfburn/trunk/xfburn/xfburn-disc-usage.h
Modified:
xfburn/trunk/xfburn/Makefile.am
Log:
Adding files for disc usage base class
Modified: xfburn/trunk/xfburn/Makefile.am
===================================================================
--- xfburn/trunk/xfburn/Makefile.am 2008-08-15 17:06:23 UTC (rev 5229)
+++ xfburn/trunk/xfburn/Makefile.am 2008-08-16 04:16:01 UTC (rev 5230)
@@ -30,6 +30,7 @@
xfburn-file-browser.h \
xfburn-welcome-tab.h \
xfburn-data-composition.h \
+ xfburn-disc-usage.h \
xfburn-data-disc-usage.h \
xfburn-fs-browser.h \
xfburn-directory-browser.h \
@@ -60,6 +61,7 @@
xfburn-file-browser.c \
xfburn-welcome-tab.c \
xfburn-data-composition.c \
+ xfburn-disc-usage.c \
xfburn-data-disc-usage.c \
xfburn-fs-browser.c \
xfburn-directory-browser.c \
Copied: xfburn/trunk/xfburn/xfburn-disc-usage.c (from rev 5229, xfburn/trunk/xfburn/xfburn-data-disc-usage.c)
===================================================================
--- xfburn/trunk/xfburn/xfburn-disc-usage.c (rev 0)
+++ xfburn/trunk/xfburn/xfburn-disc-usage.c 2008-08-16 04:16:01 UTC (rev 5230)
@@ -0,0 +1,248 @@
+/* $Id$ */
+/*
+ * Copyright (c) 2005-2006 Jean-François Wauthy (pollux at xfce.org)
+ *
+ * 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 program 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 program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ */
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif /* !HAVE_CONFIG_H */
+
+#include <gtk/gtk.h>
+#include <libxfce4util/libxfce4util.h>
+#include <libxfcegui4/libxfcegui4.h>
+
+#include "xfburn-data-disc-usage.h"
+#include "xfburn-global.h"
+#include "xfburn-settings.h"
+#include "xfburn-utils.h"
+#include "xfburn-stock.h"
+#include "xfburn-main-window.h"
+
+/* prototypes */
+static void xfburn_data_disc_usage_class_init (XfburnDataDiscUsageClass *);
+static void xfburn_data_disc_usage_init (XfburnDataDiscUsage *);
+
+static void cb_button_clicked (GtkButton *, XfburnDataDiscUsage *);
+static void cb_combo_changed (GtkComboBox *, XfburnDataDiscUsage *);
+
+/* globals */
+static GtkHBoxClass *parent_class = NULL;
+
+#define DEFAULT_DISK_SIZE_LABEL 2
+#define LAST_CD_LABEL 4
+#define NUM_LABELS 7
+
+struct
+{
+ guint64 size;
+ gchar *label;
+} datadisksizes[] = {
+ {
+ 200 *1024 * 1024, "200MB CD"},
+ {
+ 681984000, "650MB CD"},
+ {
+ 737280000, "700MB CD"},
+ {
+ 829440000, "800MB CD"},
+ {
+ 912384000, "900MB CD"},
+ {
+ G_GINT64_CONSTANT(0x1182a0000), "4.3GB DVD"}, /* 4 700 372 992 */
+ {
+ G_GINT64_CONSTANT(0x1fd3e0000), "7.9GB DVD"}, /* 8 543 666 176 */
+};
+
+enum
+{
+ BEGIN_BURN,
+ LAST_SIGNAL,
+};
+
+static guint signals[LAST_SIGNAL];
+
+/*******************************/
+/* XfburnDataComposition class */
+/*******************************/
+GtkType
+xfburn_data_disc_usage_get_type (void)
+{
+ static GtkType disc_usage_type = 0;
+
+ if (!disc_usage_type) {
+ static const GTypeInfo disc_usage_info = {
+ sizeof (XfburnDataDiscUsageClass),
+ NULL,
+ NULL,
+ (GClassInitFunc) xfburn_data_disc_usage_class_init,
+ NULL,
+ NULL,
+ sizeof (XfburnDataDiscUsage),
+ 0,
+ (GInstanceInitFunc) xfburn_data_disc_usage_init
+ };
+
+ disc_usage_type = g_type_register_static (GTK_TYPE_HBOX, "XfburnDataDiscUsage", &disc_usage_info, 0);
+ }
+
+ return disc_usage_type;
+}
+
+static void
+xfburn_data_disc_usage_class_init (XfburnDataDiscUsageClass * klass)
+{
+ GObjectClass *gobject_class;
+
+ parent_class = g_type_class_peek_parent (klass);
+
+ gobject_class = G_OBJECT_CLASS (klass);
+
+ signals[BEGIN_BURN] = g_signal_new ("begin-burn", G_TYPE_FROM_CLASS (gobject_class), G_SIGNAL_ACTION,
+ G_STRUCT_OFFSET (XfburnDataDiscUsageClass, begin_burn),
+ NULL, NULL, g_cclosure_marshal_VOID__VOID, G_TYPE_NONE, 0);
+}
+
+static void
+xfburn_data_disc_usage_init (XfburnDataDiscUsage * disc_usage)
+{
+ int i;
+
+ disc_usage->size = 0;
+
+ disc_usage->progress_bar = gtk_progress_bar_new ();
+ gtk_progress_bar_set_text (GTK_PROGRESS_BAR (disc_usage->progress_bar), "0 B");
+ gtk_box_pack_start (GTK_BOX (disc_usage), disc_usage->progress_bar, TRUE, TRUE, BORDER);
+ gtk_widget_show (disc_usage->progress_bar);
+
+ disc_usage->combo = gtk_combo_box_new_text ();
+ for (i = 0; i < G_N_ELEMENTS (datadisksizes); i++)
+ gtk_combo_box_append_text (GTK_COMBO_BOX (disc_usage->combo), datadisksizes[i].label);
+ gtk_combo_box_set_active (GTK_COMBO_BOX (disc_usage->combo), DEFAULT_DISK_SIZE_LABEL);
+ gtk_box_pack_start (GTK_BOX (disc_usage), disc_usage->combo, FALSE, FALSE, BORDER);
+ gtk_widget_show (disc_usage->combo);
+
+ disc_usage->button = xfce_create_mixed_button (XFBURN_STOCK_BURN_CD, _("Proceed to Burn"));
+ gtk_box_pack_start (GTK_BOX (disc_usage), disc_usage->button, FALSE, FALSE, BORDER);
+ gtk_widget_set_sensitive (disc_usage->button, FALSE);
+ gtk_widget_show (disc_usage->button);
+ g_signal_connect (G_OBJECT (disc_usage->button), "clicked", G_CALLBACK (cb_button_clicked), disc_usage);
+
+ g_signal_connect (G_OBJECT (disc_usage->combo), "changed", G_CALLBACK (cb_combo_changed), disc_usage);
+ /* Disabling burn composition doesn't work when this is enabled */
+ /*gtk_widget_set_sensitive (disc_usage->button, xfburn_main_window_support_cdr (xfburn_main_window_get_instance ()));*/
+}
+
+/* internals */
+static void
+xfburn_data_disc_usage_update_size (XfburnDataDiscUsage * disc_usage, gboolean manual)
+{
+ gfloat fraction;
+ gchar *size;
+ int i;
+
+ fraction = disc_usage->size / datadisksizes[gtk_combo_box_get_active (GTK_COMBO_BOX (disc_usage->combo))].size;
+ if (fraction > 1.0)
+ fraction = 1.0;
+ if (fraction < 0.0)
+ fraction = 0.0;
+
+ gtk_progress_bar_set_fraction (GTK_PROGRESS_BAR (disc_usage->progress_bar), fraction > 1.0 ? 1.0 : fraction);
+
+ if (xfburn_settings_get_boolean ("human-readable-units", TRUE))
+ size = xfburn_humanreadable_filesize ((guint64) disc_usage->size);
+ else
+ size = g_strdup_printf ("%.0lf B", disc_usage->size);
+
+ gtk_progress_bar_set_text (GTK_PROGRESS_BAR (disc_usage->progress_bar), size);
+
+ if (!manual) {
+ i = 0;
+ while (i < NUM_LABELS && disc_usage->size > datadisksizes[i].size) {
+ i++;
+ }
+ gtk_combo_box_set_active (GTK_COMBO_BOX (disc_usage->combo), (i<NUM_LABELS ? i: i-1));
+ }
+
+ if (disc_usage->size == 0 ||
+ disc_usage->size > datadisksizes[gtk_combo_box_get_active (GTK_COMBO_BOX (disc_usage->combo))].size)
+ gtk_widget_set_sensitive (disc_usage->button, FALSE);
+ else
+ gtk_widget_set_sensitive (disc_usage->button, TRUE);
+
+
+ g_free (size);
+}
+
+static void
+cb_button_clicked (GtkButton *button, XfburnDataDiscUsage *du)
+{
+ if (du->size <= datadisksizes[gtk_combo_box_get_active (GTK_COMBO_BOX (du->combo))].size) {
+ g_signal_emit (G_OBJECT (du), signals[BEGIN_BURN], 0);
+ } else {
+ xfce_err (_("You are trying to burn more data than the disk can contain !"));
+ }
+}
+
+static void
+cb_combo_changed (GtkComboBox * combo, XfburnDataDiscUsage * usage)
+{
+ xfburn_data_disc_usage_update_size (usage, TRUE);
+}
+
+/* public methods */
+gdouble
+xfburn_data_disc_usage_get_size (XfburnDataDiscUsage * disc_usage)
+{
+ return disc_usage->size;
+}
+
+void
+xfburn_data_disc_usage_set_size (XfburnDataDiscUsage * disc_usage, gdouble size)
+{
+ disc_usage->size = size;
+ xfburn_data_disc_usage_update_size (disc_usage, FALSE);
+}
+
+void
+xfburn_data_disc_usage_add_size (XfburnDataDiscUsage * disc_usage, gdouble size)
+{
+ disc_usage->size = disc_usage->size + size;
+ xfburn_data_disc_usage_update_size (disc_usage, FALSE);
+}
+
+void
+xfburn_data_disc_usage_sub_size (XfburnDataDiscUsage * disc_usage, gdouble size)
+{
+ disc_usage->size = disc_usage->size - size;
+ xfburn_data_disc_usage_update_size (disc_usage, FALSE);
+}
+
+XfburnDataDiscType
+xfburn_data_disc_usage_get_disc_type (XfburnDataDiscUsage * disc_usage)
+{
+ if (gtk_combo_box_get_active (GTK_COMBO_BOX (disc_usage->combo)) > LAST_CD_LABEL)
+ return DVD_DISC;
+ else
+ return CD_DISC;
+}
+
+GtkWidget *
+xfburn_data_disc_usage_new (void)
+{
+ return g_object_new (xfburn_data_disc_usage_get_type (), NULL);
+}
+
Property changes on: xfburn/trunk/xfburn/xfburn-disc-usage.c
___________________________________________________________________
Name: svn:keywords
+ Id
Name: svn:mergeinfo
+
Copied: xfburn/trunk/xfburn/xfburn-disc-usage.h (from rev 5229, xfburn/trunk/xfburn/xfburn-data-disc-usage.h)
===================================================================
--- xfburn/trunk/xfburn/xfburn-disc-usage.h (rev 0)
+++ xfburn/trunk/xfburn/xfburn-disc-usage.h 2008-08-16 04:16:01 UTC (rev 5230)
@@ -0,0 +1,74 @@
+/* $Id$ */
+/*
+ * Copyright (c) 2005-2006 Jean-François Wauthy (pollux at xfce.org)
+ *
+ * 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 program 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 program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ */
+
+#ifndef __XFBURN_DATA_DISC_USAGE_H__
+#define __XFBURN_DATA_DISC_USAGE_H__
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+
+#include <gtk/gtk.h>
+
+G_BEGIN_DECLS
+
+#define XFBURN_TYPE_DATA_DISC_USAGE (xfburn_data_disc_usage_get_type ())
+#define XFBURN_DATA_DISC_USAGE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), XFBURN_TYPE_DATA_DISC_USAGE, XfburnDataDiscUsage))
+#define XFBURN_DATA_DISC_USAGE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), XFBURN_TYPE_DATA_DISC_USAGE, XfburnDataDiscUsageClass))
+#define XFBURN_IS_DATA_DISC_USAGE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), XFBURN_TYPE_DATA_DISC_USAGE))
+#define XFBURN_IS_DATA_DISC_USAGE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), XFBURN_TYPE_DATA_DISC_USAGE))
+#define XFBURN_DATA_DISC_USAGE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), XFBURN_TYPE_DATA_DISC_USAGE, XfburnDataDiscUsageClass))
+
+typedef struct
+{
+ GtkVBox hbox;
+
+ GtkWidget *progress_bar;
+ GtkWidget *combo;
+ GtkWidget *button;
+
+ gdouble size;
+} XfburnDataDiscUsage;
+
+typedef struct
+{
+ GtkHBoxClass parent_class;
+
+ void (*begin_burn) (XfburnDataDiscUsage *du);
+} XfburnDataDiscUsageClass;
+
+typedef enum
+{
+ CD_DISC,
+ DVD_DISC,
+} XfburnDataDiscType;
+
+GtkType xfburn_data_disc_usage_get_type (void);
+GtkWidget *xfburn_data_disc_usage_new (void);
+
+gdouble xfburn_data_disc_usage_get_size (XfburnDataDiscUsage *);
+void xfburn_data_disc_usage_set_size (XfburnDataDiscUsage *, gdouble);
+void xfburn_data_disc_usage_add_size (XfburnDataDiscUsage *, gdouble);
+void xfburn_data_disc_usage_sub_size (XfburnDataDiscUsage *, gdouble);
+
+XfburnDataDiscType xfburn_data_disc_usage_get_disc_type (XfburnDataDiscUsage *);
+
+G_END_DECLS
+
+#endif
Property changes on: xfburn/trunk/xfburn/xfburn-disc-usage.h
___________________________________________________________________
Name: svn:keywords
+ Id
Name: svn:mergeinfo
+
More information about the Goodies-commits
mailing list