]> git.sur5r.net Git - glabels/commitdiff
2009-09-10 Jim Evins <evins@snaught.com>
authorJim Evins <evins@snaught.com>
Fri, 11 Sep 2009 02:14:58 +0000 (02:14 +0000)
committerJim Evins <evins@snaught.com>
Fri, 11 Sep 2009 02:14:58 +0000 (02:14 +0000)
* src/Makefile.am:
* src/mini-label-preview.c:
* src/mini-label-preview.h:
Created new glMiniLabelPreview widget to support glRotateLabelButton.
* src/rotate-label-button.c:
* src/rotate-label-button.h:
Renamed glWdgtRotateLabel to glRotateLabelButton.
* src/new-label-dialog.c: (gl_new_label_dialog_construct),
(template_changed_cb), (gl_new_label_dialog_get_rotate_state),
(gl_new_label_dialog_set_rotate_state):
Propogated above renaming.
* src/mini-preview.c: (gl_mini_preview_set_template), (draw),
(draw_shadow), (draw_paper), (draw_labels):
Use GtkStyle for colors instead of hardcoded ones.

git-svn-id: https://glabels.svn.sourceforge.net/svnroot/glabels/trunk@882 f5e0f49d-192f-0410-a22d-a8d8700d0965

glabels2/ChangeLog
glabels2/src/Makefile.am
glabels2/src/mini-label-preview.c [new file with mode: 0644]
glabels2/src/mini-label-preview.h [new file with mode: 0644]
glabels2/src/mini-preview.c
glabels2/src/new-label-dialog.c
glabels2/src/rotate-label-button.c [new file with mode: 0644]
glabels2/src/rotate-label-button.h [new file with mode: 0644]
glabels2/src/wdgt-rotate-label.c [deleted file]
glabels2/src/wdgt-rotate-label.h [deleted file]

index e96980df115241b8efd02e62e0383c4e6b3483d6..c28d00e2cb3d4a03f877426ce842fb3c85d3d1a9 100644 (file)
@@ -1,3 +1,20 @@
+2009-09-10  Jim Evins  <evins@snaught.com>
+
+       * src/Makefile.am:
+       * src/mini-label-preview.c:
+       * src/mini-label-preview.h:
+               Created new glMiniLabelPreview widget to support glRotateLabelButton.
+       * src/rotate-label-button.c:
+       * src/rotate-label-button.h:
+               Renamed glWdgtRotateLabel to glRotateLabelButton.
+       * src/new-label-dialog.c: (gl_new_label_dialog_construct),
+       (template_changed_cb), (gl_new_label_dialog_get_rotate_state),
+       (gl_new_label_dialog_set_rotate_state):
+               Propogated above renaming.
+       * src/mini-preview.c: (gl_mini_preview_set_template), (draw),
+       (draw_shadow), (draw_paper), (draw_labels):
+               Use GtkStyle for colors instead of hardcoded ones.
+
 2009-09-09  Jim Evins  <evins@snaught.com>
 
        * configure.in:
index 4a78708a1e74388329805f04163f2cb590f087fc..7baaf2a1aa62a3e269c14fab0cc4c3a5e592582f 100644 (file)
@@ -173,8 +173,10 @@ glabels_SOURCES =                  \
        wdgt-media-select.h             \
        mini-preview.c                  \
        mini-preview.h                  \
-       wdgt-rotate-label.c             \
-       wdgt-rotate-label.h             \
+       mini-label-preview.c            \
+       mini-label-preview.h            \
+       rotate-label-button.c           \
+       rotate-label-button.h           \
        wdgt-chain-button.c             \
        wdgt-chain-button.h             \
        wdgt-merge-menu.c               \
