X-Git-Url: http://dolda2000.com/gitweb/?a=blobdiff_plain;f=clients%2Fgtk2%2Fprogressbar.c;fp=clients%2Fgtk2%2Fprogressbar.c;h=0000000000000000000000000000000000000000;hb=dbdb91fa4abf642a9699b1381abf8bcbb05b202c;hp=2dff9b2504f6012ddde92b794d7566615dddf7f3;hpb=56c91062e3ba47c3519998b5afb35a2624db78bd;p=doldaconnect.git diff --git a/clients/gtk2/progressbar.c b/clients/gtk2/progressbar.c deleted file mode 100644 index 2dff9b2..0000000 --- a/clients/gtk2/progressbar.c +++ /dev/null @@ -1,344 +0,0 @@ -/* Taken from the GTK TreeView tutorial on gtk.org. - * Slightly modified. - */ - -#include "progressbar.h" - -/* This is based mainly on GtkCellRendererProgress - * in GAIM, written and (c) 2002 by Sean Egan - * (Licensed under the GPL), which in turn is - * based on Gtk's GtkCellRenderer[Text|Toggle|Pixbuf] - * implementation by Jonathan Blandford */ - -/* Some boring function declarations: GObject type system stuff */ - -static void custom_cell_renderer_progress_init (CustomCellRendererProgress *cellprogress); - -static void custom_cell_renderer_progress_class_init (CustomCellRendererProgressClass *klass); - -static void custom_cell_renderer_progress_get_property (GObject *object, - guint param_id, - GValue *value, - GParamSpec *pspec); - -static void custom_cell_renderer_progress_set_property (GObject *object, - guint param_id, - const GValue *value, - GParamSpec *pspec); - -static void custom_cell_renderer_progress_finalize (GObject *gobject); - - -/* These functions are the heart of our custom cell renderer: */ - -static void custom_cell_renderer_progress_get_size (GtkCellRenderer *cell, - GtkWidget *widget, - GdkRectangle *cell_area, - gint *x_offset, - gint *y_offset, - gint *width, - gint *height); - -static void custom_cell_renderer_progress_render (GtkCellRenderer *cell, - GdkWindow *window, - GtkWidget *widget, - GdkRectangle *background_area, - GdkRectangle *cell_area, - GdkRectangle *expose_area, - guint flags); - - -enum -{ - PROP_PERCENTAGE = 1, -}; - -static gpointer parent_class; - - -/*************************************************************************** - * - * custom_cell_renderer_progress_get_type: here we register our type with - * the GObject type system if we - * haven't done so yet. Everything - * else is done in the callbacks. - * - ***************************************************************************/ - -GType -custom_cell_renderer_progress_get_type (void) -{ - static GType cell_progress_type = 0; - - if (cell_progress_type) - return cell_progress_type; - - if (1) - { - static const GTypeInfo cell_progress_info = - { - sizeof (CustomCellRendererProgressClass), - NULL, /* base_init */ - NULL, /* base_finalize */ - (GClassInitFunc) custom_cell_renderer_progress_class_init, - NULL, /* class_finalize */ - NULL, /* class_data */ - sizeof (CustomCellRendererProgress), - 0, /* n_preallocs */ - (GInstanceInitFunc) custom_cell_renderer_progress_init, - }; - - /* Derive from GtkCellRenderer */ - cell_progress_type = g_type_register_static (GTK_TYPE_CELL_RENDERER, - "CustomCellRendererProgress", - &cell_progress_info, - 0); - } - - return cell_progress_type; -} - - -/*************************************************************************** - * - * custom_cell_renderer_progress_init: set some default properties of the - * parent (GtkCellRenderer). - * - ***************************************************************************/ - -static void -custom_cell_renderer_progress_init (CustomCellRendererProgress *cellrendererprogress) -{ - GTK_CELL_RENDERER(cellrendererprogress)->mode = GTK_CELL_RENDERER_MODE_INERT; - GTK_CELL_RENDERER(cellrendererprogress)->xpad = 2; - GTK_CELL_RENDERER(cellrendererprogress)->ypad = 2; -} - - -/*************************************************************************** - * - * custom_cell_renderer_progress_class_init: - * - * set up our own get_property and set_property functions, and - * override the parent's functions that we need to implement. - * And make our new "percentage" property known to the type system. - * If you want cells that can be activated on their own (ie. not - * just the whole row selected) or cells that are editable, you - * will need to override 'activate' and 'start_editing' as well. - * - ***************************************************************************/ - -static void -custom_cell_renderer_progress_class_init (CustomCellRendererProgressClass *klass) -{ - GtkCellRendererClass *cell_class = GTK_CELL_RENDERER_CLASS(klass); - GObjectClass *object_class = G_OBJECT_CLASS(klass); - - parent_class = g_type_class_peek_parent (klass); - object_class->finalize = custom_cell_renderer_progress_finalize; - - /* Hook up functions to set and get our - * custom cell renderer properties */ - object_class->get_property = custom_cell_renderer_progress_get_property; - object_class->set_property = custom_cell_renderer_progress_set_property; - - /* Override the two crucial functions that are the heart - * of a cell renderer in the parent class */ - cell_class->get_size = custom_cell_renderer_progress_get_size; - cell_class->render = custom_cell_renderer_progress_render; - - /* Install our very own properties */ - g_object_class_install_property (object_class, - PROP_PERCENTAGE, - g_param_spec_double ("percentage", - "Percentage", - "The fractional progress to display", - 0, 1, 0, - G_PARAM_READWRITE)); -} - - -/*************************************************************************** - * - * custom_cell_renderer_progress_finalize: free any resources here - * - ***************************************************************************/ - -static void -custom_cell_renderer_progress_finalize (GObject *object) -{ -/* - CustomCellRendererProgress *cellrendererprogress = CUSTOM_CELL_RENDERER_PROGRESS(object); -*/ - - /* Free any dynamically allocated resources here */ - - (* G_OBJECT_CLASS (parent_class)->finalize) (object); -} - - -/*************************************************************************** - * - * custom_cell_renderer_progress_get_property: as it says - * - ***************************************************************************/ - -static void -custom_cell_renderer_progress_get_property (GObject *object, - guint param_id, - GValue *value, - GParamSpec *psec) -{ - CustomCellRendererProgress *cellprogress = CUSTOM_CELL_RENDERER_PROGRESS(object); - - switch (param_id) - { - case PROP_PERCENTAGE: - g_value_set_double(value, cellprogress->progress); - break; - - default: - G_OBJECT_WARN_INVALID_PROPERTY_ID (object, param_id, psec); - break; - } -} - - -/*************************************************************************** - * - * custom_cell_renderer_progress_set_property: as it says - * - ***************************************************************************/ - -static void -custom_cell_renderer_progress_set_property (GObject *object, - guint param_id, - const GValue *value, - GParamSpec *pspec) -{ - CustomCellRendererProgress *cellprogress = CUSTOM_CELL_RENDERER_PROGRESS (object); - - switch (param_id) - { - case PROP_PERCENTAGE: - cellprogress->progress = g_value_get_double(value); - break; - - default: - G_OBJECT_WARN_INVALID_PROPERTY_ID(object, param_id, pspec); - break; - } -} - -/*************************************************************************** - * - * custom_cell_renderer_progress_new: return a new cell renderer instance - * - ***************************************************************************/ - -GtkCellRenderer * -custom_cell_renderer_progress_new (void) -{ - return g_object_new(CUSTOM_TYPE_CELL_RENDERER_PROGRESS, NULL); -} - - -/*************************************************************************** - * - * custom_cell_renderer_progress_get_size: crucial - calculate the size - * of our cell, taking into account - * padding and alignment properties - * of parent. - * - ***************************************************************************/ - -#define FIXED_WIDTH 100 -#define FIXED_HEIGHT 12 - -static void -custom_cell_renderer_progress_get_size (GtkCellRenderer *cell, - GtkWidget *widget, - GdkRectangle *cell_area, - gint *x_offset, - gint *y_offset, - gint *width, - gint *height) -{ - gint calc_width; - gint calc_height; - - calc_width = (gint) cell->xpad * 2 + FIXED_WIDTH; - calc_height = (gint) cell->ypad * 2 + FIXED_HEIGHT; - - if (width) - *width = calc_width; - - if (height) - *height = calc_height; - - if (cell_area) - { - if (x_offset) - { - *x_offset = cell->xalign * (cell_area->width - calc_width); - *x_offset = MAX (*x_offset, 0); - } - - if (y_offset) - { - *y_offset = cell->yalign * (cell_area->height - calc_height); - *y_offset = MAX (*y_offset, 0); - } - } -} - - -/*************************************************************************** - * - * custom_cell_renderer_progress_render: crucial - do the rendering. - * - ***************************************************************************/ - -static void -custom_cell_renderer_progress_render (GtkCellRenderer *cell, - GdkWindow *window, - GtkWidget *widget, - GdkRectangle *background_area, - GdkRectangle *cell_area, - GdkRectangle *expose_area, - guint flags) -{ - CustomCellRendererProgress *cellprogress = CUSTOM_CELL_RENDERER_PROGRESS (cell); - GtkStateType state; - gint width, height; - gint x_offset, y_offset; - - custom_cell_renderer_progress_get_size (cell, widget, cell_area, - &x_offset, &y_offset, - &width, &height); - - if (GTK_WIDGET_HAS_FOCUS (widget)) - state = GTK_STATE_ACTIVE; - else - state = GTK_STATE_NORMAL; - - width -= cell->xpad*2; - height -= cell->ypad*2; - - gtk_paint_box (widget->style, - window, - GTK_STATE_NORMAL, GTK_SHADOW_IN, - NULL, widget, "trough", - cell_area->x + x_offset + cell->xpad, - cell_area->y + y_offset + cell->ypad, - width - 1, height - 1); - - gtk_paint_box (widget->style, - window, - state, GTK_SHADOW_OUT, - NULL, widget, "bar", - cell_area->x + x_offset + cell->xpad, - cell_area->y + y_offset + cell->ypad, - width * cellprogress->progress, - height - 1); -}