1 /* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 8 -*- */
4 * (GLABELS) Label and Business Card Creation program for GNOME
6 * view.h: GLabels View module header file
8 * Copyright (C) 2001-2007 Jim Evins <evins@snaught.com>.
10 * This program is free software; you can redistribute it and/or modify
11 * it under the terms of the GNU General Public License as published by
12 * the Free Software Foundation; either version 2 of the License, or
13 * (at your option) any later version.
15 * This program is distributed in the hope that it will be useful,
16 * but WITHOUT ANY WARRANTY; without even the implied warranty of
17 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
18 * GNU General Public License for more details.
20 * You should have received a copy of the GNU General Public License
21 * along with this program; if not, write to the Free Software
22 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
28 #include <gtk/gtkvbox.h>
30 #include "label-object.h"
34 GL_VIEW_MODE_OBJECT_CREATE
39 GL_VIEW_ARROW_SELECT_REGION,
45 #define GL_TYPE_VIEW (gl_view_get_type ())
46 #define GL_VIEW(obj) (GTK_CHECK_CAST((obj), GL_TYPE_VIEW, glView ))
47 #define GL_VIEW_CLASS(klass) (GTK_CHECK_CLASS_CAST ((klass), GL_TYPE_VIEW, glViewClass))
48 #define GL_IS_VIEW(obj) (GTK_CHECK_TYPE ((obj), GL_TYPE_VIEW))
49 #define GL_IS_VIEW_CLASS(klass) (GTK_CHECK_CLASS_TYPE ((klass), GL_TYPE_VIEW))
51 typedef struct _glView glView;
52 typedef struct _glViewClass glViewClass;
54 #include "view-object.h"
58 GtkVBox parent_widget;
64 gboolean zoom_to_fit_flag;
69 gboolean update_scheduled_flag;
70 gboolean grid_visible;
73 gboolean markup_visible;
76 glLabelObjectType create_type;
78 gboolean grabbed_flag;
80 /* GL_VIEW_ARROW_MOVE state */
84 /* GL_VIEW_ARROW_SELECT_REGION state */
85 gboolean select_region_visible;
86 glLabelRegion select_region;
88 /* GL_VIEW_ARROW_RESIZE state */
89 glViewObject *resize_object;
90 glViewObjectHandle resize_handle;
91 gboolean resize_honor_aspect;
93 /* GL_VIEW_CREATE_DRAG state */
94 glLabelObject *create_object;
98 GList *object_list; /* glViewObjects */
99 GList *selected_object_list; /* glViewObjects */
101 /* Clipboard selection stuff */
103 glLabel *selection_data;
104 GtkWidget *invisible;
106 /* Default object text properties */
107 gchar *default_font_family;
108 gdouble default_font_size;
109 PangoWeight default_font_weight;
110 gboolean default_font_italic_flag;
111 guint default_text_color;
112 PangoAlignment default_text_alignment;
113 gdouble default_text_line_spacing;
115 /* Default object line properties */
116 gdouble default_line_width;
117 guint default_line_color;
119 /* Default object fill properties */
120 guint default_fill_color;
124 struct _glViewClass {
125 GtkVBoxClass parent_class;
127 /* Selection changed signal */
128 void (*selection_changed) (glView *view,
131 /* Signal to launch a context menu */
132 void (*context_menu_activate) (glView *view,
134 guint32 activate_time,
137 /* Signals to support a status bar */
138 void (*zoom_changed) (glView *view,
141 void (*pointer_moved) (glView *view,
145 void (*pointer_exit) (glView *view,
147 void (*mode_changed) (glView *view,
153 GType gl_view_get_type (void) G_GNUC_CONST;
155 GtkWidget *gl_view_new (glLabel *label);
158 void gl_view_update (glView *view);
160 void gl_view_update_region (glView *view,
162 glLabelRegion *region);
164 void gl_view_show_grid (glView *view);
166 void gl_view_hide_grid (glView *view);
168 void gl_view_set_grid_spacing (glView *view,
171 void gl_view_show_markup (glView *view);
173 void gl_view_hide_markup (glView *view);
175 void gl_view_arrow_mode (glView *view);
177 void gl_view_object_create_mode (glView *view,
178 glLabelObjectType type);
181 void gl_view_select_object (glView *view,
182 glViewObject *view_object);
184 void gl_view_unselect_object (glView *view,
185 glViewObject *view_object);
187 void gl_view_select_all (glView *view);
189 void gl_view_unselect_all (glView *view);
191 void gl_view_select_region (glView *view,
192 glLabelRegion *region);
194 gboolean gl_view_is_object_selected (glView *view,
195 glViewObject *view_object);
197 gboolean gl_view_is_selection_empty (glView *view);
199 gboolean gl_view_is_selection_atomic (glView *view);
201 void gl_view_delete_selection (glView *view);
203 GtkWidget *gl_view_get_editor (glView *view);
205 void gl_view_raise_selection (glView *view);
207 void gl_view_lower_selection (glView *view);
209 void gl_view_rotate_selection (glView *view,
212 void gl_view_rotate_selection_left (glView *view);
214 void gl_view_rotate_selection_right (glView *view);
216 void gl_view_flip_selection_horiz (glView *view);
218 void gl_view_flip_selection_vert (glView *view);
220 void gl_view_align_selection_left (glView *view);
222 void gl_view_align_selection_right (glView *view);
224 void gl_view_align_selection_hcenter (glView *view);
226 void gl_view_align_selection_top (glView *view);
228 void gl_view_align_selection_bottom (glView *view);
230 void gl_view_align_selection_vcenter (glView *view);
232 void gl_view_center_selection_horiz (glView *view);
234 void gl_view_center_selection_vert (glView *view);
236 void gl_view_move_selection (glView *view,
240 gboolean gl_view_can_selection_text (glView *view);
242 void gl_view_set_selection_font_family (glView *view,
243 const gchar *font_family);
245 void gl_view_set_selection_font_size (glView *view,
248 void gl_view_set_selection_font_weight (glView *view,
249 PangoWeight font_weight);
251 void gl_view_set_selection_text_line_spacing (glView *view,
252 gdouble text_line_spacing);
254 void gl_view_set_selection_font_italic_flag (glView *view,
255 gboolean font_italic_flag);
257 void gl_view_set_selection_text_alignment (glView *view,
258 PangoAlignment text_alignment);
260 void gl_view_set_selection_text_color (glView *view,
261 glColorNode *text_color_node);
263 gboolean gl_view_can_selection_fill (glView *view);
265 void gl_view_set_selection_fill_color (glView *view,
266 glColorNode *fill_color);
268 gboolean gl_view_can_selection_line_color (glView *view);
270 void gl_view_set_selection_line_color (glView *view,
271 glColorNode *line_color_node);
273 gboolean gl_view_can_selection_line_width (glView *view);
275 void gl_view_set_selection_line_width (glView *view,
279 void gl_view_cut (glView *view);
281 void gl_view_copy (glView *view);
283 void gl_view_paste (glView *view);
286 void gl_view_zoom_in (glView *view);
288 void gl_view_zoom_out (glView *view);
290 void gl_view_zoom_to_fit (glView *view);
292 void gl_view_set_zoom (glView *view,
295 gdouble gl_view_get_zoom (glView *view);
297 gboolean gl_view_is_zoom_max (glView *view);
299 gboolean gl_view_is_zoom_min (glView *view);
302 void gl_view_set_default_font_family (glView *view,
303 const gchar *font_family);
305 void gl_view_set_default_font_size (glView *view,
308 void gl_view_set_default_font_weight (glView *view,
309 PangoWeight font_weight);
311 void gl_view_set_default_font_italic_flag (glView *view,
312 gboolean font_italic_flag);
314 void gl_view_set_default_text_color (glView *view,
317 void gl_view_set_default_text_alignment (glView *view,
318 PangoAlignment text_alignment);
320 void gl_view_set_default_line_width (glView *view,
323 void gl_view_set_default_line_color (glView *view,
326 void gl_view_set_default_fill_color (glView *view,
328 void gl_view_set_default_text_line_spacing (glView *view,
329 gdouble text_line_spacing);
333 gchar *gl_view_get_default_font_family (glView *view);
335 gdouble gl_view_get_default_font_size (glView *view);
337 PangoWeight gl_view_get_default_font_weight (glView *view);
339 gboolean gl_view_get_default_font_italic_flag (glView *view);
341 guint gl_view_get_default_text_color (glView *view);
343 PangoAlignment gl_view_get_default_text_alignment (glView *view);
345 gdouble gl_view_get_default_text_line_spacing (glView *view);
347 gdouble gl_view_get_default_line_width (glView *view);
349 guint gl_view_get_default_line_color (glView *view);
351 guint gl_view_get_default_fill_color (glView *view);