diff --git a/glabels2/src/mini-label-preview.c b/glabels2/src/mini-label-preview.c
new file mode 100644 (file)
index 0000000..a6ff906
--- /dev/null
@@ -0,0 +1,315 @@
+/*
+ *  mini-label-preview.c
+ *  Copyright (C) 2009  Jim Evins <evins@snaught.com>.
+ *
+ *  This file is part of gLabels.
+ *
+ *  gLabels 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 3 of the License, or
+ *  (at your option) any later version.
+ *
+ *  gLabels 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 General Public License for more details.
+ *
+ *  You should have received a copy of the GNU General Public License
+ *  along with gLabels.  If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include <config.h>
+
+#include "mini-label-preview.h"
+
+#include <libglabels/db.h>
+#include "marshal.h"
+#include "cairo-label-path.h"
+#include "color.h"
+
+
+/*===========================================*/
+/* Private macros and constants.             */
+/*===========================================*/
+
+#define MARGIN 2
+#define SHADOW_OFFSET 3
+
+
+/*===========================================*/
+/* Private types                             */
+/*===========================================*/
+
+struct _glMiniLabelPreviewPrivate {
+
+        lglTemplate *template;
+        gboolean     rotate_flag;
+};
+
+
+/*===========================================*/
+/* Private globals                           */
+/*===========================================*/
+
+
+/*===========================================*/
+/* Local function prototypes                 */
+/*===========================================*/
+
+static void       gl_mini_label_preview_finalize (GObject              *object);
+
+static void       style_set_cb                   (GtkWidget            *widget,
+                                                  GtkStyle             *previous_style);
+
+static void       redraw                         (glMiniLabelPreview   *this);
+
+static gboolean   expose_event_cb                (GtkWidget            *widget,
+                                                  GdkEventExpose       *event);
+
+static void       draw_preview                   (glMiniLabelPreview   *this,
+                                                  cairo_t              *cr);
+
+
+/****************************************************************************/
+/* Boilerplate Object stuff.                                                */
+/****************************************************************************/
+G_DEFINE_TYPE (glMiniLabelPreview, gl_mini_label_preview, GTK_TYPE_DRAWING_AREA);
+
+
+/*****************************************************************************/
+/* Class Init Function.                                                      */
+/*****************************************************************************/
+static void
+gl_mini_label_preview_class_init (glMiniLabelPreviewClass *class)
+{
+       GObjectClass   *gobject_class = G_OBJECT_CLASS (class);
+       GtkWidgetClass *widget_class = GTK_WIDGET_CLASS (class);
+
+        gl_mini_label_preview_parent_class = g_type_class_peek_parent (class);
+
+       gobject_class->finalize    = gl_mini_label_preview_finalize;
+
+        widget_class->expose_event = expose_event_cb;
+        widget_class->style_set    = style_set_cb;
+}
+
+
+/*****************************************************************************/
+/* Object Instance Init Function.                                            */
+/*****************************************************************************/
+static void
+gl_mini_label_preview_init (glMiniLabelPreview *this)
+{
+        GTK_WIDGET_SET_FLAGS (GTK_WIDGET (this), GTK_NO_WINDOW);
+
+       this->priv = g_new0 (glMiniLabelPreviewPrivate, 1);
+}
+
+
+/*****************************************************************************/
+/* Finalize Method.                                                          */
+/*****************************************************************************/
+static void
+gl_mini_label_preview_finalize (GObject *object)
+{
+       glMiniLabelPreview *this = GL_MINI_LABEL_PREVIEW (object);
+
+       g_return_if_fail (object != NULL);
+       g_return_if_fail (GL_IS_MINI_LABEL_PREVIEW (object));
+
+        lgl_template_free (this->priv->template);
+       g_free (this->priv);
+
+       G_OBJECT_CLASS (gl_mini_label_preview_parent_class)->finalize (object);
+}
+
+
+/*****************************************************************************/
+/** New Object Generator.                                                    */
+/*****************************************************************************/
+GtkWidget *
+gl_mini_label_preview_new (gint         w,
+                           gint         h)
+{
+       glMiniLabelPreview *this;
+
+       this = g_object_new (GL_TYPE_MINI_LABEL_PREVIEW, NULL);
+
+        gtk_widget_set_size_request (GTK_WIDGET (this), w, h);
+
+       return GTK_WIDGET (this);
+}
+
+
+/*****************************************************************************/
+/* Set label by name.                                                        */
+/*****************************************************************************/
+void
+gl_mini_label_preview_set_by_name (glMiniLabelPreview *this,
+                                   gchar              *name,
+                                   gboolean            rotate_flag)
+{
+        if (!name)
+        {
+                lgl_template_free (this->priv->template);
+                this->priv->template = NULL;
+        }
+        else
+        {
+                this->priv->template = lgl_db_lookup_template_from_name (name);
+                this->priv->rotate_flag = rotate_flag;
+        }
+
+        redraw (this);
+}
+
+
+/*--------------------------------------------------------------------------*/
+/* Style set handler (updates colors when style/theme changes).             */
+/*--------------------------------------------------------------------------*/
+static void
+style_set_cb (GtkWidget        *widget,
+              GtkStyle         *previous_style)
+{
+        redraw (GL_MINI_LABEL_PREVIEW (widget));
+}
+
+
+/*****************************************************************************/
+/* Request redraw.                                                           */
+/*****************************************************************************/
+static void
+redraw (glMiniLabelPreview  *this)
+{
+       GdkRegion *region;
+
+        if (GTK_WIDGET_REALIZED (GTK_WIDGET (this)))
+        {
+                /* redraw the cairo canvas forcing an expose event */
+                region = gdk_drawable_get_clip_region (GTK_WIDGET (this)->window);
+                gdk_window_invalidate_region (GTK_WIDGET (this)->window, region, TRUE);
+                gdk_region_destroy (region);
+        }
+}
+
+
+/*****************************************************************************/
+/* "Expose event" callback.                                                  */
+/*****************************************************************************/
+static gboolean
+expose_event_cb (GtkWidget      *widget,
+                 GdkEventExpose *event)
+{
+       cairo_t *cr;
+
+       cr = gdk_cairo_create (widget->window);
+
+       cairo_rectangle (cr,
+                       event->area.x, event->area.y,
+                       event->area.width, event->area.height);
+       cairo_clip (cr);
+
+        cairo_translate (cr, widget->allocation.x, widget->allocation.y);
+
+       draw_preview (GL_MINI_LABEL_PREVIEW (widget), cr);
+
+       cairo_destroy (cr);
+
+       return FALSE;
+}
+
+
+/*****************************************************************************/
+/* Draw sample.                                                              */
+/*****************************************************************************/
+static void
+draw_preview (glMiniLabelPreview *this,
+              cairo_t            *cr)
+{
+        GtkStyle               *style;
+        gdouble                 w, h;
+        guint                   fill_color, line_color, shadow_color;
+        const lglTemplateFrame *frame;
+        gdouble                 w_label, h_label;
+        gdouble                 scale;
+
+
+        w = GTK_WIDGET (this)->allocation.width;
+        h = GTK_WIDGET (this)->allocation.height;
+
+
+        style = gtk_widget_get_style (GTK_WIDGET (this));
+        if ( GTK_WIDGET_IS_SENSITIVE (GTK_WIDGET (this)) )
+        {
+                fill_color   = gl_color_from_gdk_color (&style->light[GTK_STATE_NORMAL]);
+                line_color   = gl_color_from_gdk_color (&style->fg[GTK_STATE_NORMAL]);
+                shadow_color = gl_color_from_gdk_color (&style->dark[GTK_STATE_NORMAL]);
+        }
+        else
+        {
+                fill_color   = GL_COLOR_NONE;
+                line_color   = gl_color_from_gdk_color (&style->fg[GTK_STATE_INSENSITIVE]);
+                shadow_color = GL_COLOR_NONE;
+        }
+
+
+        if (this->priv->template == NULL)
+        {
+                return;
+        }
+
+        frame = (lglTemplateFrame *)this->priv->template->frames->data;
+
+        if (this->priv->rotate_flag)
+        {
+                lgl_template_frame_get_size (frame, &h_label, &w_label);
+        }
+        else
+        {
+                lgl_template_frame_get_size (frame, &w_label, &h_label);
+        }
+
+        scale = MIN( (w - 2*MARGIN - 2*SHADOW_OFFSET)/w_label,
+                     (h - 2*MARGIN - 2*SHADOW_OFFSET)/h_label );
+
+
+        cairo_translate (cr, w/2.0, h/2.0);
+        cairo_scale (cr, scale, scale);
+        cairo_translate (cr, -w_label/2.0, -h_label/2.0);
+
+
+        /*
+         * Shadow
+         */
+        cairo_save (cr);
+        cairo_translate (cr, SHADOW_OFFSET/scale, SHADOW_OFFSET/scale);
+        gl_cairo_label_path (cr, this->priv->template, this->priv->rotate_flag, FALSE);
+
+        cairo_set_source_rgba (cr, GL_COLOR_RGBA_ARGS (shadow_color));
+        cairo_fill (cr);
+        cairo_restore (cr);
+
+        /*
+         * Label + outline
+         */
+        gl_cairo_label_path (cr, this->priv->template, this->priv->rotate_flag, FALSE);
+
+        cairo_set_source_rgba (cr, GL_COLOR_RGBA_ARGS (fill_color));
+        cairo_fill_preserve (cr);
+
+        cairo_set_line_width (cr, 1.0/scale);
+        cairo_set_source_rgba (cr, GL_COLOR_RGBA_ARGS (line_color));
+        cairo_stroke (cr);
+
+}
+
+
+
+/*
+ * Local Variables:       -- emacs
+ * mode: C                -- emacs
+ * c-basic-offset: 8      -- emacs
+ * tab-width: 8           -- emacs
+ * indent-tabs-mode: nil  -- emacs
+ * End:                   -- emacs
+ */
diff --git a/glabels2/src/mini-label-preview.h b/glabels2/src/mini-label-preview.h
new file mode 100644 (file)
index 0000000..a107edd
--- /dev/null
@@ -0,0 +1,79 @@
+/*
+ *  mini-label-preview.h
+ *  Copyright (C) 2009  Jim Evins <evins@snaught.com>.
+ *
+ *  This file is part of gLabels.
+ *
+ *  gLabels 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 3 of the License, or
+ *  (at your option) any later version.
+ *
+ *  gLabels 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 General Public License for more details.
+ *
+ *  You should have received a copy of the GNU General Public License
+ *  along with gLabels.  If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#ifndef __MINI_LABEL_PREVIEW_H__
+#define __MINI_LABEL_PREVIEW_H__
+
+
+#include <gtk/gtkdrawingarea.h>
+
+
+G_BEGIN_DECLS
+
+#define GL_TYPE_MINI_LABEL_PREVIEW (gl_mini_label_preview_get_type ())
+#define GL_MINI_LABEL_PREVIEW(obj) \
+        (G_TYPE_CHECK_INSTANCE_CAST((obj), GL_TYPE_MINI_LABEL_PREVIEW, glMiniLabelPreview ))
+#define GL_MINI_LABEL_PREVIEW_CLASS(klass) \
+        (G_TYPE_CHECK_CLASS_CAST ((klass), GL_TYPE_MINI_LABEL_PREVIEW, glMiniLabelPreviewClass))
+#define GL_IS_MINI_LABEL_PREVIEW(obj) \
+        (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GL_TYPE_MINI_LABEL_PREVIEW))
+#define GL_IS_MINI_LABEL_PREVIEW_CLASS(klass) \
+        (G_TYPE_CHECK_CLASS_TYPE ((klass), GL_TYPE_MINI_LABEL_PREVIEW))
+
+typedef struct _glMiniLabelPreview        glMiniLabelPreview;
+typedef struct _glMiniLabelPreviewPrivate glMiniLabelPreviewPrivate;
+typedef struct _glMiniLabelPreviewClass   glMiniLabelPreviewClass;
+
+struct _glMiniLabelPreview {
+       GtkDrawingArea               parent_widget;
+
+       glMiniLabelPreviewPrivate   *priv;
+};
+
+struct _glMiniLabelPreviewClass {
+       GtkDrawingAreaClass          parent_class;
+};
+
+
+GType      gl_mini_label_preview_get_type (void) G_GNUC_CONST;
+
+GtkWidget *gl_mini_label_preview_new         (gint                w,
+                                              gint                h);
+
+void       gl_mini_label_preview_set_by_name (glMiniLabelPreview *this,
+                                              gchar              *name,
+                                              gboolean            rotate_flag);
+
+
+
+G_END_DECLS
+
+#endif /* __MINI_LABEL_PREVIEW_H__ */
+
+
+
+/*
+ * Local Variables:       -- emacs
+ * mode: C                -- emacs
+ * c-basic-offset: 8      -- emacs
+ * tab-width: 8           -- emacs
+ * indent-tabs-mode: nil  -- emacs
+ * End:                   -- emacs
+ */
index 26ff50c0b148dc1cfb12e17af1581260db627256..5af8b9fae62ce59af4a94a18c19149c1894210ef 100644 (file)
 /* Private macros and constants.             */
 /*===========================================*/
 
