]> git.sur5r.net Git - glabels/blob - glabels1/src/display.h
704e8aa5f21a4ba95fd19ccaa9350986ed7827ab
[glabels] / glabels1 / src / display.h
1 /*
2  *  (GLABELS) Label and Business Card Creation program for GNOME
3  *
4  *  display.h:  GLabels Display module header file
5  *
6  *  Copyright (C) 2001-2002  Jim Evins <evins@snaught.com>.
7  *
8  *  This program is free software; you can redistribute it and/or modify
9  *  it under the terms of the GNU General Public License as published by
10  *  the Free Software Foundation; either version 2 of the License, or
11  *  (at your option) any later version.
12  *
13  *  This program is distributed in the hope that it will be useful,
14  *  but WITHOUT ANY WARRANTY; without even the implied warranty of
15  *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
16  *  GNU General Public License for more details.
17  *
18  *  You should have received a copy of the GNU General Public License
19  *  along with this program; if not, write to the Free Software
20  *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
21  */
22
23 #ifndef __DISPLAY_H__
24 #define __DISPLAY_H__
25
26 #include <gtk/gtk.h>
27 #include "label.h"
28
29 typedef enum {
30         GL_DISPLAY_STATE_ARROW,
31         GL_DISPLAY_STATE_OBJECT_CREATE
32 } glDisplayState;
33
34 #define GL_TYPE_DISPLAY (gl_display_get_type ())
35 #define GL_DISPLAY(obj) (GTK_CHECK_CAST((obj), GL_TYPE_DISPLAY, glDisplay ))
36 #define GL_DISPLAY_CLASS(klass) (GTK_CHECK_CLASS_CAST ((klass), GL_TYPE_DISPLAY, glDisplayClass))
37 #define GL_IS_DISPLAY(obj) (GTK_CHECK_TYPE ((obj), GL_TYPE_DISPLAY))
38 #define GL_IS_DISPLAY_CLASS(klass) (GTK_CHECK_CLASS_TYPE ((klass), GL_TYPE_DISPLAY))
39
40 typedef struct _glDisplay glDisplay;
41 typedef struct _glDisplayClass glDisplayClass;
42
43 struct _glDisplay {
44         GtkVBox parent_widget;
45
46         glLabel *label;
47
48         GtkWidget *canvas;
49         gdouble scale;
50         gint n_bg_items;
51         GList *bg_item_list;
52
53         glDisplayState state;
54         glLabelObjectType create_type;
55
56         gboolean modified;
57
58         GList *item_list;
59         GList *selected_item_list;
60
61         gint have_selection;
62         glLabel *selection_data;
63         GtkWidget *invisible;
64
65         GtkWidget *menu;
66 };
67
68 struct _glDisplayClass {
69         GtkVBoxClass parent_class;
70 };
71
72 extern guint gl_display_get_type (void);
73
74 extern GtkWidget *gl_display_new (glLabel * label);
75
76 extern void gl_display_arrow_mode (glDisplay * display);
77 extern void gl_display_object_create_mode (glDisplay * display,
78                                            glLabelObjectType type);
79
80 extern void gl_display_add_item (glDisplay * display,
81                                  GnomeCanvasItem * item);
82
83 extern void gl_display_select_all (glDisplay * display);
84 extern void gl_display_select_region (glDisplay * display,
85                                       gdouble x1,
86                                       gdouble y1,
87                                       gdouble x2,
88                                       gdouble y2);
89 extern void gl_display_unselect_all (glDisplay * display);
90
91 extern void gl_display_select_item (glDisplay * display,
92                                     GnomeCanvasItem * item);
93 extern void gl_display_unselect_item (glDisplay * display,
94                                       GnomeCanvasItem * item);
95
96 extern int gl_display_item_event_handler (GnomeCanvasItem * item,
97                                           GdkEvent * event,
98                                           gpointer data);
99
100 extern GtkWidget *gl_display_new_selection_menu (glDisplay * display);
101 extern GtkWidget *gl_display_new_item_menu (GnomeCanvasItem * item);
102
103 extern gboolean gl_display_modified (glDisplay * display);
104 extern void gl_display_set_modified (glDisplay * display);
105 extern void gl_display_clear_modified (glDisplay * display);
106
107 extern void gl_display_cut (glDisplay * display);
108 extern void gl_display_copy (glDisplay * display);
109 extern void gl_display_paste (glDisplay * display);
110
111 extern void gl_display_zoom_in (glDisplay * display);
112 extern void gl_display_zoom_out (glDisplay * display);
113 extern void gl_display_set_zoom (glDisplay * display, gdouble scale);
114 extern gdouble gl_display_get_zoom (glDisplay * display);
115
116 #endif