]> git.sur5r.net Git - glabels/blobdiff - src/wdgt-rotate-label.c
Imported Upstream version 3.0.0
[glabels] / src / wdgt-rotate-label.c
diff --git a/src/wdgt-rotate-label.c b/src/wdgt-rotate-label.c
deleted file mode 100644 (file)
index 4edca60..0000000
+++ /dev/null
@@ -1,395 +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 <glade/glade-xml.h>
-#include <gtk/gtktogglebutton.h>
-#include <gtk/gtkcheckbutton.h>
-#include <gtk/gtkdrawingarea.h>
-#include <math.h>
-
-#include "marshal.h"
-#include "color.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 LINE_WIDTH_PIXELS    1.0
-
-#define SHADOW_X_OFFSET 3
-#define SHADOW_Y_OFFSET 3
-
-
-/*===========================================*/
-/* Private types                             */
-/*===========================================*/
-
-struct _glWdgtRotateLabelPrivate {
-
-        GtkWidget    *rotate_check;
-        GtkWidget    *rotate_drawingarea;
-
-       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 gl_wdgt_rotate_label_construct     (glWdgtRotateLabel      *rotate_label);
-
-static void entry_changed_cb                   (GtkToggleButton        *toggle,
-                                               gpointer                user_data);
-
-static void drawingarea_update                 (GtkDrawingArea         *drawing_area,
-                                               lglTemplate            *template,
-                                               gboolean                rotate_flag);
-
-static gboolean expose_cb                      (GtkWidget              *drawingarea,
-                                               GdkEventExpose         *event,
-                                               gpointer                user_data);
-
-
-/****************************************************************************/
-/* Boilerplate Object stuff.                                                */
-/****************************************************************************/
-G_DEFINE_TYPE (glWdgtRotateLabel, gl_wdgt_rotate_label, GTK_TYPE_VBOX);
-
-
-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);
-}
-
-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);
-
-       gl_wdgt_rotate_label_construct (rotate_label);
-
-       return GTK_WIDGET (rotate_label);
-}
-
-/*--------------------------------------------------------------------------*/
-/* Construct composite widget.                                              */
-/*--------------------------------------------------------------------------*/
-static void
-gl_wdgt_rotate_label_construct (glWdgtRotateLabel *rotate_label)
-{
-        GladeXML  *gui;
-       GtkWidget *hbox;
-
-        g_return_if_fail (GL_IS_WDGT_ROTATE_LABEL (rotate_label));
-        g_return_if_fail (rotate_label->priv != NULL);
-
-        gui = glade_xml_new (GLABELS_GLADE_DIR "wdgt-rotate-label.glade",
-                             "rotate_hbox", NULL);
-
-        if (!gui) {
-                g_critical ("Could not open wdgt-media-select.glade. gLabels may not be installed correctly!");
-                return;
-        }
-
-        hbox = glade_xml_get_widget (gui, "rotate_hbox");
-        gtk_container_add (GTK_CONTAINER (rotate_label), hbox);
-
-        rotate_label->priv->rotate_check       = glade_xml_get_widget (gui, "rotate_check");
-        rotate_label->priv->rotate_drawingarea = glade_xml_get_widget (gui, "rotate_drawingarea");
-
-        g_object_unref (gui);
-
-
-       gtk_widget_set_size_request (rotate_label->priv->rotate_drawingarea,
-                                     MINI_PREVIEW_CANVAS_PIXELS,
-                                     MINI_PREVIEW_CANVAS_PIXELS);
-
-       /* Connect signals to controls */
-       g_signal_connect (G_OBJECT (rotate_label->priv->rotate_check),
-                         "toggled",
-                         G_CALLBACK (entry_changed_cb), rotate_label);
-       g_signal_connect (G_OBJECT (rotate_label->priv->rotate_drawingarea),
-                         "expose_event",
-                         G_CALLBACK (expose_cb), rotate_label);
-}
-
-/*--------------------------------------------------------------------------*/
-/* PRIVATE.  modify widget due to change of check button                    */
-/*--------------------------------------------------------------------------*/
-static void
-entry_changed_cb (GtkToggleButton *toggle,
-                 gpointer         user_data)
-{
-       glWdgtRotateLabel *rotate_label = GL_WDGT_ROTATE_LABEL (user_data);
-
-       if (rotate_label->priv->template != NULL) {
-               /* Update mini_preview canvas & details with template */
-               drawingarea_update (GTK_DRAWING_AREA (rotate_label->priv->rotate_drawingarea),
-                                   rotate_label->priv->template,
-                                   gtk_toggle_button_get_active (toggle));
-       }
-
-       /* Emit our "changed" signal */
-       g_signal_emit (G_OBJECT (user_data),
-                      wdgt_rotate_label_signals[CHANGED], 0);
-
-}
-
-/*--------------------------------------------------------------------------*/
-/* PRIVATE.  Update mini-preview from template           .                  */
-/*--------------------------------------------------------------------------*/
-static void
-drawingarea_update (GtkDrawingArea *drawing_area,
-                   lglTemplate    *template,
-                   gboolean        rotate_flag)
-{
-       const lglTemplateFrame    *frame;
-       gdouble                    m, m_canvas, w, h, scale;
-       GtkStyle                  *style;
-       guint                      line_color, fill_color, shadow_color;
-       cairo_t                   *cr;
-
-       if (!GTK_WIDGET_DRAWABLE (GTK_WIDGET (drawing_area)))
-       {
-               return;
-       }
-
-        /* Clear surface */
-       gdk_window_clear (GTK_WIDGET (drawing_area)->window);
-
-       if (template == NULL)
-       {
-               return;
-       }
-
-        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;
-
-        style = gtk_widget_get_style (GTK_WIDGET (drawing_area));
-
-       /* Adjust sensitivity (should the canvas be grayed?) */
-       if (w != h) {
-               line_color = LINE_COLOR;
-               fill_color = FILL_COLOR;
-       } else {
-               line_color = gl_color_from_gdk_color (&style->text[GTK_STATE_INSENSITIVE]);
-               fill_color = gl_color_from_gdk_color (&style->base[GTK_STATE_INSENSITIVE]);
-       }
-
-       shadow_color = gl_color_from_gdk_color (&style->bg[GTK_STATE_ACTIVE]);
-
-
-       cr = gdk_cairo_create (GTK_WIDGET (drawing_area)->window);
-  
-       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);
-
-}
-
-/*--------------------------------------------------------------------------*/
-/* PRIVATE.  Expose handler.                                                */
-/*--------------------------------------------------------------------------*/
-static gboolean
-expose_cb (GtkWidget *drawingarea, GdkEventExpose *event, gpointer user_data)
-{
-       glWdgtRotateLabel *rotate_label = GL_WDGT_ROTATE_LABEL (user_data);
-
-       drawingarea_update (GTK_DRAWING_AREA (drawingarea),
-                           rotate_label->priv->template,
-                           gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (rotate_label->priv->rotate_check)));
-
-       return FALSE;
-}
-
-/****************************************************************************/
-/* 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_check));
-}
-
-/****************************************************************************/
-/* 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_check), 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->rotate_check,
-                                         FALSE);
-
-               drawingarea_update (GTK_DRAWING_AREA (rotate_label->priv->rotate_drawingarea),
-                                   NULL,
-                                   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_widget_set_sensitive (rotate_label->priv->rotate_check,
-                                         (raw_w != raw_h));
-
-               drawingarea_update (GTK_DRAWING_AREA (rotate_label->priv->rotate_drawingarea),
-                                   rotate_label->priv->template,
-                                   FALSE);
-       }
-       gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON
-                                     (rotate_label->priv->rotate_check), FALSE);
-}
-