-#define PAPER_RGB_ARGS          1.0,   1.0,   1.0
-#define PAPER_OUTLINE_RGB_ARGS  0.0,   0.0,   0.0
-#define LABEL_OUTLINE_RGB_ARGS  0.5,   0.5,   0.5
-
-#define SHADOW_X_OFFSET 5
-#define SHADOW_Y_OFFSET 5
+#define MARGIN
+#define SHADOW_OFFSET 3
 
 
 /*===========================================*/
@@ -326,8 +322,8 @@ gl_mini_preview_set_template (glMiniPreview     *this,
        /*
         * Set scale and offsets
         */
-       w = this->priv->width - 4 - 2*SHADOW_X_OFFSET;
-       h = this->priv->height - 4 - 2*SHADOW_Y_OFFSET;
+       w = this->priv->width - 2*MARGIN - 2*SHADOW_OFFSET;
+       h = this->priv->height - 2*MARGIN - 2*SHADOW_OFFSET;
        if ( (w/template->page_width) > (h/template->page_height) ) {
                this->priv->scale = h / template->page_height;
        } else {
@@ -627,8 +623,8 @@ draw (glMiniPreview  *this,
 
 
                /* update shadow */
-               shadow_x = SHADOW_X_OFFSET/this->priv->scale;
-               shadow_y = SHADOW_Y_OFFSET/this->priv->scale;
+               shadow_x = SHADOW_OFFSET/this->priv->scale;
+               shadow_y = SHADOW_OFFSET/this->priv->scale;
 
                draw_shadow (this, cr,
                             shadow_x, shadow_y,
@@ -668,7 +664,7 @@ draw_shadow (glMiniPreview      *this,
        cairo_rectangle (cr, x, y, width, height);
 
        style = gtk_widget_get_style (GTK_WIDGET(this));
-       shadow_color = gl_color_from_gdk_color (&style->bg[GTK_STATE_ACTIVE]);
+       shadow_color = gl_color_from_gdk_color (&style->dark[GTK_STATE_NORMAL]);
        cairo_set_source_rgb (cr, GL_COLOR_RGB_ARGS (shadow_color));
 
         cairo_fill (cr);
@@ -689,16 +685,23 @@ draw_paper (glMiniPreview      *this,
            gdouble             height,
            gdouble             line_width)
 {
-       cairo_save (cr);
+       GtkStyle                  *style;
+       guint                      paper_color, outline_color;
 
         gl_debug (DEBUG_MINI_PREVIEW, "START");
 
+       cairo_save (cr);
+
+       style = gtk_widget_get_style (GTK_WIDGET(this));
+       paper_color   = gl_color_from_gdk_color (&style->light[GTK_STATE_NORMAL]);
+       outline_color = gl_color_from_gdk_color (&style->fg[GTK_STATE_NORMAL]);
+
        cairo_rectangle (cr, 0.0, 0.0, width, height);
 
-       cairo_set_source_rgb (cr, PAPER_RGB_ARGS);
+       cairo_set_source_rgb (cr, GL_COLOR_RGB_ARGS (paper_color));
         cairo_fill_preserve (cr);
 
-       cairo_set_source_rgb (cr, PAPER_OUTLINE_RGB_ARGS);
+       cairo_set_source_rgb (cr, GL_COLOR_RGB_ARGS (outline_color));
        cairo_set_line_width (cr, line_width);
         cairo_stroke (cr);
 
@@ -721,7 +724,7 @@ draw_labels (glMiniPreview *this,
         gint                       i, n_labels;
         lglTemplateOrigin         *origins;
        GtkStyle                  *style;
-       guint                      highlight_color;
+       guint                      highlight_color, paper_color, outline_color;
 
         gl_debug (DEBUG_MINI_PREVIEW, "START");
 
@@ -732,6 +735,8 @@ draw_labels (glMiniPreview *this,
 
        style = gtk_widget_get_style (GTK_WIDGET(this));
        highlight_color = gl_color_from_gdk_color (&style->base[GTK_STATE_SELECTED]);
+       paper_color     = gl_color_from_gdk_color (&style->light[GTK_STATE_NORMAL]);
+       outline_color   = gl_color_from_gdk_color (&style->fg[GTK_STATE_NORMAL]);
 
         for ( i=0; i < n_labels; i++ ) {
 
@@ -747,13 +752,13 @@ draw_labels (glMiniPreview *this,
                }
                else
                {
-                       cairo_set_source_rgb (cr, PAPER_RGB_ARGS);
+                       cairo_set_source_rgb (cr, GL_COLOR_RGB_ARGS (paper_color));
                }
                cairo_set_fill_rule (cr, CAIRO_FILL_RULE_EVEN_ODD);
                cairo_fill_preserve (cr);
 
                cairo_set_line_width (cr, line_width);
-               cairo_set_source_rgb (cr, LABEL_OUTLINE_RGB_ARGS);
+               cairo_set_source_rgb (cr, GL_COLOR_RGB_ARGS (outline_color));
                cairo_stroke (cr);
 
                cairo_restore (cr);
index 8734e1985a82675dc53959342682c804081ee4af..f892d04bcf81cd215566fbd8de88fe07a537ca8b 100644 (file)
@@ -29,7 +29,7 @@
 
 #include "hig.h"
 #include "wdgt-media-select.h"
-#include "wdgt-rotate-label.h"
+#include "rotate-label-button.h"
 #include "util.h"
 
 #include "debug.h"
@@ -192,14 +192,14 @@ gl_new_label_dialog_construct (glNewLabelDialog   *dialog,
        gtk_box_pack_start (GTK_BOX (media_select_vbox),
                            dialog->priv->media_select, FALSE, FALSE, 0);
 
-       dialog->priv->rotate_label = gl_wdgt_rotate_label_new ();
+       dialog->priv->rotate_label = gl_rotate_label_button_new ();
        gtk_box_pack_start (GTK_BOX (rotate_label_vbox),
                            dialog->priv->rotate_label, FALSE, FALSE, 0);
 
        /* Sync template name from media select with rotate widget. */
        name = gl_wdgt_media_select_get_name (GL_WDGT_MEDIA_SELECT (dialog->priv->media_select));
-       gl_wdgt_rotate_label_set_template_name (GL_WDGT_ROTATE_LABEL (dialog->priv->rotate_label),
-                                               name);
+       gl_rotate_label_button_set_template_name (GL_ROTATE_LABEL_BUTTON (dialog->priv->rotate_label),
+                                              name);
 
        g_signal_connect (G_OBJECT (dialog->priv->media_select), "changed",
                          G_CALLBACK (template_changed_cb), dialog);
@@ -222,8 +222,8 @@ template_changed_cb (glWdgtMediaSelect *select,
 
        name = gl_wdgt_media_select_get_name (GL_WDGT_MEDIA_SELECT (select));
 
-       gl_wdgt_rotate_label_set_template_name (GL_WDGT_ROTATE_LABEL (dialog->priv->rotate_label),
-                                               name);
+       gl_rotate_label_button_set_template_name (GL_ROTATE_LABEL_BUTTON (dialog->priv->rotate_label),
+                                                  name);
 
        gtk_dialog_set_response_sensitive (GTK_DIALOG (dialog),
                                           GTK_RESPONSE_OK,
@@ -294,8 +294,8 @@ gl_new_label_dialog_set_filter_parameters (glNewLabelDialog *dialog,
 gboolean
 gl_new_label_dialog_get_rotate_state (glNewLabelDialog *dialog)
 {
-       return gl_wdgt_rotate_label_get_state (
-               GL_WDGT_ROTATE_LABEL (dialog->priv->rotate_label));
+       return gl_rotate_label_button_get_state (
+               GL_ROTATE_LABEL_BUTTON (dialog->priv->rotate_label));
 }
 
 
@@ -306,8 +306,8 @@ void
 gl_new_label_dialog_set_rotate_state (glNewLabelDialog *dialog,
                                      gboolean          state)
 {
-       gl_wdgt_rotate_label_set_state (
-               GL_WDGT_ROTATE_LABEL (dialog->priv->rotate_label), state);
+       gl_rotate_label_button_set_state (
+               GL_ROTATE_LABEL_BUTTON (dialog->priv->rotate_label), state);
 }
 
 
diff --git a/glabels2/src/rotate-label-button.c b/glabels2/src/rotate-label-button.c
new file mode 100644 (file)
index 0000000..29955c5
--- /dev/null
@@ -0,0 +1,266 @@
+/*
+ *  rotate-label-button.c
+ *  Copyright (C) 2001-2009  Jim Evins <evins@snaught.com>.
+ *
+ *  This file is part of gLabels.
+ *
+ *  gLabels 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 3 of the License, or
+ *  (at your option) any later version.
+ *
+ *  gLabels 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 General Public License for more details.
+ *
+ *  You should have received a copy of the GNU General Public License
+ *  along with gLabels.  If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include <config.h>
+
+#include "rotate-label-button.h"
+
+#include <glib/gi18n.h>
+#include <gtk/gtkradiobutton.h>
+#include <gtk/gtklabel.h>
+#include <gtk/gtkvbox.h>
+#include <math.h>
+#include "mini-label-preview.h"
+#include <libglabels/db.h>
+#include "hig.h"
+#include "marshal.h"
+
+#include "debug.h"
+
+
+/*========================================================*/
+/* Private macros and constants.                          */
+/*========================================================*/
+
+#define SIZE 48
+
+
+/*===========================================*/
+/* Private types                             */
+/*===========================================*/
+
+struct _glRotateLabelButtonPrivate {
+
+        GtkWidget    *no_rotate_radio;
+        GtkWidget    *rotate_radio;
+        GtkWidget    *no_rotate_preview;
+        GtkWidget    *rotate_preview;
+};
+
+enum {
+       CHANGED,
+       LAST_SIGNAL
+};
+
+
+/*===========================================*/
+/* Private globals                           */
+/*===========================================*/
+
+static gint rotate_label_button_signals[LAST_SIGNAL] = { 0 };
+
+
+/*===========================================*/
+/* Local function prototypes                 */
+/*===========================================*/
+
+static void gl_rotate_label_button_finalize    (GObject                *object);
+
+static void toggled_cb                         (GtkToggleButton        *toggle,
+                                               gpointer                user_data);
+
+
+/****************************************************************************/
+/* Boilerplate Object stuff.                                                */
+/****************************************************************************/
+G_DEFINE_TYPE (glRotateLabelButton, gl_rotate_label_button, GTK_TYPE_HBOX);
+
+
+static void
+gl_rotate_label_button_class_init (glRotateLabelButtonClass *class)
+{
+       GObjectClass *object_class = G_OBJECT_CLASS (class);
+
+       gl_rotate_label_button_parent_class = g_type_class_peek_parent (class);
+
+       object_class->finalize = gl_rotate_label_button_finalize;
+
+       rotate_label_button_signals[CHANGED] =
+           g_signal_new ("changed",
+                         G_OBJECT_CLASS_TYPE(object_class),
+                         G_SIGNAL_RUN_LAST,
+                         G_STRUCT_OFFSET (glRotateLabelButtonClass, changed),
+                         NULL, NULL,
+                         gl_marshal_VOID__VOID,
+                         G_TYPE_NONE, 0);
+
+}
+
+
+static void
+gl_rotate_label_button_init (glRotateLabelButton *this)
+{
+        GtkWidget *vbox;
+        GtkWidget *label;
+
+        this->priv = g_new0 (glRotateLabelButtonPrivate, 1);
+
+        gtk_container_set_border_width (GTK_CONTAINER (this), GL_HIG_PAD2);
+
+        this->priv->no_rotate_radio = gtk_radio_button_new (NULL);
+        gtk_toggle_button_set_mode (GTK_TOGGLE_BUTTON (this->priv->no_rotate_radio),
+                                    FALSE);
+        vbox = gtk_vbox_new (FALSE, 1);
+        this->priv->no_rotate_preview = gl_mini_label_preview_new (SIZE, SIZE);
+        gtk_box_pack_start (GTK_BOX (vbox), this->priv->no_rotate_preview, FALSE, FALSE, 0);
+        label = gtk_label_new (_("Normal"));
+        gtk_box_pack_start (GTK_BOX (vbox), label, FALSE, FALSE, 0);
+        gtk_container_add (GTK_CONTAINER (this->priv->no_rotate_radio), vbox);
+
+
+        this->priv->rotate_radio    = gtk_radio_button_new_from_widget (GTK_RADIO_BUTTON (this->priv->no_rotate_radio));
+        gtk_toggle_button_set_mode (GTK_TOGGLE_BUTTON (this->priv->rotate_radio),
+                                    FALSE);
+        vbox = gtk_vbox_new (FALSE, 1);
+        this->priv->rotate_preview    = gl_mini_label_preview_new (SIZE, SIZE);
+        gtk_box_pack_start (GTK_BOX (vbox), this->priv->rotate_preview, FALSE, FALSE, 0);
+        label = gtk_label_new (_("Rotated"));
+        gtk_box_pack_start (GTK_BOX (vbox), label, FALSE, FALSE, 0);
+        gtk_container_add (GTK_CONTAINER (this->priv->rotate_radio), vbox);
+
+        gtk_box_pack_start (GTK_BOX (this),
+                            this->priv->no_rotate_radio,
+                            FALSE, FALSE, GL_HIG_PAD1);
+        gtk_box_pack_start (GTK_BOX (this),
+                            this->priv->rotate_radio,
+                            FALSE, FALSE, GL_HIG_PAD1);
+        
+        /* Connect signals to controls */
+       g_signal_connect (G_OBJECT (this->priv->no_rotate_radio),
+                         "toggled",
+                         G_CALLBACK (toggled_cb), this);
+       g_signal_connect (G_OBJECT (this->priv->rotate_radio),
+                         "toggled",
+                         G_CALLBACK (toggled_cb), this);
+}
+
+
+static void
+gl_rotate_label_button_finalize (GObject *object)
+{
+       glRotateLabelButton      *this = GL_ROTATE_LABEL_BUTTON (object);
+
+       g_return_if_fail (object != NULL);
+       g_return_if_fail (GL_IS_ROTATE_LABEL_BUTTON (object));
+
+       g_free (this->priv);
+
+       G_OBJECT_CLASS (gl_rotate_label_button_parent_class)->finalize (object);
+}
+
+
+GtkWidget *
+gl_rotate_label_button_new (void)
+{
+       glRotateLabelButton *this;
+
+       this = g_object_new (gl_rotate_label_button_get_type (), NULL);
+
+       return GTK_WIDGET (this);
+}
+
+
+/*--------------------------------------------------------------------------*/
+/* PRIVATE.  modify widget due to change of check button                    */
+/*--------------------------------------------------------------------------*/
+static void
+toggled_cb (GtkToggleButton *toggle,
+            gpointer         user_data)
+{
+
+       /* Emit our "changed" signal */
+       g_signal_emit (G_OBJECT (user_data),
+                      rotate_label_button_signals[CHANGED], 0);
+
+}
+
+
+/****************************************************************************/
+/* query state of widget.                                                   */
+/****************************************************************************/
+gboolean
+gl_rotate_label_button_get_state (glRotateLabelButton *this)
+{
+       return
+           gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON
+                                         (this->priv->rotate_radio));
+}
+
+/****************************************************************************/
+/* set state of widget.                                                     */
+/****************************************************************************/
+void
+gl_rotate_label_button_set_state (glRotateLabelButton *this,
+                                  gboolean             state)
+{
+       gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON
+                                     (this->priv->rotate_radio), state);
+}
+
+/****************************************************************************/
+/* set template for widget.                                                 */
+/****************************************************************************/
+void
+gl_rotate_label_button_set_template_name (glRotateLabelButton *this,
+                                          gchar               *name)
+{
+       lglTemplate               *template;
+       const lglTemplateFrame    *frame;
+       gdouble                    raw_w, raw_h;
+
+       if (name == NULL)
+       {
+               gtk_widget_set_sensitive (this->priv->no_rotate_radio, FALSE);
+               gtk_widget_set_sensitive (this->priv->rotate_radio, FALSE);
+       }
+       else
+       {
+               template = lgl_db_lookup_template_from_name (name);
+                frame = (lglTemplateFrame *)template->frames->data;
+
+                gl_mini_label_preview_set_by_name (GL_MINI_LABEL_PREVIEW (this->priv->no_rotate_preview),
+                                                   name, FALSE);
+                gl_mini_label_preview_set_by_name (GL_MINI_LABEL_PREVIEW (this->priv->rotate_preview),
+                                                   name, TRUE);
+
+               lgl_template_frame_get_size (frame, &raw_w, &raw_h);
+               gtk_widget_set_sensitive (this->priv->no_rotate_radio,
+                                         (raw_w != raw_h));
+               gtk_widget_set_sensitive (this->priv->rotate_radio,
+                                         (raw_w != raw_h));
+
+                gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON
+                                              (this->priv->no_rotate_radio), TRUE);
+                gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON
+                                              (this->priv->rotate_radio), FALSE);
+       }
+
+}
+
+
+
+/*
+ * Local Variables:       -- emacs
+ * mode: C                -- emacs
+ * c-basic-offset: 8      -- emacs
+ * tab-width: 8           -- emacs
+ * indent-tabs-mode: nil  -- emacs
+ * End:                   -- emacs
+ */
diff --git a/glabels2/src/rotate-label-button.h b/glabels2/src/rotate-label-button.h
new file mode 100644 (file)
index 0000000..0dda489
--- /dev/null
@@ -0,0 +1,83 @@
+/*
+ *  rotate-label-button.h
+ *  Copyright (C) 2001-2009  Jim Evins <evins@snaught.com>.
+ *
+ *  This file is part of gLabels.
+ *
+ *  gLabels 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 3 of the License, or
+ *  (at your option) any later version.
+ *
+ *  gLabels 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 General Public License for more details.
+ *
+ *  You should have received a copy of the GNU General Public License
+ *  along with gLabels.  If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#ifndef __ROTATE_LABEL_BUTTON_H__
+#define __ROTATE_LABEL_BUTTON_H__
+
+#include <gtk/gtkhbox.h>
+
+G_BEGIN_DECLS
+
+#define GL_TYPE_ROTATE_LABEL_BUTTON (gl_rotate_label_button_get_type ())
+#define GL_ROTATE_LABEL_BUTTON(obj) \
+        (G_TYPE_CHECK_INSTANCE_CAST((obj), GL_TYPE_ROTATE_LABEL_BUTTON, glRotateLabelButton ))
+#define GL_ROTATE_LABEL_BUTTON_CLASS(klass) \
+        (G_TYPE_CHECK_CLASS_CAST ((klass), GL_TYPE_ROTATE_LABEL_BUTTON, glRotateLabelButtonClass))
+#define GL_IS_ROTATE_LABEL_BUTTON(obj) \
+        (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GL_TYPE_ROTATE_LABEL_BUTTON))
+#define GL_IS_ROTATE_LABEL_BUTTON_CLASS(klass) \
+        (G_TYPE_CHECK_CLASS_TYPE ((klass), GL_TYPE_ROTATE_LABEL_BUTTON))
+
+
+typedef struct _glRotateLabelButton         glRotateLabelButton;
+typedef struct _glRotateLabelButtonClass    glRotateLabelButtonClass;
+
+typedef struct _glRotateLabelButtonPrivate  glRotateLabelButtonPrivate;
+
+struct _glRotateLabelButton {
+       GtkHBox                      parent_widget;
+
+       glRotateLabelButtonPrivate  *priv;
+};
+
+struct _glRotateLabelButtonClass {
+       GtkHBoxClass                 parent_class;
+
+       void (*changed) (glRotateLabelButton  *rotate_label_button,
+                        gpointer              user_data);
+};
+
+
+GType      gl_rotate_label_button_get_type          (void) G_GNUC_CONST;
+
+GtkWidget *gl_rotate_label_button_new               (void);
+
+gboolean   gl_rotate_label_button_get_state         (glRotateLabelButton *rotate_label);
+
+void       gl_rotate_label_button_set_state         (glRotateLabelButton *rotate_label,
+                                                     gboolean             state);
+
+void       gl_rotate_label_button_set_template_name (glRotateLabelButton *rotate_label,
+                                                     gchar               *name);
+
+G_END_DECLS
+
+#endif
+
+
+
+/*
+ * Local Variables:       -- emacs
+ * mode: C                -- emacs
+ * c-basic-offset: 8      -- emacs
+ * tab-width: 8           -- emacs
+ * indent-tabs-mode: nil  -- emacs
+ * End:                   -- emacs
+ */
diff --git a/glabels2/src/wdgt-rotate-label.c b/glabels2/src/wdgt-rotate-label.c
deleted file mode 100644 (file)
index 4a92428..0000000
+++ /dev/null
@@ -1,361 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 8 -*- */
-
-/*
- *  (GLABELS) Label and Business Card Creation program for GNOME
- *
- *  wdgt_rotate_label.c:  label rotate selection widget module
- *
- *  Copyright (C) 2001-2006  Jim Evins <evins@snaught.com>.
- *
- *  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 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
- */
-
-#include <config.h>
-
-#include "wdgt-rotate-label.h"
-
-#include <glib/gi18n.h>
-#include <gtk/gtkradiobutton.h>
-#include <gtk/gtkdrawingarea.h>
-#include <math.h>
-
-#include "marshal.h"
-#include "color.h"
-#include "hig.h"
-#include <libglabels/db.h>
-#include "cairo-label-path.h"
-
-#include "debug.h"
-
-/*========================================================*/
-/* Private macros and constants.                          */
-/*========================================================*/
-#define MINI_PREVIEW_MAX_PIXELS 48
-#define MINI_PREVIEW_CANVAS_PIXELS (MINI_PREVIEW_MAX_PIXELS + 8)
-
-#define LINE_COLOR             GL_COLOR(0,0,0)
-#define FILL_COLOR             GL_COLOR(255,255,255)
-#define SHADOW_COLOR           GL_COLOR_A(192,192,192,128)
-
-#define LINE_WIDTH_PIXELS    1.0
-
-#define SHADOW_X_OFFSET 3
-#define SHADOW_Y_OFFSET 3
-
-
-/*===========================================*/
-/* Private types                             */
-/*===========================================*/
-
-struct _glWdgtRotateLabelPrivate {
-
-        GtkWidget    *no_rotate_radio;
-        GtkWidget    *rotate_radio;
-        GtkWidget    *no_rotate_image;
-        GtkWidget    *rotate_image;
-
-       lglTemplate  *template;
-};
-
-enum {
-       CHANGED,
-       LAST_SIGNAL
-};
-
-/*===========================================*/
-/* Private globals                           */
-/*===========================================*/
-
-static gint wdgt_rotate_label_signals[LAST_SIGNAL] = { 0 };
-
-/*===========================================*/
-/* Local function prototypes                 */
-/*===========================================*/
-
-static void gl_wdgt_rotate_label_finalize      (GObject                *object);
-
-static void toggled_cb                         (GtkToggleButton        *toggle,
-                                               gpointer                user_data);
-
-static GdkPixbuf *create_pixbuf                (lglTemplate            *template,
-                                               gboolean                rotate_flag);
-
-
-/****************************************************************************/
-/* Boilerplate Object stuff.                                                */
-/****************************************************************************/
-G_DEFINE_TYPE (glWdgtRotateLabel, gl_wdgt_rotate_label, GTK_TYPE_HBOX);
-
-
-static void
-gl_wdgt_rotate_label_class_init (glWdgtRotateLabelClass *class)
-{
-       GObjectClass *object_class = G_OBJECT_CLASS (class);
-
-       gl_wdgt_rotate_label_parent_class = g_type_class_peek_parent (class);
-
-       object_class->finalize = gl_wdgt_rotate_label_finalize;
-
-       wdgt_rotate_label_signals[CHANGED] =
-           g_signal_new ("changed",
-                         G_OBJECT_CLASS_TYPE(object_class),
-                         G_SIGNAL_RUN_LAST,
-                         G_STRUCT_OFFSET (glWdgtRotateLabelClass, changed),
-                         NULL, NULL,
-                         gl_marshal_VOID__VOID,
-                         G_TYPE_NONE, 0);
-
-}
-
-static void
-gl_wdgt_rotate_label_init (glWdgtRotateLabel *rotate_label)
-{
-        rotate_label->priv = g_new0 (glWdgtRotateLabelPrivate, 1);
-
-        gtk_container_set_border_width (GTK_CONTAINER (rotate_label), GL_HIG_PAD2);
-
-        rotate_label->priv->no_rotate_radio = gtk_radio_button_new_with_label (NULL, _("Normal"));
-        rotate_label->priv->rotate_radio    = gtk_radio_button_new_with_label_from_widget (GTK_RADIO_BUTTON (rotate_label->priv->no_rotate_radio), _("Rotated"));
-
-        gtk_toggle_button_set_mode (GTK_TOGGLE_BUTTON (rotate_label->priv->no_rotate_radio),
-                                    FALSE);
-        gtk_toggle_button_set_mode (GTK_TOGGLE_BUTTON (rotate_label->priv->rotate_radio),
-                                    FALSE);
-
-        gtk_button_set_image_position (GTK_BUTTON (rotate_label->priv->no_rotate_radio),
-                                       GTK_POS_TOP);
-        gtk_button_set_image_position (GTK_BUTTON (rotate_label->priv->rotate_radio),
-                                       GTK_POS_TOP);
-
-        rotate_label->priv->no_rotate_image = gtk_image_new ();
-        rotate_label->priv->rotate_image    = gtk_image_new ();
-
-        gtk_button_set_image (GTK_BUTTON (rotate_label->priv->no_rotate_radio),
-                              rotate_label->priv->no_rotate_image);
-        gtk_button_set_image (GTK_BUTTON (rotate_label->priv->rotate_radio),
-                              rotate_label->priv->rotate_image);
-
-        gtk_box_pack_start (GTK_BOX (rotate_label),
-                            rotate_label->priv->no_rotate_radio,
-                            FALSE, FALSE, GL_HIG_PAD1);
-        gtk_box_pack_start (GTK_BOX (rotate_label),
-                            rotate_label->priv->rotate_radio,
-                            FALSE, FALSE, GL_HIG_PAD1);
-        
-        /* Connect signals to controls */
-       g_signal_connect (G_OBJECT (rotate_label->priv->no_rotate_radio),
-                         "toggled",
-                         G_CALLBACK (toggled_cb), rotate_label);
-       g_signal_connect (G_OBJECT (rotate_label->priv->rotate_radio),
-                         "toggled",
-                         G_CALLBACK (toggled_cb), rotate_label);
-}
-
-static void
-gl_wdgt_rotate_label_finalize (GObject *object)
-{
-       glWdgtRotateLabel      *rotate_label = GL_WDGT_ROTATE_LABEL (object);
-
-       g_return_if_fail (object != NULL);
-       g_return_if_fail (GL_IS_WDGT_ROTATE_LABEL (object));
-
-       if (rotate_label->priv->template) {
-               lgl_template_free (rotate_label->priv->template);
-               rotate_label->priv->template = NULL;
-       }
-       g_free (rotate_label->priv);
-
-       G_OBJECT_CLASS (gl_wdgt_rotate_label_parent_class)->finalize (object);
-}
-
-GtkWidget *
-gl_wdgt_rotate_label_new (void)
-{
-       glWdgtRotateLabel *rotate_label;
-
-       rotate_label = g_object_new (gl_wdgt_rotate_label_get_type (), NULL);
-
-       return GTK_WIDGET (rotate_label);
-}
-
-/*--------------------------------------------------------------------------*/
-/* PRIVATE.  modify widget due to change of check button                    */
-/*--------------------------------------------------------------------------*/
-static void
-toggled_cb (GtkToggleButton *toggle,
-            gpointer         user_data)
-{
-
-       /* Emit our "changed" signal */
-       g_signal_emit (G_OBJECT (user_data),
-                      wdgt_rotate_label_signals[CHANGED], 0);
-
-}
-
-/*--------------------------------------------------------------------------*/
-/* PRIVATE.  Update mini-preview from template           .                  */
-/*--------------------------------------------------------------------------*/
-static GdkPixbuf *
-create_pixbuf (lglTemplate    *template,
-               gboolean        rotate_flag)
-{
-        GdkPixbuf                 *pixbuf;
-        cairo_surface_t           *surface;
-       const lglTemplateFrame    *frame;
-       gdouble                    m, m_canvas, w, h, scale;
-       cairo_t                   *cr;
-
-        /* Create pixbuf and cairo context. */
-        pixbuf = gdk_pixbuf_new (GDK_COLORSPACE_RGB, TRUE, 8, MINI_PREVIEW_CANVAS_PIXELS, MINI_PREVIEW_CANVAS_PIXELS);
-        surface = cairo_image_surface_create_for_data (gdk_pixbuf_get_pixels (pixbuf),
-                                                       CAIRO_FORMAT_RGB24,
-                                                       gdk_pixbuf_get_width (pixbuf),
-                                                       gdk_pixbuf_get_height (pixbuf),
-                                                       gdk_pixbuf_get_rowstride (pixbuf));
-
-
-       if (template == NULL)
-       {
-               return pixbuf;
-       }
-
-        frame = (lglTemplateFrame *)template->frames->data;
-
-        if (rotate_flag)
-        {
-                lgl_template_frame_get_size (frame, &h, &w);
-        }
-        else
-        {
-                lgl_template_frame_get_size (frame, &w, &h);
-        }
-       m = MAX (w, h);
-       scale = MINI_PREVIEW_MAX_PIXELS / m;
-       m_canvas = MINI_PREVIEW_CANVAS_PIXELS / scale;
-
-       cr = cairo_create (surface);
-        cairo_surface_destroy (surface);
-
-        /* Clear pixbuf */
-        cairo_save (cr);
-        cairo_set_operator (cr, CAIRO_OPERATOR_CLEAR);
-        cairo_paint (cr);
-        cairo_restore (cr);
-
-        cairo_set_antialias (cr, CAIRO_ANTIALIAS_GRAY);
-  
-       cairo_identity_matrix (cr);
-       cairo_translate (cr, MINI_PREVIEW_CANVAS_PIXELS/2, MINI_PREVIEW_CANVAS_PIXELS/2);
-        cairo_scale (cr, scale, scale);
-        cairo_translate (cr, -w/2.0, -h/2.0);
-
-        /*
-         * Shadow
-         */
-        cairo_save (cr);
-        cairo_translate (cr, SHADOW_X_OFFSET/scale, SHADOW_Y_OFFSET/scale);
-        gl_cairo_label_path (cr, template, rotate_flag, FALSE);
-
-       cairo_set_source_rgb (cr, GL_COLOR_RGB_ARGS (SHADOW_COLOR));
-        cairo_set_fill_rule (cr, CAIRO_FILL_RULE_EVEN_ODD);
-       cairo_fill (cr);
-        cairo_restore (cr);
-
-        /*
-         * Label + outline
-         */
-        gl_cairo_label_path (cr, template, rotate_flag, FALSE);
-
-       cairo_set_source_rgb (cr, GL_COLOR_RGB_ARGS (FILL_COLOR));
-        cairo_set_fill_rule (cr, CAIRO_FILL_RULE_EVEN_ODD);
-       cairo_fill_preserve (cr);
-
-       cairo_set_line_width (cr, LINE_WIDTH_PIXELS/scale);
-       cairo_set_source_rgb (cr, GL_COLOR_RGB_ARGS (LINE_COLOR));
-       cairo_stroke (cr);
-
-
-       cairo_destroy (cr);
-
-        return pixbuf;
-}
-
-/****************************************************************************/
-/* query state of widget.                                                   */
-/****************************************************************************/
-gboolean
-gl_wdgt_rotate_label_get_state (glWdgtRotateLabel *rotate_label)
-{
-       return
-           gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON
-                                         (rotate_label->priv->rotate_radio));
-}
-
-/****************************************************************************/
-/* set state of widget.                                                     */
-/****************************************************************************/
-void
-gl_wdgt_rotate_label_set_state (glWdgtRotateLabel *rotate_label,
-                               gboolean state)
-{
-       gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON
-                                     (rotate_label->priv->rotate_radio), state);
-}
-
-/****************************************************************************/
-/* set template for widget.                                                 */
-/****************************************************************************/
-void
-gl_wdgt_rotate_label_set_template_name (glWdgtRotateLabel *rotate_label,
-                                       gchar             *name)
-{
-       lglTemplate               *template;
-       const lglTemplateFrame    *frame;
-       gdouble                    raw_w, raw_h;
-
-       if (name == NULL)
-       {
-               rotate_label->priv->template = NULL;
-
-               gtk_widget_set_sensitive (rotate_label->priv->no_rotate_radio, FALSE);
-               gtk_widget_set_sensitive (rotate_label->priv->rotate_radio, FALSE);
-       }
-       else
-       {
-               template = lgl_db_lookup_template_from_name (name);
-                frame = (lglTemplateFrame *)template->frames->data;
-
-               rotate_label->priv->template = template;
-               lgl_template_frame_get_size (frame, &raw_w, &raw_h);
-
-                gtk_image_set_from_pixbuf (GTK_IMAGE (rotate_label->priv->no_rotate_image),
-                                           create_pixbuf (rotate_label->priv->template, FALSE));
-                gtk_image_set_from_pixbuf (GTK_IMAGE (rotate_label->priv->rotate_image),
-                                           create_pixbuf (rotate_label->priv->template, TRUE));
-
-               gtk_widget_set_sensitive (rotate_label->priv->no_rotate_radio,
-                                         (raw_w != raw_h));
-               gtk_widget_set_sensitive (rotate_label->priv->rotate_radio,
-                                         (raw_w != raw_h));
-
-                gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON
-                                              (rotate_label->priv->no_rotate_radio), TRUE);
-                gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON
-                                              (rotate_label->priv->rotate_radio), FALSE);
-
-       }
-
-}
-
diff --git a/glabels2/src/wdgt-rotate-label.h b/glabels2/src/wdgt-rotate-label.h
deleted file mode 100644 (file)
index c2bc191..0000000
+++ /dev/null
@@ -1,74 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 8 -*- */
-
-/*
- *  (GLABELS) Label and Business Card Creation program for GNOME
- *
- *  wdgt_rotate_label.h:  label rotate selection widget module header file
- *
- *  Copyright (C) 2001-2006  Jim Evins <evins@snaught.com>.
- *
- *  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 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 __WDGT_ROTATE_LABEL_H__
-#define __WDGT_ROTATE_LABEL_H__
-
-#include <gtk/gtkhbox.h>
-
-G_BEGIN_DECLS
-
-#define GL_TYPE_WDGT_ROTATE_LABEL (gl_wdgt_rotate_label_get_type ())
-#define GL_WDGT_ROTATE_LABEL(obj) \
-        (G_TYPE_CHECK_INSTANCE_CAST((obj), GL_TYPE_WDGT_ROTATE_LABEL, glWdgtRotateLabel ))
-#define GL_WDGT_ROTATE_LABEL_CLASS(klass) \
-        (G_TYPE_CHECK_CLASS_CAST ((klass), GL_TYPE_WDGT_ROTATE_LABEL, glWdgtRotateLabelClass))
-#define GL_IS_WDGT_ROTATE_LABEL(obj) \
-        (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GL_TYPE_WDGT_ROTATE_LABEL))
-#define GL_IS_WDGT_ROTATE_LABEL_CLASS(klass) \
-        (G_TYPE_CHECK_CLASS_TYPE ((klass), GL_TYPE_WDGT_ROTATE_LABEL))
-
-typedef struct _glWdgtRotateLabel         glWdgtRotateLabel;
-typedef struct _glWdgtRotateLabelClass    glWdgtRotateLabelClass;
-
-typedef struct _glWdgtRotateLabelPrivate  glWdgtRotateLabelPrivate;
-
-struct _glWdgtRotateLabel {
-       GtkHBox                    parent_widget;
-
-       glWdgtRotateLabelPrivate  *priv;
-};
-
-struct _glWdgtRotateLabelClass {
-       GtkHBoxClass parent_class;
-
-       void (*changed) (glWdgtRotateLabel  *wdgt_rotate_label,
-                        gpointer            user_data);
-};
-
-GType      gl_wdgt_rotate_label_get_type          (void) G_GNUC_CONST;
-
-GtkWidget *gl_wdgt_rotate_label_new               (void);
-
-gboolean   gl_wdgt_rotate_label_get_state         (glWdgtRotateLabel *rotate_label);
-
-void       gl_wdgt_rotate_label_set_state         (glWdgtRotateLabel *rotate_label,
-                                                  gboolean           state);
-
-void       gl_wdgt_rotate_label_set_template_name (glWdgtRotateLabel *rotate_label,
-                                                  gchar             *name);
-
-G_END_DECLS
-
-#endif