• R/O
  • HTTP
  • SSH
  • HTTPS

Commit

Tags
Keine Tags

Frequently used words (click to add to your profile)

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

作図ソフト dia の改良版


Commit MetaInfo

Revisionb8a358e4e2fc98cdb61c43bb0f2e623fa1a5736a (tree)
Zeit2004-07-23 06:56:10
AutorLars Clausen <lclausen@src....>
CommiterLars Clausen

Log Message

0.94-pre2 fixes taken from head and release branches.

Ändern Zusammenfassung

Diff

--- a/ChangeLog
+++ b/ChangeLog
@@ -1,4 +1,35 @@
1+2004-07-22 Lars Clausen <lars@raeder.dk>
2+
3+ * NEWS:
4+ * config.h.win32:
5+ * doc/en/dia.xml:
6+ * doc/pl/dia.xml:
7+ * dia.spec (Release):
8+ * configure.in: Update to version 0.94-pre2.
9+
10+ * app/load_save.c (diagram_data_write_doc): Use new namespace
11+ here, too.
12+
13+ * lib/object.h (OBJECT_COMMON_PROPERTIES): Remove 'Dia' from
14+ hidden objects properties.
15+
16+ * objects/standard/line.c: Remove halffinished line gap box from
17+ properties list.
18+
19+ * app/paginate_psprint.c:
20+ * app/filedlg.c: Patch from kimmidi@novell.com (Kiran Kumar
21+ Immidi): Close export and print dialog with diagram as well.
22+ (#129520)
23+
24+ * lib/diaarrowchooser.[ch]: Patch from pborelli@katamail.com (paolo
25+ borelli): Remove deprecated stuff (#137693)
26+
27+ * app/dia-props.c (create_diagram_properties_dialog): Patch from
28+ kimmidi@novell.com (Kiran Kumar Immidi): Close properties dialog
29+ on destroy.
30+
131 2004-07-21 Ray Strode <rstrode@redhat.com>
32+
233 * dia/dia.desktop.in: Add MimeType line to desktop file
334 new mime sytem.
435
@@ -16,23 +47,17 @@
1647
1748 * app/app_procs.c : make the --size hack even uglier, but work again
1849
19- * lib/libartrenderer.c (draw_line, draw_rect) : disable broken code
20- using art_vpath_affine_transform()
21-
2250 * lib/dia_dirs.c(dia_get_absolute_filename) : must not free()
2351 but g_free() what is returned by g_build_filename()
2452
25- * objects/custom_object.c(custom_destroy) : handle all enum values
26- in switch to get rid of the warning
53+ * objects/custom/custom_object.c(custom_destroy) : handle all enum
54+ values in switch to get rid of the warning
2755
2856 * objects/custom/shape_info.c : use g_ascii_strtod(), get rid
2957 of setlocale()/strtod()
3058 * lib/dia_svg.c : dito
3159 * lib/dia_xml.c : almost
3260
33- * lib/object.h : set PROP_FLAG_OPTIONAL for "obj_rotate" to stop
34- complaining on missing attribute
35-
3661 * plug-ins/python/group_props.py : use the string representation of
3762 value to ensure "unique values". If the strings would not be different
3863 the user cann't see the difference either
@@ -46,28 +71,24 @@
4671
4772 * lib/persistence.c (persistence_save_type): Small fixes (#142663)
4873
49- * doc/diagram.dtd: Add closing > to dia:diagram to make it parsable!
50-
5174 * objects/standard/image.c (image_load): Use path of diagram
5275 rather than running directory as base for image file place.
5376
77+ * doc/{diagram,sheet}.dtd: Move DTD namespace to new site, and
78+ syntactic fixes.
79+
5480 * app/disp_callbacks.c (ddisplay_canvas_events): Patch from
5581 Ambrose Li <a.c.li@ieee.org>: Better IM context handling.
5682
83+ * Re-added new sample diagrams binarily.
84+
5785 2004-07-17 Sagar Rastogi <rastogi@students.iiit.net>
5886
5987 * app/disp_callbacks.c: Fixed #144962 (also in KNOWN_BUGS),
6088 Disabled keyboard accels when dragging an object.
6189
62-2004-07-16 Steffen Macke <sdteffen@web.de>
63-
64- * shapes/RDP/Makefile.am: Synchronized with 0_94_RELEASE branch
65-
6690 2004-07-14 Lars Clausen <lars@raeder.dk>
6791
68- * doc/diagram.dtd:
69- * doc/sheet.dtd: Move DTD namespace to new site, and syntactic fix.
70-
7192 * app/grid.c (snap_to_grid): Use diagrams grid setting to
7293 determine hex grid snap.
7394
@@ -75,30 +96,8 @@
7596
7697 * app/interface.h: Avoid multiply defined symbols (#147396)
7798
78-2004-07-13 Lars Clausen <lars@raeder.dk>
79-
80- * app/paginate_psprint.c (diagram_print_ps): Give usable type for
81- signal handler function -- Solaris uses a direct function type
82- that's different from what Linux has, but a void * will always
83- hold it.
84-
85-2004-07-13 Steffen Macke <sdteffen@web.de>
86-
87- * samples/Istar.dia:
88- * samples/KAOS.dia:
89- * samples/Jackson.dia: re-added to the CVS as binary files
90-
91-2004-07-11 Lars Clausen <lars@raeder.dk>
92-
93- * lib/dialibartrenderer.c:
94- * lib/dialibartrenderer.h (struct _DiaLibartRenderer):
95- * lib/object.c:
96- * lib/object.h (OBJECT_COMMON_PROPERTIES): First attempt at actual
97- rotation. Very primitive interface, only rect can rotate, only in
98- libart, and there the box collapses:( But it's progress.
99-
10099 2004-07-10 Lars Clausen <lars@raeder.dk>
101-
100+
102101 * app/sheets_dialog_callbacks.c (write_user_sheet):
103102 * lib/sheet.c (load_register_sheet): Don't introduce double
104103 slashes in namespace.
@@ -106,15 +105,19 @@
106105 * lib/dia_xml.h (DIA_XML_NAME_SPACE_BASE): Keep consistent with
107106 old diagrams, or XSLT will barf all over.
108107
109-2004-07-10 Steffen Macke <sdteffen@web.de>
108+ * shapes/RDP/place.shape:
109+ * shapes/RDP/transition.shape:
110+ * shapes/RDP/Makefile.am: Added .png entries to SHAPES and changed
111+ shapes to use those.
110112
111- * makefile.msc: added doc target; updated for 0.94-pre1 release
112- * shapes/RDP/place.shape:
113- * shapes/RDP/transition.shape: use *.png instead of *.xpm
113+2004-07-07 Lars Clausen <lars@raeder.dk>
114114
115-2004-07-08 Steffen Macke <sdteffen@web.de>
116-
117- * plug-ins/wmf/wmf.cpp (UsePen): linewidth is now working for PS_SOLID
115+ * config.h.win32:
116+ * doc/{en,pl}/dia.xml:
117+ * dia.spec:
118+ * configure.in:
119+ * NEWS: First prerelease of version 0.94. Now with release
120+ versions in a branch and main devel in the trunk.
118121
119122 2004-07-05 Hans Breuer <hans@breuer.org>
120123
--- a/NEWS
+++ b/NEWS
@@ -1,3 +1,55 @@
1+dia-0.94-pre2: 17-Jul-2004
2+
3+Second prerelease of version 0.94. Bunch of small fixes, but together
4+important enough to make a new prerelease.
5+
6+dia-0.94-pre1: 04-Jul-2004
7+
8+First prerelease of version 0.94. News in this version:
9+
10+* Highlighting of objects when connecting to them makes it easier to
11+ connect.
12+
13+* New shape sets include:
14+ - RDP (Petri Networks shapes)
15+ - KAOS (Goal-Directed Requirements Acquisition)
16+ - I* (Intentional STrategic Actor Relationships modelling)
17+ - Jackson (Jackson Diagrams)
18+ - ChemEng (chemical engineering)
19+
20+* Hexagonal grid, for all you chemists out there.
21+
22+* Allow selection between layers, selectable in layers dialog.
23+
24+* Disparate persistence systems replaced by one combined system using XML,
25+ leaves unknown preferences alone.
26+
27+* New renderer plug-in for Cairo rendering API.
28+
29+* New renderer plug-in for WMF outside of Windows.
30+
31+* New arrow head: Backslash.
32+
33+* Rounded corners on zigzaglines and polylines.
34+
35+* Automaticall open new diagram if now chosen at start.
36+
37+* Diagram modified status now based on undo information.
38+
39+* Wrapping operations arguments in UML objects.
40+
41+* Better positioning of association texts.
42+
43+* More persistence of toolbox selections and dialog entries.
44+
45+* Better handling of dialogs when parent dialogs close.
46+
47+* Changed from SGML to XML for docs, still DocBook.
48+
49+* Fix shape background color compatibility problem.
50+
51+* Many smaller bug fixes, leaks closed and stuff.
52+
153 dia-0.93: 29-Apr-2004
254
355 Ready for release.
--- a/app/dia-props.c
+++ b/app/dia-props.c
@@ -105,7 +105,7 @@ create_diagram_properties_dialog(Diagram *dia)
105105 NULL);
106106 g_signal_connect(G_OBJECT(dialog), "delete_event",
107107 G_CALLBACK(gtk_widget_hide), NULL);
108- g_signal_connect(G_OBJECT(dialog), "destroy_event",
108+ g_signal_connect(G_OBJECT(dialog), "destroy",
109109 G_CALLBACK(diagram_properties_dialog_destroyed), NULL);
110110
111111 notebook = gtk_notebook_new();
--- a/app/filedlg.c
+++ b/app/filedlg.c
@@ -332,6 +332,9 @@ file_save_as_callback(gpointer data, guint action, GtkWidget *widget)
332332 gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(compressbutton),
333333 dia->data->is_compressed);
334334 g_signal_handlers_unblock_by_func(G_OBJECT(compressbutton), toggle_compress_callback, NULL);
335+ diagram_remove_related_dialog(gtk_object_get_user_data(GTK_OBJECT(savedlg)), savedlg);
336+ gtk_object_set_user_data(GTK_OBJECT(savedlg), dia);
337+ diagram_add_related_dialog(dia, savedlg);
335338 if (GTK_WIDGET_VISIBLE(savedlg))
336339 return;
337340 }
@@ -524,6 +527,7 @@ file_export_callback(gpointer data, guint action, GtkWidget *widget)
524527
525528 gtk_object_set_user_data(GTK_OBJECT(exportdlg), dia);
526529 g_object_ref(dia);
530+ diagram_add_related_dialog(dia, exportdlg);
527531 gtk_widget_set_sensitive(exportdlg, TRUE);
528532 if (GTK_WIDGET_VISIBLE(exportdlg))
529533 return;
--- a/app/load_save.c
+++ b/app/load_save.c
@@ -129,7 +129,7 @@ read_objects(xmlNodePtr objects,
129129 list = NULL;
130130
131131 obj_node = objects->xmlChildrenNode;
132-
132+
133133 while ( obj_node != NULL) {
134134 if (xmlIsBlankNode(obj_node)) {
135135 obj_node = obj_node->next;
--- a/app/paginate_psprint.c
+++ b/app/paginate_psprint.c
@@ -193,6 +193,18 @@ pipe_handler(int signum)
193193 sigpipe_received = TRUE;
194194 }
195195
196+static gboolean
197+diagram_print_destroy(GtkWidget *widget)
198+{
199+ Diagram **dia;
200+
201+ if ((dia = gtk_object_get_user_data(GTK_OBJECT(widget))) != NULL) {
202+ diagram_remove_related_dialog(*dia, widget);
203+ *dia = NULL;
204+ }
205+
206+ return FALSE;
207+}
196208
197209 void
198210 diagram_print_ps(Diagram *dia)
@@ -217,6 +229,10 @@ diagram_print_ps(Diagram *dia)
217229
218230 /* create the dialog */
219231 dialog = gtk_dialog_new();
232+ diagram_add_related_dialog(dia, dialog);
233+ gtk_object_set_user_data(GTK_OBJECT(dialog), &dia);
234+ g_signal_connect(GTK_OBJECT(dialog), "delete_event",
235+ G_CALLBACK(diagram_print_destroy), NULL);
220236 g_signal_connect(GTK_OBJECT(dialog), "delete_event",
221237 G_CALLBACK(gtk_main_quit), NULL);
222238 g_signal_connect(GTK_OBJECT(dialog), "delete_event",
@@ -312,6 +328,11 @@ diagram_print_ps(Diagram *dia)
312328 gtk_widget_show(dialog);
313329 gtk_main();
314330
331+ if(!dia) {
332+ gtk_widget_destroy(dialog);
333+ return;
334+ }
335+
315336 if (!cont) {
316337 persistence_change_string_entry("printer-command", orig_command, cmd);
317338 persistence_change_string_entry("printer-file", orig_file, ofile);
--- a/config.h.win32
+++ b/config.h.win32
@@ -17,7 +17,7 @@
1717 #define GETTEXT_PACKAGE "dia"
1818 #define LOCALEDIR "../lib/locale"
1919
20-#define VERSION "0.93+cvs"
20+#define VERSION "0.94-pre2"
2121
2222 /*
2323 * We are linking libxml as DLL with either msvc or mingw, but this
--- a/configure.in
+++ b/configure.in
@@ -1,6 +1,6 @@
11 dnl Process this -*- autoconf -*- file with autoconf to produce a
22 dnl configure script.
3-AC_INIT(dia, 0.93+cvs, http://bugzilla.gnome.org/enter_bug.cgi?product=dia)
3+AC_INIT(dia, 0.94-pre2, http://bugzilla.gnome.org/enter_bug.cgi?product=dia)
44 AC_CONFIG_SRCDIR(app/diagram.c)
55 AM_INIT_AUTOMAKE(AC_PACKAGE_NAME,AC_PACKAGE_VERSION)
66
@@ -451,6 +451,7 @@ shapes/Misc/Makefile
451451 shapes/MSE/Makefile
452452 shapes/network/Makefile
453453 shapes/Pneumatic/Makefile
454+shapes/RDP/Makefile
454455 shapes/SDL/Makefile
455456 shapes/sybase/Makefile
456457 app/Makefile
--- a/dia.spec
+++ b/dia.spec
@@ -1,12 +1,12 @@
11 %define name dia
22 # This is the full Dia version
3-%define ver 0.93
3+%define ver 0.94
44
55 Summary: A gtk+ based diagram creation program.
66 Name: %name
77 Version: %ver
88 # This indicates changes to the spec file after last time %ver has changed.
9-Release: cvs
9+Release: pre2
1010 Copyright: GPL
1111 Group: Applications/
1212 Source: ftp://ftp.gnome.org/pub/GNOME/stable/sources/dia/%{name}-%{ver}.tar.gz
--- a/doc/en/dia.xml
+++ b/doc/en/dia.xml
@@ -8,7 +8,7 @@
88
99 [
1010
11- <!ENTITY VERSION "0.94-devel">
11+ <!ENTITY VERSION "0.94-pre2">
1212
1313 <!ENTITY INTRODUCTION SYSTEM "intro.xml">
1414
--- a/doc/pl/dia.xml
+++ b/doc/pl/dia.xml
@@ -1,7 +1,7 @@
11 <?xml version="1.0" encoding="iso-8859-1"?>
22
33 <!DOCTYPE Book PUBLIC "-//OASIS//DTD DocBook XML V4.2//EN" "../../dtd/docbookx.dtd"[
4-<!ENTITY VERSION "0.94-devel">
4+<!ENTITY VERSION "0.94-pre2">
55 <!ENTITY INTRODUCTION SYSTEM "intro.sgml">
66 <!ENTITY QUICKSTART SYSTEM "usage-quickstart.sgml">
77 <!ENTITY CANVAS SYSTEM "usage-canvas.sgml">
--- a/lib/diaarrowchooser.c
+++ b/lib/diaarrowchooser.c
@@ -19,8 +19,6 @@
1919 * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
2020 */
2121
22-#undef GTK_DISABLE_DEPRECATED /* GtkTypeInfo, gtk_widget_queue_clear, ... */
23-
2422 #include <gtk/gtk.h>
2523
2624 #include "intl.h"
@@ -31,12 +29,6 @@
3129 static const char *button_menu_key = "dia-button-menu";
3230 static const char *menuitem_enum_key = "dia-menuitem-value";
3331
34-static gint close_and_hide(GtkWidget *wid, GdkEventAny *event)
35-{
36- gtk_widget_hide(wid);
37- return TRUE;
38-}
39-
4032 /* --------------- DiaArrowPreview -------------------------------- */
4133 static void dia_arrow_preview_set(DiaArrowPreview *arrow,
4234 ArrowType atype, gboolean left);
@@ -46,25 +38,28 @@ static void dia_arrow_preview_init (DiaArrowPreview *arrow);
4638 static gint dia_arrow_preview_expose (GtkWidget *widget,
4739 GdkEventExpose *event);
4840
49-GtkType
41+GType
5042 dia_arrow_preview_get_type (void)
5143 {
52- static GtkType arrow_type = 0;
53-
54- if (!arrow_type) {
55- static const GtkTypeInfo arrow_info = {
56- "DiaArrowPreview",
57- sizeof (DiaArrowPreview),
58- sizeof (DiaArrowPreviewClass),
59- (GtkClassInitFunc) dia_arrow_preview_class_init,
60- (GtkObjectInitFunc) dia_arrow_preview_init,
61- /* reserved_1 */ NULL,
62- /* reserved_2 */ NULL,
63- (GtkClassInitFunc) NULL,
64- };
65- arrow_type = gtk_type_unique (GTK_TYPE_MISC, &arrow_info);
66- }
67- return arrow_type;
44+ static GType type = 0;
45+
46+ if (!type) {
47+ static const GTypeInfo info = {
48+ sizeof (DiaArrowPreviewClass),
49+ (GBaseInitFunc) NULL,
50+ (GBaseFinalizeFunc) NULL,
51+ (GClassInitFunc) dia_arrow_preview_class_init,
52+ (GClassFinalizeFunc) NULL,
53+ NULL,
54+ sizeof (DiaArrowPreview),
55+ 0,
56+ (GInstanceInitFunc) dia_arrow_preview_init
57+ };
58+
59+ type = g_type_register_static(GTK_TYPE_MISC, "DiaArrowPreview", &info, 0);
60+ }
61+
62+ return type;
6863 }
6964
7065 static void
@@ -72,7 +67,7 @@ dia_arrow_preview_class_init (DiaArrowPreviewClass *class)
7267 {
7368 GtkWidgetClass *widget_class;
7469
75- widget_class = (GtkWidgetClass *)class;
70+ widget_class = GTK_WIDGET_CLASS (class);
7671 widget_class->expose_event = dia_arrow_preview_expose;
7772 }
7873
@@ -91,7 +86,7 @@ dia_arrow_preview_init (DiaArrowPreview *arrow)
9186 GtkWidget *
9287 dia_arrow_preview_new (ArrowType atype, gboolean left)
9388 {
94- DiaArrowPreview *arrow = gtk_type_new (dia_arrow_preview_get_type());
89+ DiaArrowPreview *arrow = g_object_new(DIA_TYPE_ARROW_PREVIEW, NULL);
9590
9691 arrow->atype = atype;
9792 arrow->left = left;
@@ -105,7 +100,7 @@ dia_arrow_preview_set(DiaArrowPreview *arrow, ArrowType atype, gboolean left)
105100 arrow->atype = atype;
106101 arrow->left = left;
107102 if (GTK_WIDGET_DRAWABLE(arrow))
108- gtk_widget_queue_clear(GTK_WIDGET(arrow));
103+ gtk_widget_queue_draw(GTK_WIDGET(arrow));
109104 }
110105 }
111106
@@ -159,56 +154,60 @@ dia_arrow_preview_expose(GtkWidget *widget, GdkEventExpose *event)
159154
160155 /* ------- Code for DiaArrowChooser ----------------------- */
161156
162-
163-
164-
165157 static void dia_arrow_chooser_class_init (DiaArrowChooserClass *klass);
166158 static void dia_arrow_chooser_init (DiaArrowChooser *arrow);
167-static gint dia_arrow_chooser_event (GtkWidget *widget,
168- GdkEvent *event);
169-static void dia_arrow_chooser_dialog_ok (DiaArrowChooser *arrow);
170-static void dia_arrow_chooser_dialog_cancel (DiaArrowChooser *arrow);
171-static void dia_arrow_chooser_dialog_destroy (DiaArrowChooser *arrow);
172-static void dia_arrow_chooser_change_arrow_type (GtkMenuItem *mi,
173- DiaArrowChooser *arrow);
174-static void dia_arrow_chooser_dialog_new(GtkWidget *widget, gpointer userdata);
175-static void dia_arrow_chooser_dialog_show(GtkWidget *widget, gpointer userdata);
176-
177-GtkType
159+
160+GType
178161 dia_arrow_chooser_get_type (void)
179162 {
180- static GtkType arrow_type = 0;
181-
182- if (!arrow_type) {
183- static const GtkTypeInfo arrow_info = {
184- "DiaArrowChooser",
185- sizeof (DiaArrowChooser),
186- sizeof (DiaArrowChooserClass),
187- (GtkClassInitFunc) dia_arrow_chooser_class_init,
188- (GtkObjectInitFunc) dia_arrow_chooser_init,
189- /* reserved_1 */ NULL,
190- /* reserved_2 */ NULL,
191- (GtkClassInitFunc) NULL,
192- };
193- arrow_type = gtk_type_unique (GTK_TYPE_BUTTON, &arrow_info);
194- }
195- return arrow_type;
163+ static GType type = 0;
164+
165+ if (!type) {
166+ static const GTypeInfo info = {
167+ sizeof (DiaArrowChooserClass),
168+ (GBaseInitFunc) NULL,
169+ (GBaseFinalizeFunc) NULL,
170+ (GClassInitFunc) dia_arrow_chooser_class_init,
171+ (GClassFinalizeFunc) NULL,
172+ NULL,
173+ sizeof (DiaArrowChooser),
174+ 0,
175+ (GInstanceInitFunc) dia_arrow_chooser_init
176+ };
177+
178+ type = g_type_register_static(GTK_TYPE_BUTTON, "DiaArrowChooser", &info, 0);
179+ }
180+
181+ return type;
182+}
183+
184+static gint
185+dia_arrow_chooser_event(GtkWidget *widget, GdkEvent *event)
186+{
187+ if (event->type == GDK_BUTTON_PRESS && event->button.button == 1) {
188+ GtkMenu *menu = gtk_object_get_data(GTK_OBJECT(widget), button_menu_key);
189+ gtk_menu_popup(menu, NULL, NULL, NULL, NULL,
190+ event->button.button, event->button.time);
191+ return TRUE;
192+ }
193+
194+ return FALSE;
196195 }
197196
198197 static void
199-dia_arrow_chooser_class_init (DiaArrowChooserClass *class)
198+dia_arrow_chooser_class_init(DiaArrowChooserClass *class)
200199 {
201200 GtkWidgetClass *widget_class;
202201
203- widget_class = (GtkWidgetClass *)class;
202+ widget_class = GTK_WIDGET_CLASS(class);
204203 widget_class->event = dia_arrow_chooser_event;
205204 }
206205
207206 static void
208-dia_arrow_chooser_init (DiaArrowChooser *arrow)
207+dia_arrow_chooser_init(DiaArrowChooser *arrow)
209208 {
210209 GtkWidget *wid;
211-
210+
212211 arrow->left = FALSE;
213212 arrow->arrow.type = ARROW_NONE;
214213 arrow->arrow.length = DEFAULT_ARROW_LENGTH;
@@ -222,62 +221,86 @@ dia_arrow_chooser_init (DiaArrowChooser *arrow)
222221 arrow->dialog = NULL;
223222 }
224223
225-/* Creating the dialog separately so we can handle destroy */
226224 static void
227-dia_arrow_chooser_dialog_new(GtkWidget *widget, gpointer userdata)
225+dia_arrow_chooser_dialog_response (GtkWidget *dialog,
226+ gint response_id,
227+ DiaArrowChooser *chooser)
228228 {
229- DiaArrowChooser *chooser = DIA_ARROW_CHOOSER(userdata);
230- if (chooser->dialog == NULL) {
231- GtkWidget *wid;
232- chooser->dialog = wid = gtk_dialog_new();
233- gtk_window_set_title(GTK_WINDOW(wid), _("Arrow Properties"));
234- g_signal_connect(GTK_OBJECT(wid), "delete_event",
235- G_CALLBACK(close_and_hide), NULL);
236- g_signal_connect(GTK_OBJECT(wid), "destroy",
237- G_CALLBACK(gtk_widget_destroyed),
238- &chooser->dialog);
239-
240- wid = dia_arrow_selector_new();
241- gtk_container_set_border_width(GTK_CONTAINER(wid), 5);
242- gtk_box_pack_start(GTK_BOX(GTK_DIALOG(chooser->dialog)->vbox), wid,
243- TRUE, TRUE, 0);
244- gtk_widget_show(wid);
245- chooser->selector = DIA_ARROW_SELECTOR(wid);
229+ if (response_id == GTK_RESPONSE_OK) {
230+ Arrow new_arrow = dia_arrow_selector_get_arrow(chooser->selector);
231+
232+ if (new_arrow.type != chooser->arrow.type ||
233+ new_arrow.length != chooser->arrow.length ||
234+ new_arrow.width != chooser->arrow.width) {
235+ chooser->arrow = new_arrow;
236+ dia_arrow_preview_set(chooser->preview, new_arrow.type, chooser->left);
237+ if (chooser->callback)
238+ (* chooser->callback)(chooser->arrow, chooser->user_data);
239+ }
240+ } else {
246241 dia_arrow_selector_set_arrow(chooser->selector, chooser->arrow);
242+ }
243+ gtk_widget_hide(chooser->dialog);
244+}
245+
246+static void
247+dia_arrow_chooser_dialog_new(DiaArrowChooser *chooser)
248+{
249+ GtkWidget *wid;
250+
251+ chooser->dialog = gtk_dialog_new_with_buttons(_("Arrow Properties"),
252+ NULL,
253+ GTK_DIALOG_NO_SEPARATOR,
254+ GTK_STOCK_CANCEL,
255+ GTK_RESPONSE_CANCEL,
256+ GTK_STOCK_OK,
257+ GTK_RESPONSE_OK,
258+ NULL);
259+ gtk_dialog_set_default_response(GTK_DIALOG(chooser->dialog),
260+ GTK_RESPONSE_OK);
261+ g_signal_connect(G_OBJECT(chooser->dialog), "response",
262+ G_CALLBACK(dia_arrow_chooser_dialog_response), chooser);
263+ g_signal_connect(G_OBJECT(chooser->dialog), "destroy",
264+ G_CALLBACK(gtk_widget_destroyed), &chooser->dialog);
265+
266+ wid = dia_arrow_selector_new();
267+ gtk_container_set_border_width(GTK_CONTAINER(wid), 5);
268+ gtk_box_pack_start(GTK_BOX(GTK_DIALOG(chooser->dialog)->vbox), wid,
269+ TRUE, TRUE, 0);
270+ gtk_widget_show(wid);
271+ chooser->selector = DIA_ARROW_SELECTOR(wid);
272+}
247273
248- wid = gtk_button_new_with_label(_("OK"));
249- GTK_WIDGET_SET_FLAGS(wid, GTK_CAN_DEFAULT);
250- gtk_container_add(GTK_CONTAINER(GTK_DIALOG(chooser->dialog)->action_area),wid);
251- gtk_widget_grab_default(wid);
252- g_signal_connect_swapped(GTK_OBJECT(wid), "clicked",
253- G_CALLBACK(dia_arrow_chooser_dialog_ok),
254- GTK_OBJECT(chooser));
255- gtk_widget_show(wid);
256-
257- wid = gtk_button_new_with_label(_("Cancel"));
258- GTK_WIDGET_SET_FLAGS(wid, GTK_CAN_DEFAULT);
259- gtk_container_add(GTK_CONTAINER(GTK_DIALOG(chooser->dialog)->action_area),wid);
260- g_signal_connect_swapped(GTK_OBJECT(wid), "clicked",
261- G_CALLBACK(dia_arrow_chooser_dialog_cancel),
262- GTK_OBJECT(chooser));
263- gtk_widget_show(wid);
274+static void
275+dia_arrow_chooser_dialog_show(GtkWidget *widget, DiaArrowChooser *chooser)
276+{
277+ if (chooser->dialog) {
278+ gtk_window_present(GTK_WINDOW(chooser->dialog));
279+ return;
264280 }
281+
282+ dia_arrow_chooser_dialog_new(chooser);
283+ dia_arrow_selector_set_arrow(chooser->selector, chooser->arrow);
284+ gtk_widget_show(chooser->dialog);
265285 }
266286
267287 static void
268-dia_arrow_chooser_dialog_show(GtkWidget *widget, gpointer userdata)
288+dia_arrow_chooser_change_arrow_type(GtkMenuItem *mi, DiaArrowChooser *chooser)
269289 {
270- DiaArrowChooser *chooser = DIA_ARROW_CHOOSER(userdata);
271- dia_arrow_chooser_dialog_new(widget, chooser);
272- dia_arrow_selector_set_arrow(chooser->selector, chooser->arrow);
273- gtk_widget_show(chooser->dialog);
290+ ArrowType atype = GPOINTER_TO_INT(g_object_get_data(G_OBJECT(mi),
291+ menuitem_enum_key));
292+ Arrow arrow;
293+ arrow.width = chooser->arrow.width;
294+ arrow.length = chooser->arrow.length;
295+ arrow.type = atype;
296+ dia_arrow_chooser_set_arrow(chooser, &arrow);
274297 }
275298
276299 GtkWidget *
277300 dia_arrow_chooser_new(gboolean left, DiaChangeArrowCallback callback,
278301 gpointer user_data, GtkTooltips *tool_tips)
279302 {
280- DiaArrowChooser *chooser = gtk_type_new(dia_arrow_chooser_get_type());
303+ DiaArrowChooser *chooser = g_object_new(DIA_TYPE_ARROW_CHOOSER, NULL);
281304 GtkWidget *menu, *mi, *ar;
282305 gint i;
283306
@@ -286,17 +309,15 @@ dia_arrow_chooser_new(gboolean left, DiaChangeArrowCallback callback,
286309 chooser->callback = callback;
287310 chooser->user_data = user_data;
288311
289- dia_arrow_chooser_dialog_new(NULL, chooser);
290-
291312 menu = gtk_menu_new();
292313 g_object_ref(G_OBJECT(menu));
293314 gtk_object_sink(GTK_OBJECT(menu));
294- gtk_object_set_data_full(GTK_OBJECT(chooser), button_menu_key, menu,
295- (GtkDestroyNotify)gtk_widget_unref);
315+ g_object_set_data_full(G_OBJECT(chooser), button_menu_key, menu,
316+ (GtkDestroyNotify)gtk_widget_unref);
296317 for (i = 0; arrow_types[i].name != NULL; i++) {
297318 mi = gtk_menu_item_new();
298- gtk_object_set_data(GTK_OBJECT(mi), menuitem_enum_key,
299- GINT_TO_POINTER(arrow_types[i].enum_value));
319+ g_object_set_data(G_OBJECT(mi), menuitem_enum_key,
320+ GINT_TO_POINTER(arrow_types[i].enum_value));
300321 if (tool_tips) {
301322 gtk_tooltips_set_tip(tool_tips, mi, arrow_types[i].name, NULL);
302323 }
@@ -304,82 +325,25 @@ dia_arrow_chooser_new(gboolean left, DiaChangeArrowCallback callback,
304325
305326 gtk_container_add(GTK_CONTAINER(mi), ar);
306327 gtk_widget_show(ar);
307- g_signal_connect(GTK_OBJECT(mi), "activate",
308- G_CALLBACK(dia_arrow_chooser_change_arrow_type),
309- chooser);
310- gtk_container_add(GTK_CONTAINER(menu), mi);
328+ g_signal_connect(G_OBJECT(mi), "activate",
329+ G_CALLBACK(dia_arrow_chooser_change_arrow_type), chooser);
330+ gtk_menu_shell_append (GTK_MENU_SHELL (menu), mi);
311331 gtk_widget_show(mi);
312332 }
313333 mi = gtk_menu_item_new_with_label(_("Details..."));
314- g_signal_connect(GTK_OBJECT(mi), "activate",
315- G_CALLBACK(dia_arrow_chooser_dialog_show),
316- GTK_OBJECT(chooser));
317- gtk_container_add(GTK_CONTAINER(menu), mi);
334+ g_signal_connect(G_OBJECT(mi), "activate",
335+ G_CALLBACK(dia_arrow_chooser_dialog_show), chooser);
336+ gtk_menu_shell_append (GTK_MENU_SHELL (menu), mi);
318337 gtk_widget_show(mi);
319338
320339 return GTK_WIDGET(chooser);
321340 }
322341
323-static gint
324-dia_arrow_chooser_event(GtkWidget *widget, GdkEvent *event)
325-{
326- if (event->type == GDK_BUTTON_PRESS && event->button.button == 1) {
327- GtkMenu *menu = gtk_object_get_data(GTK_OBJECT(widget), button_menu_key);
328- gtk_menu_popup(menu, NULL, NULL, NULL, NULL,
329- event->button.button, event->button.time);
330- return TRUE;
331- }
332- return FALSE;
333-}
334-
335-static void
336-dia_arrow_chooser_dialog_ok (DiaArrowChooser *arrow)
337-{
338- Arrow new_arrow = dia_arrow_selector_get_arrow(arrow->selector);
339-
340- if (new_arrow.type != arrow->arrow.type ||
341- new_arrow.length != arrow->arrow.length ||
342- new_arrow.width != arrow->arrow.width) {
343- arrow->arrow = new_arrow;
344- dia_arrow_preview_set(arrow->preview, new_arrow.type, arrow->left);
345- if (arrow->callback)
346- (* arrow->callback)(arrow->arrow, arrow->user_data);
347- }
348- gtk_widget_hide(arrow->dialog);
349-}
350-
351-static void
352-dia_arrow_chooser_dialog_cancel (DiaArrowChooser *arrow)
353-{
354- if (arrow->dialog != NULL)
355- dia_arrow_selector_set_arrow(arrow->selector, arrow->arrow);
356- gtk_widget_hide(arrow->dialog);
357-}
358-
359-static void
360-dia_arrow_chooser_dialog_destroy (DiaArrowChooser *chooser)
361-{
362- /* dia_arrow_selector_set_arrow(arrow->selector, arrow->arrow);*/
363- chooser->dialog = NULL;
364- chooser->selector = NULL;
365-}
366-
367-static void
368-dia_arrow_chooser_change_arrow_type(GtkMenuItem *mi, DiaArrowChooser *chooser)
369-{
370- ArrowType atype = GPOINTER_TO_INT(gtk_object_get_data(GTK_OBJECT(mi),
371- menuitem_enum_key));
372- Arrow arrow;
373- arrow.width = chooser->arrow.width;
374- arrow.length = chooser->arrow.length;
375- arrow.type = atype;
376- dia_arrow_chooser_set_arrow(chooser, &arrow);
377-}
378-
379342 /** Set the type of arrow shown by the arrow chooser.
380343 */
381344 void
382-dia_arrow_chooser_set_arrow(DiaArrowChooser *chooser, Arrow *arrow) {
345+dia_arrow_chooser_set_arrow(DiaArrowChooser *chooser, Arrow *arrow)
346+{
383347 if (chooser->arrow.type != arrow->type) {
384348 dia_arrow_preview_set(chooser->preview, arrow->type, chooser->left);
385349 chooser->arrow.type = arrow->type;
@@ -392,6 +356,9 @@ dia_arrow_chooser_set_arrow(DiaArrowChooser *chooser, Arrow *arrow) {
392356 chooser->arrow.length = arrow->length;
393357 }
394358
395-ArrowType dia_arrow_chooser_get_arrow_type(DiaArrowChooser *arrow) {
359+ArrowType
360+dia_arrow_chooser_get_arrow_type(DiaArrowChooser *arrow)
361+{
396362 return arrow->arrow.type;
397363 }
364+
--- a/lib/diaarrowchooser.h
+++ b/lib/diaarrowchooser.h
@@ -19,8 +19,6 @@
1919 * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
2020 */
2121
22-
23-
2422 #ifndef _DIAARROWCHOOSER_H_
2523 #define _DIAARROWCHOOSER_H_
2624
@@ -31,14 +29,17 @@
3129
3230
3331 /* --------------- DiaArrowPreview -------------------------------- */
34-typedef struct _DiaArrowPreview DiaArrowPreview;
35-typedef struct _DiaArrowPreviewClass DiaArrowPreviewClass;
32+GType dia_arrow_preview_get_type (void);
3633
37-GtkType dia_arrow_preview_get_type (void);
38-GtkWidget *dia_arrow_preview_new (ArrowType atype, gboolean left);
34+#define DIA_TYPE_ARROW_PREVIEW (dia_arrow_preview_get_type ())
35+#define DIA_ARROW_PREVIEW(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), DIA_TYPE_ARROW_PREVIEW, DiaArrowPreview))
36+#define DIA_ARROW_PREVIEW_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), DIA_TYPE_ARROW_PREVIEW, DiaArrowPreviewClass))
37+#define DIA_IS_ARROW_PREVIEW(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), DIA_TYPE_ARROW_PREVIEW))
38+#define DIA_IS_ARROW_PREVIEW_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), DIA_TYPE_ARROW_PREVIEW))
39+#define DIA_ARROW_PREVIEW_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), DIA_TYPE_ARROW_PREVIEW, DiaArrowPreviewClass))
3940
40-#define DIA_ARROW_PREVIEW(obj) (GTK_CHECK_CAST((obj),dia_arrow_preview_get_type(), DiaArrowPreview))
41-#define DIA_ARROW_PREVIEW_CLASS(obj) (GTK_CHECK_CLASS_CAST((obj), dia_arrow_preview_get_type(), DiaArrowPreviewClass))
41+typedef struct _DiaArrowPreview DiaArrowPreview;
42+typedef struct _DiaArrowPreviewClass DiaArrowPreviewClass;
4243
4344 struct _DiaArrowPreview
4445 {
@@ -46,24 +47,30 @@ struct _DiaArrowPreview
4647 ArrowType atype;
4748 gboolean left;
4849 };
50+
4951 struct _DiaArrowPreviewClass
5052 {
5153 GtkMiscClass parent_class;
5254 };
5355
56+GtkWidget *dia_arrow_preview_new (ArrowType atype, gboolean left);
57+
5458
5559 /* ------- Code for DiaArrowChooser ----------------------- */
60+GType dia_arrow_chooser_get_type (void);
61+
62+#define DIA_TYPE_ARROW_CHOOSER (dia_arrow_chooser_get_type ())
63+#define DIA_ARROW_CHOOSER(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), DIA_TYPE_ARROW_CHOOSER, DiaArrowChooser))
64+#define DIA_ARROW_CHOOSER_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), DIA_TYPE_ARROW_CHOOSER, DiaArrowChooserClass))
65+#define DIA_IS_ARROW_CHOOSER(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), DIA_TYPE_ARROW_CHOOSER))
66+#define DIA_IS_ARROW_CHOOSER_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), DIA_TYPE_ARROW_CHOOSER))
67+#define DIA_ARROW_CHOOSER_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), DIA_TYPE_ARROW_CHOOSER, DiaArrowChooserClass))
5668
5769 typedef struct _DiaArrowChooser DiaArrowChooser;
5870 typedef struct _DiaArrowChooserClass DiaArrowChooserClass;
5971
6072 typedef void (*DiaChangeArrowCallback) (Arrow atype, gpointer user_data);
6173
62-GtkType dia_arrow_chooser_get_type (void);
63-
64-#define DIA_ARROW_CHOOSER(obj) (GTK_CHECK_CAST((obj),dia_arrow_chooser_get_type(), DiaArrowChooser))
65-#define DIA_ARROW_CHOOSER_CLASS(obj) (GTK_CHECK_CLASS_CAST((obj), dia_arrow_chooser_get_type(), DiaArrowChooserClass))
66-
6774 struct _DiaArrowChooser
6875 {
6976 GtkButton button;
@@ -77,6 +84,7 @@ struct _DiaArrowChooser
7784 GtkWidget *dialog;
7885 DiaArrowSelector *selector;
7986 };
87+
8088 struct _DiaArrowChooserClass
8189 {
8290 GtkButtonClass parent_class;
@@ -88,4 +96,4 @@ GtkWidget *dia_arrow_chooser_new (gboolean left,
8896 void dia_arrow_chooser_set_arrow(DiaArrowChooser *chooser, Arrow *arrow);
8997 ArrowType dia_arrow_chooser_get_arrow_type(DiaArrowChooser *chooser);
9098
91-#endif
99+#endif /* _DIAARROWCHOOSER_H_ */
--- a/lib/dialibartrenderer.c
+++ b/lib/dialibartrenderer.c
@@ -108,14 +108,6 @@ get_height_pixels (DiaRenderer *self)
108108 static void
109109 begin_render(DiaRenderer *self)
110110 {
111- DiaLibartRenderer *renderer = DIA_LIBART_RENDERER (self);
112- double* transmatrix;
113-
114- transmatrix = g_new0(double, 6);
115- transmatrix[0] = 1.0;
116- transmatrix[4] = 1.0;
117-
118- renderer->matrices = g_list_prepend(renderer->matrices, transmatrix);
119111 #ifdef HAVE_FREETYPE
120112 /* pango_ft2_get_context API docs :
121113 * ... Use of this function is discouraged, ...
@@ -137,10 +129,6 @@ begin_render(DiaRenderer *self)
137129 static void
138130 end_render(DiaRenderer *self)
139131 {
140- DiaLibartRenderer *renderer = DIA_LIBART_RENDERER (self);
141- double* transmatrix;
142-
143- g_free(renderer->matrices->data);
144132 dia_font_pop_context();
145133 }
146134
@@ -317,7 +305,7 @@ draw_line(DiaRenderer *self,
317305 Color *line_color)
318306 {
319307 DiaLibartRenderer *renderer = DIA_LIBART_RENDERER (self);
320- ArtVpath *vpath, *vpath_dashed, *vpath_transformed;
308+ ArtVpath *vpath, *vpath_dashed;
321309 ArtSVP *svp;
322310 guint32 rgba;
323311 double x,y;
@@ -346,24 +334,14 @@ draw_line(DiaRenderer *self,
346334 vpath = vpath_dashed;
347335 }
348336
349-#if 0 /* if only someone would initialized the matrices or is my liabrt broken ? --hb */
350- vpath_transformed =
351- art_vpath_affine_transform(vpath, renderer->matrices->data);
352-
353- art_free(vpath);
354-#else
355- /* just to have minimal changes */
356- vpath_transformed = vpath;
357-#endif
358-
359- svp = art_svp_vpath_stroke (vpath_transformed,
337+ svp = art_svp_vpath_stroke (vpath,
360338 renderer->join_style,
361339 renderer->cap_style,
362340 renderer->line_width,
363341 4,
364342 0.25);
365343
366- art_free( vpath_transformed );
344+ art_free( vpath );
367345
368346 art_rgb_svp_alpha (svp,
369347 0, 0,
@@ -545,11 +523,10 @@ draw_rect(DiaRenderer *self,
545523 Color *color)
546524 {
547525 DiaLibartRenderer *renderer = DIA_LIBART_RENDERER (self);
548- ArtVpath *vpath, *vpath_dashed, *vpath_transformed;
526+ ArtVpath *vpath, *vpath_dashed;
549527 ArtSVP *svp;
550528 guint32 rgba;
551529 double top, bottom, left, right;
552- real translate[6];
553530
554531 dia_transform_coords_double(renderer->transform,
555532 ul_corner->x, ul_corner->y, &left, &top);
@@ -564,20 +541,20 @@ draw_rect(DiaRenderer *self,
564541 vpath = art_new (ArtVpath, 6);
565542
566543 vpath[0].code = ART_MOVETO;
567- vpath[0].x = 0;
568- vpath[0].y = 0;
544+ vpath[0].x = left;
545+ vpath[0].y = top;
569546 vpath[1].code = ART_LINETO;
570- vpath[1].x = right-left;
571- vpath[1].y = 0;
547+ vpath[1].x = right;
548+ vpath[1].y = top;
572549 vpath[2].code = ART_LINETO;
573- vpath[2].x = right-left;
574- vpath[2].y = bottom-top;
550+ vpath[2].x = right;
551+ vpath[2].y = bottom;
575552 vpath[3].code = ART_LINETO;
576- vpath[3].x = 0;
577- vpath[3].y = bottom-top;
553+ vpath[3].x = left;
554+ vpath[3].y = bottom;
578555 vpath[4].code = ART_LINETO;
579- vpath[4].x = 0;
580- vpath[4].y = 0;
556+ vpath[4].x = left;
557+ vpath[4].y = top;
581558 vpath[5].code = ART_END;
582559 vpath[5].x = 0;
583560 vpath[5].y = 0;
@@ -588,22 +565,6 @@ draw_rect(DiaRenderer *self,
588565 vpath = vpath_dashed;
589566 }
590567
591-#if 0 /* if only someone would initialized the matrices or is my libart broken ? --hb */
592- {
593- vpath_transformed =
594- art_vpath_affine_transform(vpath, renderer->matrices->data);
595- art_free(vpath);
596- vpath = vpath_transformed;
597- }
598-#endif
599- {
600- art_affine_translate(translate, left, top);
601- vpath_transformed =
602- art_vpath_affine_transform(vpath, translate);
603- art_free(vpath);
604- vpath = vpath_transformed;
605- }
606-
607568 svp = art_svp_vpath_stroke (vpath,
608569 renderer->join_style,
609570 renderer->cap_style,
@@ -611,7 +572,7 @@ draw_rect(DiaRenderer *self,
611572 4,
612573 0.25);
613574
614- art_free( vpath_transformed );
575+ art_free( vpath );
615576
616577 art_rgb_svp_alpha (svp,
617578 0, 0,
@@ -634,8 +595,6 @@ fill_rect(DiaRenderer *self,
634595 ArtSVP *svp;
635596 guint32 rgba;
636597 double top, bottom, left, right;
637- ArtVpath *vpath_transformed;
638- double translate[6];
639598
640599 dia_transform_coords_double(renderer->transform,
641600 ul_corner->x, ul_corner->y, &left, &top);
@@ -650,38 +609,24 @@ fill_rect(DiaRenderer *self,
650609 vpath = art_new (ArtVpath, 6);
651610
652611 vpath[0].code = ART_MOVETO;
653- vpath[0].x = 0;
654- vpath[0].y = 0;
612+ vpath[0].x = left;
613+ vpath[0].y = top;
655614 vpath[1].code = ART_LINETO;
656- vpath[1].x = right-left;
657- vpath[1].y = 0;
615+ vpath[1].x = right;
616+ vpath[1].y = top;
658617 vpath[2].code = ART_LINETO;
659- vpath[2].x = right-left;
660- vpath[2].y = bottom-top;
618+ vpath[2].x = right;
619+ vpath[2].y = bottom;
661620 vpath[3].code = ART_LINETO;
662- vpath[3].x = 0;
663- vpath[3].y = bottom-top;
621+ vpath[3].x = left;
622+ vpath[3].y = bottom;
664623 vpath[4].code = ART_LINETO;
665- vpath[4].x = 0;
666- vpath[4].y = 0;
624+ vpath[4].x = left;
625+ vpath[4].y = top;
667626 vpath[5].code = ART_END;
668627 vpath[5].x = 0;
669628 vpath[5].y = 0;
670629
671- /* {
672- vpath_transformed =
673- art_vpath_affine_transform(vpath, renderer->matrices->data);
674- art_free(vpath);
675- vpath = vpath_transformed;
676- }*/
677- {
678- art_affine_translate(translate, left, top);
679- vpath_transformed =
680- art_vpath_affine_transform(vpath, translate);
681- art_free(vpath);
682- vpath = vpath_transformed;
683- }
684-
685630 svp = art_svp_from_vpath (vpath);
686631
687632 art_free( vpath );
@@ -1412,27 +1357,13 @@ draw_image(DiaRenderer *self,
14121357 static void
14131358 draw_object (DiaRenderer *renderer, DiaObject *object)
14141359 {
1415- DiaLibartRenderer *libart_rend = DIA_LIBART_RENDERER(renderer);
1416-
14171360 if (object->highlight_color != NULL) {
1361+ DiaLibartRenderer *libart_rend = DIA_LIBART_RENDERER(renderer);
14181362 libart_rend->highlight_color = object->highlight_color;
14191363 object->ops->draw(object, renderer);
14201364 libart_rend->highlight_color = NULL;
14211365 }
1422- if (object->affine.rotation != 0.0) {
1423- double rotmatrix[6];
1424- double* transmatrix = g_new0(double, 6);
1425-
1426- art_affine_rotate(rotmatrix, object->affine.rotation);
1427- art_affine_multiply(transmatrix, (double*)libart_rend->matrices->data, rotmatrix);
1428- libart_rend->matrices = g_list_prepend(libart_rend->matrices, transmatrix);
1429- }
14301366 object->ops->draw(object, renderer);
1431- if (object->affine.rotation != 0.0) {
1432- g_free(libart_rend->matrices->data);
1433- libart_rend->matrices = g_list_delete_link(libart_rend->matrices,
1434- libart_rend->matrices);
1435- }
14361367 }
14371368
14381369 static void
--- a/lib/dialibartrenderer.h
+++ b/lib/dialibartrenderer.h
@@ -46,10 +46,6 @@ struct _DiaLibartRenderer
4646 double dash_length;
4747 double dot_length;
4848 Color *highlight_color;
49- /** Stack of matrices of rotation/translation/scaling.
50- * Is a stack to allow groups to easily rotate.
51- */
52- GList *matrices;
5349 #endif
5450 };
5551
--- a/lib/object.c
+++ b/lib/object.c
@@ -27,8 +27,6 @@
2727
2828 #include "dummy_dep.h"
2929
30-PropNumData rotation_data = {0.0, 360.0, 1.0 };
31-
3230 void object_init(DiaObject *obj, int num_handles, int num_connections);
3331
3432 void
--- a/lib/object.h
+++ b/lib/object.h
@@ -438,21 +438,16 @@ struct _DiaObjectType {
438438 the .sheet file */
439439 };
440440
441-PropNumData rotation_data;
442-
443441 /* base property stuff ... */
444442 #define OBJECT_COMMON_PROPERTIES \
445443 { "obj_pos", PROP_TYPE_POINT, 0, \
446- "DiaObject position", "Where the object is located"}, \
444+ "Object position", "Where the object is located"}, \
447445 { "obj_bb", PROP_TYPE_RECT, 0, \
448- "DiaObject bounding box", "The bounding box of the object"}, \
449- { "obj_rotate", PROP_TYPE_REAL, PROP_FLAG_VISIBLE|PROP_FLAG_OPTIONAL, \
450- N_("Rotation"), "Degrees of rotation", &rotation_data }
446+ "Object bounding box", "The bounding box of the object"}
451447
452448 #define OBJECT_COMMON_PROPERTIES_OFFSETS \
453449 { "obj_pos", PROP_TYPE_POINT, offsetof(DiaObject, position) }, \
454- { "obj_bb", PROP_TYPE_RECT, offsetof(DiaObject, bounding_box) }, \
455- { "obj_rotate", PROP_TYPE_REAL, offsetof(DiaObject, affine.rotation) }
450+ { "obj_bb", PROP_TYPE_RECT, offsetof(DiaObject, bounding_box) }
456451
457452
458453 gboolean dia_object_defaults_load (const gchar *filename,
--- a/objects/standard/line.c
+++ b/objects/standard/line.c
@@ -140,6 +140,7 @@ static PropDescription line_props[] = {
140140 N_("Start point"), NULL },
141141 { "end_point", PROP_TYPE_POINT, 0,
142142 N_("End point"), NULL },
143+ /*
143144 PROP_FRAME_BEGIN("gaps",0,N_("Line gaps")),
144145 { "absolute_start_gap", PROP_TYPE_REAL, 0,
145146 N_("Absolute start gap"), NULL, &gap_range },
@@ -150,6 +151,7 @@ static PropDescription line_props[] = {
150151 { "fractional_end_gap", PROP_TYPE_REAL, 0,
151152 N_("Fractional end gap"), NULL, &gap_range },
152153 PROP_FRAME_END("gaps",0),
154+ */
153155 PROP_DESC_END
154156 };
155157
@@ -171,10 +173,12 @@ static PropOffset line_offsets[] = {
171173 { "end_arrow", PROP_TYPE_ARROW, offsetof(Line, end_arrow) },
172174 { "start_point", PROP_TYPE_POINT, offsetof(Connection, endpoints[0]) },
173175 { "end_point", PROP_TYPE_POINT, offsetof(Connection, endpoints[1]) },
176+ /*
174177 { "absolute_start_gap", PROP_TYPE_REAL, offsetof(Line, absolute_start_gap) },
175178 { "absolute_end_gap", PROP_TYPE_REAL, offsetof(Line, absolute_end_gap) },
176179 { "fractional_start_gap", PROP_TYPE_REAL, offsetof(Line, fractional_start_gap) },
177180 { "fractional_end_gap", PROP_TYPE_REAL, offsetof(Line, fractional_end_gap) },
181+ */
178182 { NULL, 0, 0 }
179183 };
180184
--- a/plug-ins/wmf/wmf.cpp
+++ b/plug-ins/wmf/wmf.cpp
@@ -149,9 +149,6 @@ UsePen(WmfRenderer* renderer, Color* colour)
149149
150150 switch (renderer->fnPenStyle & PS_STYLE_MASK) {
151151 case PS_SOLID :
152- num_dashes = 2;
153- dashes[0] = dashlen;
154- dashes[1] = 0;
155152 break;
156153 case PS_DASH :
157154 num_dashes = 2;
--- a/shapes/Makefile.am
+++ b/shapes/Makefile.am
@@ -1,7 +1,7 @@
11
22 SUBDIRS = Circuit flowchart Contact network Pneumatic Electric \
33 Civil jigsaw MSE SDL Logic sybase Misc Assorted Cisco \
4- Cybernetics Map ChemEng
4+ Cybernetics Map ChemEng RDP
55
66
77
--- a/shapes/network/Makefile.am
+++ b/shapes/network/Makefile.am
@@ -66,7 +66,7 @@ SHAPES = \
6666 digitizing_board.shape \
6767 digitizing_board.png \
6868 patch-panel.shape \
69- patch-panel.png
69+ patch-panel.xpm
7070
7171 EXTRA_DIST = $(SHAPES)
7272