• R/O
  • HTTP
  • SSH
  • HTTPS

Commit

Tags
No Tags

Frequently used words (click to add to your profile)

javac++androidlinuxc#windowsobjective-ccocoa誰得qtpythonphprubygameguibathyscaphec計画中(planning stage)翻訳omegatframeworktwitterdomtestvb.netdirectxゲームエンジンbtronarduinopreviewer

作図ソフト dia の改良版


Commit MetaInfo

Revisiona268f9f37ad7a7117d5282658d3bd52a21c364b3 (tree)
Time2004-05-03 02:57:56
AuthorLars Clausen <lclausen@src....>
CommiterLars Clausen

Log Message

Old diagram props, GObj for Obj.

Change Summary

Incremental Difference

--- a/ChangeLog
+++ b/ChangeLog
@@ -1,4 +1,12 @@
1-2004-04-30 Lars Clausen <larsrc@linux.local>
1+2004-05-02 Lars Clausen <lars@raeder.dk>
2+
3+ * lib/object.[ch]: Starting to convert Object to DiaObject, son of
4+ GObject.
5+
6+ * app/dia-props.c: Undo the attempt at making it really
7+ multi-diagram, now going for a one-diagram dialog.
8+
9+2004-04-30 Lars Clausen <lars@raeder.dk>
210
311 * app/undo.c: Undoing broken undo stuff for diagram properties and
412 page setup. Shouldn't be mixed into undo at all.
--- a/app/dia-props.c
+++ b/app/dia-props.c
@@ -31,10 +31,8 @@
3131 #include "display.h"
3232 #include "widgets.h"
3333 #include "display.h"
34-#include "persistence.h"
3534
3635 static GtkWidget *dialog = NULL;
37-static GtkWidget *diagram_omenu;
3836 static GtkWidget *dynamic_check;
3937 static GtkWidget *width_x_entry, *width_y_entry;
4038 static GtkWidget *visible_x_entry, *visible_y_entry;
@@ -43,28 +41,6 @@ static GtkWidget *bg_colour, *grid_colour, *pagebreak_colour;
4341 static void diagram_properties_respond(GtkWidget *widget,
4442 gint response_id,
4543 gpointer user_data);
46-static void diagram_properties_retrieve(Diagram *dia);
47-void create_diagram_properties_dialog(void);
48-void diagram_properties_update_diagram_list(void);
49-
50-/* diagram_properties_set_diagram
51- * Called when the active diagram is changed. It updates the contents
52- * of the diagram properties dialog
53- */
54-void
55-diagram_properties_set_diagram(Diagram *dia)
56-{
57- int i;
58-
59- if (dialog && dia != NULL)
60- {
61- diagram_properties_retrieve(dia);
62-
63- i = g_list_index(dia_open_diagrams(), dia);
64- if (i >= 0)
65- gtk_option_menu_set_history(GTK_OPTION_MENU(diagram_omenu), i);
66- }
67-}
6844
6945 static void
7046 diagram_properties_dialog_destroyed(GtkWidget *widget, gpointer userdata)
@@ -73,135 +49,31 @@ diagram_properties_dialog_destroyed(GtkWidget *widget, gpointer userdata)
7349 dialog = NULL;
7450 }
7551
76-/* Update widget sensitivity to deal with dynamic grid and lack of diagram */
7752 static void
7853 diagram_properties_update_sensitivity(GtkToggleButton *widget,
7954 gpointer userdata)
8055 {
8156 Diagram *dia = ddisplay_active_diagram();
82- if (dia == NULL) {
83- gtk_widget_set_sensitive(dynamic_check, FALSE);
84- gtk_widget_set_sensitive(width_x_entry, FALSE);
85- gtk_widget_set_sensitive(width_y_entry, FALSE);
86- gtk_widget_set_sensitive(visible_x_entry, FALSE);
87- gtk_widget_set_sensitive(visible_y_entry, FALSE);
88- gtk_widget_set_sensitive(bg_colour, FALSE);
89- gtk_widget_set_sensitive(grid_colour, FALSE);
90- gtk_widget_set_sensitive(pagebreak_colour, FALSE);
91- } else {
92- dia->data->grid.dynamic =
93- gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(dynamic_check));
94- gtk_widget_set_sensitive(dynamic_check, TRUE);
95- gtk_widget_set_sensitive(width_x_entry, !dia->data->grid.dynamic);
96- gtk_widget_set_sensitive(width_y_entry, !dia->data->grid.dynamic);
97- gtk_widget_set_sensitive(visible_x_entry, !dia->data->grid.dynamic);
98- gtk_widget_set_sensitive(visible_y_entry, !dia->data->grid.dynamic);
99- gtk_widget_set_sensitive(bg_colour, TRUE);
100- gtk_widget_set_sensitive(grid_colour, TRUE);
101- gtk_widget_set_sensitive(pagebreak_colour, TRUE);
102- }
57+ dia->data->grid.dynamic =
58+ gtk_toggle_button_get_active(GTK_CHECK_BUTTON(dynamic_check));
59+ gtk_widget_set_sensitive(width_x_entry, !dia->data->grid.dynamic);
60+ gtk_widget_set_sensitive(width_y_entry, !dia->data->grid.dynamic);
61+ gtk_widget_set_sensitive(visible_x_entry, !dia->data->grid.dynamic);
62+ gtk_widget_set_sensitive(visible_y_entry, !dia->data->grid.dynamic);
10363 }
10464
10565 static void
106-diagram_properties_select_diagram_callback(GtkWidget *widget, gpointer gdata)
107-{
108- Diagram *dia = (Diagram *)gdata;
109-
110- diagram_properties_set_diagram(dia);
111-}
112-
113-void
114-diagram_properties_update_diagram_list(void)
115-{
116- GtkWidget *new_menu;
117- GtkWidget *menu_item;
118- GList *dia_list;
119- Diagram *dia;
120- char *filename;
121- int i;
122- int current_nr;
123-
124- if (dialog == NULL) return;
125-
126- new_menu = gtk_menu_new();
127-
128- current_nr = -1;
129-
130- i = 0;
131- dia_list = dia_open_diagrams();
132- while (dia_list != NULL) {
133- dia = (Diagram *) dia_list->data;
134-
135- if (ddisplay_active() && dia == ddisplay_active()->diagram) {
136- current_nr = i;
137- }
138-
139- filename = strrchr(dia->filename, G_DIR_SEPARATOR);
140- if (filename==NULL) {
141- filename = dia->filename;
142- } else {
143- filename++;
144- }
145- printf("Adding filename %s to menu\n", filename);
146-
147- menu_item = gtk_menu_item_new_with_label(filename);
148-
149- g_signal_connect (GTK_OBJECT (menu_item), "activate",
150- /**/
151- (GtkSignalFunc) diagram_properties_select_diagram_callback,
152- (gpointer) dia);
153-
154- gtk_menu_append( GTK_MENU(new_menu), menu_item);
155- gtk_widget_show (menu_item);
156-
157- dia_list = g_list_next(dia_list);
158- i++;
159- }
160-
161- if (dia_open_diagrams()==NULL) {
162- menu_item = gtk_menu_item_new_with_label (_("none"));
163- g_signal_connect (GTK_OBJECT (menu_item), "activate",
164- /**/
165- (GtkSignalFunc) diagram_properties_select_diagram_callback,
166- (gpointer) NULL);
167- gtk_menu_append( GTK_MENU(new_menu), menu_item);
168- gtk_widget_show (menu_item);
169- }
170-
171- gtk_option_menu_remove_menu(GTK_OPTION_MENU(diagram_omenu));
172-
173- gtk_option_menu_set_menu(GTK_OPTION_MENU(diagram_omenu),
174- new_menu);
175-
176- gtk_option_menu_set_history(GTK_OPTION_MENU(diagram_omenu),
177- current_nr);
178- gtk_menu_set_active(GTK_MENU(new_menu), current_nr);
179-
180- if (current_nr == -1) {
181- dia = NULL;
182- if (dia_open_diagrams()!=NULL) {
183- dia = (Diagram *) dia_open_diagrams()->data;
184- }
185- /**/
186- diagram_properties_set_diagram(dia);
187- }
188-}
189-
190-void
191-create_diagram_properties_dialog()
66+create_diagram_properties_dialog(Diagram *dia)
19267 {
19368 GtkWidget *dialog_vbox;
19469 GtkWidget *notebook;
19570 GtkWidget *table;
19671 GtkWidget *label;
197- GtkWidget *hbox;
198- GtkWidget *menu;
199- GtkWidget *separator;
20072 GtkAdjustment *adj;
20173
20274 dialog = gtk_dialog_new_with_buttons(
20375 _("Diagram Properties"),
204- NULL,
76+ GTK_WINDOW(ddisplay_active()->shell),
20577 GTK_DIALOG_DESTROY_WITH_PARENT,
20678 GTK_STOCK_CLOSE, GTK_RESPONSE_CANCEL,
20779 GTK_STOCK_APPLY, GTK_RESPONSE_APPLY,
@@ -211,6 +83,8 @@ create_diagram_properties_dialog()
21183 //GTK_WIDGET_SET_FLAGS (button, GTK_CAN_DEFAULT);
21284 gtk_dialog_set_default_response (GTK_DIALOG(dialog), GTK_RESPONSE_OK);
21385
86+ dialog_vbox = GTK_DIALOG(dialog)->vbox;
87+
21488 gtk_window_set_role(GTK_WINDOW(dialog), "diagram_properties");
21589
21690 g_signal_connect(G_OBJECT(dialog), "response",
@@ -221,28 +95,6 @@ create_diagram_properties_dialog()
22195 g_signal_connect(G_OBJECT(dialog), "destroy_event",
22296 G_CALLBACK(diagram_properties_dialog_destroyed), NULL);
22397
224- dialog_vbox = GTK_DIALOG(dialog)->vbox;
225-
226- hbox = gtk_hbox_new(FALSE, 1);
227-
228- label = gtk_label_new(_("Diagrams:"));
229- gtk_box_pack_start(GTK_BOX(hbox), label, FALSE, FALSE, 2);
230- gtk_widget_show (label);
231-
232- diagram_omenu = gtk_option_menu_new();
233- gtk_box_pack_start(GTK_BOX(hbox), diagram_omenu, TRUE, TRUE, 2);
234- gtk_widget_show (diagram_omenu);
235-
236- menu = gtk_menu_new();
237- gtk_option_menu_set_menu(GTK_OPTION_MENU(diagram_omenu), menu);
238-
239- gtk_box_pack_start(GTK_BOX(dialog_vbox), hbox, FALSE, FALSE, 2);
240- gtk_widget_show (hbox);
241-
242- separator = gtk_hseparator_new();
243- gtk_box_pack_start(GTK_BOX(dialog_vbox), separator, FALSE, FALSE, 2);
244- gtk_widget_show (separator);
245-
24698 notebook = gtk_notebook_new();
24799 gtk_notebook_set_tab_pos(GTK_NOTEBOOK(notebook), GTK_POS_TOP);
248100 gtk_box_pack_start(GTK_BOX(dialog_vbox), notebook, TRUE, TRUE, 0);
@@ -379,8 +231,8 @@ diagram_properties_retrieve(Diagram *dia)
379231 gtk_window_set_title(GTK_WINDOW(dialog), title);
380232 g_free(name);
381233 g_free(title);
382- gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(dynamic_check),
383- dia->data->grid.dynamic);
234+ gtk_toggle_button_set_active(GTK_CHECK_BUTTON(dynamic_check),
235+ dia->data->grid.dynamic);
384236 gtk_spin_button_set_value(GTK_SPIN_BUTTON(width_x_entry),
385237 dia->data->grid.width_x);
386238 gtk_spin_button_set_value(GTK_SPIN_BUTTON(width_y_entry),
@@ -403,11 +255,8 @@ diagram_properties_retrieve(Diagram *dia)
403255 void
404256 diagram_properties_show(Diagram *dia)
405257 {
406- if (!dialog) {
407- create_diagram_properties_dialog();
408- persistence_register_window(GTK_WINDOW(dialog));
409- diagram_properties_update_diagram_list();
410- }
258+ if (!dialog)
259+ create_diagram_properties_dialog(dia);
411260
412261 diagram_properties_retrieve(dia);
413262
@@ -427,7 +276,7 @@ diagram_properties_respond(GtkWidget *widget,
427276 response_id != GTK_RESPONSE_APPLY) {
428277 if (active_diagram) {
429278 active_diagram->data->grid.dynamic =
430- gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(dynamic_check));
279+ gtk_toggle_button_get_active(GTK_CHECK_BUTTON(dynamic_check));
431280 active_diagram->data->grid.width_x =
432281 gtk_spin_button_get_value(GTK_SPIN_BUTTON(width_x_entry));
433282 active_diagram->data->grid.width_y =
@@ -449,3 +298,17 @@ diagram_properties_respond(GtkWidget *widget,
449298 if (response_id != GTK_RESPONSE_APPLY)
450299 gtk_widget_hide(dialog);
451300 }
301+
302+/* diagram_properties_set_diagram
303+ * Called when the active diagram is changed. It updates the contents
304+ * of the diagram properties dialog
305+ */
306+void
307+diagram_properties_set_diagram(Diagram *dia)
308+{
309+ if (dialog && dia != NULL)
310+ {
311+ diagram_properties_retrieve(dia);
312+ }
313+}
314+
--- a/lib/object.c
+++ b/lib/object.c
@@ -27,6 +27,62 @@
2727
2828 #include "dummy_dep.h"
2929
30+static void dia_object_class_init (DiaObjectClass *klass);
31+static void object_init(DiaObject *obj, int num_handles, int num_connections);
32+
33+static gpointer parent_class = NULL;
34+
35+GType
36+dia_Object_get_type (void)
37+{
38+ static GType object_type = 0;
39+
40+ if (!object_type)
41+ {
42+ static const GTypeInfo object_info =
43+ {
44+ sizeof (DiaObjectClass),
45+ (GBaseInitFunc) NULL,
46+ (GBaseFinalizeFunc) NULL,
47+ (GClassInitFunc) dia_object_class_init,
48+ NULL, /* class_finalize */
49+ NULL, /* class_data */
50+ sizeof (DiaObject),
51+ 0, /* n_preallocs */
52+ NULL /* init */
53+ };
54+
55+ object_type = g_type_register_static (G_TYPE_OBJECT,
56+ "DiaObject",
57+ &object_info, 0);
58+ }
59+
60+ return object_type;
61+}
62+
63+static void
64+dia_object_finalize(GObject *object) {
65+}
66+
67+static void
68+dia_object_class_init (DiaObjectClass *klass)
69+{
70+ GObjectClass *object_class = G_OBJECT_CLASS (klass);
71+ DiaObjectClass *object_class = DIA_OBJECT_CLASS (klass);
72+
73+ parent_class = g_type_class_peek_parent (klass);
74+
75+ object_class->finalize = dia_object_finalize;
76+}
77+
78+DiaObject *
79+dia_object_new(int num_handles, int num_connections) {
80+ DiaObject *obj = g_object_new(DIA_TYPE_OBJECT, NULL);
81+ object_init(obj, num_handles, num_connections);
82+ return obj;
83+}
84+
85+
3086 void
3187 object_init(Object *obj,
3288 int num_handles,
--- a/lib/object.h
+++ b/lib/object.h
@@ -35,6 +35,8 @@
3535 #include "diagramdata.h"
3636 #include "parent.h"
3737
38+G_BEGIN_DECLS
39+
3840 /** This enumeration gives a bitset of modifier keys currently held down.
3941 */
4042 typedef enum {
@@ -266,7 +268,7 @@ typedef DiaMenu *(*ObjectMenuFunc) (Object* obj, Point *position);
266268 ** The functions provided in object.c
267269 *************************************/
268270
269-void object_init(Object *obj, int num_handles, int num_connections);
271+void dia_object_new(int num_handles, int num_connections);
270272 void object_destroy(Object *obj); /* Unconnects handles, so don't
271273 free handles before calling. */
272274 void object_copy(Object *from, Object *to);
@@ -333,6 +335,15 @@ typedef struct _Affine {
333335 } Affine;
334336
335337
338+#define DIA_TYPE_OBJECT (dia_object_get_type ())
339+#define DIA_OBJECT(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), DIA_TYPE_OBJECT, DiaObject))
340+#define DIA_OBJECT_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), DIA_TYPE_OBJECT, DiaObjectClass))
341+#define DIA_IS_OBJECT(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), DIA_TYPE_OBJECT))
342+#define DIA_OBJECT_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), DIA_TYPE_OBJECT, DiaObjectClass))
343+
344+GType dia_object_get_type (void) G_GNUC_CONST;
345+
346+
336347 /*
337348 This structure gives access to the functions used to manipulate an object
338349 See information above on the use of the functions
@@ -375,6 +386,7 @@ struct _ObjectOps {
375386 */
376387
377388 struct _Object {
389+ GObject parent_instance;
378390 ObjectType *type;
379391 Point position;
380392 Rectangle bounding_box;
@@ -420,7 +432,9 @@ struct _ObjectTypeOps {
420432 Structure so that the ObjectFactory can create objects
421433 of unknown type. (Read in from a shared lib.)
422434 */
423-struct _ObjectType {
435+struct _DiaObjectClass {
436+ GObjectClass parent_class;
437+
424438 char *name;
425439 int version;
426440
@@ -460,5 +474,7 @@ gboolean dia_object_defaults_save (const gchar *filename);
460474 Layer *dia_object_get_parent_layer(Object *obj);
461475 gboolean dia_object_is_selected (const Object *obj);
462476
477+G_END_DECLS
478+
463479 #endif /* OBJECT_H */
464480