1 /* Dia -- an diagram creation/manipulation program
2 * Copyright (C) 1998 Alexander Larsson
4 * This program is free software; you can redistribute it and/or modify
5 * it under the terms of the GNU General Public License as published by
6 * the Free Software Foundation; either version 2 of the License, or
7 * (at your option) any later version.
9 * This program is distributed in the hope that it will be useful,
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 * GNU General Public License for more details.
14 * You should have received a copy of the GNU General Public License
15 * along with this program; if not, write to the Free Software
16 * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
24 #include <gtk/gtkmenu.h>
25 #include <gtk/gtkoptionmenu.h>
26 #include <gtk/gtkdrawingarea.h>
27 #include <gtk/gtkcolorsel.h>
28 #include <gtk/gtkhbox.h>
29 #include <gtk/gtkfilesel.h>
30 #include <gtk/gtkspinbutton.h>
31 #include <gtk/gtklabel.h>
32 #include <gtk/gtkcolorseldialog.h>
33 #include <gtk/gtkmenuitem.h>
41 /* DiaFontSelector: */
42 #define DIAFONTSELECTOR(obj) GTK_CHECK_CAST (obj, dia_font_selector_get_type (), DiaFontSelector)
43 #define DIAFONTSELECTOR_CLASS(klass) GTK_CHECK_CLASS_CAST (klass, dia_font_selector_get_type (), DiaFontSelectorClass)
44 #define IS_DIAFONTSELECTOR(obj) GTK_CHECK_TYPE (obj, dia_font_selector_get_type ())
47 GtkType
dia_font_selector_get_type (void);
48 GtkWidget
* dia_font_selector_new (void);
49 void dia_font_selector_set_font (DiaFontSelector
*fs
, DiaFont
*font
);
50 void dia_font_selector_set_preview (DiaFontSelector
*fs
, gchar
*text
);
51 DiaFont
* dia_font_selector_get_font (DiaFontSelector
*fs
);
53 /* DiaAlignmentSelector: */
54 #define DIAALIGNMENTSELECTOR(obj) GTK_CHECK_CAST (obj, dia_alignment_selector_get_type (), DiaAlignmentSelector)
55 #define DIAALIGNMENTSELECTOR_CLASS(klass) GTK_CHECK_CLASS_CAST (klass, dia_alignment_selector_get_type (), DiaAlignmentSelectorClass)
56 #define IS_DIAALIGNMENTSELECTOR(obj) GTK_CHECK_TYPE (obj, dia_alignment_selector_get_type ())
59 GtkType
dia_alignment_selector_get_type (void);
60 GtkWidget
* dia_alignment_selector_new (void);
61 Alignment
dia_alignment_selector_get_alignment (DiaAlignmentSelector
*as
);
62 void dia_alignment_selector_set_alignment (DiaAlignmentSelector
*as
,
65 /* DiaLineStyleSelector: */
66 #define DIALINESTYLESELECTOR(obj) GTK_CHECK_CAST (obj, dia_line_style_selector_get_type (), DiaLineStyleSelector)
67 #define DIALINESTYLESELECTOR_CLASS(klass) GTK_CHECK_CLASS_CAST (klass, dia_line_style_selector_get_type (), DiaLineStyleSelectorClass)
68 #define IS_DIALINESTYLESELECTOR(obj) GTK_CHECK_TYPE (obj, dia_line_style_selector_get_type ())
70 #define DEFAULT_LINESTYLE LINESTYLE_SOLID
71 #define DEFAULT_LINESTYLE_DASHLEN 1.0
74 GtkType
dia_line_style_selector_get_type (void);
75 GtkWidget
* dia_line_style_selector_new (void);
76 void dia_line_style_selector_get_linestyle (DiaLineStyleSelector
*as
,
79 void dia_line_style_selector_set_linestyle (DiaLineStyleSelector
*as
,
83 /* DiaColorSelector: */
84 #define DIACOLORSELECTOR(obj) GTK_CHECK_CAST (obj, dia_color_selector_get_type (), DiaColorSelector)
85 #define DIACOLORSELECTOR_CLASS(klass) GTK_CHECK_CLASS_CAST (klass, dia_color_selector_get_type (), DiaColorSelectorClass)
86 #define IS_DIACOLORSELECTOR(obj) GTK_CHECK_TYPE (obj, dia_color_selector_get_type ())
88 #define DEFAULT_FG_COLOR color_black
89 #define DEFAULT_BG_COLOR color_white
90 #define DEFAULT_COLOR color_white
93 struct _DiaColorSelector
104 struct _DiaColorSelectorClass
106 GtkButtonClass parent_class
;
109 GtkType
dia_color_selector_get_type (void);
110 GtkWidget
* dia_color_selector_new (void);
111 void dia_color_selector_get_color (GtkWidget
*cs
, Color
*color
);
112 void dia_color_selector_set_color (GtkWidget
*cs
,
116 /* DiaArrowSelector */
117 #define DIA_TYPE_ARROW_SELECTOR (dia_arrow_selector_get_type())
118 #define DIA_ARROW_SELECTOR(obj) (G_TYPE_CHECK_INSTANCE_CAST (obj, dia_arrow_selector_get_type (), DiaArrowSelector))
119 #define DIA_ARROW_SELECTOR_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST (klass, dia_arrow_selector_get_type (), DiaArrowSelectorClass))
120 #define DIA_IS_ARROW_SELECTOR(obj) (G_TYPE_CHECK_TYPE (obj, dia_arrow_selector_get_type ()))
121 #define DIA_ARROW_SELECTOR_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), DIA_TYPE_ARROW_SELECTOR, DiaArrowSelectorClass))
123 #define DEFAULT_ARROW ARROW_NONE
124 #define DEFAULT_ARROW_LENGTH DEFAULT_ARROW_SIZE
125 #define DEFAULT_ARROW_WIDTH DEFAULT_ARROW_SIZE
128 GType
dia_arrow_selector_get_type (void);
129 GtkWidget
* dia_arrow_selector_new (void);
130 Arrow
dia_arrow_selector_get_arrow (DiaArrowSelector
*as
);
131 void dia_arrow_selector_set_arrow (DiaArrowSelector
*as
,
135 /* DiaFileSelector: */
136 #define DIAFILESELECTOR(obj) GTK_CHECK_CAST (obj, dia_file_selector_get_type (), DiaFileSelector)
137 #define DIAFILESELECTOR_CLASS(klass) GTK_CHECK_CLASS_CAST (klass, dia_file_selector_get_type (), DiaFileSelectorClass)
138 #define IS_DIAFILESELECTOR(obj) GTK_CHECK_TYPE (obj, dia_file_selector_get_type ())
141 GtkType
dia_file_selector_get_type (void);
142 GtkWidget
* dia_file_selector_new (void);
143 void dia_file_selector_set_file (DiaFileSelector
*fs
, char *file
);
144 const gchar
*dia_file_selector_get_file (DiaFileSelector
*fs
);
146 /* DiaSizeSelector: */
147 #define DIA_SIZE_SELECTOR(obj) GTK_CHECK_CAST (obj, dia_size_selector_get_type (), DiaSizeSelector)
148 #define DIA_SIZE_SELECTOR_CLASS(klass) GTK_CHECK_CLASS_CAST (klass, dia_size_selector_get_type (), DiaSizeSelectorClass)
149 #define IS_DIA_SIZE_SELECTOR(obj) GTK_CHECK_TYPE (obj, dia_size_selector_get_type ())
152 GtkType
dia_size_selector_get_type (void);
153 GtkWidget
* dia_size_selector_new (real width
, real height
);
154 void dia_size_selector_set_locked(DiaSizeSelector
*ss
, gboolean locked
);
155 void dia_size_selector_set_size (DiaSizeSelector
*ss
, real width
, real height
);
156 gboolean
dia_size_selector_get_size (DiaSizeSelector
*ss
, real
*width
, real
*height
);
160 #define DIA_UNIT_SPINNER(obj) GTK_CHECK_CAST(obj, dia_unit_spinner_get_type(), DiaUnitSpinner)
161 #define DIA_UNIT_SPINNER_CLASS(klass) GTK_CHECK_CLASS_CAST(klass, dia_unit_spinner_get_type(), DiaUnitSpinnerClass)
162 #define DIA_IS_UNIT_SPINNER(obj) GTK_CHECK_TYPE(obj, dia_unit_spinner_get_type())
164 typedef struct _DiaUnitSpinner DiaUnitSpinner
;
165 typedef struct _DiaUnitSpinnerClass DiaUnitSpinnerClass
;
177 struct _DiaUnitSpinner
{
178 GtkSpinButton parent
;
183 struct _DiaUnitSpinnerClass
{
184 GtkSpinButtonClass parent_class
;
188 GtkType
dia_unit_spinner_get_type (void);
189 GtkWidget
*dia_unit_spinner_new (GtkAdjustment
*adjustment
,
192 void dia_unit_spinner_set_value (DiaUnitSpinner
*self
, gfloat val
);
193 gfloat
dia_unit_spinner_get_value (DiaUnitSpinner
*self
);
197 #define DIA_DYNAMIC_MENU(obj) GTK_CHECK_CAST(obj, dia_dynamic_menu_get_type(), DiaDynamicMenu)
198 #define DIA_DYNAMIC_MENU_CLASS(klass) GTK_CHECK_CLASS_CAST(klass, dia_dynamic_menu_get_type(), DiaDynamicMenuClass)
199 #define DIA_IS_DYNAMIC_MENU(obj) GTK_CHECK_TYPE(obj, dia_dynamic_menu_get_type())
201 typedef struct _DiaDynamicMenu DiaDynamicMenu
;
202 typedef struct _DiaDynamicMenuClass DiaDynamicMenuClass
;
204 /** The ways the non-default entries in the menu can be sorted:
205 * DDM_SORT_TOP: Just add new ones at the top, removing them from the middle.
206 * Not currently implemented.
207 * DDM_SORT_NEWEST: Add new ones to the top, and move selected ones to the
209 * DDM_SORT_SORT: Sort the entries according to the CompareFunc order.
211 typedef enum { DDM_SORT_TOP
, DDM_SORT_NEWEST
, DDM_SORT_SORT
} DdmSortType
;
213 typedef GtkWidget
*(* DDMCreateItemFunc
)(DiaDynamicMenu
*, gchar
*);
214 typedef void (* DDMCallbackFunc
)(DiaDynamicMenu
*, const gchar
*, gpointer
);
216 struct _DiaDynamicMenu
{
217 GtkOptionMenu parent
;
219 GList
*default_entries
;
221 DDMCreateItemFunc create_func
;
222 DDMCallbackFunc activate_func
;
225 GtkMenuItem
*other_item
;
227 gchar
*persistent_name
;
231 /** For the list-based versions, these are the options */
236 struct _DiaDynamicMenuClass
{
237 GtkOptionMenuClass parent_class
;
240 GtkType
dia_dynamic_menu_get_type (void);
242 GtkWidget
*dia_dynamic_menu_new(DDMCreateItemFunc create
,
243 DDMCallbackFunc activate
, gpointer userdata
,
244 GtkMenuItem
*otheritem
, gchar
*persist
);
245 GtkWidget
*dia_dynamic_menu_new_stringbased(GtkMenuItem
*otheritem
,
246 DDMCallbackFunc activate
,
249 GtkWidget
*dia_dynamic_menu_new_listbased(DDMCreateItemFunc create
,
250 DDMCallbackFunc activate
,
253 GList
*items
, gchar
*persist
);
254 GtkWidget
*dia_dynamic_menu_new_stringlistbased(gchar
*other_label
,
256 DDMCallbackFunc activate
,
259 void dia_dynamic_menu_add_default_entry(DiaDynamicMenu
*ddm
, const gchar
*entry
);
260 gint
dia_dynamic_menu_add_entry(DiaDynamicMenu
*ddm
, const gchar
*entry
);
261 void dia_dynamic_menu_set_sorting_method(DiaDynamicMenu
*ddm
, DdmSortType sort
);
262 void dia_dynamic_menu_reset(GtkWidget
*widget
, gpointer userdata
);
263 void dia_dynamic_menu_set_max_entries(DiaDynamicMenu
*ddm
, gint max
);
264 void dia_dynamic_menu_set_columns(DiaDynamicMenu
*ddm
, gint cols
);
265 gchar
*dia_dynamic_menu_get_entry(DiaDynamicMenu
*ddm
);
266 void dia_dynamic_menu_select_entry(DiaDynamicMenu
*ddm
, const gchar
*entry
);
268 /* **** Util functions for Gtk stuff **** */
269 /** Create a toggle button with two icons (created with gdk-pixbuf-csource,
270 * for instance). The icons represent on and off.
273 dia_toggle_button_new_with_icons(const guint8
*on_icon
,
274 const guint8
*off_icon
);
276 /* Other common defaults */
278 #define DEFAULT_ALIGNMENT ALIGN_LEFT
279 /* This is defined in app/linewidth_area.c. Aw, bummer */
280 #define DEFAULT_LINE_WIDTH 2*0.05
282 #endif /* WIDGETS_H */