diff options
| author | Krzysztof Kosi??ski <tweenk.pl@gmail.com> | 2011-07-06 01:59:32 +0000 |
|---|---|---|
| committer | Krzysztof KosiĆski <tweenk.pl@gmail.com> | 2011-07-06 01:59:32 +0000 |
| commit | e65a02ed32b78534739aba24929ece7c44dd967f (patch) | |
| tree | 13cf022f18f6b5bae46aad4bc339e512f069a514 /src | |
| parent | Pull 2Geom revision 2013 (extra constructors for Rect). (diff) | |
| parent | Text edit dialog: Apply button should grab default only after adding to window (diff) | |
| download | inkscape-e65a02ed32b78534739aba24929ece7c44dd967f.tar.gz inkscape-e65a02ed32b78534739aba24929ece7c44dd967f.zip | |
Merge from trunk
(bzr r10347.1.5)
Diffstat (limited to 'src')
197 files changed, 2507 insertions, 2061 deletions
diff --git a/src/2geom/!PLEASE DON'T MAKE CHANGES IN THESE FILES.README b/src/2geom/!PLEASE DON'T MAKE CHANGES IN THESE FILES.README index fdb2212ae..9e4585078 100644 --- a/src/2geom/!PLEASE DON'T MAKE CHANGES IN THESE FILES.README +++ b/src/2geom/!PLEASE DON'T MAKE CHANGES IN THESE FILES.README @@ -1,8 +1,8 @@ -All code files in this directory are *direct* copies of the files in 2geom's svn.
-If you want to change the code, please change it in 2geom, then copy the files here.
-Otherwise, I will probably miss that you changed something in Inkscape's copy, and
-destroy your changes by copying 2geom's files over it during the next time I update
-Inkscape's copy of 2geom.
- - Johan Engelen
-
+All code files in this directory are *direct* copies of the files in 2geom's svn. +If you want to change the code, please change it in 2geom, then copy the files here. +Otherwise, I will probably miss that you changed something in Inkscape's copy, and +destroy your changes by copying 2geom's files over it during the next time I update +Inkscape's copy of 2geom. + - Johan Engelen + 2geom's SVN = https://lib2geom.svn.sourceforge.net/svnroot/lib2geom/lib2geom/trunk
\ No newline at end of file diff --git a/src/2geom/CMakeLists.txt b/src/2geom/CMakeLists.txt index c04718e79..bc3f64bdc 100644 --- a/src/2geom/CMakeLists.txt +++ b/src/2geom/CMakeLists.txt @@ -46,6 +46,9 @@ set(2geom_SRC transforms.cpp utils.cpp + + # ------- + # Headers affine.h angle.h basic-intersection.h diff --git a/src/2geom/convex-cover.cpp b/src/2geom/convex-cover.cpp index 21a5c3107..d50accadf 100644 --- a/src/2geom/convex-cover.cpp +++ b/src/2geom/convex-cover.cpp @@ -145,7 +145,7 @@ ConvexHull::graham_scan() { double o = SignedTriangleArea(boundary[stac-2], boundary[stac-1], boundary[i]); - if(o == 0) { // colinear - dangerous... + if(fabs(o) < 1e-8) { // colinear - dangerous... stac--; } else if(o < 0) { // anticlockwise } else { // remove concavity diff --git a/src/2geom/path-intersection.cpp b/src/2geom/path-intersection.cpp index 58ee6232b..7aa662abb 100644 --- a/src/2geom/path-intersection.cpp +++ b/src/2geom/path-intersection.cpp @@ -228,8 +228,6 @@ intersect_polish_f (const gsl_vector * x, void *params, static void intersect_polish_root (Curve const &A, double &s, Curve const &B, double &t) { - int status; - size_t iter = 0; std::vector<Point> as, bs; as = A.pointAndDerivatives(s, 2); bs = B.pointAndDerivatives(t, 2); diff --git a/src/2geom/solve-bezier-parametric.cpp b/src/2geom/solve-bezier-parametric.cpp index 76cf65e17..437f073a3 100644 --- a/src/2geom/solve-bezier-parametric.cpp +++ b/src/2geom/solve-bezier-parametric.cpp @@ -68,13 +68,13 @@ find_parametric_bezier_roots(Geom::Point const *w, /* The control points */ break; } - /* Otherwise, solve recursively after subdividing control polygon */ - Geom::Point Left[degree+1], /* New left and right */ - Right[degree+1]; /* control polygons */ - Bezier(w, degree, 0.5, Left, Right); + // Otherwise, solve recursively after subdividing control polygon + std::vector<Geom::Point> Left(degree + 1); // New left and right + std::vector<Geom::Point> Right(degree + 1); // control polygons + Bezier(w, degree, 0.5, &Left[0], &Right[0]); total_subs ++; - find_parametric_bezier_roots(Left, degree, solutions, depth+1); - find_parametric_bezier_roots(Right, degree, solutions, depth+1); + find_parametric_bezier_roots(&Left[0], degree, solutions, depth + 1); + find_parametric_bezier_roots(&Right[0], degree, solutions, depth + 1); } diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index c508e36d9..580d65b0c 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -1,595 +1,598 @@ -
-# -----------------------------------------------------------------------------
-# Define the main source
-# -----------------------------------------------------------------------------
-
-set(main_SRC
- main.cpp
-)
-
-set(sp_SRC
- sp-anchor.cpp
- # sp-animation.cpp
- sp-clippath.cpp
- sp-conn-end-pair.cpp
- sp-conn-end.cpp
- sp-cursor.cpp
- sp-defs.cpp
- sp-desc.cpp
- sp-ellipse.cpp
- sp-filter-primitive.cpp
- sp-filter-reference.cpp
- sp-filter.cpp
- sp-flowdiv.cpp
- sp-flowregion.cpp
- sp-flowtext.cpp
- sp-font-face.cpp
- sp-font.cpp
- sp-glyph-kerning.cpp
- sp-glyph.cpp
- sp-gradient-reference.cpp
- sp-gradient.cpp
- sp-guide.cpp
- sp-image.cpp
- sp-item-group.cpp
- sp-item-notify-moveto.cpp
- sp-item-rm-unsatisfied-cns.cpp
- sp-item-transform.cpp
- sp-item-update-cns.cpp
- sp-item.cpp
- sp-line.cpp
- sp-lpe-item.cpp
- sp-mask.cpp
- sp-metadata.cpp
- sp-metrics.cpp
- sp-missing-glyph.cpp
- sp-namedview.cpp
- sp-object-group.cpp
- sp-object-repr.cpp
- sp-object.cpp
- sp-offset.cpp
- sp-paint-server.cpp
- sp-path.cpp
- sp-pattern.cpp
- sp-polygon.cpp
- sp-polyline.cpp
- sp-rect.cpp
- sp-root.cpp
- sp-script.cpp
- sp-shape.cpp
- # sp-skeleton.cpp
- sp-spiral.cpp
- sp-star.cpp
- sp-stop.cpp
- sp-string.cpp
- sp-style-elem.cpp
- sp-switch.cpp
- sp-symbol.cpp
- sp-text.cpp
- sp-title.cpp
- sp-tref-reference.cpp
- sp-tref.cpp
- sp-tspan.cpp
- sp-use-reference.cpp
- sp-use.cpp
- spiral-context.cpp
- splivarot.cpp
-
- sp-anchor.h
- sp-animation.h
- sp-clippath.h
- sp-conn-end-pair.h
- sp-conn-end.h
- sp-cursor.h
- sp-defs.h
- sp-desc.h
- sp-ellipse.h
- sp-filter-primitive.h
- sp-filter-reference.h
- sp-filter-units.h
- sp-filter.h
- sp-flowdiv.h
- sp-flowregion.h
- sp-flowtext.h
- sp-font-face.h
- sp-font.h
- sp-glyph-kerning.h
- sp-glyph.h
- sp-gradient-fns.h
- sp-gradient-reference.h
- sp-gradient-spread.h
- sp-gradient-test.h
- sp-gradient-units.h
- sp-gradient-vector.h
- sp-gradient.h
- sp-guide-attachment.h
- sp-guide-constraint.h
- sp-guide.h
- sp-image.h
- sp-item-group.h
- sp-item-notify-moveto.h
- sp-item-rm-unsatisfied-cns.h
- sp-item-transform.h
- sp-item-update-cns.h
- sp-item.h
- sp-line.h
- sp-linear-gradient-fns.h
- sp-linear-gradient.h
- sp-lpe-item.h
- sp-marker-loc.h
- sp-mask.h
- sp-metadata.h
- sp-metric.h
- sp-metrics.h
- sp-missing-glyph.h
- sp-namedview.h
- sp-object-group.h
- sp-object-repr.h
- sp-object.h
- sp-offset.h
- sp-paint-server-reference.h
- sp-paint-server.h
- sp-path.h
- sp-pattern.h
- sp-polygon.h
- sp-polyline.h
- sp-radial-gradient-fns.h
- sp-radial-gradient.h
- sp-rect.h
- sp-root.h
- sp-script.h
- sp-shape.h
- # sp-skeleton.h
- sp-spiral.h
- sp-star.h
- sp-stop.h
- sp-string.h
- sp-style-elem-test.h
- sp-style-elem.h
- sp-switch.h
- sp-symbol.h
- sp-text.h
- sp-textpath.h
- sp-title.h
- sp-tref-reference.h
- sp-tref.h
- sp-tspan.h
- sp-use-reference.h
- sp-use.h
-)
-
-set(inkscape_SRC
- arc-context.cpp
- attributes.cpp
- axis-manip.cpp
- box3d-context.cpp
- box3d-side.cpp
- box3d.cpp
- color-profile.cpp
- color.cpp
- common-context.cpp
- composite-undo-stack-observer.cpp
- conditions.cpp
- conn-avoid-ref.cpp
- connection-points.cpp
- connector-context.cpp
- console-output-undo-observer.cpp
- context-fns.cpp
- desktop-events.cpp
- desktop-handles.cpp
- desktop-style.cpp
- desktop.cpp
- device-manager.cpp
- dir-util.cpp
- document-subset.cpp
- document-undo.cpp
- document.cpp
- doxygen-main.cpp
- draw-anchor.cpp
- draw-context.cpp
- dropper-context.cpp
- dyna-draw-context.cpp
- ege-adjustment-action.cpp
- ege-color-prof-tracker.cpp
- ege-output-action.cpp
- ege-select-one-action.cpp
- eraser-context.cpp
- event-context.cpp
- event-log.cpp
- extract-uri.cpp
- file.cpp
- filter-chemistry.cpp
- filter-enums.cpp
- fixes.cpp
- flood-context.cpp
- gc-anchored.cpp
- gc-finalized.cpp
- gc.cpp
- gradient-chemistry.cpp
- gradient-context.cpp
- gradient-drag.cpp
- graphlayout.cpp
- guide-snapper.cpp
- help.cpp
- id-clash.cpp
- ige-mac-menu.c
- ink-action.cpp
- ink-comboboxentry-action.cpp
- inkscape.cpp
- inkscape.rc
- interface.cpp
- knot-holder-entity.cpp
- knot.cpp
- knotholder.cpp
- layer-fns.cpp
- layer-manager.cpp
- line-geometry.cpp
- line-snapper.cpp
- lpe-tool-context.cpp
- main-cmdlineact.cpp
- marker.cpp
- measure-context.cpp
- media.cpp
- message-context.cpp
- message-stack.cpp
- mod360.cpp
- object-edit.cpp
- object-hierarchy.cpp
- object-snapper.cpp
- path-chemistry.cpp
- pen-context.cpp
- pencil-context.cpp
- persp3d-reference.cpp
- persp3d.cpp
- perspective-line.cpp
- preferences.cpp
- prefix.cpp
- print.cpp
- profile-manager.cpp
- proj_pt.cpp
- rdf.cpp
- rect-context.cpp
- removeoverlap.cpp
- resource-manager.cpp
- rubberband.cpp
- satisfied-guide-cns.cpp
- selcue.cpp
- select-context.cpp
- selection-chemistry.cpp
- selection-describer.cpp
- selection.cpp
- seltrans-handles.cpp
- seltrans.cpp
- shape-editor.cpp
- shortcuts.cpp
- snap-preferences.cpp
- snap.cpp
- snapped-curve.cpp
- snapped-line.cpp
- snapped-point.cpp
- snapper.cpp
- spray-context.cpp
- star-context.cpp
- style.cpp
- svg-view-widget.cpp
- svg-view.cpp
- text-chemistry.cpp
- text-context.cpp
- text-editing.cpp
- tools-switch.cpp
- transf_mat_3x4.cpp
- tweak-context.cpp
- unclump.cpp
- unicoderange.cpp
- uri-references.cpp
- uri.cpp
- vanishing-point.cpp
- verbs.cpp
- version.cpp
- zoom-context.cpp
-
-
- # -------
- # Headers
- MultiPrinter.h
- PylogFormatter.h
- TRPIFormatter.h
- approx-equal.h
- arc-context.h
- attributes-test.h
- attributes.h
- axis-manip.h
- bad-uri-exception.h
- box3d-context.h
- box3d-side.h
- box3d.h
- color-profile-fns.h
- color-profile-test.h
- color-profile.h
- color-rgba.h
- color.h
- common-context.h
- composite-undo-stack-observer.h
- conditions.h
- conn-avoid-ref.h
- connection-points.h
- connection-pool.h
- connector-context.h
- console-output-undo-observer.h
- context-fns.h
- decimal-round.h
- desktop-events.h
- desktop-handles.h
- desktop-style.h
- desktop.h
- device-manager.h
- dir-util-test.h
- dir-util.h
- document-private.h
- document-subset.h
- document-undo.h
- document.h
- draw-anchor.h
- draw-context.h
- dropper-context.h
- dyna-draw-context.h
- ege-adjustment-action.h
- ege-color-prof-tracker.h
- ege-output-action.h
- ege-select-one-action.h
- enums.h
- eraser-context.h
- event-context.h
- event-log.h
- event.h
- extract-uri-test.h
- extract-uri.h
- file.h
- fill-or-stroke.h
- filter-chemistry.h
- filter-enums.h
- flood-context.h
- forward.h
- gc-alloc.h
- gc-allocator.h
- gc-anchored.h
- gc-core.h
- gc-finalized.h
- gc-managed.h
- gc-soft-ptr.h
- gradient-chemistry.h
- gradient-context.h
- gradient-drag.h
- graphlayout.h
- guide-snapper.h
- help.h
- helper-fns.h
- icon-size.h
- id-clash.h
- ige-mac-menu.h
- ink-action.h
- ink-comboboxentry-action.h
- inkscape-private.h
- inkscape-version.h
- inkscape.h
- interface.h
- isinf.h
- isnormal.h
- knot-enums.h
- knot-holder-entity.h
- knot.h
- knotholder.h
- layer-fns.h
- layer-manager.h
- line-geometry.h
- line-snapper.h
- lpe-tool-context.h
- macros.h
- main-cmdlineact.h
- marker-test.h
- marker.h
- measure-context.h
- media.h
- memeq.h
- menus-skeleton.h
- message-context.h
- message-stack.h
- message.h
- mod360-test.h
- mod360.h
- modifier-fns.h
- number-opt-number.h
- object-edit.h
- object-hierarchy.h
- object-snapper.h
- path-chemistry.h
- path-prefix.h
- pen-context.h
- pencil-context.h
- persp3d-reference.h
- persp3d.h
- perspective-line.h
- preferences-skeleton.h
- preferences-test.h
- preferences.h
- prefix.h
- print.h
- profile-manager.h
- proj_pt.h
- rdf.h
- rect-context.h
- registrytool.h
- remove-last.h
- removeoverlap.h
- require-config.h
- resource-manager.h
- round-test.h
- round.h
- rubberband.h
- satisfied-guide-cns.h
- selcue.h
- select-context.h
- selection-chemistry.h
- selection-describer.h
- selection.h
- seltrans-handles.h
- seltrans.h
- shape-editor.h
- shortcuts.h
- snap-candidate.h
- snap-enums.h
- snap-preferences.h
- snap.h
- snapped-curve.h
- snapped-line.h
- snapped-point.h
- snapper.h
- spiral-context.h
- splivarot.h
- spray-context.h
- star-context.h
- streq.h
- strneq.h
- style-test.h
- style.h
- svg-profile.h
- svg-view-widget.h
- svg-view.h
- syseq.h
- test-helpers.h
- text-chemistry.h
- text-context.h
- text-editing.h
- text-tag-attributes.h
- tools-switch.h
- transf_mat_3x4.h
- tweak-context.h
- unclump.h
- undo-stack-observer.h
- unicoderange.h
- unit-constants.h
- uri-references.h
- uri.h
- vanishing-point.h
- verbs-test.h
- verbs.h
- version.h
- zoom-context.h
-)
-
-if(WIN32)
- list(APPEND inkscape_SRC
- registrytool.cpp
- #deptool.cpp
- winmain.cpp
- )
-endif()
-
-
-# -----------------------------------------------------------------------------
-# Generate version file
-# -----------------------------------------------------------------------------
-
-# a custom target that is always built
-add_custom_target(
- inkscape_version ALL
- DEPENDS ${CMAKE_BINARY_DIR}/src/inkscape-version.cpp)
-
-# creates inkscape-version.cpp using cmake script
-add_custom_command(
- OUTPUT ${CMAKE_BINARY_DIR}/src/inkscape-version.cpp
- COMMAND ${CMAKE_COMMAND}
- -DINKSCAPE_SOURCE_DIR=${CMAKE_SOURCE_DIR}
- -DINKSCAPE_BINARY_DIR=${CMAKE_BINARY_DIR}
- -P ${CMAKE_SOURCE_DIR}/CMakeScripts/inkscape-version.cmake)
-
-# buildinfo.h is a generated file
-set_source_files_properties(
- ${CMAKE_BINARY_DIR}/src/inkscape-version.cpp
- PROPERTIES GENERATED TRUE)
-
-list(APPEND inkscape_SRC
- ${CMAKE_BINARY_DIR}/src/inkscape-version.cpp
-)
-
-
-# -----------------------------------------------------------------------------
-# Load in subdirectories
-# -----------------------------------------------------------------------------
-
-# All folders for internal inkscape
-# these call add_inkscape_source
-add_subdirectory(bind)
-add_subdirectory(debug)
-add_subdirectory(dialogs)
-add_subdirectory(display)
-add_subdirectory(dom)
-add_subdirectory(extension)
-add_subdirectory(filters)
-add_subdirectory(helper)
-add_subdirectory(io)
-add_subdirectory(live_effects)
-add_subdirectory(svg)
-add_subdirectory(trace)
-add_subdirectory(ui)
-add_subdirectory(util)
-add_subdirectory(widgets)
-add_subdirectory(xml)
-add_subdirectory(2geom)
-
-
-# Directories containing lists files that describe building internal libraries
-add_subdirectory(libavoid)
-add_subdirectory(libcola)
-add_subdirectory(libcroco)
-add_subdirectory(libgdl)
-add_subdirectory(libvpsc)
-add_subdirectory(livarot)
-add_subdirectory(libnr)
-add_subdirectory(libnrtype)
-
-
-get_property(inkscape_global_SRC GLOBAL PROPERTY inkscape_global_SRC)
-
-set(inkscape_SRC
- ${inkscape_global_SRC}
- ${inkscape_SRC}
-)
-
-# -----------------------------------------------------------------------------
-# Setup the executable
-# -----------------------------------------------------------------------------
-add_inkscape_lib(sp_LIB "${sp_SRC}")
-add_inkscape_lib(inkscape_LIB "${inkscape_SRC}")
-
-# make executable for INKSCAPE
-add_executable(inkscape ${main_SRC})
-
-add_dependencies(inkscape inkscape_version)
-
-target_link_libraries(inkscape
- # order from automake
- sp_LIB
- inkscape_LIB
- sp_LIB # annoying, we need both!
-
- nr_LIB
- nrtype_LIB
-
- dom_LIB
- croco_LIB
- avoid_LIB
- gdl_LIB
- cola_LIB
- vpsc_LIB
- livarot_LIB
- 2geom_LIB
-
- ${INKSCAPE_LIBS}
-)
-
-# TODO
-# make executable for INKVIEW
-#add_executable(inkview inkview.cpp)
-# ...
-
+ +# ----------------------------------------------------------------------------- +# Define the main source +# ----------------------------------------------------------------------------- + +set(main_SRC + main.cpp +) + +set(sp_SRC + sp-anchor.cpp + # sp-animation.cpp + sp-clippath.cpp + sp-conn-end-pair.cpp + sp-conn-end.cpp + sp-cursor.cpp + sp-defs.cpp + sp-desc.cpp + sp-ellipse.cpp + sp-filter-primitive.cpp + sp-filter-reference.cpp + sp-filter.cpp + sp-flowdiv.cpp + sp-flowregion.cpp + sp-flowtext.cpp + sp-font-face.cpp + sp-font.cpp + sp-glyph-kerning.cpp + sp-glyph.cpp + sp-gradient-reference.cpp + sp-gradient.cpp + sp-guide.cpp + sp-image.cpp + sp-item-group.cpp + sp-item-notify-moveto.cpp + sp-item-rm-unsatisfied-cns.cpp + sp-item-transform.cpp + sp-item-update-cns.cpp + sp-item.cpp + sp-line.cpp + sp-lpe-item.cpp + sp-mask.cpp + sp-metadata.cpp + sp-metrics.cpp + sp-missing-glyph.cpp + sp-namedview.cpp + sp-object-group.cpp + sp-object-repr.cpp + sp-object.cpp + sp-offset.cpp + sp-paint-server.cpp + sp-path.cpp + sp-pattern.cpp + sp-polygon.cpp + sp-polyline.cpp + sp-rect.cpp + sp-root.cpp + sp-script.cpp + sp-shape.cpp + # sp-skeleton.cpp + sp-spiral.cpp + sp-star.cpp + sp-stop.cpp + sp-string.cpp + sp-style-elem.cpp + sp-switch.cpp + sp-symbol.cpp + sp-text.cpp + sp-title.cpp + sp-tref-reference.cpp + sp-tref.cpp + sp-tspan.cpp + sp-use-reference.cpp + sp-use.cpp + spiral-context.cpp + splivarot.cpp + + + # ------- + # Headers + sp-anchor.h + sp-animation.h + sp-clippath.h + sp-conn-end-pair.h + sp-conn-end.h + sp-cursor.h + sp-defs.h + sp-desc.h + sp-ellipse.h + sp-filter-primitive.h + sp-filter-reference.h + sp-filter-units.h + sp-filter.h + sp-flowdiv.h + sp-flowregion.h + sp-flowtext.h + sp-font-face.h + sp-font.h + sp-glyph-kerning.h + sp-glyph.h + sp-gradient-fns.h + sp-gradient-reference.h + sp-gradient-spread.h + sp-gradient-test.h + sp-gradient-units.h + sp-gradient-vector.h + sp-gradient.h + sp-guide-attachment.h + sp-guide-constraint.h + sp-guide.h + sp-image.h + sp-item-group.h + sp-item-notify-moveto.h + sp-item-rm-unsatisfied-cns.h + sp-item-transform.h + sp-item-update-cns.h + sp-item.h + sp-line.h + sp-linear-gradient-fns.h + sp-linear-gradient.h + sp-lpe-item.h + sp-marker-loc.h + sp-mask.h + sp-metadata.h + sp-metric.h + sp-metrics.h + sp-missing-glyph.h + sp-namedview.h + sp-object-group.h + sp-object-repr.h + sp-object.h + sp-offset.h + sp-paint-server-reference.h + sp-paint-server.h + sp-path.h + sp-pattern.h + sp-polygon.h + sp-polyline.h + sp-radial-gradient-fns.h + sp-radial-gradient.h + sp-rect.h + sp-root.h + sp-script.h + sp-shape.h + # sp-skeleton.h + sp-spiral.h + sp-star.h + sp-stop.h + sp-string.h + sp-style-elem-test.h + sp-style-elem.h + sp-switch.h + sp-symbol.h + sp-text.h + sp-textpath.h + sp-title.h + sp-tref-reference.h + sp-tref.h + sp-tspan.h + sp-use-reference.h + sp-use.h +) + +set(inkscape_SRC + arc-context.cpp + attributes.cpp + axis-manip.cpp + box3d-context.cpp + box3d-side.cpp + box3d.cpp + color-profile.cpp + color.cpp + common-context.cpp + composite-undo-stack-observer.cpp + conditions.cpp + conn-avoid-ref.cpp + connection-points.cpp + connector-context.cpp + console-output-undo-observer.cpp + context-fns.cpp + desktop-events.cpp + desktop-handles.cpp + desktop-style.cpp + desktop.cpp + device-manager.cpp + dir-util.cpp + document-subset.cpp + document-undo.cpp + document.cpp + doxygen-main.cpp + draw-anchor.cpp + draw-context.cpp + dropper-context.cpp + dyna-draw-context.cpp + ege-adjustment-action.cpp + ege-color-prof-tracker.cpp + ege-output-action.cpp + ege-select-one-action.cpp + eraser-context.cpp + event-context.cpp + event-log.cpp + extract-uri.cpp + file.cpp + filter-chemistry.cpp + filter-enums.cpp + fixes.cpp + flood-context.cpp + gc-anchored.cpp + gc-finalized.cpp + gc.cpp + gradient-chemistry.cpp + gradient-context.cpp + gradient-drag.cpp + graphlayout.cpp + guide-snapper.cpp + help.cpp + id-clash.cpp + ige-mac-menu.c + ink-action.cpp + ink-comboboxentry-action.cpp + inkscape.cpp + inkscape.rc + interface.cpp + knot-holder-entity.cpp + knot.cpp + knotholder.cpp + layer-fns.cpp + layer-manager.cpp + line-geometry.cpp + line-snapper.cpp + lpe-tool-context.cpp + main-cmdlineact.cpp + marker.cpp + measure-context.cpp + media.cpp + message-context.cpp + message-stack.cpp + mod360.cpp + object-edit.cpp + object-hierarchy.cpp + object-snapper.cpp + path-chemistry.cpp + pen-context.cpp + pencil-context.cpp + persp3d-reference.cpp + persp3d.cpp + perspective-line.cpp + preferences.cpp + prefix.cpp + print.cpp + profile-manager.cpp + proj_pt.cpp + rdf.cpp + rect-context.cpp + removeoverlap.cpp + resource-manager.cpp + rubberband.cpp + satisfied-guide-cns.cpp + selcue.cpp + select-context.cpp + selection-chemistry.cpp + selection-describer.cpp + selection.cpp + seltrans-handles.cpp + seltrans.cpp + shape-editor.cpp + shortcuts.cpp + snap-preferences.cpp + snap.cpp + snapped-curve.cpp + snapped-line.cpp + snapped-point.cpp + snapper.cpp + spray-context.cpp + star-context.cpp + style.cpp + svg-view-widget.cpp + svg-view.cpp + text-chemistry.cpp + text-context.cpp + text-editing.cpp + tools-switch.cpp + transf_mat_3x4.cpp + tweak-context.cpp + unclump.cpp + unicoderange.cpp + uri-references.cpp + uri.cpp + vanishing-point.cpp + verbs.cpp + version.cpp + zoom-context.cpp + + + # ------- + # Headers + MultiPrinter.h + PylogFormatter.h + TRPIFormatter.h + approx-equal.h + arc-context.h + attributes-test.h + attributes.h + axis-manip.h + bad-uri-exception.h + box3d-context.h + box3d-side.h + box3d.h + color-profile-fns.h + color-profile-test.h + color-profile.h + color-rgba.h + color.h + common-context.h + composite-undo-stack-observer.h + conditions.h + conn-avoid-ref.h + connection-points.h + connection-pool.h + connector-context.h + console-output-undo-observer.h + context-fns.h + decimal-round.h + desktop-events.h + desktop-handles.h + desktop-style.h + desktop.h + device-manager.h + dir-util-test.h + dir-util.h + document-private.h + document-subset.h + document-undo.h + document.h + draw-anchor.h + draw-context.h + dropper-context.h + dyna-draw-context.h + ege-adjustment-action.h + ege-color-prof-tracker.h + ege-output-action.h + ege-select-one-action.h + enums.h + eraser-context.h + event-context.h + event-log.h + event.h + extract-uri-test.h + extract-uri.h + file.h + fill-or-stroke.h + filter-chemistry.h + filter-enums.h + flood-context.h + forward.h + gc-alloc.h + gc-allocator.h + gc-anchored.h + gc-core.h + gc-finalized.h + gc-managed.h + gc-soft-ptr.h + gradient-chemistry.h + gradient-context.h + gradient-drag.h + graphlayout.h + guide-snapper.h + help.h + helper-fns.h + icon-size.h + id-clash.h + ige-mac-menu.h + ink-action.h + ink-comboboxentry-action.h + inkscape-private.h + inkscape-version.h + inkscape.h + interface.h + isinf.h + isnormal.h + knot-enums.h + knot-holder-entity.h + knot.h + knotholder.h + layer-fns.h + layer-manager.h + line-geometry.h + line-snapper.h + lpe-tool-context.h + macros.h + main-cmdlineact.h + marker-test.h + marker.h + measure-context.h + media.h + memeq.h + menus-skeleton.h + message-context.h + message-stack.h + message.h + mod360-test.h + mod360.h + modifier-fns.h + number-opt-number.h + object-edit.h + object-hierarchy.h + object-snapper.h + path-chemistry.h + path-prefix.h + pen-context.h + pencil-context.h + persp3d-reference.h + persp3d.h + perspective-line.h + preferences-skeleton.h + preferences-test.h + preferences.h + prefix.h + print.h + profile-manager.h + proj_pt.h + rdf.h + rect-context.h + registrytool.h + remove-last.h + removeoverlap.h + require-config.h + resource-manager.h + round-test.h + round.h + rubberband.h + satisfied-guide-cns.h + selcue.h + select-context.h + selection-chemistry.h + selection-describer.h + selection.h + seltrans-handles.h + seltrans.h + shape-editor.h + shortcuts.h + snap-candidate.h + snap-enums.h + snap-preferences.h + snap.h + snapped-curve.h + snapped-line.h + snapped-point.h + snapper.h + spiral-context.h + splivarot.h + spray-context.h + star-context.h + streq.h + strneq.h + style-test.h + style.h + svg-profile.h + svg-view-widget.h + svg-view.h + syseq.h + test-helpers.h + text-chemistry.h + text-context.h + text-editing.h + text-tag-attributes.h + tools-switch.h + transf_mat_3x4.h + tweak-context.h + unclump.h + undo-stack-observer.h + unicoderange.h + unit-constants.h + uri-references.h + uri.h + vanishing-point.h + verbs-test.h + verbs.h + version.h + zoom-context.h +) + +if(WIN32) + list(APPEND inkscape_SRC + registrytool.cpp + #deptool.cpp + winmain.cpp + ) +endif() + + +# ----------------------------------------------------------------------------- +# Generate version file +# ----------------------------------------------------------------------------- + +# a custom target that is always built +add_custom_target( + inkscape_version ALL + DEPENDS ${CMAKE_BINARY_DIR}/src/inkscape-version.cpp) + +# creates inkscape-version.cpp using cmake script +add_custom_command( + OUTPUT ${CMAKE_BINARY_DIR}/src/inkscape-version.cpp + COMMAND ${CMAKE_COMMAND} + -DINKSCAPE_SOURCE_DIR=${CMAKE_SOURCE_DIR} + -DINKSCAPE_BINARY_DIR=${CMAKE_BINARY_DIR} + -P ${CMAKE_SOURCE_DIR}/CMakeScripts/inkscape-version.cmake) + +# buildinfo.h is a generated file +set_source_files_properties( + ${CMAKE_BINARY_DIR}/src/inkscape-version.cpp + PROPERTIES GENERATED TRUE) + +list(APPEND inkscape_SRC + ${CMAKE_BINARY_DIR}/src/inkscape-version.cpp +) + + +# ----------------------------------------------------------------------------- +# Load in subdirectories +# ----------------------------------------------------------------------------- + +# All folders for internal inkscape +# these call add_inkscape_source +add_subdirectory(bind) +add_subdirectory(debug) +add_subdirectory(dialogs) +add_subdirectory(display) +add_subdirectory(dom) +add_subdirectory(extension) +add_subdirectory(filters) +add_subdirectory(helper) +add_subdirectory(io) +add_subdirectory(live_effects) +add_subdirectory(svg) +add_subdirectory(trace) +add_subdirectory(ui) +add_subdirectory(util) +add_subdirectory(widgets) +add_subdirectory(xml) +add_subdirectory(2geom) + + +# Directories containing lists files that describe building internal libraries +add_subdirectory(libavoid) +add_subdirectory(libcola) +add_subdirectory(libcroco) +add_subdirectory(libgdl) +add_subdirectory(libvpsc) +add_subdirectory(livarot) +add_subdirectory(libnr) +add_subdirectory(libnrtype) + + +get_property(inkscape_global_SRC GLOBAL PROPERTY inkscape_global_SRC) + +set(inkscape_SRC + ${inkscape_global_SRC} + ${inkscape_SRC} +) + +# ----------------------------------------------------------------------------- +# Setup the executable +# ----------------------------------------------------------------------------- +add_inkscape_lib(sp_LIB "${sp_SRC}") +add_inkscape_lib(inkscape_LIB "${inkscape_SRC}") + +# make executable for INKSCAPE +add_executable(inkscape ${main_SRC}) + +add_dependencies(inkscape inkscape_version) + +target_link_libraries(inkscape + # order from automake + sp_LIB + inkscape_LIB + sp_LIB # annoying, we need both! + + nr_LIB + nrtype_LIB + + dom_LIB + croco_LIB + avoid_LIB + gdl_LIB + cola_LIB + vpsc_LIB + livarot_LIB + 2geom_LIB + + ${INKSCAPE_LIBS} +) + +# TODO +# make executable for INKVIEW +#add_executable(inkview inkview.cpp) +# ... + diff --git a/src/Makefile.am b/src/Makefile.am index 40ecc1ec7..7925dcd7e 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -118,8 +118,6 @@ include extension/script/Makefile_insert include filters/Makefile_insert include helper/Makefile_insert include io/Makefile_insert -#include pedro/Makefile_insert -#include jabber_whiteboard/Makefile_insert include libcroco/Makefile_insert include libgdl/Makefile_insert include libnr/Makefile_insert diff --git a/src/arc-context.cpp b/src/arc-context.cpp index 76b064f06..6e5b935f1 100644 --- a/src/arc-context.cpp +++ b/src/arc-context.cpp @@ -63,7 +63,7 @@ static void sp_arc_cancel(SPArcContext *ec); static SPEventContextClass *parent_class; -GtkType sp_arc_context_get_type() +GType sp_arc_context_get_type() { static GType type = 0; if (!type) { diff --git a/src/arc-context.h b/src/arc-context.h index ddce10801..46a6e1dce 100644 --- a/src/arc-context.h +++ b/src/arc-context.h @@ -45,7 +45,7 @@ struct SPArcContextClass { /* Standard Gtk function */ -GtkType sp_arc_context_get_type(void); +GType sp_arc_context_get_type(void); #endif /* !SEEN_ARC_CONTEXT_H */ diff --git a/src/attributes-test.h b/src/attributes-test.h index 14696b845..dee29975e 100644 --- a/src/attributes-test.h +++ b/src/attributes-test.h @@ -349,11 +349,13 @@ struct {char const *attr; bool supported;} const all_attrs[] = { {"inkscape:snap-global", true}, {"inkscape:snap-bbox", true}, {"inkscape:snap-nodes", true}, + {"inkscape:snap-others", true}, {"inkscape:snap-from-guide", true}, {"inkscape:snap-center", true}, {"inkscape:snap-smooth-nodes", true}, {"inkscape:snap-midpoints", true}, {"inkscape:snap-object-midpoints", true}, + {"inkscape:snap-text-baseline", true}, {"inkscape:snap-bbox-edge-midpoints", true}, {"inkscape:snap-bbox-midpoints", true}, //{"inkscape:snap-intersection-grid-guide", true}, diff --git a/src/attributes.cpp b/src/attributes.cpp index 118a90482..47b261038 100644 --- a/src/attributes.cpp +++ b/src/attributes.cpp @@ -94,6 +94,7 @@ static SPStyleProp const props[] = { {SP_ATTR_INKSCAPE_SNAP_GLOBAL, "inkscape:snap-global"}, {SP_ATTR_INKSCAPE_SNAP_BBOX, "inkscape:snap-bbox"}, {SP_ATTR_INKSCAPE_SNAP_NODES, "inkscape:snap-nodes"}, + {SP_ATTR_INKSCAPE_SNAP_OTHERS, "inkscape:snap-others"}, {SP_ATTR_INKSCAPE_SNAP_FROM_GUIDE, "inkscape:snap-from-guide"}, {SP_ATTR_INKSCAPE_SNAP_CENTER, "inkscape:snap-center"}, {SP_ATTR_INKSCAPE_SNAP_GRIDS, "inkscape:snap-grids"}, @@ -101,6 +102,7 @@ static SPStyleProp const props[] = { {SP_ATTR_INKSCAPE_SNAP_SMOOTH_NODES, "inkscape:snap-smooth-nodes"}, {SP_ATTR_INKSCAPE_SNAP_LINE_MIDPOINTS, "inkscape:snap-midpoints"}, {SP_ATTR_INKSCAPE_SNAP_OBJECT_MIDPOINTS, "inkscape:snap-object-midpoints"}, + {SP_ATTR_INKSCAPE_SNAP_TEXT_BASELINE, "inkscape:snap-text-baseline"}, {SP_ATTR_INKSCAPE_SNAP_BBOX_EDGE_MIDPOINTS, "inkscape:snap-bbox-edge-midpoints"}, {SP_ATTR_INKSCAPE_SNAP_BBOX_MIDPOINTS, "inkscape:snap-bbox-midpoints"}, {SP_ATTR_INKSCAPE_SNAP_INTERS_PATHS, "inkscape:snap-intersection-paths"}, @@ -495,6 +497,7 @@ sp_attribute_lookup(gchar const *key) propdict = g_hash_table_new(g_str_hash, g_str_equal); for (i = 1; i < n_attrs; i++) { g_assert(props[i].code == static_cast< gint >(i) ); + // If this g_assert fails, then the sort order of SPAttributeEnum does not match the order in props[]! g_hash_table_insert(propdict, const_cast<void *>(static_cast<void const *>(props[i].name)), GINT_TO_POINTER(props[i].code)); diff --git a/src/attributes.h b/src/attributes.h index 3755268d0..2dec8b351 100644 --- a/src/attributes.h +++ b/src/attributes.h @@ -94,6 +94,7 @@ enum SPAttributeEnum { SP_ATTR_INKSCAPE_SNAP_GLOBAL, SP_ATTR_INKSCAPE_SNAP_BBOX, SP_ATTR_INKSCAPE_SNAP_NODES, + SP_ATTR_INKSCAPE_SNAP_OTHERS, SP_ATTR_INKSCAPE_SNAP_FROM_GUIDE, SP_ATTR_INKSCAPE_SNAP_CENTER, SP_ATTR_INKSCAPE_SNAP_GRIDS, @@ -101,6 +102,7 @@ enum SPAttributeEnum { SP_ATTR_INKSCAPE_SNAP_SMOOTH_NODES, SP_ATTR_INKSCAPE_SNAP_LINE_MIDPOINTS, SP_ATTR_INKSCAPE_SNAP_OBJECT_MIDPOINTS, + SP_ATTR_INKSCAPE_SNAP_TEXT_BASELINE, SP_ATTR_INKSCAPE_SNAP_BBOX_EDGE_MIDPOINTS, SP_ATTR_INKSCAPE_SNAP_BBOX_MIDPOINTS, //SP_ATTR_INKSCAPE_SNAP_INTERS_GRIDGUIDE, diff --git a/src/box3d-context.cpp b/src/box3d-context.cpp index fad7c0761..87b182d10 100644 --- a/src/box3d-context.cpp +++ b/src/box3d-context.cpp @@ -66,7 +66,7 @@ static void sp_box3d_finish(Box3DContext *bc); static SPEventContextClass *parent_class; -GtkType sp_box3d_context_get_type() +GType sp_box3d_context_get_type() { static GType type = 0; if (!type) { diff --git a/src/box3d-context.h b/src/box3d-context.h index 74d244423..ccf0ef712 100644 --- a/src/box3d-context.h +++ b/src/box3d-context.h @@ -66,7 +66,7 @@ struct Box3DContextClass { /* Standard Gtk function */ -GtkType sp_box3d_context_get_type (void); +GType sp_box3d_context_get_type (void); void sp_box3d_context_update_lines(SPEventContext *ec); diff --git a/src/box3d.cpp b/src/box3d.cpp index ac5814e4d..1a9c26b26 100644 --- a/src/box3d.cpp +++ b/src/box3d.cpp @@ -426,6 +426,9 @@ box3d_get_center_screen (SPBox3D *box) { static double remember_snap_threshold = 30; static guint remember_snap_index = 0; +// constant for sizing the array of points to be considered: +static const int MAX_POINT_COUNT = 4; + static Proj::Pt3 box3d_snap (SPBox3D *box, int id, Proj::Pt3 const &pt_proj, Proj::Pt3 const &start_pt) { double z_coord = start_pt[Proj::Z]; @@ -455,7 +458,7 @@ box3d_snap (SPBox3D *box, int id, Proj::Pt3 const &pt_proj, Proj::Pt3 const &sta Box3D::Line diag2(A, E); // diag2 is only taken into account if id equals -1, i.e., if we are snapping the center int num_snap_lines = (id != -1) ? 3 : 4; - Geom::Point snap_pts[num_snap_lines]; + Geom::Point snap_pts[MAX_POINT_COUNT]; snap_pts[0] = pl1.closest_to (pt); snap_pts[1] = pl2.closest_to (pt); @@ -467,7 +470,7 @@ box3d_snap (SPBox3D *box, int id, Proj::Pt3 const &pt_proj, Proj::Pt3 const &sta gdouble const zoom = inkscape_active_desktop()->current_zoom(); // determine the distances to all potential snapping points - double snap_dists[num_snap_lines]; + double snap_dists[MAX_POINT_COUNT]; for (int i = 0; i < num_snap_lines; ++i) { snap_dists[i] = Geom::L2 (snap_pts[i] - pt) * zoom; } diff --git a/src/conn-avoid-ref.cpp b/src/conn-avoid-ref.cpp index 4c6139672..fad11bb89 100644 --- a/src/conn-avoid-ref.cpp +++ b/src/conn-avoid-ref.cpp @@ -491,6 +491,7 @@ static std::vector<Geom::Point> approxItemWithPoints(SPItem const *item, const G } else if (SP_IS_SHAPE(item)) { + SP_SHAPE(item)->setShape(); SPCurve* item_curve = SP_SHAPE(item)->getCurve(); // make sure it has an associated curve if (item_curve) diff --git a/src/desktop-events.cpp b/src/desktop-events.cpp index df1bf0c7a..b886e884e 100644 --- a/src/desktop-events.cpp +++ b/src/desktop-events.cpp @@ -231,7 +231,7 @@ gint sp_dt_guide_event(SPCanvasItem *item, GdkEvent *event, gpointer data) gint ret = FALSE; SPGuide *guide = SP_GUIDE(data); - SPDesktop *desktop = static_cast<SPDesktop*>(gtk_object_get_data(GTK_OBJECT(item->canvas), "SPDesktop")); + SPDesktop *desktop = static_cast<SPDesktop*>(g_object_get_data(G_OBJECT(item->canvas), "SPDesktop")); switch (event->type) { case GDK_2BUTTON_PRESS: diff --git a/src/desktop.cpp b/src/desktop.cpp index 181a19e1b..4ff2716ca 100644 --- a/src/desktop.cpp +++ b/src/desktop.cpp @@ -649,7 +649,7 @@ SPDesktop::change_document (SPDocument *theDocument) * Make desktop switch event contexts. */ void -SPDesktop::set_event_context (GtkType type, const gchar *config) +SPDesktop::set_event_context (GType type, const gchar *config) { SPEventContext *ec; while (event_context) { @@ -680,7 +680,7 @@ SPDesktop::set_event_context (GtkType type, const gchar *config) * Push event context onto desktop's context stack. */ void -SPDesktop::push_event_context (GtkType type, const gchar *config, unsigned int key) +SPDesktop::push_event_context (GType type, const gchar *config, unsigned int key) { SPEventContext *ref, *ec; diff --git a/src/desktop.h b/src/desktop.h index 2581f2859..ed0a99dea 100644 --- a/src/desktop.h +++ b/src/desktop.h @@ -240,8 +240,8 @@ public: void activate_guides (bool activate); void change_document (SPDocument *document); - void set_event_context (GtkType type, const gchar *config); - void push_event_context (GtkType type, const gchar *config, unsigned int key); + void set_event_context (GType type, const gchar *config); + void push_event_context (GType type, const gchar *config, unsigned int key); void set_coordinate_status (Geom::Point p); SPItem *getItemFromListAtPointBottom(const GSList *list, Geom::Point const p) const; diff --git a/src/dialogs/clonetiler.cpp b/src/dialogs/clonetiler.cpp index b9e490dcf..f8553f2aa 100644 --- a/src/dialogs/clonetiler.cpp +++ b/src/dialogs/clonetiler.cpp @@ -1557,10 +1557,10 @@ static GtkWidget * clonetiler_spinbox(const char *tip, const char *attr, double return hb; } -static void clonetiler_symgroup_changed(GtkMenuItem */*item*/, gpointer data) +static void clonetiler_symgroup_changed(GtkComboBox *cb, gpointer /*data*/) { Inkscape::Preferences *prefs = Inkscape::Preferences::get(); - gint group_new = GPOINTER_TO_INT (data); + gint group_new = gtk_combo_box_get_active (cb); prefs->setInt(prefs_path + "symmetrygroup", group_new); } @@ -1589,21 +1589,21 @@ static void clonetiler_reset_recursive(GtkWidget *w) { if (w && GTK_IS_OBJECT(w)) { { - int r = GPOINTER_TO_INT (gtk_object_get_data (GTK_OBJECT(w), "zeroable")); + int r = GPOINTER_TO_INT (g_object_get_data(G_OBJECT(w), "zeroable")); if (r && GTK_IS_SPIN_BUTTON(w)) { // spinbutton GtkAdjustment *a = gtk_spin_button_get_adjustment (GTK_SPIN_BUTTON(w)); gtk_adjustment_set_value (a, 0); } } { - int r = GPOINTER_TO_INT (gtk_object_get_data (GTK_OBJECT(w), "oneable")); + int r = GPOINTER_TO_INT (g_object_get_data(G_OBJECT(w), "oneable")); if (r && GTK_IS_SPIN_BUTTON(w)) { // spinbutton GtkAdjustment *a = gtk_spin_button_get_adjustment (GTK_SPIN_BUTTON(w)); gtk_adjustment_set_value (a, 1); } } { - int r = GPOINTER_TO_INT (gtk_object_get_data (GTK_OBJECT(w), "uncheckable")); + int r = GPOINTER_TO_INT (g_object_get_data(G_OBJECT(w), "uncheckable")); if (r && GTK_IS_TOGGLE_BUTTON(w)) { // checkbox gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON(w), FALSE); } @@ -1812,21 +1812,14 @@ void clonetiler_dialog(void) // Symmetry { GtkWidget *vb = clonetiler_new_tab (nb, _("_Symmetry")); - - GtkWidget *om = gtk_option_menu_new (); - /* TRANSLATORS: For the following 17 symmetry groups, see + + /* TRANSLATORS: For the following 17 symmetry groups, see * http://www.bib.ulb.ac.be/coursmath/doc/17.htm (visual examples); * http://www.clarku.edu/~djoyce/wallpaper/seventeen.html (English vocabulary); or * http://membres.lycos.fr/villemingerard/Geometri/Sym1D.htm (French vocabulary). */ - gtk_widget_set_tooltip_text (om, _("Select one of the 17 symmetry groups for the tiling")); - gtk_box_pack_start (GTK_BOX (vb), om, FALSE, FALSE, SB_MARGIN); - - GtkWidget *m = gtk_menu_new (); - int current = prefs->getInt(prefs_path + "symmetrygroup", 0); - struct SymGroups { - int group; + gint group; gchar const *label; } const sym_groups[] = { // TRANSLATORS: "translation" means "shift" / "displacement" here. @@ -1851,25 +1844,40 @@ void clonetiler_dialog(void) {TILE_P6M, _("<b>P6M</b>: reflection + 60° rotation")}, }; - for (unsigned j = 0; j < G_N_ELEMENTS(sym_groups); ++j) { + gint current = prefs->getInt(prefs_path + "symmetrygroup", 0); + + // Create a list structure containing all the data to be displayed in + // the symmetry group combo box. + GtkListStore *store = gtk_list_store_new (1, G_TYPE_STRING); + GtkTreeIter iter; + + for (unsigned j = 0; j < G_N_ELEMENTS(sym_groups); ++j) { SymGroups const &sg = sym_groups[j]; - GtkWidget *l = gtk_label_new (""); - gtk_label_set_markup (GTK_LABEL(l), sg.label); - gtk_misc_set_alignment (GTK_MISC(l), 0, 0.5); + // Add the description of the symgroup to a new row + gtk_list_store_append (store, &iter); + gtk_list_store_set (store, &iter, + 0, sg.label, + -1); + } - GtkWidget *item = gtk_menu_item_new (); - gtk_container_add (GTK_CONTAINER (item), l); + // Add a new combo box widget with the list of symmetry groups to the vbox + GtkWidget *combo = gtk_combo_box_new_with_model (GTK_TREE_MODEL (store)); + gtk_widget_set_tooltip_text (combo, _("Select one of the 17 symmetry groups for the tiling")); + gtk_box_pack_start (GTK_BOX (vb), combo, FALSE, FALSE, SB_MARGIN); - g_signal_connect ( G_OBJECT (item), "activate", - G_CALLBACK (clonetiler_symgroup_changed), - GINT_TO_POINTER (sg.group) ); + // Specify the rendering of data from the list in a combo box cell + GtkCellRenderer *renderer = gtk_cell_renderer_text_new (); + gtk_cell_layout_pack_start (GTK_CELL_LAYOUT (combo), renderer, FALSE); + gtk_cell_layout_set_attributes (GTK_CELL_LAYOUT (combo), renderer, + "markup", 0, + NULL); - gtk_menu_append (GTK_MENU (m), item); - } + gtk_combo_box_set_active (GTK_COMBO_BOX (combo), current); - gtk_option_menu_set_menu (GTK_OPTION_MENU (om), m); - gtk_option_menu_set_history ( GTK_OPTION_MENU (om), current); + g_signal_connect (G_OBJECT (combo), "changed", + G_CALLBACK (clonetiler_symgroup_changed), + NULL); } table_row_labels = gtk_size_group_new(GTK_SIZE_GROUP_HORIZONTAL); @@ -2515,7 +2523,7 @@ void clonetiler_dialog(void) gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (radio), prefs->getInt(prefs_path + "pick", 0) == PICK_COLOR); } { - radio = gtk_radio_button_new_with_label (gtk_radio_button_group (GTK_RADIO_BUTTON (radio)), _("Opacity")); + radio = gtk_radio_button_new_with_label (gtk_radio_button_get_group (GTK_RADIO_BUTTON (radio)), _("Opacity")); gtk_widget_set_tooltip_text (radio, _("Pick the total accumulated opacity")); clonetiler_table_attach (table, radio, 0.0, 2, 1); g_signal_connect (G_OBJECT (radio), "toggled", @@ -2523,7 +2531,7 @@ void clonetiler_dialog(void) gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (radio), prefs->getInt(prefs_path + "pick", 0) == PICK_OPACITY); } { - radio = gtk_radio_button_new_with_label (gtk_radio_button_group (GTK_RADIO_BUTTON (radio)), _("R")); + radio = gtk_radio_button_new_with_label (gtk_radio_button_get_group (GTK_RADIO_BUTTON (radio)), _("R")); gtk_widget_set_tooltip_text (radio, _("Pick the Red component of the color")); clonetiler_table_attach (table, radio, 0.0, 1, 2); g_signal_connect (G_OBJECT (radio), "toggled", @@ -2531,7 +2539,7 @@ void clonetiler_dialog(void) gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (radio), prefs->getInt(prefs_path + "pick", 0) == PICK_R); } { - radio = gtk_radio_button_new_with_label (gtk_radio_button_group (GTK_RADIO_BUTTON (radio)), _("G")); + radio = gtk_radio_button_new_with_label (gtk_radio_button_get_group (GTK_RADIO_BUTTON (radio)), _("G")); gtk_widget_set_tooltip_text (radio, _("Pick the Green component of the color")); clonetiler_table_attach (table, radio, 0.0, 2, 2); g_signal_connect (G_OBJECT (radio), "toggled", @@ -2539,7 +2547,7 @@ void clonetiler_dialog(void) gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (radio), prefs->getInt(prefs_path + "pick", 0) == PICK_G); } { - radio = gtk_radio_button_new_with_label (gtk_radio_button_group (GTK_RADIO_BUTTON (radio)), _("B")); + radio = gtk_radio_button_new_with_label (gtk_radio_button_get_group (GTK_RADIO_BUTTON (radio)), _("B")); gtk_widget_set_tooltip_text (radio, _("Pick the Blue component of the color")); clonetiler_table_attach (table, radio, 0.0, 3, 2); g_signal_connect (G_OBJECT (radio), "toggled", @@ -2547,7 +2555,7 @@ void clonetiler_dialog(void) gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (radio), prefs->getInt(prefs_path + "pick", 0) == PICK_B); } { - radio = gtk_radio_button_new_with_label (gtk_radio_button_group (GTK_RADIO_BUTTON (radio)), C_("Clonetiler color hue", "H")); + radio = gtk_radio_button_new_with_label (gtk_radio_button_get_group (GTK_RADIO_BUTTON (radio)), C_("Clonetiler color hue", "H")); gtk_widget_set_tooltip_text (radio, _("Pick the hue of the color")); clonetiler_table_attach (table, radio, 0.0, 1, 3); g_signal_connect (G_OBJECT (radio), "toggled", @@ -2555,7 +2563,7 @@ void clonetiler_dialog(void) gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (radio), prefs->getInt(prefs_path + "pick", 0) == PICK_H); } { - radio = gtk_radio_button_new_with_label (gtk_radio_button_group (GTK_RADIO_BUTTON (radio)), C_("Clonetiler color saturation", "S")); + radio = gtk_radio_button_new_with_label (gtk_radio_button_get_group (GTK_RADIO_BUTTON (radio)), C_("Clonetiler color saturation", "S")); gtk_widget_set_tooltip_text (radio, _("Pick the saturation of the color")); clonetiler_table_attach (table, radio, 0.0, 2, 3); g_signal_connect (G_OBJECT (radio), "toggled", @@ -2563,7 +2571,7 @@ void clonetiler_dialog(void) gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (radio), prefs->getInt(prefs_path + "pick", 0) == PICK_S); } { - radio = gtk_radio_button_new_with_label (gtk_radio_button_group (GTK_RADIO_BUTTON (radio)), C_("Clonetiler color lightness", "L")); + radio = gtk_radio_button_new_with_label (gtk_radio_button_get_group (GTK_RADIO_BUTTON (radio)), C_("Clonetiler color lightness", "L")); gtk_widget_set_tooltip_text (radio, _("Pick the lightness of the color")); clonetiler_table_attach (table, radio, 0.0, 3, 3); g_signal_connect (G_OBJECT (radio), "toggled", @@ -2786,7 +2794,7 @@ void clonetiler_dialog(void) gtk_toggle_button_toggled (GTK_TOGGLE_BUTTON (radio)); } { - radio = gtk_radio_button_new_with_label (gtk_radio_button_group (GTK_RADIO_BUTTON (radio)), _("Width, height: ")); + radio = gtk_radio_button_new_with_label (gtk_radio_button_get_group (GTK_RADIO_BUTTON (radio)), _("Width, height: ")); gtk_widget_set_tooltip_text (radio, _("Fill the specified width and height with the tiling")); clonetiler_table_attach (table, radio, 0.0, 2, 1); g_signal_connect (G_OBJECT (radio), "toggled", G_CALLBACK (clonetiler_switch_to_fill), (gpointer) dlg); diff --git a/src/dialogs/export.cpp b/src/dialogs/export.cpp index b076c0f96..77447b658 100644 --- a/src/dialogs/export.cpp +++ b/src/dialogs/export.cpp @@ -217,8 +217,8 @@ sp_export_spinbutton_new ( gchar const *key, float val, float min, float max, GCallback cb, GtkWidget *dlg ) { GtkObject *adj = gtk_adjustment_new( val, min, max, step, page, 0 ); - gtk_object_set_data( adj, "key", const_cast<gchar *>(key) ); - gtk_object_set_data( GTK_OBJECT (dlg), (const gchar *)key, adj ); + g_object_set_data( G_OBJECT (adj), "key", const_cast<gchar *>(key) ); + g_object_set_data( G_OBJECT (dlg), (const gchar *)key, adj ); if (us) { sp_unit_selector_add_adjustment ( SP_UNIT_SELECTOR (us), @@ -289,7 +289,7 @@ sp_export_dialog_area_box (GtkWidget * dlg) unitbox->pack_end(*us, false, false, 0); Gtk::Label* l = new Gtk::Label(_("Units:")); unitbox->pack_end(*l, false, false, 3); - gtk_object_set_data (GTK_OBJECT (dlg), "units", us->gobj()); + g_object_set_data (G_OBJECT (dlg), "units", us->gobj()); Gtk::HBox* togglebox = new Gtk::HBox(true, 0); @@ -297,7 +297,7 @@ sp_export_dialog_area_box (GtkWidget * dlg) for (int i = 0; i < SELECTION_NUMBER_OF; i++) { b = new Gtk::ToggleButton(_(selection_labels[i]), true); b->set_data("key", GINT_TO_POINTER(i)); - gtk_object_set_data (GTK_OBJECT (dlg), selection_names[i], b->gobj()); + g_object_set_data (G_OBJECT (dlg), selection_names[i], b->gobj()); togglebox->pack_start(*b, false, true, 0); g_signal_connect ( G_OBJECT (b->gobj()), "clicked", G_CALLBACK (sp_export_area_toggled), dlg ); @@ -388,7 +388,7 @@ gchar* create_filepath_from_id (const gchar *id, const gchar *file_entry_text) { static void batch_export_clicked (GtkWidget *widget, GtkObject *base) { - Gtk::Widget *vb_singleexport = (Gtk::Widget *)gtk_object_get_data(base, "vb_singleexport"); + Gtk::Widget *vb_singleexport = (Gtk::Widget *)g_object_get_data(G_OBJECT(base), "vb_singleexport"); if (gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON(widget))) { vb_singleexport->set_sensitive(false); } else { @@ -457,7 +457,7 @@ sp_export_dialog (void) Gtk::VBox *vb_singleexport = new Gtk::VBox(false, 0); vb_singleexport->set_border_width(0); vb->pack_start(*vb_singleexport); - gtk_object_set_data(GTK_OBJECT(dlg), "vb_singleexport", vb_singleexport); + g_object_set_data(G_OBJECT(dlg), "vb_singleexport", vb_singleexport); /* Export area frame */ { @@ -602,8 +602,8 @@ sp_export_dialog (void) hb->pack_start (*fe, true, true, 0); file_box->add(*hb); - gtk_object_set_data (GTK_OBJECT (dlg), "filename", fe->gobj()); - gtk_object_set_data (GTK_OBJECT (dlg), "filename-modified", (gpointer)FALSE); + g_object_set_data (G_OBJECT (dlg), "filename", fe->gobj()); + g_object_set_data (G_OBJECT (dlg), "filename-modified", (gpointer)FALSE); original_name = g_strdup(fe->get_text().c_str()); // pressing enter in the filename field is the same as clicking export: g_signal_connect ( G_OBJECT (fe->gobj()), "activate", @@ -621,7 +621,7 @@ sp_export_dialog (void) Gtk::HBox* batch_box = new Gtk::HBox(FALSE, 5); GtkWidget *be = gtk_check_button_new_with_mnemonic(_("B_atch export all selected objects")); gtk_widget_set_sensitive(GTK_WIDGET(be), TRUE); - gtk_object_set_data(GTK_OBJECT(dlg), "batch_checkbox", be); + g_object_set_data(G_OBJECT(dlg), "batch_checkbox", be); batch_box->pack_start(*Glib::wrap(be), false, false); gtk_widget_set_tooltip_text(be, _("Export each selected object into its own PNG file, using export hints if any (caution, overwrites without asking!)")); batch_box->show_all(); @@ -633,7 +633,7 @@ sp_export_dialog (void) Gtk::HBox* hide_box = new Gtk::HBox(FALSE, 5); GtkWidget *he = gtk_check_button_new_with_mnemonic(_("Hide a_ll except selected")); gtk_widget_set_sensitive(GTK_WIDGET(he), TRUE); - gtk_object_set_data(GTK_OBJECT(dlg), "hide_checkbox", he); + g_object_set_data(G_OBJECT(dlg), "hide_checkbox", he); hide_box->pack_start(*Glib::wrap(he), false, false); gtk_widget_set_tooltip_text(he, _("In the exported image, hide all objects except those that are selected")); hide_box->show_all(); @@ -678,8 +678,8 @@ static void sp_export_update_checkbuttons (GtkObject *base) { gint num = g_slist_length((GSList *) sp_desktop_selection(SP_ACTIVE_DESKTOP)->itemList()); - GtkWidget *be = (GtkWidget *)gtk_object_get_data(base, "batch_checkbox"); - GtkWidget *he = (GtkWidget *)gtk_object_get_data(base, "hide_checkbox"); + GtkWidget *be = (GtkWidget *)g_object_get_data(G_OBJECT(base), "batch_checkbox"); + GtkWidget *he = (GtkWidget *)g_object_get_data(G_OBJECT(base), "hide_checkbox"); if (num >= 2) { gtk_widget_set_sensitive (be, true); gtk_button_set_label (GTK_BUTTON(be), g_strdup_printf (ngettext("B_atch export %d selected object","B_atch export %d selected objects",num), num)); @@ -744,25 +744,25 @@ sp_export_selection_changed ( Inkscape::Application *inkscape, GtkObject *base ) { selection_type current_key; - current_key = (selection_type)(GPOINTER_TO_INT(gtk_object_get_data(GTK_OBJECT(base), "selection-type"))); + current_key = (selection_type)(GPOINTER_TO_INT(g_object_get_data(G_OBJECT(base), "selection-type"))); if ((current_key == SELECTION_DRAWING || current_key == SELECTION_PAGE) && (sp_desktop_selection(SP_ACTIVE_DESKTOP))->isEmpty() == false && was_empty) { gtk_toggle_button_set_active - ( GTK_TOGGLE_BUTTON ( gtk_object_get_data (base, selection_names[SELECTION_SELECTION])), + ( GTK_TOGGLE_BUTTON ( g_object_get_data (G_OBJECT(base), selection_names[SELECTION_SELECTION])), TRUE ); } was_empty = (sp_desktop_selection(SP_ACTIVE_DESKTOP))->isEmpty(); - current_key = (selection_type)(GPOINTER_TO_INT(gtk_object_get_data(GTK_OBJECT(base), "selection-type"))); + current_key = (selection_type)(GPOINTER_TO_INT(g_object_get_data(G_OBJECT(base), "selection-type"))); if (inkscape && SP_IS_INKSCAPE (inkscape) && selection && SELECTION_CUSTOM != current_key) { GtkToggleButton * button; - button = (GtkToggleButton *)gtk_object_get_data(base, selection_names[current_key]); + button = (GtkToggleButton *)g_object_get_data(G_OBJECT(base), selection_names[current_key]); sp_export_area_toggled(button, base); } @@ -776,7 +776,7 @@ sp_export_selection_modified ( Inkscape::Application */*inkscape*/, GtkObject *base ) { selection_type current_key; - current_key = (selection_type)(GPOINTER_TO_INT(gtk_object_get_data(GTK_OBJECT(base), "selection-type"))); + current_key = (selection_type)(GPOINTER_TO_INT(g_object_get_data(G_OBJECT(base), "selection-type"))); switch (current_key) { case SELECTION_DRAWING: @@ -811,12 +811,12 @@ sp_export_selection_modified ( Inkscape::Application */*inkscape*/, static void sp_export_area_toggled (GtkToggleButton *tb, GtkObject *base) { - if (gtk_object_get_data (base, "update")) + if (g_object_get_data (G_OBJECT(base), "update")) return; selection_type key, old_key; - key = (selection_type)(GPOINTER_TO_INT(gtk_object_get_data (GTK_OBJECT (tb), "key"))); - old_key = (selection_type)(GPOINTER_TO_INT(gtk_object_get_data(GTK_OBJECT(base), "selection-type"))); + key = (selection_type)(GPOINTER_TO_INT(g_object_get_data(G_OBJECT (tb), "key"))); + old_key = (selection_type)(GPOINTER_TO_INT(g_object_get_data(G_OBJECT(base), "selection-type"))); /* Ignore all "turned off" events unless we're the only active button */ if (!gtk_toggle_button_get_active (tb) ) { @@ -831,11 +831,11 @@ sp_export_area_toggled (GtkToggleButton *tb, GtkObject *base) } /* Turn off the currently active button unless it's us */ - gtk_object_set_data(GTK_OBJECT(base), "selection-type", (gpointer)key); + g_object_set_data(G_OBJECT(base), "selection-type", (gpointer)key); if (old_key != key) { gtk_toggle_button_set_active - ( GTK_TOGGLE_BUTTON ( gtk_object_get_data (base, selection_names[old_key])), + ( GTK_TOGGLE_BUTTON ( g_object_get_data (G_OBJECT(base), selection_names[old_key])), FALSE ); } @@ -898,12 +898,12 @@ sp_export_area_toggled (GtkToggleButton *tb, GtkObject *base) } // end of if ( SP_ACTIVE_DESKTOP ) - if (SP_ACTIVE_DESKTOP && !gtk_object_get_data(GTK_OBJECT(base), "filename-modified")) { + if (SP_ACTIVE_DESKTOP && !g_object_get_data(G_OBJECT(base), "filename-modified")) { GtkWidget * file_entry; const gchar * filename = NULL; float xdpi = 0.0, ydpi = 0.0; - file_entry = (GtkWidget *)gtk_object_get_data (base, "filename"); + file_entry = (GtkWidget *)g_object_get_data (G_OBJECT(base), "filename"); switch (key) { case SELECTION_PAGE: @@ -1089,8 +1089,8 @@ sp_export_export_clicked (GtkButton */*button*/, GtkObject *base) SPNamedView *nv = sp_desktop_namedview(SP_ACTIVE_DESKTOP); SPDocument *doc = sp_desktop_document (SP_ACTIVE_DESKTOP); - GtkWidget *be = (GtkWidget *)gtk_object_get_data(base, "batch_checkbox"); - GtkWidget *he = (GtkWidget *)gtk_object_get_data(base, "hide_checkbox"); + GtkWidget *be = (GtkWidget *)g_object_get_data(G_OBJECT(base), "batch_checkbox"); + GtkWidget *he = (GtkWidget *)g_object_get_data(G_OBJECT(base), "hide_checkbox"); bool hide = gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (he)); if (gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (be))) { // Batch export of selected objects @@ -1162,7 +1162,7 @@ sp_export_export_clicked (GtkButton */*button*/, GtkObject *base) } else { - GtkWidget *fe = (GtkWidget *)gtk_object_get_data(base, "filename"); + GtkWidget *fe = (GtkWidget *)g_object_get_data(G_OBJECT(base), "filename"); gchar const *filename = gtk_entry_get_text(GTK_ENTRY(fe)); float const x0 = sp_export_value_get_px(base, "x0"); @@ -1232,13 +1232,13 @@ sp_export_export_clicked (GtkButton */*button*/, GtkObject *base) selections and all that */ g_free(original_name); original_name = g_strdup(filename_ext); - gtk_object_set_data (GTK_OBJECT (base), "filename-modified", (gpointer)FALSE); + g_object_set_data (G_OBJECT (base), "filename-modified", (gpointer)FALSE); gtk_widget_destroy (prog_dlg); g_object_set_data (G_OBJECT (base), "cancel", (gpointer) 0); /* Setup the values in the document */ - switch ((selection_type)(GPOINTER_TO_INT(gtk_object_get_data(GTK_OBJECT(base), "selection-type")))) { + switch ((selection_type)(GPOINTER_TO_INT(g_object_get_data(G_OBJECT(base), "selection-type")))) { case SELECTION_PAGE: case SELECTION_DRAWING: { SPDocument * doc = SP_ACTIVE_DOCUMENT; @@ -1475,7 +1475,7 @@ sp_export_detect_size(GtkObject * base) { Geom::Rect current_bbox(x, y); //std::cout << "Current " << current_bbox; - this_test[0] = (selection_type)(GPOINTER_TO_INT(gtk_object_get_data(GTK_OBJECT(base), "selection-type"))); + this_test[0] = (selection_type)(GPOINTER_TO_INT(g_object_get_data(G_OBJECT(base), "selection-type"))); for (int i = 0; i < SELECTION_NUMBER_OF; i++) { this_test[i + 1] = test_order[i]; } @@ -1538,10 +1538,10 @@ sp_export_detect_size(GtkObject * base) { /* We're now using a custom size, not a fixed one */ /* printf("Detecting state: %s\n", selection_names[key]); */ - selection_type old = (selection_type)(GPOINTER_TO_INT(gtk_object_get_data(GTK_OBJECT(base), "selection-type"))); - gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON(gtk_object_get_data(base, selection_names[old])), FALSE); - gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON(gtk_object_get_data(base, selection_names[key])), TRUE); - gtk_object_set_data(GTK_OBJECT(base), "selection-type", (gpointer)key); + selection_type old = (selection_type)(GPOINTER_TO_INT(g_object_get_data(G_OBJECT(base), "selection-type"))); + gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON(g_object_get_data(G_OBJECT(base), selection_names[old])), FALSE); + gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON(g_object_get_data(G_OBJECT(base), selection_names[key])), TRUE); + g_object_set_data(G_OBJECT(base), "selection-type", (gpointer)key); return; } /* sp_export_detect_size */ @@ -1552,16 +1552,16 @@ sp_export_area_x_value_changed (GtkAdjustment *adj, GtkObject *base) { float x0, x1, xdpi, width; - if (gtk_object_get_data (base, "update")) + if (g_object_get_data (G_OBJECT(base), "update")) return; - if (sp_unit_selector_update_test ((SPUnitSelector *)gtk_object_get_data - (base, "units"))) + if (sp_unit_selector_update_test ((SPUnitSelector *)g_object_get_data + (G_OBJECT(base), "units"))) { return; } - gtk_object_set_data ( base, "update", GUINT_TO_POINTER (TRUE) ); + g_object_set_data ( G_OBJECT(base), "update", GUINT_TO_POINTER (TRUE) ); x0 = sp_export_value_get_px (base, "x0"); x1 = sp_export_value_get_px (base, "x1"); @@ -1572,7 +1572,7 @@ sp_export_area_x_value_changed (GtkAdjustment *adj, GtkObject *base) if (width < SP_EXPORT_MIN_SIZE) { const gchar *key; width = SP_EXPORT_MIN_SIZE; - key = (const gchar *)gtk_object_get_data (GTK_OBJECT (adj), "key"); + key = (const gchar *)g_object_get_data(G_OBJECT (adj), "key"); if (!strcmp (key, "x0")) { x1 = x0 + width * DPI_BASE / xdpi; @@ -1588,7 +1588,7 @@ sp_export_area_x_value_changed (GtkAdjustment *adj, GtkObject *base) sp_export_detect_size(base); - gtk_object_set_data (base, "update", GUINT_TO_POINTER (FALSE)); + g_object_set_data ( G_OBJECT (base), "update", GUINT_TO_POINTER (FALSE)); return; } // end of sp_export_area_x_value_changed() @@ -1599,16 +1599,16 @@ sp_export_area_y_value_changed (GtkAdjustment *adj, GtkObject *base) { float y0, y1, ydpi, height; - if (gtk_object_get_data (base, "update")) + if (g_object_get_data (G_OBJECT(base), "update")) return; - if (sp_unit_selector_update_test ((SPUnitSelector *)gtk_object_get_data - (base, "units"))) + if (sp_unit_selector_update_test ((SPUnitSelector *)g_object_get_data + (G_OBJECT(base), "units"))) { return; } - gtk_object_set_data (base, "update", GUINT_TO_POINTER (TRUE)); + g_object_set_data ( G_OBJECT (base), "update", GUINT_TO_POINTER (TRUE)); y0 = sp_export_value_get_px (base, "y0"); y1 = sp_export_value_get_px (base, "y1"); @@ -1619,7 +1619,7 @@ sp_export_area_y_value_changed (GtkAdjustment *adj, GtkObject *base) if (height < SP_EXPORT_MIN_SIZE) { const gchar *key; height = SP_EXPORT_MIN_SIZE; - key = (const gchar *)gtk_object_get_data (GTK_OBJECT (adj), "key"); + key = (const gchar *)g_object_get_data(G_OBJECT (adj), "key"); if (!strcmp (key, "y0")) { y1 = y0 + height * DPI_BASE / ydpi; sp_export_value_set_px (base, "y1", y1); @@ -1634,7 +1634,7 @@ sp_export_area_y_value_changed (GtkAdjustment *adj, GtkObject *base) sp_export_detect_size(base); - gtk_object_set_data (base, "update", GUINT_TO_POINTER (FALSE)); + g_object_set_data ( G_OBJECT (base), "update", GUINT_TO_POINTER (FALSE)); return; } // end of sp_export_area_y_value_changed() @@ -1645,15 +1645,15 @@ sp_export_area_width_value_changed (GtkAdjustment */*adj*/, GtkObject *base) { float x0, x1, xdpi, width, bmwidth; - if (gtk_object_get_data (base, "update")) + if (g_object_get_data (G_OBJECT(base), "update")) return; - if (sp_unit_selector_update_test ((SPUnitSelector *)gtk_object_get_data - (base, "units"))) { + if (sp_unit_selector_update_test ((SPUnitSelector *)g_object_get_data + (G_OBJECT(base), "units"))) { return; } - gtk_object_set_data (base, "update", GUINT_TO_POINTER (TRUE)); + g_object_set_data ( G_OBJECT (base), "update", GUINT_TO_POINTER (TRUE)); x0 = sp_export_value_get_px (base, "x0"); x1 = sp_export_value_get_px (base, "x1"); @@ -1671,7 +1671,7 @@ sp_export_area_width_value_changed (GtkAdjustment */*adj*/, GtkObject *base) sp_export_value_set_px (base, "x1", x0 + width); sp_export_value_set (base, "bmwidth", bmwidth); - gtk_object_set_data (base, "update", GUINT_TO_POINTER (FALSE)); + g_object_set_data (G_OBJECT (base), "update", GUINT_TO_POINTER (FALSE)); return; } // end of sp_export_area_width_value_changed() @@ -1683,15 +1683,15 @@ sp_export_area_height_value_changed (GtkAdjustment */*adj*/, GtkObject *base) float y0, y1, ydpi, height, bmheight; - if (gtk_object_get_data (base, "update")) + if (g_object_get_data (G_OBJECT(base), "update")) return; - if (sp_unit_selector_update_test ((SPUnitSelector *)gtk_object_get_data - (base, "units"))) { + if (sp_unit_selector_update_test ((SPUnitSelector *)g_object_get_data + (G_OBJECT(base), "units"))) { return; } - gtk_object_set_data (base, "update", GUINT_TO_POINTER (TRUE)); + g_object_set_data (G_OBJECT (base), "update", GUINT_TO_POINTER (TRUE)); y0 = sp_export_value_get_px (base, "y0"); y1 = sp_export_value_get_px (base, "y1"); @@ -1708,7 +1708,7 @@ sp_export_area_height_value_changed (GtkAdjustment */*adj*/, GtkObject *base) sp_export_value_set_px (base, "y1", y0 + height); sp_export_value_set (base, "bmheight", bmheight); - gtk_object_set_data (base, "update", GUINT_TO_POINTER (FALSE)); + g_object_set_data (G_OBJECT (base), "update", GUINT_TO_POINTER (FALSE)); return; } // end of sp_export_area_height_value_changed() @@ -1765,15 +1765,15 @@ sp_export_bitmap_width_value_changed (GtkAdjustment */*adj*/, GtkObject *base) { float x0, x1, bmwidth, xdpi; - if (gtk_object_get_data (base, "update")) + if (g_object_get_data (G_OBJECT(base), "update")) return; - if (sp_unit_selector_update_test ((SPUnitSelector *)gtk_object_get_data - (base, "units"))) { + if (sp_unit_selector_update_test ((SPUnitSelector *)g_object_get_data + (G_OBJECT(base), "units"))) { return; } - gtk_object_set_data (base, "update", GUINT_TO_POINTER (TRUE)); + g_object_set_data (G_OBJECT (base), "update", GUINT_TO_POINTER (TRUE)); x0 = sp_export_value_get_px (base, "x0"); x1 = sp_export_value_get_px (base, "x1"); @@ -1789,7 +1789,7 @@ sp_export_bitmap_width_value_changed (GtkAdjustment */*adj*/, GtkObject *base) sp_export_set_image_y (base); - gtk_object_set_data (base, "update", GUINT_TO_POINTER (FALSE)); + g_object_set_data (G_OBJECT (base), "update", GUINT_TO_POINTER (FALSE)); return; } // end of sp_export_bitmap_width_value_changed() @@ -1800,15 +1800,15 @@ sp_export_bitmap_height_value_changed (GtkAdjustment */*adj*/, GtkObject *base) { float y0, y1, bmheight, xdpi; - if (gtk_object_get_data (base, "update")) + if (g_object_get_data (G_OBJECT(base), "update")) return; - if (sp_unit_selector_update_test ((SPUnitSelector *)gtk_object_get_data - (base, "units"))) { + if (sp_unit_selector_update_test ((SPUnitSelector *)g_object_get_data + (G_OBJECT(base), "units"))) { return; } - gtk_object_set_data (base, "update", GUINT_TO_POINTER (TRUE)); + g_object_set_data (G_OBJECT (base), "update", GUINT_TO_POINTER (TRUE)); y0 = sp_export_value_get_px (base, "y0"); y1 = sp_export_value_get_px (base, "y1"); @@ -1824,7 +1824,7 @@ sp_export_bitmap_height_value_changed (GtkAdjustment */*adj*/, GtkObject *base) sp_export_set_image_x (base); - gtk_object_set_data (base, "update", GUINT_TO_POINTER (FALSE)); + g_object_set_data (G_OBJECT (base), "update", GUINT_TO_POINTER (FALSE)); return; } // end of sp_export_bitmap_width_value_changed() @@ -1862,15 +1862,15 @@ sp_export_xdpi_value_changed (GtkAdjustment */*adj*/, GtkObject *base) { float x0, x1, xdpi, bmwidth; - if (gtk_object_get_data (base, "update")) + if (g_object_get_data (G_OBJECT(base), "update")) return; - if (sp_unit_selector_update_test ((SPUnitSelector *)gtk_object_get_data - (base, "units"))) { + if (sp_unit_selector_update_test ((SPUnitSelector *)g_object_get_data + (G_OBJECT(base), "units"))) { return; } - gtk_object_set_data (base, "update", GUINT_TO_POINTER (TRUE)); + g_object_set_data (G_OBJECT (base), "update", GUINT_TO_POINTER (TRUE)); x0 = sp_export_value_get_px (base, "x0"); x1 = sp_export_value_get_px (base, "x1"); @@ -1895,7 +1895,7 @@ sp_export_xdpi_value_changed (GtkAdjustment */*adj*/, GtkObject *base) sp_export_set_image_y (base); - gtk_object_set_data (base, "update", GUINT_TO_POINTER (FALSE)); + g_object_set_data (G_OBJECT (base), "update", GUINT_TO_POINTER (FALSE)); return; } // end of sp_export_xdpi_value_changed() @@ -1923,15 +1923,15 @@ sp_export_xdpi_value_changed (GtkAdjustment */*adj*/, GtkObject *base) static void sp_export_set_area ( GtkObject *base, double x0, double y0, double x1, double y1 ) { - gtk_object_set_data ( base, "update", GUINT_TO_POINTER (TRUE) ); + g_object_set_data (G_OBJECT (base), "update", GUINT_TO_POINTER (TRUE) ); sp_export_value_set_px (base, "x1", x1); sp_export_value_set_px (base, "y1", y1); sp_export_value_set_px (base, "x0", x0); sp_export_value_set_px (base, "y0", y0); - gtk_object_set_data ( base, "update", GUINT_TO_POINTER (FALSE) ); + g_object_set_data (G_OBJECT (base), "update", GUINT_TO_POINTER (FALSE) ); - sp_export_area_x_value_changed ((GtkAdjustment *)gtk_object_get_data (base, "x1"), base); - sp_export_area_y_value_changed ((GtkAdjustment *)gtk_object_get_data (base, "y1"), base); + sp_export_area_x_value_changed ((GtkAdjustment *)g_object_get_data (G_OBJECT(base), "x1"), base); + sp_export_area_y_value_changed ((GtkAdjustment *)g_object_get_data (G_OBJECT(base), "y1"), base); return; } @@ -1951,7 +1951,7 @@ sp_export_value_set ( GtkObject *base, const gchar *key, double val ) { GtkAdjustment *adj; - adj = (GtkAdjustment *)gtk_object_get_data (base, key); + adj = (GtkAdjustment *)g_object_get_data (G_OBJECT(base), key); gtk_adjustment_set_value (adj, val); } @@ -1970,7 +1970,7 @@ sp_export_value_set ( GtkObject *base, const gchar *key, double val ) static void sp_export_value_set_px (GtkObject *base, const gchar *key, double val) { - const SPUnit *unit = sp_unit_selector_get_unit ((SPUnitSelector *)gtk_object_get_data (base, "units") ); + const SPUnit *unit = sp_unit_selector_get_unit ((SPUnitSelector *)g_object_get_data (G_OBJECT(base), "units") ); sp_export_value_set (base, key, sp_pixels_get_units (val, *unit)); @@ -1991,7 +1991,7 @@ sp_export_value_get ( GtkObject *base, const gchar *key ) { GtkAdjustment *adj; - adj = (GtkAdjustment *)gtk_object_get_data (base, key); + adj = (GtkAdjustment *)g_object_get_data (G_OBJECT(base), key); return adj->value; } @@ -2012,7 +2012,7 @@ static float sp_export_value_get_px ( GtkObject *base, const gchar *key ) { float value = sp_export_value_get(base, key); - const SPUnit *unit = sp_unit_selector_get_unit ((SPUnitSelector *)gtk_object_get_data (base, "units")); + const SPUnit *unit = sp_unit_selector_get_unit ((SPUnitSelector *)g_object_get_data (G_OBJECT(base), "units")); return sp_units_get_pixels (value, *unit); } // end of sp_export_value_get_px() @@ -2037,10 +2037,10 @@ sp_export_filename_modified (GtkObject * object, gpointer data) GtkWidget * export_dialog = (GtkWidget *)data; if (!strcmp(original_name, gtk_entry_get_text(GTK_ENTRY(text_entry)))) { - gtk_object_set_data (GTK_OBJECT (export_dialog), "filename-modified", (gpointer)FALSE); + g_object_set_data (G_OBJECT (export_dialog), "filename-modified", (gpointer)FALSE); // printf("Modified: FALSE\n"); } else { - gtk_object_set_data (GTK_OBJECT (export_dialog), "filename-modified", (gpointer)TRUE); + g_object_set_data (G_OBJECT (export_dialog), "filename-modified", (gpointer)TRUE); // printf("Modified: TRUE\n"); } diff --git a/src/dialogs/find.cpp b/src/dialogs/find.cpp index 62c551523..b30671114 100644 --- a/src/dialogs/find.cpp +++ b/src/dialogs/find.cpp @@ -193,7 +193,7 @@ bool item_attr_match(SPItem *item, const gchar *name, bool exact) GSList * filter_onefield (GSList *l, GObject *dlg, const gchar *field, bool (*match_function)(SPItem *, const gchar *, bool), bool exact) { - GtkWidget *widget = GTK_WIDGET (gtk_object_get_data (GTK_OBJECT (dlg), field)); + GtkWidget *widget = GTK_WIDGET (g_object_get_data(G_OBJECT (dlg), field)); const gchar *text = gtk_entry_get_text (GTK_ENTRY(widget)); if (strlen (text) != 0) { @@ -215,7 +215,7 @@ filter_onefield (GSList *l, GObject *dlg, const gchar *field, bool (*match_funct bool type_checkbox (GtkWidget *widget, const gchar *data) { - return gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (gtk_object_get_data (GTK_OBJECT (widget), data))); + return gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (g_object_get_data(G_OBJECT (widget), data))); } bool @@ -260,9 +260,9 @@ item_type_match (SPItem *item, GtkWidget *widget) GSList * filter_types (GSList *l, GObject *dlg, bool (*match_function)(SPItem *, GtkWidget *)) { - GtkWidget *widget = GTK_WIDGET (gtk_object_get_data (GTK_OBJECT (dlg), "types")); + GtkWidget *widget = GTK_WIDGET (g_object_get_data(G_OBJECT (dlg), "types")); - GtkWidget *alltypes = GTK_WIDGET (gtk_object_get_data (GTK_OBJECT (widget), "all")); + GtkWidget *alltypes = GTK_WIDGET (g_object_get_data(G_OBJECT (widget), "all")); if (gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (alltypes))) return l; @@ -341,18 +341,18 @@ void sp_find_dialog_find(GObject *, GObject *dlg) { SPDesktop *desktop = SP_ACTIVE_DESKTOP; - bool hidden = gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (gtk_object_get_data (GTK_OBJECT (dlg), "includehidden"))); - bool locked = gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (gtk_object_get_data (GTK_OBJECT (dlg), "includelocked"))); + bool hidden = gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (g_object_get_data(G_OBJECT (dlg), "includehidden"))); + bool locked = gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (g_object_get_data(G_OBJECT (dlg), "includelocked"))); GSList *l = NULL; - if (gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (gtk_object_get_data (GTK_OBJECT (dlg), "inselection")))) { - if (gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (gtk_object_get_data (GTK_OBJECT (dlg), "inlayer")))) { + if (gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (g_object_get_data(G_OBJECT (dlg), "inselection")))) { + if (gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (g_object_get_data(G_OBJECT (dlg), "inlayer")))) { l = all_selection_items (desktop->selection, l, desktop->currentLayer(), hidden, locked); } else { l = all_selection_items (desktop->selection, l, NULL, hidden, locked); } } else { - if (gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (gtk_object_get_data (GTK_OBJECT (dlg), "inlayer")))) { + if (gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (g_object_get_data(G_OBJECT (dlg), "inlayer")))) { l = all_items (desktop->currentLayer(), l, hidden, locked); } else { l = all_items(sp_desktop_document(desktop)->getRoot(), l, hidden, locked); @@ -389,7 +389,7 @@ void sp_find_dialog_find(GObject *, GObject *dlg) void sp_find_reset_searchfield (GObject *dlg, const gchar *field) { - GtkWidget *widget = GTK_WIDGET (gtk_object_get_data (GTK_OBJECT (dlg), field)); + GtkWidget *widget = GTK_WIDGET (g_object_get_data(G_OBJECT (dlg), field)); gtk_entry_set_text (GTK_ENTRY(widget), ""); } @@ -402,8 +402,8 @@ sp_find_dialog_reset (GObject *, GObject *dlg) sp_find_reset_searchfield (dlg, "style"); sp_find_reset_searchfield (dlg, "attr"); - GtkWidget *types = GTK_WIDGET (gtk_object_get_data (GTK_OBJECT (dlg), "types")); - GtkToggleButton *tb = GTK_TOGGLE_BUTTON (gtk_object_get_data (GTK_OBJECT (types), "all")); + GtkWidget *types = GTK_WIDGET (g_object_get_data(G_OBJECT (dlg), "types")); + GtkToggleButton *tb = GTK_TOGGLE_BUTTON (g_object_get_data(G_OBJECT (types), "all")); gtk_toggle_button_toggled (tb); gtk_toggle_button_set_active (tb, TRUE); } @@ -423,7 +423,7 @@ sp_find_new_searchfield (GtkWidget *dlg, GtkWidget *vb, const gchar *label, cons GtkWidget *tf = gtk_entry_new (); gtk_entry_set_max_length (GTK_ENTRY (tf), 64); gtk_box_pack_start (GTK_BOX (hb), tf, TRUE, TRUE, 0); - gtk_object_set_data (GTK_OBJECT (dlg), id, tf); + g_object_set_data (G_OBJECT (dlg), id, tf); gtk_widget_set_tooltip_text (tf, tip); g_signal_connect ( G_OBJECT (tf), "activate", G_CALLBACK (sp_find_dialog_find), dlg ); gtk_label_set_mnemonic_widget (GTK_LABEL(l), tf); @@ -444,22 +444,22 @@ sp_find_new_button (GtkWidget *dlg, GtkWidget *hb, const gchar *label, const gch void toggle_alltypes (GtkToggleButton *tb, gpointer data) { - GtkWidget *alltypes_pane = GTK_WIDGET (gtk_object_get_data (GTK_OBJECT (data), "all-pane")); + GtkWidget *alltypes_pane = GTK_WIDGET (g_object_get_data(G_OBJECT (data), "all-pane")); if (gtk_toggle_button_get_active (tb)) { gtk_widget_hide_all (alltypes_pane); } else { gtk_widget_show_all (alltypes_pane); // excplicit toggle to make sure its handler gets called, no matter what was the original state - gtk_toggle_button_toggled (GTK_TOGGLE_BUTTON (gtk_object_get_data (GTK_OBJECT (data), "shapes"))); - gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (gtk_object_get_data (GTK_OBJECT (data), "shapes")), TRUE); - - gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (gtk_object_get_data (GTK_OBJECT (data), "paths")), TRUE); - gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (gtk_object_get_data (GTK_OBJECT (data), "texts")), TRUE); - gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (gtk_object_get_data (GTK_OBJECT (data), "groups")), TRUE); - gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (gtk_object_get_data (GTK_OBJECT (data), "clones")), TRUE); - gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (gtk_object_get_data (GTK_OBJECT (data), "images")), TRUE); - gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (gtk_object_get_data (GTK_OBJECT (data), "offsets")), TRUE); + gtk_toggle_button_toggled (GTK_TOGGLE_BUTTON (g_object_get_data(G_OBJECT (data), "shapes"))); + gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (g_object_get_data(G_OBJECT (data), "shapes")), TRUE); + + gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (g_object_get_data(G_OBJECT (data), "paths")), TRUE); + gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (g_object_get_data(G_OBJECT (data), "texts")), TRUE); + gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (g_object_get_data(G_OBJECT (data), "groups")), TRUE); + gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (g_object_get_data(G_OBJECT (data), "clones")), TRUE); + gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (g_object_get_data(G_OBJECT (data), "images")), TRUE); + gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (g_object_get_data(G_OBJECT (data), "offsets")), TRUE); } sp_find_squeeze_window(); } @@ -467,15 +467,15 @@ toggle_alltypes (GtkToggleButton *tb, gpointer data) void toggle_shapes (GtkToggleButton *tb, gpointer data) { - GtkWidget *shapes_pane = GTK_WIDGET (gtk_object_get_data (GTK_OBJECT (data), "shapes-pane")); + GtkWidget *shapes_pane = GTK_WIDGET (g_object_get_data(G_OBJECT (data), "shapes-pane")); if (gtk_toggle_button_get_active (tb)) { gtk_widget_hide_all (shapes_pane); } else { gtk_widget_show_all (shapes_pane); - gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (gtk_object_get_data (GTK_OBJECT (data), "rects")), FALSE); - gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (gtk_object_get_data (GTK_OBJECT (data), "ellipses")), FALSE); - gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (gtk_object_get_data (GTK_OBJECT (data), "stars")), FALSE); - gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (gtk_object_get_data (GTK_OBJECT (data), "spirals")), FALSE); + gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (g_object_get_data(G_OBJECT (data), "rects")), FALSE); + gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (g_object_get_data(G_OBJECT (data), "ellipses")), FALSE); + gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (g_object_get_data(G_OBJECT (data), "stars")), FALSE); + gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (g_object_get_data(G_OBJECT (data), "spirals")), FALSE); } sp_find_squeeze_window(); } @@ -494,7 +494,7 @@ sp_find_types_checkbox (GtkWidget *w, const gchar *data, gboolean active, GtkWidget *b = gtk_check_button_new_with_label (label); gtk_widget_show (b); gtk_toggle_button_set_active ((GtkToggleButton *) b, active); - gtk_object_set_data (GTK_OBJECT (w), data, b); + g_object_set_data (G_OBJECT (w), data, b); gtk_widget_set_tooltip_text (b, tip); if (toggled) g_signal_connect (G_OBJECT (b), "toggled", G_CALLBACK (toggled), w); @@ -592,7 +592,7 @@ sp_find_types () gtk_box_pack_start (GTK_BOX (hb), c, FALSE, FALSE, 0); } - gtk_object_set_data (GTK_OBJECT (vb), "shapes-pane", hb); + g_object_set_data (G_OBJECT (vb), "shapes-pane", hb); gtk_box_pack_start (GTK_BOX (vb_all), hb, FALSE, FALSE, 0); gtk_widget_hide_all (hb); @@ -633,7 +633,7 @@ sp_find_types () } gtk_box_pack_start (GTK_BOX (vb), vb_all, FALSE, FALSE, 0); - gtk_object_set_data (GTK_OBJECT (vb), "all-pane", vb_all); + g_object_set_data (G_OBJECT (vb), "all-pane", vb_all); gtk_widget_hide_all (vb_all); } @@ -699,7 +699,7 @@ sp_find_dialog_old (void) gtk_widget_show_all (vb); GtkWidget *types = sp_find_types (); - gtk_object_set_data (GTK_OBJECT (dlg), "types", types); + g_object_set_data (G_OBJECT (dlg), "types", types); gtk_box_pack_start (GTK_BOX (vb), types, FALSE, FALSE, 0); { @@ -711,7 +711,7 @@ sp_find_dialog_old (void) GtkWidget *b = gtk_check_button_new_with_mnemonic (_("Search in s_election")); gtk_widget_show (b); gtk_toggle_button_set_active ((GtkToggleButton *) b, FALSE); - gtk_object_set_data (GTK_OBJECT (dlg), "inselection", b); + g_object_set_data (G_OBJECT (dlg), "inselection", b); gtk_widget_set_tooltip_text (b, _("Limit search to the current selection")); gtk_box_pack_start (GTK_BOX (vb), b, FALSE, FALSE, 0); } @@ -720,7 +720,7 @@ sp_find_dialog_old (void) GtkWidget *b = gtk_check_button_new_with_mnemonic (_("Search in current _layer")); gtk_widget_show (b); gtk_toggle_button_set_active ((GtkToggleButton *) b, FALSE); - gtk_object_set_data (GTK_OBJECT (dlg), "inlayer", b); + g_object_set_data (G_OBJECT (dlg), "inlayer", b); gtk_widget_set_tooltip_text (b, _("Limit search to the current layer")); gtk_box_pack_start (GTK_BOX (vb), b, FALSE, FALSE, 0); } @@ -729,7 +729,7 @@ sp_find_dialog_old (void) GtkWidget *b = gtk_check_button_new_with_mnemonic (_("Include _hidden")); gtk_widget_show (b); gtk_toggle_button_set_active ((GtkToggleButton *) b, FALSE); - gtk_object_set_data (GTK_OBJECT (dlg), "includehidden", b); + g_object_set_data (G_OBJECT (dlg), "includehidden", b); gtk_widget_set_tooltip_text (b, _("Include hidden objects in search")); gtk_box_pack_start (GTK_BOX (vb), b, FALSE, FALSE, 0); } @@ -738,7 +738,7 @@ sp_find_dialog_old (void) GtkWidget *b = gtk_check_button_new_with_mnemonic (_("Include l_ocked")); gtk_widget_show (b); gtk_toggle_button_set_active ((GtkToggleButton *) b, FALSE); - gtk_object_set_data (GTK_OBJECT (dlg), "includelocked", b); + g_object_set_data (G_OBJECT (dlg), "includelocked", b); gtk_widget_set_tooltip_text (b, _("Include locked objects in search")); gtk_box_pack_start (GTK_BOX (vb), b, FALSE, FALSE, 0); } diff --git a/src/dialogs/item-properties.cpp b/src/dialogs/item-properties.cpp index 3f757e81f..0c81d8b3c 100644 --- a/src/dialogs/item-properties.cpp +++ b/src/dialogs/item-properties.cpp @@ -114,7 +114,7 @@ sp_item_widget_new (void) gtk_table_attach ( GTK_TABLE (t), l, 0, 1, 0, 1, (GtkAttachOptions)( GTK_SHRINK | GTK_FILL ), (GtkAttachOptions)0, 0, 0 ); - gtk_object_set_data (GTK_OBJECT (spw), "id_label", l); + g_object_set_data (G_OBJECT (spw), "id_label", l); /* Create the entry box for the object id */ tf = gtk_entry_new (); @@ -123,7 +123,7 @@ sp_item_widget_new (void) gtk_table_attach ( GTK_TABLE (t), tf, 1, 2, 0, 1, (GtkAttachOptions)( GTK_EXPAND | GTK_FILL ), (GtkAttachOptions)0, 0, 0 ); - gtk_object_set_data (GTK_OBJECT (spw), "id", tf); + g_object_set_data (G_OBJECT (spw), "id", tf); gtk_label_set_mnemonic_widget (GTK_LABEL(l), tf); // pressing enter in the id field is the same as clicking Set: @@ -137,7 +137,7 @@ sp_item_widget_new (void) gtk_table_attach ( GTK_TABLE (t), l, 0, 1, 1, 2, (GtkAttachOptions)( GTK_SHRINK | GTK_FILL ), (GtkAttachOptions)0, 0, 0 ); - gtk_object_set_data (GTK_OBJECT (spw), "label_label", l); + g_object_set_data (G_OBJECT (spw), "label_label", l); /* Create the entry box for the object label */ tf = gtk_entry_new (); @@ -146,7 +146,7 @@ sp_item_widget_new (void) gtk_table_attach ( GTK_TABLE (t), tf, 1, 2, 1, 2, (GtkAttachOptions)( GTK_EXPAND | GTK_FILL ), (GtkAttachOptions)0, 0, 0 ); - gtk_object_set_data (GTK_OBJECT (spw), "label", tf); + g_object_set_data (G_OBJECT (spw), "label", tf); gtk_label_set_mnemonic_widget (GTK_LABEL(l), tf); // pressing enter in the label field is the same as clicking Set: @@ -158,7 +158,7 @@ sp_item_widget_new (void) gtk_table_attach ( GTK_TABLE (t), l, 0, 1, 2, 3, (GtkAttachOptions)( GTK_SHRINK | GTK_FILL ), (GtkAttachOptions)0, 0, 0 ); - gtk_object_set_data (GTK_OBJECT (spw), "title_label", l); + g_object_set_data (G_OBJECT (spw), "title_label", l); /* Create the entry box for the object title */ tf = gtk_entry_new (); @@ -167,7 +167,7 @@ sp_item_widget_new (void) gtk_table_attach ( GTK_TABLE (t), tf, 1, 3, 2, 3, (GtkAttachOptions)( GTK_EXPAND | GTK_FILL ), (GtkAttachOptions)0, 0, 0 ); - gtk_object_set_data (GTK_OBJECT (spw), "title", tf); + g_object_set_data (G_OBJECT (spw), "title", tf); gtk_label_set_mnemonic_widget (GTK_LABEL(l), tf); /* Create the frame for the object description */ @@ -184,14 +184,14 @@ sp_item_widget_new (void) gtk_widget_set_sensitive (GTK_WIDGET (textframe), FALSE); gtk_container_add (GTK_CONTAINER (f), textframe); gtk_frame_set_shadow_type (GTK_FRAME (textframe), GTK_SHADOW_IN); - gtk_object_set_data(GTK_OBJECT(spw), "desc_frame", textframe); + g_object_set_data(G_OBJECT(spw), "desc_frame", textframe); tf = gtk_text_view_new(); gtk_text_view_set_wrap_mode(GTK_TEXT_VIEW(tf), GTK_WRAP_WORD); desc_buffer = gtk_text_view_get_buffer(GTK_TEXT_VIEW(tf)); gtk_text_buffer_set_text(desc_buffer, "", -1); gtk_container_add (GTK_CONTAINER (textframe), tf); - gtk_object_set_data (GTK_OBJECT (spw), "desc", tf); + g_object_set_data (G_OBJECT (spw), "desc", tf); gtk_label_set_mnemonic_widget (GTK_LABEL (gtk_frame_get_label_widget (GTK_FRAME (f))), tf); /* Check boxes */ @@ -208,7 +208,7 @@ sp_item_widget_new (void) (GtkAttachOptions)( GTK_EXPAND | GTK_FILL ), (GtkAttachOptions)0, 0, 0 ); g_signal_connect (G_OBJECT(cb), "toggled", G_CALLBACK(sp_item_widget_hidden_toggled), spw); - gtk_object_set_data(GTK_OBJECT(spw), "hidden", cb); + g_object_set_data(G_OBJECT(spw), "hidden", cb); /* Button for setting the object's id, label, title and description. */ pb = gtk_button_new_with_mnemonic (_("_Set")); @@ -227,13 +227,13 @@ sp_item_widget_new (void) g_signal_connect ( G_OBJECT (cb), "toggled", G_CALLBACK (sp_item_widget_sensitivity_toggled), spw ); - gtk_object_set_data (GTK_OBJECT (spw), "sensitive", cb); + g_object_set_data (G_OBJECT (spw), "sensitive", cb); /* Create the frame for interactivity options */ int_label = gtk_label_new_with_mnemonic (_("_Interactivity")); int_expander = gtk_expander_new (NULL); gtk_expander_set_label_widget (GTK_EXPANDER (int_expander),int_label); - gtk_object_set_data (GTK_OBJECT (spw), "interactivity", int_expander); + g_object_set_data (G_OBJECT (spw), "interactivity", int_expander); gtk_box_pack_start (GTK_BOX (vb), int_expander, FALSE, FALSE, 0); @@ -275,7 +275,7 @@ sp_item_widget_setup ( SPWidget *spw, Inkscape::Selection *selection ) { g_assert (selection != NULL); - if (gtk_object_get_data (GTK_OBJECT (spw), "blocked")) + if (g_object_get_data(G_OBJECT (spw), "blocked")) return; if (!selection->singleItem()) { @@ -285,51 +285,51 @@ sp_item_widget_setup ( SPWidget *spw, Inkscape::Selection *selection ) gtk_widget_set_sensitive (GTK_WIDGET (spw), TRUE); } - gtk_object_set_data (GTK_OBJECT (spw), "blocked", GUINT_TO_POINTER (TRUE)); + g_object_set_data (G_OBJECT (spw), "blocked", GUINT_TO_POINTER (TRUE)); SPItem *item = selection->singleItem(); /* Sensitive */ - GtkWidget *w = GTK_WIDGET(gtk_object_get_data (GTK_OBJECT (spw), "sensitive")); + GtkWidget *w = GTK_WIDGET(g_object_get_data(G_OBJECT (spw), "sensitive")); gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (w), item->isLocked()); /* Hidden */ - w = GTK_WIDGET(gtk_object_get_data (GTK_OBJECT (spw), "hidden")); + w = GTK_WIDGET(g_object_get_data(G_OBJECT (spw), "hidden")); gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(w), item->isExplicitlyHidden()); if (item->cloned) { /* ID */ - w = GTK_WIDGET(gtk_object_get_data (GTK_OBJECT (spw), "id")); + w = GTK_WIDGET(g_object_get_data(G_OBJECT (spw), "id")); gtk_entry_set_text (GTK_ENTRY (w), ""); gtk_widget_set_sensitive (w, FALSE); - w = GTK_WIDGET(gtk_object_get_data (GTK_OBJECT (spw), "id_label")); + w = GTK_WIDGET(g_object_get_data(G_OBJECT (spw), "id_label")); gtk_label_set_text (GTK_LABEL (w), _("Ref")); /* Label */ - w = GTK_WIDGET(gtk_object_get_data (GTK_OBJECT (spw), "label")); + w = GTK_WIDGET(g_object_get_data(G_OBJECT (spw), "label")); gtk_entry_set_text (GTK_ENTRY (w), ""); gtk_widget_set_sensitive (w, FALSE); - w = GTK_WIDGET(gtk_object_get_data (GTK_OBJECT (spw), "label_label")); + w = GTK_WIDGET(g_object_get_data(G_OBJECT (spw), "label_label")); gtk_label_set_text (GTK_LABEL (w), _("Ref")); } else { SPObject *obj = (SPObject*)item; /* ID */ - w = GTK_WIDGET(gtk_object_get_data (GTK_OBJECT (spw), "id")); + w = GTK_WIDGET(g_object_get_data(G_OBJECT (spw), "id")); gtk_entry_set_text (GTK_ENTRY (w), obj->getId()); gtk_widget_set_sensitive (w, TRUE); - w = GTK_WIDGET(gtk_object_get_data (GTK_OBJECT (spw), "id_label")); + w = GTK_WIDGET(g_object_get_data(G_OBJECT (spw), "id_label")); gtk_label_set_markup_with_mnemonic (GTK_LABEL (w), _("_ID:")); /* Label */ - w = GTK_WIDGET(gtk_object_get_data (GTK_OBJECT (spw), "label")); + w = GTK_WIDGET(g_object_get_data(G_OBJECT (spw), "label")); gtk_entry_set_text (GTK_ENTRY (w), obj->defaultLabel()); gtk_widget_set_sensitive (w, TRUE); /* Title */ - w = GTK_WIDGET(gtk_object_get_data(GTK_OBJECT(spw), "title")); + w = GTK_WIDGET(g_object_get_data(G_OBJECT(spw), "title")); gchar *title = obj->title(); if (title) { gtk_entry_set_text(GTK_ENTRY(w), title); @@ -339,7 +339,7 @@ sp_item_widget_setup ( SPWidget *spw, Inkscape::Selection *selection ) gtk_widget_set_sensitive(w, TRUE); /* Description */ - w = GTK_WIDGET(gtk_object_get_data(GTK_OBJECT(spw), "desc")); + w = GTK_WIDGET(g_object_get_data(G_OBJECT(spw), "desc")); GtkTextBuffer *buf = gtk_text_view_get_buffer(GTK_TEXT_VIEW(w)); gchar *desc = obj->desc(); if (desc) { @@ -348,12 +348,12 @@ sp_item_widget_setup ( SPWidget *spw, Inkscape::Selection *selection ) } else { gtk_text_buffer_set_text(buf, "", 0); } - w = GTK_WIDGET(gtk_object_get_data(GTK_OBJECT(spw), "desc_frame")); + w = GTK_WIDGET(g_object_get_data(G_OBJECT(spw), "desc_frame")); gtk_widget_set_sensitive(w, TRUE); - w = GTK_WIDGET(gtk_object_get_data(GTK_OBJECT(spw), "interactivity")); + w = GTK_WIDGET(g_object_get_data(G_OBJECT(spw), "interactivity")); - GtkWidget* int_table = GTK_WIDGET(gtk_object_get_data(GTK_OBJECT(spw), "interactivity_table")); + GtkWidget* int_table = GTK_WIDGET(g_object_get_data(G_OBJECT(spw), "interactivity_table")); if (int_table){ gtk_container_remove(GTK_CONTAINER(w), int_table); } @@ -362,13 +362,13 @@ sp_item_widget_setup ( SPWidget *spw, Inkscape::Selection *selection ) int_table = sp_attribute_table_new (obj, 10, int_labels, int_labels); gtk_widget_show_all (int_table); - gtk_object_set_data(GTK_OBJECT(spw), "interactivity_table", int_table); + g_object_set_data(G_OBJECT(spw), "interactivity_table", int_table); gtk_container_add (GTK_CONTAINER (w), int_table); } - gtk_object_set_data (GTK_OBJECT (spw), "blocked", GUINT_TO_POINTER (FALSE)); + g_object_set_data (G_OBJECT (spw), "blocked", GUINT_TO_POINTER (FALSE)); } // end of sp_item_widget_setup() @@ -378,57 +378,57 @@ sp_item_widget_setup ( SPWidget *spw, Inkscape::Selection *selection ) static void sp_item_widget_sensitivity_toggled (GtkWidget *widget, SPWidget *spw) { - if (gtk_object_get_data (GTK_OBJECT (spw), "blocked")) + if (g_object_get_data(G_OBJECT (spw), "blocked")) return; SPItem *item = sp_desktop_selection(SP_ACTIVE_DESKTOP)->singleItem(); g_return_if_fail (item != NULL); - gtk_object_set_data (GTK_OBJECT (spw), "blocked", GUINT_TO_POINTER (TRUE)); + g_object_set_data (G_OBJECT (spw), "blocked", GUINT_TO_POINTER (TRUE)); item->setLocked(gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (widget))); DocumentUndo::done(SP_ACTIVE_DOCUMENT, SP_VERB_DIALOG_ITEM, gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(widget))? _("Lock object") : _("Unlock object")); - gtk_object_set_data (GTK_OBJECT (spw), "blocked", GUINT_TO_POINTER (FALSE)); + g_object_set_data (G_OBJECT (spw), "blocked", GUINT_TO_POINTER (FALSE)); } void sp_item_widget_hidden_toggled(GtkWidget *widget, SPWidget *spw) { - if (gtk_object_get_data (GTK_OBJECT (spw), "blocked")) + if (g_object_get_data(G_OBJECT (spw), "blocked")) return; SPItem *item = sp_desktop_selection(SP_ACTIVE_DESKTOP)->singleItem(); g_return_if_fail (item != NULL); - gtk_object_set_data (GTK_OBJECT (spw), "blocked", GUINT_TO_POINTER (TRUE)); + g_object_set_data (G_OBJECT (spw), "blocked", GUINT_TO_POINTER (TRUE)); item->setExplicitlyHidden(gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(widget))); DocumentUndo::done(SP_ACTIVE_DOCUMENT, SP_VERB_DIALOG_ITEM, gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(widget))? _("Hide object") : _("Unhide object")); - gtk_object_set_data (GTK_OBJECT (spw), "blocked", GUINT_TO_POINTER (FALSE)); + g_object_set_data (G_OBJECT (spw), "blocked", GUINT_TO_POINTER (FALSE)); } static void sp_item_widget_label_changed( GtkWidget */*widget*/, SPWidget *spw ) { - if (gtk_object_get_data (GTK_OBJECT (spw), "blocked")) + if (g_object_get_data(G_OBJECT (spw), "blocked")) return; SPItem *item = sp_desktop_selection(SP_ACTIVE_DESKTOP)->singleItem(); g_return_if_fail (item != NULL); - gtk_object_set_data (GTK_OBJECT (spw), "blocked", GUINT_TO_POINTER (TRUE)); + g_object_set_data (G_OBJECT (spw), "blocked", GUINT_TO_POINTER (TRUE)); /* Retrieve the label widget for the object's id */ - GtkWidget *id_entry = GTK_WIDGET(gtk_object_get_data (GTK_OBJECT (spw), "id")); + GtkWidget *id_entry = GTK_WIDGET(g_object_get_data(G_OBJECT (spw), "id")); gchar *id = (gchar *) gtk_entry_get_text (GTK_ENTRY (id_entry)); g_strcanon (id, "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_.:", '_'); - GtkWidget *id_label = GTK_WIDGET(gtk_object_get_data (GTK_OBJECT (spw), "id_label")); + GtkWidget *id_label = GTK_WIDGET(g_object_get_data(G_OBJECT (spw), "id_label")); if (!strcmp (id, item->getId())) { gtk_label_set_markup_with_mnemonic (GTK_LABEL (id_label), _("_ID:")); } else if (!*id || !isalnum (*id)) { @@ -445,7 +445,7 @@ sp_item_widget_label_changed( GtkWidget */*widget*/, SPWidget *spw ) } /* Retrieve the label widget for the object's label */ - GtkWidget *label_entry = GTK_WIDGET(gtk_object_get_data (GTK_OBJECT (spw), "label")); + GtkWidget *label_entry = GTK_WIDGET(g_object_get_data(G_OBJECT (spw), "label")); gchar *label = (gchar *)gtk_entry_get_text (GTK_ENTRY (label_entry)); g_assert(label != NULL); @@ -460,14 +460,14 @@ sp_item_widget_label_changed( GtkWidget */*widget*/, SPWidget *spw ) } /* Retrieve the title */ - GtkWidget *w = GTK_WIDGET(gtk_object_get_data(GTK_OBJECT(spw), "title")); + GtkWidget *w = GTK_WIDGET(g_object_get_data(G_OBJECT(spw), "title")); gchar *title = (gchar *)gtk_entry_get_text(GTK_ENTRY (w)); if (obj->setTitle(title)) DocumentUndo::done(SP_ACTIVE_DOCUMENT, SP_VERB_DIALOG_ITEM, _("Set object title")); /* Retrieve the description */ - GtkTextView *tv = GTK_TEXT_VIEW(gtk_object_get_data(GTK_OBJECT(spw), "desc")); + GtkTextView *tv = GTK_TEXT_VIEW(g_object_get_data(G_OBJECT(spw), "desc")); GtkTextBuffer *buf = gtk_text_view_get_buffer(tv); GtkTextIter start, end; gtk_text_buffer_get_bounds(buf, &start, &end); @@ -477,7 +477,7 @@ sp_item_widget_label_changed( GtkWidget */*widget*/, SPWidget *spw ) _("Set object description")); g_free(desc); - gtk_object_set_data (GTK_OBJECT (spw), "blocked", GUINT_TO_POINTER (FALSE)); + g_object_set_data (G_OBJECT (spw), "blocked", GUINT_TO_POINTER (FALSE)); } // end of sp_item_widget_label_changed() diff --git a/src/dialogs/spellcheck.cpp b/src/dialogs/spellcheck.cpp index 1d475a5c3..5de0bc6fe 100644 --- a/src/dialogs/spellcheck.cpp +++ b/src/dialogs/spellcheck.cpp @@ -191,7 +191,7 @@ sp_spellcheck_new_button (GtkWidget *dlg, GtkWidget *hb, const gchar *label, con gtk_widget_set_tooltip_text (b, tip); gtk_box_pack_start (GTK_BOX (hb), b, TRUE, TRUE, 0); g_signal_connect ( G_OBJECT (b), "clicked", G_CALLBACK (function), dlg ); - gtk_object_set_data (GTK_OBJECT (dlg), cookie, b); + g_object_set_data (G_OBJECT (dlg), cookie, b); gtk_widget_show (b); } @@ -287,7 +287,7 @@ SPItem *spellcheck_get_text (SPObject *root) void spellcheck_sensitive (const gchar *cookie, gboolean gray) { - GtkWidget *l = GTK_WIDGET(gtk_object_get_data (GTK_OBJECT (dlg), cookie)); + GtkWidget *l = GTK_WIDGET(g_object_get_data(G_OBJECT (dlg), cookie)); gtk_widget_set_sensitive(l, gray); } @@ -445,7 +445,7 @@ spellcheck_finished () spellcheck_sensitive("b_start", TRUE); { - GtkWidget *l = GTK_WIDGET(gtk_object_get_data (GTK_OBJECT (dlg), "banner")); + GtkWidget *l = GTK_WIDGET(g_object_get_data(G_OBJECT (dlg), "banner")); gchar *label; if (_stops) label = g_strdup_printf(_("<b>Finished</b>, <b>%d</b> words added to dictionary"), _adds); @@ -557,7 +557,7 @@ spellcheck_next_word() // display it in window { - GtkWidget *l = GTK_WIDGET(gtk_object_get_data (GTK_OBJECT (dlg), "banner")); + GtkWidget *l = GTK_WIDGET(g_object_get_data(G_OBJECT (dlg), "banner")); Glib::ustring langs = _lang; if (_lang2) langs = langs + ", " + _lang2; @@ -641,7 +641,7 @@ spellcheck_next_word() // get suggestions { GtkTreeView *tree_view = - GTK_TREE_VIEW(gtk_object_get_data (GTK_OBJECT (dlg), "suggestions")); + GTK_TREE_VIEW(g_object_get_data(G_OBJECT (dlg), "suggestions")); GtkListStore *model = gtk_list_store_new (1, G_TYPE_STRING); gtk_tree_view_set_model (GTK_TREE_VIEW (tree_view), GTK_TREE_MODEL (model)); @@ -714,7 +714,7 @@ spellcheck_delete_last_rect () void do_spellcheck () { - GtkWidget *l = GTK_WIDGET(gtk_object_get_data (GTK_OBJECT (dlg), "banner")); + GtkWidget *l = GTK_WIDGET(g_object_get_data(G_OBJECT (dlg), "banner")); gtk_label_set_markup (GTK_LABEL(l), _("<i>Checking...</i>")); gtk_widget_queue_draw(GTK_WIDGET(dlg)); gdk_window_process_updates(GTK_WIDGET(dlg)->window, TRUE); @@ -770,7 +770,7 @@ sp_spellcheck_accept (GObject *, GObject *dlg) { // insert chosen suggestion GtkTreeView *tv = - GTK_TREE_VIEW(gtk_object_get_data (GTK_OBJECT (dlg), "suggestions")); + GTK_TREE_VIEW(g_object_get_data(G_OBJECT (dlg), "suggestions")); GtkTreeSelection *ts = gtk_tree_view_get_selection(tv); GtkTreeModel *model = 0; GtkTreeIter iter; @@ -820,7 +820,7 @@ sp_spellcheck_add (GObject */*obj*/, GObject */*dlg*/) { _adds++; GtkComboBox *cbox = - GTK_COMBO_BOX(gtk_object_get_data (GTK_OBJECT (dlg), "addto_langs")); + GTK_COMBO_BOX(g_object_get_data(G_OBJECT (dlg), "addto_langs")); gint num = gtk_combo_box_get_active(cbox); switch (num) { case 0: @@ -935,7 +935,7 @@ sp_spellcheck_dialog (void) { GtkWidget *hb = gtk_hbox_new (FALSE, 0); GtkWidget *l = gtk_label_new (NULL); - gtk_object_set_data (GTK_OBJECT (dlg), "banner", l); + g_object_set_data (G_OBJECT (dlg), "banner", l); gtk_box_pack_start (GTK_BOX (hb), l, FALSE, FALSE, 0); gtk_box_pack_start (GTK_BOX (vb), hb, FALSE, FALSE, 0); } @@ -948,7 +948,7 @@ sp_spellcheck_dialog (void) GtkListStore *model = gtk_list_store_new (1, G_TYPE_STRING); GtkWidget *tree_view = gtk_tree_view_new (); - gtk_object_set_data (GTK_OBJECT (dlg), "suggestions", tree_view); + g_object_set_data (G_OBJECT (dlg), "suggestions", tree_view); gtk_scrolled_window_add_with_viewport (GTK_SCROLLED_WINDOW (scrolled_window), tree_view); gtk_tree_view_set_model (GTK_TREE_VIEW (tree_view), GTK_TREE_MODEL (model)); diff --git a/src/dialogs/text-edit.cpp b/src/dialogs/text-edit.cpp index 76ad3bcc3..16166d97e 100644 --- a/src/dialogs/text-edit.cpp +++ b/src/dialogs/text-edit.cpp @@ -186,8 +186,6 @@ sp_text_edit_dialog (void) g_signal_connect ( G_OBJECT (INKSCAPE), "dialogs_hide", G_CALLBACK (sp_dialog_hide), dlg ); g_signal_connect ( G_OBJECT (INKSCAPE), "dialogs_unhide", G_CALLBACK (sp_dialog_unhide), dlg ); - gtk_window_set_policy (GTK_WINDOW (dlg), TRUE, TRUE, FALSE); - // box containing the notebook and the bottom buttons GtkWidget *mainvb = gtk_vbox_new (FALSE, 0); gtk_container_add (GTK_CONTAINER (dlg), mainvb); @@ -251,7 +249,7 @@ sp_text_edit_dialog (void) { // TODO - replace with Inkscape-specific call GtkWidget *px = gtk_image_new_from_stock ( GTK_STOCK_JUSTIFY_CENTER, GTK_ICON_SIZE_LARGE_TOOLBAR ); - GtkWidget *b = gtk_radio_button_new (gtk_radio_button_group (GTK_RADIO_BUTTON (group))); + GtkWidget *b = gtk_radio_button_new (gtk_radio_button_get_group (GTK_RADIO_BUTTON (group))); /* TRANSLATORS: `Center' here is a verb. */ gtk_widget_set_tooltip_text (b, _("Center lines")); gtk_button_set_relief (GTK_BUTTON (b), GTK_RELIEF_NONE); @@ -266,7 +264,7 @@ sp_text_edit_dialog (void) { // TODO - replace with Inkscape-specific call GtkWidget *px = gtk_image_new_from_stock ( GTK_STOCK_JUSTIFY_RIGHT, GTK_ICON_SIZE_LARGE_TOOLBAR ); - GtkWidget *b = gtk_radio_button_new (gtk_radio_button_group (GTK_RADIO_BUTTON (group))); + GtkWidget *b = gtk_radio_button_new (gtk_radio_button_get_group (GTK_RADIO_BUTTON (group))); gtk_widget_set_tooltip_text (b, _("Align lines right")); gtk_button_set_relief (GTK_BUTTON (b), GTK_RELIEF_NONE); g_signal_connect ( G_OBJECT (b), "toggled", G_CALLBACK (sp_text_edit_dialog_any_toggled), dlg ); @@ -280,7 +278,7 @@ sp_text_edit_dialog (void) { // TODO - replace with Inkscape-specific call GtkWidget *px = gtk_image_new_from_stock ( GTK_STOCK_JUSTIFY_FILL, GTK_ICON_SIZE_LARGE_TOOLBAR ); - GtkWidget *b = gtk_radio_button_new (gtk_radio_button_group (GTK_RADIO_BUTTON (group))); + GtkWidget *b = gtk_radio_button_new (gtk_radio_button_get_group (GTK_RADIO_BUTTON (group))); gtk_widget_set_tooltip_text (b, _("Justify lines")); gtk_button_set_relief (GTK_BUTTON (b), GTK_RELIEF_NONE); g_signal_connect ( G_OBJECT (b), "toggled", G_CALLBACK (sp_text_edit_dialog_any_toggled), dlg ); @@ -316,7 +314,7 @@ sp_text_edit_dialog (void) { GtkWidget *px = sp_icon_new( Inkscape::ICON_SIZE_LARGE_TOOLBAR, INKSCAPE_ICON_FORMAT_TEXT_DIRECTION_VERTICAL ); - GtkWidget *b = gtk_radio_button_new (gtk_radio_button_group (GTK_RADIO_BUTTON (group))); + GtkWidget *b = gtk_radio_button_new (gtk_radio_button_get_group (GTK_RADIO_BUTTON (group))); gtk_widget_set_tooltip_text (b, _("Vertical text")); gtk_button_set_relief (GTK_BUTTON (b), GTK_RELIEF_NONE); g_signal_connect ( G_OBJECT (b), "toggled", G_CALLBACK (sp_text_edit_dialog_any_toggled), dlg ); @@ -348,42 +346,24 @@ sp_text_edit_dialog (void) #if GTK_CHECK_VERSION(2, 24,0) GtkWidget *c = gtk_combo_box_text_new_with_entry (); #else - GtkWidget *c = gtk_combo_new (); - gtk_combo_set_value_in_list ((GtkCombo *) c, FALSE, FALSE); - gtk_combo_set_use_arrows ((GtkCombo *) c, TRUE); - gtk_combo_set_use_arrows_always ((GtkCombo *) c, TRUE); + GtkWidget *c = gtk_combo_box_entry_new_text (); #endif gtk_widget_set_size_request (c, 90, -1); + { /* Setup strings */ + for (int i = 0; spacings[i]; i++) { //This would introduce dependency on gtk version 2.24 which is currently not available in // Trisquel GNU/Linux 4.5.1 (released on May 25th, 2011) //This conditional and its #else block can be deleted in the future. #if GTK_CHECK_VERSION(2, 24,0) - { /* Setup strings */ - for (int i = 0; spacings[i]; i++) { gtk_combo_box_text_append_text((GtkComboBoxText *) c, spacings[i]); - } - } #else - { /* Setup strings */ - GList *sl = NULL; - for (int i = 0; spacings[i]; i++) { - sl = g_list_prepend (sl, (void *) spacings[i]); + gtk_combo_box_append_text((GtkComboBox *) c, spacings[i]); +#endif } - sl = g_list_reverse (sl); - gtk_combo_set_popdown_strings ((GtkCombo *) c, sl); - g_list_free (sl); } -#endif -//This would introduce dependency on gtk version 2.24 which is currently not available in -// Trisquel GNU/Linux 4.5.1 (released on May 25th, 2011) -//This conditional and its #else block can be deleted in the future. -#if GTK_CHECK_VERSION(2, 24,0) g_signal_connect ( (GObject *) c, -#else - g_signal_connect ( (GObject *) ((GtkCombo *) c)->entry, -#endif "changed", (GCallback) sp_text_edit_dialog_line_spacing_changed, dlg ); @@ -470,11 +450,11 @@ sp_text_edit_dialog (void) { GtkWidget *b = gtk_button_new_from_stock (GTK_STOCK_APPLY); - gtk_widget_set_can_default (b, TRUE); - gtk_widget_grab_default (b); g_signal_connect ( G_OBJECT (b), "clicked", G_CALLBACK (sp_text_edit_dialog_apply), dlg ); gtk_box_pack_end ( GTK_BOX (hb), b, FALSE, FALSE, 0 ); + gtk_widget_set_can_default (b, TRUE); + gtk_widget_grab_default (b); g_object_set_data (G_OBJECT (dlg), "apply", b); } @@ -642,7 +622,7 @@ sp_get_text_dialog_style () #if GTK_CHECK_VERSION(2, 24,0) const gchar *sstr = gtk_combo_box_text_get_active_text ((GtkComboBoxText *) combo); #else - const char *sstr = gtk_entry_get_text ((GtkEntry *) ((GtkCombo *) (combo))->entry); + const gchar *sstr = gtk_entry_get_text ((GtkEntry *) (gtk_bin_get_child (GTK_BIN (combo)))); #endif sp_repr_css_set_property (css, "line-height", sstr); @@ -768,9 +748,6 @@ sp_text_edit_dialog_read_selection ( GtkWidget *dlg, str = sp_te_get_string_multiline (text); if (str) { - int pos; - pos = 0; - if (items == 1) { gtk_text_buffer_set_text (tb, str, strlen (str)); gtk_text_buffer_set_modified (tb, FALSE); @@ -855,14 +832,7 @@ sp_text_edit_dialog_read_selection ( GtkWidget *dlg, else height = query->line_height.computed; gchar *sstr = g_strdup_printf ("%d%%", (int) floor(height * 100 + 0.5)); -//This would introduce dependency on gtk version 2.24 which is currently not available in -// Trisquel GNU/Linux 4.5.1 (released on May 25th, 2011) -//This conditional and its #else block can be deleted in the future. -#if GTK_CHECK_VERSION(2, 24,0) gtk_entry_set_text ((GtkEntry *) gtk_bin_get_child ((GtkBin *) (combo)), sstr); -#else - gtk_entry_set_text ((GtkEntry *) ((GtkCombo *) (combo))->entry, sstr); -#endif g_free(sstr); sp_style_unref(query); diff --git a/src/dialogs/xml-tree.cpp b/src/dialogs/xml-tree.cpp index c50c07e80..1a003c9c7 100644 --- a/src/dialogs/xml-tree.cpp +++ b/src/dialogs/xml-tree.cpp @@ -275,9 +275,6 @@ void sp_xml_tree_dialog() g_signal_connect_after( G_OBJECT(tree), "tree_move", G_CALLBACK(after_tree_move), NULL); - /* TODO: replace gtk_signal_connect_while_alive() with something - * else... - */ toolbar = gtk_toolbar_new(); gtk_toolbar_set_style(GTK_TOOLBAR(toolbar), GTK_TOOLBAR_ICONS); gtk_container_set_border_width(GTK_CONTAINER(toolbar), 0); @@ -291,17 +288,17 @@ void sp_xml_tree_dialog() G_CALLBACK(cmd_new_element_node), NULL); - gtk_signal_connect_while_alive( GTK_OBJECT(tree), + g_signal_connect_object (G_OBJECT(tree), "tree_select_row", G_CALLBACK(on_tree_select_row_enable_if_element), button, - GTK_OBJECT(button)); + (GConnectFlags)0); - gtk_signal_connect_while_alive(GTK_OBJECT(tree), + g_signal_connect_object (G_OBJECT(tree), "tree_unselect_row", G_CALLBACK(on_tree_unselect_row_disable), button, - GTK_OBJECT(button)); + (GConnectFlags)0); gtk_widget_set_sensitive(GTK_WIDGET(button), FALSE); @@ -312,17 +309,17 @@ void sp_xml_tree_dialog() G_CALLBACK(cmd_new_text_node), NULL); - gtk_signal_connect_while_alive(GTK_OBJECT(tree), + g_signal_connect_object(G_OBJECT(tree), "tree_select_row", G_CALLBACK(on_tree_select_row_enable_if_element), button, - GTK_OBJECT(button)); + (GConnectFlags)0); - gtk_signal_connect_while_alive(GTK_OBJECT(tree), + g_signal_connect_object(G_OBJECT(tree), "tree_unselect_row", G_CALLBACK(on_tree_unselect_row_disable), button, - GTK_OBJECT(button)); + (GConnectFlags)0); gtk_widget_set_sensitive(GTK_WIDGET(button), FALSE); @@ -333,15 +330,16 @@ void sp_xml_tree_dialog() G_CALLBACK(cmd_duplicate_node), NULL); - gtk_signal_connect_while_alive(GTK_OBJECT(tree), + g_signal_connect_object(G_OBJECT(tree), "tree_select_row", G_CALLBACK(on_tree_select_row_enable_if_mutable), button, - GTK_OBJECT(button)); + (GConnectFlags)0); - gtk_signal_connect_while_alive(GTK_OBJECT(tree), "tree_unselect_row", + g_signal_connect_object(G_OBJECT(tree), "tree_unselect_row", G_CALLBACK(on_tree_unselect_row_disable), - button, GTK_OBJECT(button)); + button, + (GConnectFlags)0); gtk_widget_set_sensitive(GTK_WIDGET(button), FALSE); @@ -353,12 +351,14 @@ void sp_xml_tree_dialog() INKSCAPE_ICON_XML_NODE_DELETE ), G_CALLBACK(cmd_delete_node), NULL ); - gtk_signal_connect_while_alive(GTK_OBJECT(tree), "tree_select_row", + g_signal_connect_object(G_OBJECT(tree), "tree_select_row", G_CALLBACK(on_tree_select_row_enable_if_mutable), - button, GTK_OBJECT(button)); - gtk_signal_connect_while_alive(GTK_OBJECT(tree), "tree_unselect_row", + button, + (GConnectFlags)0); + g_signal_connect_object(G_OBJECT(tree), "tree_unselect_row", G_CALLBACK(on_tree_unselect_row_disable), - button, GTK_OBJECT(button)); + button, + (GConnectFlags)0); gtk_widget_set_sensitive(GTK_WIDGET(button), FALSE); gtk_toolbar_append_space(GTK_TOOLBAR(toolbar)); @@ -368,13 +368,15 @@ void sp_xml_tree_dialog() gtk_arrow_new(GTK_ARROW_LEFT, GTK_SHADOW_IN), G_CALLBACK(cmd_unindent_node), NULL); - gtk_signal_connect_while_alive(GTK_OBJECT(tree), "tree_select_row", + g_signal_connect_object(G_OBJECT(tree), "tree_select_row", G_CALLBACK(on_tree_select_row_enable_if_has_grandparent), - button, GTK_OBJECT(button)); + button, + (GConnectFlags)0); - gtk_signal_connect_while_alive(GTK_OBJECT(tree), "tree_unselect_row", + g_signal_connect_object(G_OBJECT(tree), "tree_unselect_row", G_CALLBACK(on_tree_unselect_row_disable), - button, GTK_OBJECT(button)); + button, + (GConnectFlags)0); gtk_widget_set_sensitive(GTK_WIDGET(button), FALSE); @@ -382,36 +384,42 @@ void sp_xml_tree_dialog() _("Indent node"), NULL, gtk_arrow_new(GTK_ARROW_RIGHT, GTK_SHADOW_IN), G_CALLBACK(cmd_indent_node), NULL); - gtk_signal_connect_while_alive(GTK_OBJECT(tree), "tree_select_row", + g_signal_connect_object(G_OBJECT(tree), "tree_select_row", G_CALLBACK(on_tree_select_row_enable_if_indentable), - button, GTK_OBJECT(button)); - gtk_signal_connect_while_alive(GTK_OBJECT(tree), "tree_unselect_row", + button, + (GConnectFlags)0); + g_signal_connect_object(G_OBJECT(tree), "tree_unselect_row", (GCallback) on_tree_unselect_row_disable, - button, GTK_OBJECT(button)); + button, + (GConnectFlags)0); gtk_widget_set_sensitive(GTK_WIDGET(button), FALSE); button = gtk_toolbar_append_item(GTK_TOOLBAR(toolbar), "^", _("Raise node"), NULL, gtk_arrow_new(GTK_ARROW_UP, GTK_SHADOW_IN), G_CALLBACK(cmd_raise_node), NULL); - gtk_signal_connect_while_alive(GTK_OBJECT(tree), "tree_select_row", + g_signal_connect_object(G_OBJECT(tree), "tree_select_row", G_CALLBACK(on_tree_select_row_enable_if_not_first_child), - button, GTK_OBJECT(button)); - gtk_signal_connect_while_alive(GTK_OBJECT(tree), "tree_unselect_row", + button, + (GConnectFlags)0); + g_signal_connect_object(G_OBJECT(tree), "tree_unselect_row", G_CALLBACK(on_tree_unselect_row_disable), - button, GTK_OBJECT(button)); + button, + (GConnectFlags)0); gtk_widget_set_sensitive(GTK_WIDGET(button), FALSE); button = gtk_toolbar_append_item(GTK_TOOLBAR(toolbar), "v", _("Lower node"), NULL, gtk_arrow_new(GTK_ARROW_DOWN, GTK_SHADOW_IN), G_CALLBACK(cmd_lower_node), NULL); - gtk_signal_connect_while_alive(GTK_OBJECT(tree), "tree_select_row", + g_signal_connect_object(G_OBJECT(tree), "tree_select_row", G_CALLBACK(on_tree_select_row_enable_if_not_last_child), - button, GTK_OBJECT(button)); - gtk_signal_connect_while_alive(GTK_OBJECT(tree), "tree_unselect_row", + button, + (GConnectFlags)0); + g_signal_connect_object(G_OBJECT(tree), "tree_unselect_row", G_CALLBACK(on_tree_unselect_row_disable), - button, GTK_OBJECT(button)); + button, + (GConnectFlags)0); gtk_widget_set_sensitive(GTK_WIDGET(button), FALSE); gtk_box_pack_start(GTK_BOX(box), toolbar, FALSE, TRUE, 0); @@ -453,17 +461,17 @@ void sp_xml_tree_dialog() INKSCAPE_ICON_XML_ATTRIBUTE_DELETE ), (GCallback) cmd_delete_attr, NULL); - gtk_signal_connect_while_alive(GTK_OBJECT(attributes), "select_row", + g_signal_connect_object(G_OBJECT(attributes), "select_row", (GCallback) on_attr_select_row_enable, button, - GTK_OBJECT(button)); + (GConnectFlags)0); - gtk_signal_connect_while_alive(GTK_OBJECT(attributes), "unselect_row", + g_signal_connect_object(G_OBJECT(attributes), "unselect_row", (GCallback) on_attr_unselect_row_disable, button, - GTK_OBJECT(button)); + (GConnectFlags)0); - gtk_signal_connect_while_alive(GTK_OBJECT(tree), "tree_unselect_row", + g_signal_connect_object(G_OBJECT(tree), "tree_unselect_row", (GCallback) on_tree_unselect_row_disable, button, - GTK_OBJECT(button)); + (GConnectFlags)0); gtk_widget_set_sensitive(GTK_WIDGET(button), FALSE); @@ -573,23 +581,27 @@ void sp_xml_tree_dialog() gtk_widget_show_all(GTK_WIDGET(dlg)); - gtk_signal_connect_while_alive(GTK_OBJECT(tree), "tree_select_row", + g_signal_connect_object(G_OBJECT(tree), "tree_select_row", (GCallback) on_tree_select_row_show_if_element, - attr_container, GTK_OBJECT(attr_container)); + attr_container, + (GConnectFlags)0); - gtk_signal_connect_while_alive(GTK_OBJECT(tree), "tree_unselect_row", + g_signal_connect_object(G_OBJECT(tree), "tree_unselect_row", (GCallback) on_tree_unselect_row_hide, - attr_container, GTK_OBJECT(attr_container)); + attr_container, + (GConnectFlags)0); gtk_widget_hide(attr_container); - gtk_signal_connect_while_alive(GTK_OBJECT(tree), "tree_select_row", + g_signal_connect_object(G_OBJECT(tree), "tree_select_row", (GCallback) on_tree_select_row_show_if_text, - text_container, GTK_OBJECT(text_container)); + text_container, + (GConnectFlags)0); - gtk_signal_connect_while_alive(GTK_OBJECT(tree), "tree_unselect_row", + g_signal_connect_object(G_OBJECT(tree), "tree_unselect_row", (GCallback) on_tree_unselect_row_hide, - text_container, GTK_OBJECT(text_container)); + text_container, + (GConnectFlags)0); gtk_widget_hide(text_container); @@ -1317,7 +1329,7 @@ void cmd_new_element_node(GtkObject */*object*/, gpointer /*data*/) window = sp_window_new(NULL, TRUE); gtk_container_set_border_width(GTK_CONTAINER(window), 4); gtk_window_set_title(GTK_WINDOW(window), _("New element node...")); - gtk_window_set_policy(GTK_WINDOW(window), FALSE, FALSE, TRUE); + gtk_window_set_resizable(GTK_WINDOW(window), FALSE); gtk_window_set_position(GTK_WINDOW(window), GTK_WIN_POS_CENTER); gtk_window_set_transient_for(GTK_WINDOW(window), GTK_WINDOW(dlg)); gtk_window_set_modal(GTK_WINDOW(window), TRUE); diff --git a/src/display/canvas-arena.cpp b/src/display/canvas-arena.cpp index 72062ce99..6930e4d7c 100644 --- a/src/display/canvas-arena.cpp +++ b/src/display/canvas-arena.cpp @@ -48,20 +48,22 @@ NRArenaEventVector carenaev = { static SPCanvasItemClass *parent_class; static guint signals[LAST_SIGNAL] = {0}; -GtkType +GType sp_canvas_arena_get_type (void) { - static GtkType type = 0; + static GType type = 0; if (!type) { - GtkTypeInfo info = { - (gchar *)"SPCanvasArena", - sizeof (SPCanvasArena), + GTypeInfo info = { sizeof (SPCanvasArenaClass), - (GtkClassInitFunc) sp_canvas_arena_class_init, - (GtkObjectInitFunc) sp_canvas_arena_init, - NULL, NULL, NULL - }; - type = gtk_type_unique (SP_TYPE_CANVAS_ITEM, &info); + NULL, NULL, + (GClassInitFunc) sp_canvas_arena_class_init, + NULL, NULL, + sizeof (SPCanvasArena), + 0, + (GInstanceInitFunc) sp_canvas_arena_init, + NULL + }; + type = g_type_register_static (SP_TYPE_CANVAS_ITEM, "SPCanvasArena", &info, (GTypeFlags)0); } return type; } @@ -75,7 +77,7 @@ sp_canvas_arena_class_init (SPCanvasArenaClass *klass) object_class = (GtkObjectClass *) klass; item_class = (SPCanvasItemClass *) klass; - parent_class = (SPCanvasItemClass*)gtk_type_class (SP_TYPE_CANVAS_ITEM); + parent_class = (SPCanvasItemClass*)g_type_class_peek_parent (klass); signals[ARENA_EVENT] = g_signal_new ("arena_event", G_TYPE_FROM_CLASS(object_class), diff --git a/src/display/canvas-arena.h b/src/display/canvas-arena.h index ef065a03b..4cfeccb5a 100644 --- a/src/display/canvas-arena.h +++ b/src/display/canvas-arena.h @@ -53,7 +53,7 @@ struct _SPCanvasArenaClass { gint (* arena_event) (SPCanvasArena *carena, NRArenaItem *item, GdkEvent *event); }; -GtkType sp_canvas_arena_get_type (void); +GType sp_canvas_arena_get_type (void); void sp_canvas_arena_set_pick_delta (SPCanvasArena *ca, gdouble delta); void sp_canvas_arena_set_sticky (SPCanvasArena *ca, gboolean sticky); diff --git a/src/display/canvas-axonomgrid.cpp b/src/display/canvas-axonomgrid.cpp index daad2d515..ec2d35f69 100644 --- a/src/display/canvas-axonomgrid.cpp +++ b/src/display/canvas-axonomgrid.cpp @@ -770,7 +770,7 @@ void CanvasAxonomGridSnapper::_addSnappedPoint(SnappedConstraints &sc, Geom::Poi bool CanvasAxonomGridSnapper::ThisSnapperMightSnap() const { - return _snap_enabled && _snapmanager->snapprefs.getSnapToGrids() && _snapmanager->snapprefs.getSnapModeBBoxOrNodes(); + return _snap_enabled && _snapmanager->snapprefs.getSnapToGrids() && _snapmanager->snapprefs.getSnapModeAny(); } diff --git a/src/display/canvas-bpath.cpp b/src/display/canvas-bpath.cpp index f86743744..306b523ca 100644 --- a/src/display/canvas-bpath.cpp +++ b/src/display/canvas-bpath.cpp @@ -38,20 +38,22 @@ static double sp_canvas_bpath_point (SPCanvasItem *item, Geom::Point p, SPCanvas static SPCanvasItemClass *parent_class; -GtkType +GType sp_canvas_bpath_get_type (void) { - static GtkType type = 0; + static GType type = 0; if (!type) { - GtkTypeInfo info = { - (gchar *)"SPCanvasBPath", - sizeof (SPCanvasBPath), + GTypeInfo info = { sizeof (SPCanvasBPathClass), - (GtkClassInitFunc) sp_canvas_bpath_class_init, - (GtkObjectInitFunc) sp_canvas_bpath_init, - NULL, NULL, NULL - }; - type = gtk_type_unique (SP_TYPE_CANVAS_ITEM, &info); + NULL, NULL, + (GClassInitFunc) sp_canvas_bpath_class_init, + NULL, NULL, + sizeof (SPCanvasBPath), + 0, + (GInstanceInitFunc) sp_canvas_bpath_init, + NULL + }; + type = g_type_register_static (SP_TYPE_CANVAS_ITEM, "SPCanvasBPath", &info, (GTypeFlags)0); } return type; } @@ -65,7 +67,7 @@ sp_canvas_bpath_class_init (SPCanvasBPathClass *klass) object_class = GTK_OBJECT_CLASS (klass); item_class = (SPCanvasItemClass *) klass; - parent_class = (SPCanvasItemClass*)gtk_type_class (SP_TYPE_CANVAS_ITEM); + parent_class = (SPCanvasItemClass*)g_type_class_peek_parent (klass); object_class->destroy = sp_canvas_bpath_destroy; diff --git a/src/display/canvas-bpath.h b/src/display/canvas-bpath.h index ad19797c2..752ed73ea 100644 --- a/src/display/canvas-bpath.h +++ b/src/display/canvas-bpath.h @@ -90,7 +90,7 @@ struct SPCanvasBPathClass { SPCanvasItemClass parent_class; }; -GtkType sp_canvas_bpath_get_type (void); +GType sp_canvas_bpath_get_type (void); SPCanvasItem *sp_canvas_bpath_new (SPCanvasGroup *parent, SPCurve *curve); diff --git a/src/display/canvas-grid.cpp b/src/display/canvas-grid.cpp index 52963ce6b..aa38a14c9 100644 --- a/src/display/canvas-grid.cpp +++ b/src/display/canvas-grid.cpp @@ -58,22 +58,24 @@ static void grid_canvasitem_render (SPCanvasItem *item, SPCanvasBuf *buf); static SPCanvasItemClass * parent_class; -GtkType +GType grid_canvasitem_get_type (void) { - static GtkType grid_canvasitem_type = 0; + static GType grid_canvasitem_type = 0; if (!grid_canvasitem_type) { - GtkTypeInfo grid_canvasitem_info = { - (gchar *)"GridCanvasItem", - sizeof (GridCanvasItem), + GTypeInfo grid_canvasitem_info = { sizeof (GridCanvasItemClass), - (GtkClassInitFunc) grid_canvasitem_class_init, - (GtkObjectInitFunc) grid_canvasitem_init, - NULL, NULL, - (GtkClassInitFunc) NULL - }; - grid_canvasitem_type = gtk_type_unique (sp_canvas_item_get_type (), &grid_canvasitem_info); + NULL, NULL, + (GClassInitFunc) grid_canvasitem_class_init, + NULL, NULL, + sizeof (GridCanvasItem), + 0, + (GInstanceInitFunc) grid_canvasitem_init, + NULL + }; + + grid_canvasitem_type = g_type_register_static (sp_canvas_item_get_type (), "GridCanvasItem", &grid_canvasitem_info, (GTypeFlags)0); } return grid_canvasitem_type; } @@ -87,7 +89,7 @@ grid_canvasitem_class_init (GridCanvasItemClass *klass) object_class = (GtkObjectClass *) klass; item_class = (SPCanvasItemClass *) klass; - parent_class = (SPCanvasItemClass*)gtk_type_class (sp_canvas_item_get_type ()); + parent_class = (SPCanvasItemClass*)g_type_class_peek_parent (klass); object_class->destroy = grid_canvasitem_destroy; @@ -1070,7 +1072,7 @@ void CanvasXYGridSnapper::_addSnappedPoint(SnappedConstraints &sc, Geom::Point c */ bool CanvasXYGridSnapper::ThisSnapperMightSnap() const { - return _snap_enabled && _snapmanager->snapprefs.getSnapToGrids() && _snapmanager->snapprefs.getSnapModeBBoxOrNodes(); + return _snap_enabled && _snapmanager->snapprefs.getSnapToGrids() && _snapmanager->snapprefs.getSnapModeAny(); } } // namespace Inkscape diff --git a/src/display/canvas-grid.h b/src/display/canvas-grid.h index f42fecad7..160e4a4e2 100644 --- a/src/display/canvas-grid.h +++ b/src/display/canvas-grid.h @@ -57,7 +57,7 @@ struct GridCanvasItemClass { }; /* Standard Gtk function */ -GtkType grid_canvasitem_get_type (void); +GType grid_canvasitem_get_type (void); diff --git a/src/display/canvas-text.cpp b/src/display/canvas-text.cpp index 842425f50..683e2f93c 100644 --- a/src/display/canvas-text.cpp +++ b/src/display/canvas-text.cpp @@ -36,21 +36,23 @@ static void sp_canvastext_render (SPCanvasItem *item, SPCanvasBuf *buf); static SPCanvasItemClass *parent_class_ct; -GtkType +GType sp_canvastext_get_type (void) { - static GtkType type = 0; + static GType type = 0; if (!type) { - GtkTypeInfo info = { - (gchar *)"SPCanvasText", - sizeof (SPCanvasText), + GTypeInfo info = { sizeof (SPCanvasTextClass), - (GtkClassInitFunc) sp_canvastext_class_init, - (GtkObjectInitFunc) sp_canvastext_init, - NULL, NULL, NULL - }; - type = gtk_type_unique (SP_TYPE_CANVAS_ITEM, &info); + NULL, NULL, + (GClassInitFunc) sp_canvastext_class_init, + NULL, NULL, + sizeof (SPCanvasText), + 0, + (GInstanceInitFunc) sp_canvastext_init, + NULL + }; + type = g_type_register_static (SP_TYPE_CANVAS_ITEM, "SPCanvasText", &info, (GTypeFlags)0); } return type; } @@ -61,7 +63,7 @@ sp_canvastext_class_init (SPCanvasTextClass *klass) GtkObjectClass *object_class = (GtkObjectClass *) klass; SPCanvasItemClass *item_class = (SPCanvasItemClass *) klass; - parent_class_ct = (SPCanvasItemClass*)gtk_type_class (SP_TYPE_CANVAS_ITEM); + parent_class_ct = (SPCanvasItemClass*)g_type_class_peek_parent (klass); object_class->destroy = sp_canvastext_destroy; diff --git a/src/display/canvas-text.h b/src/display/canvas-text.h index 30ddc1557..85333d84e 100644 --- a/src/display/canvas-text.h +++ b/src/display/canvas-text.h @@ -52,7 +52,7 @@ struct SPCanvasText : public SPCanvasItem { }; struct SPCanvasTextClass : public SPCanvasItemClass{}; -GtkType sp_canvastext_get_type (void); +GType sp_canvastext_get_type (void); SPCanvasItem *sp_canvastext_new(SPCanvasGroup *parent, SPDesktop *desktop, Geom::Point pos, gchar const *text); diff --git a/src/display/gnome-canvas-acetate.cpp b/src/display/gnome-canvas-acetate.cpp index b86892e32..bdda3a120 100644 --- a/src/display/gnome-canvas-acetate.cpp +++ b/src/display/gnome-canvas-acetate.cpp @@ -25,20 +25,22 @@ static double sp_canvas_acetate_point (SPCanvasItem *item, Geom::Point p, SPCanv static SPCanvasItemClass *parent_class; -GtkType +GType sp_canvas_acetate_get_type (void) { - static GtkType acetate_type = 0; + static GType acetate_type = 0; if (!acetate_type) { - GtkTypeInfo acetate_info = { - (gchar *)"SPCanvasAcetate", - sizeof (SPCanvasAcetate), + GTypeInfo acetate_info = { sizeof (SPCanvasAcetateClass), - (GtkClassInitFunc) sp_canvas_acetate_class_init, - (GtkObjectInitFunc) sp_canvas_acetate_init, - NULL, NULL, NULL + NULL, NULL, + (GClassInitFunc) sp_canvas_acetate_class_init, + NULL, NULL, + sizeof (SPCanvasAcetate), + 0, + (GInstanceInitFunc) sp_canvas_acetate_init, + NULL }; - acetate_type = gtk_type_unique (sp_canvas_item_get_type (), &acetate_info); + acetate_type = g_type_register_static (sp_canvas_item_get_type (), "SPCanvasAcetate", &acetate_info, (GTypeFlags)0); } return acetate_type; } @@ -52,7 +54,7 @@ sp_canvas_acetate_class_init (SPCanvasAcetateClass *klass) object_class = (GtkObjectClass *) klass; item_class = (SPCanvasItemClass *) klass; - parent_class = (SPCanvasItemClass*)gtk_type_class (sp_canvas_item_get_type ()); + parent_class = (SPCanvasItemClass*)g_type_class_peek_parent (klass); object_class->destroy = sp_canvas_acetate_destroy; diff --git a/src/display/gnome-canvas-acetate.h b/src/display/gnome-canvas-acetate.h index 756c663ca..ed6c99811 100644 --- a/src/display/gnome-canvas-acetate.h +++ b/src/display/gnome-canvas-acetate.h @@ -34,7 +34,7 @@ struct SPCanvasAcetateClass { SPCanvasItemClass parent_class; }; -GtkType sp_canvas_acetate_get_type (void); +GType sp_canvas_acetate_get_type (void); diff --git a/src/display/nr-filter-gaussian.cpp b/src/display/nr-filter-gaussian.cpp index 884e832ef..3a6b425e1 100644 --- a/src/display/nr-filter-gaussian.cpp +++ b/src/display/nr-filter-gaussian.cpp @@ -1,5 +1,3 @@ -#define __NR_FILTER_GAUSSIAN_CPP__ - /* * Gaussian blur renderer * @@ -523,8 +521,8 @@ gaussian_pass_FIR(Geom::Dim2 d, double deviation, cairo_surface_t *src, cairo_su { int scr_len = _effect_area_scr(deviation); // Filter kernel for x direction - FIRValue kernel[scr_len+1]; - _make_kernel(kernel, deviation); + std::vector<FIRValue> kernel(scr_len + 1); + _make_kernel(&kernel[0], deviation); int stride = cairo_image_surface_get_stride(src); int w = cairo_image_surface_get_width(src); @@ -537,13 +535,13 @@ gaussian_pass_FIR(Geom::Dim2 d, double deviation, cairo_surface_t *src, cairo_su filter2D_FIR<unsigned char,1>( cairo_image_surface_get_data(dest), d == Geom::X ? 1 : stride, d == Geom::X ? stride : 1, cairo_image_surface_get_data(src), d == Geom::X ? 1 : stride, d == Geom::X ? stride : 1, - w, h, kernel, scr_len, num_threads); + w, h, &kernel[0], scr_len, num_threads); break; case CAIRO_FORMAT_ARGB32: ///< Premultiplied 8 bit RGBA filter2D_FIR<unsigned char,4>( cairo_image_surface_get_data(dest), d == Geom::X ? 4 : stride, d == Geom::X ? stride : 4, cairo_image_surface_get_data(src), d == Geom::X ? 4 : stride, d == Geom::X ? stride : 4, - w, h, kernel, scr_len, num_threads); + w, h, &kernel[0], scr_len, num_threads); break; default: assert(false); diff --git a/src/display/nr-filter-primitive.cpp b/src/display/nr-filter-primitive.cpp index b544d6df0..539e3e952 100644 --- a/src/display/nr-filter-primitive.cpp +++ b/src/display/nr-filter-primitive.cpp @@ -1,5 +1,3 @@ -#define __NR_FILTER_PRIMITIVE_CPP__ - /* * SVG filters rendering * diff --git a/src/display/nr-filter.cpp b/src/display/nr-filter.cpp index a0997cc1b..10b4084ed 100644 --- a/src/display/nr-filter.cpp +++ b/src/display/nr-filter.cpp @@ -1,5 +1,3 @@ -#define __NR_FILTER_CPP__ - /* * SVG filters rendering * diff --git a/src/display/nr-light.cpp b/src/display/nr-light.cpp index 65912470d..6331d1546 100644 --- a/src/display/nr-light.cpp +++ b/src/display/nr-light.cpp @@ -1,5 +1,3 @@ -#define __NR_LIGHT_CPP__ - /* * Light rendering helpers * diff --git a/src/display/snap-indicator.cpp b/src/display/snap-indicator.cpp index c3198cd37..e351a1145 100644 --- a/src/display/snap-indicator.cpp +++ b/src/display/snap-indicator.cpp @@ -138,12 +138,12 @@ SnapIndicator::set_new_snaptarget(Inkscape::SnappedPoint const &p, bool pre_snap case SNAPTARGET_ELLIPSE_QUADRANT_POINT: target_name = _("quadrant point"); break; - case SNAPTARGET_CENTER: - target_name = _("center"); - break; case SNAPTARGET_CORNER: target_name = _("corner"); break; + case SNAPTARGET_TEXT_ANCHOR: + target_name = _("text anchor"); + break; case SNAPTARGET_TEXT_BASELINE: target_name = _("text baseline"); break; @@ -206,14 +206,11 @@ SnapIndicator::set_new_snaptarget(Inkscape::SnappedPoint const &p, bool pre_snap case SNAPSOURCE_ELLIPSE_QUADRANT_POINT: source_name = _("Quadrant point"); break; - case SNAPSOURCE_CENTER: - source_name = _("Center"); - break; case SNAPSOURCE_CORNER: source_name = _("Corner"); break; - case SNAPSOURCE_TEXT_BASELINE: - source_name = _("Text baseline"); + case SNAPSOURCE_TEXT_ANCHOR: + source_name = _("Text anchor"); break; case SNAPSOURCE_GRID_PITCH: source_name = _("Multiple of grid spacing"); diff --git a/src/display/sodipodi-ctrl.cpp b/src/display/sodipodi-ctrl.cpp index 5e939ffee..0ff7ca9f5 100644 --- a/src/display/sodipodi-ctrl.cpp +++ b/src/display/sodipodi-ctrl.cpp @@ -40,10 +40,10 @@ static double sp_ctrl_point (SPCanvasItem *item, Geom::Point p, SPCanvasItem **a static SPCanvasItemClass *parent_class; -GtkType +GType sp_ctrl_get_type (void) { - static GtkType ctrl_type = 0; + static GType ctrl_type = 0; if (!ctrl_type) { static GTypeInfo const ctrl_info = { sizeof (SPCtrlClass), @@ -71,7 +71,7 @@ sp_ctrl_class_init (SPCtrlClass *klass) object_class = (GtkObjectClass *) klass; item_class = (SPCanvasItemClass *) klass; - parent_class = (SPCanvasItemClass *)gtk_type_class (sp_canvas_item_get_type ()); + parent_class = (SPCanvasItemClass *)g_type_class_peek_parent (klass); gtk_object_add_arg_type ("SPCtrl::shape", GTK_TYPE_INT, GTK_ARG_READWRITE, ARG_SHAPE); gtk_object_add_arg_type ("SPCtrl::mode", GTK_TYPE_INT, GTK_ARG_READWRITE, ARG_MODE); diff --git a/src/display/sodipodi-ctrl.h b/src/display/sodipodi-ctrl.h index 3bf0889c7..4f114eac6 100644 --- a/src/display/sodipodi-ctrl.h +++ b/src/display/sodipodi-ctrl.h @@ -62,7 +62,7 @@ struct SPCtrlClass : public SPCanvasItemClass{ /* Standard Gtk function */ -GtkType sp_ctrl_get_type (void); +GType sp_ctrl_get_type (void); #endif /* !INKSCAPE_CTRL_H */ diff --git a/src/display/sodipodi-ctrlrect.cpp b/src/display/sodipodi-ctrlrect.cpp index 592d45bc0..b516456e9 100644 --- a/src/display/sodipodi-ctrlrect.cpp +++ b/src/display/sodipodi-ctrlrect.cpp @@ -64,7 +64,7 @@ static void sp_ctrlrect_class_init(SPCtrlRectClass *c) GtkObjectClass *object_class = (GtkObjectClass *) c; SPCanvasItemClass *item_class = (SPCanvasItemClass *) c; - parent_class = (SPCanvasItemClass*) gtk_type_class(sp_canvas_item_get_type()); + parent_class = (SPCanvasItemClass*) g_type_class_peek_parent(c); object_class->destroy = sp_ctrlrect_destroy; diff --git a/src/display/sodipodi-ctrlrect.h b/src/display/sodipodi-ctrlrect.h index 945deabc4..e69b6ba68 100644 --- a/src/display/sodipodi-ctrlrect.h +++ b/src/display/sodipodi-ctrlrect.h @@ -57,7 +57,7 @@ private: struct SPCtrlRectClass : public SPCanvasItemClass {}; -GtkType sp_ctrlrect_get_type(); +GType sp_ctrlrect_get_type(); #endif // SEEN_RUBBERBAND_H diff --git a/src/display/sp-canvas-item.h b/src/display/sp-canvas-item.h index f62dc34a7..9dbec547e 100644 --- a/src/display/sp-canvas-item.h +++ b/src/display/sp-canvas-item.h @@ -67,12 +67,12 @@ struct _SPCanvasItemClass : public GtkObjectClass { int (* event) (SPCanvasItem *item, GdkEvent *event); }; -SPCanvasItem *sp_canvas_item_new(SPCanvasGroup *parent, GtkType type, const gchar *first_arg_name, ...); +SPCanvasItem *sp_canvas_item_new(SPCanvasGroup *parent, GType type, const gchar *first_arg_name, ...); G_END_DECLS -#define sp_canvas_item_set gtk_object_set +#define sp_canvas_item_set g_object_set void sp_canvas_item_affine_absolute(SPCanvasItem *item, Geom::Affine const &aff); diff --git a/src/display/sp-canvas.cpp b/src/display/sp-canvas.cpp index 977452834..23c6a430e 100644 --- a/src/display/sp-canvas.cpp +++ b/src/display/sp-canvas.cpp @@ -169,7 +169,7 @@ sp_canvas_item_init (SPCanvasItem *item) * Constructs new SPCanvasItem on SPCanvasGroup. */ SPCanvasItem * -sp_canvas_item_new (SPCanvasGroup *parent, GtkType type, gchar const *first_arg_name, ...) +sp_canvas_item_new (SPCanvasGroup *parent, GType type, gchar const *first_arg_name, ...) { va_list args; @@ -177,7 +177,7 @@ sp_canvas_item_new (SPCanvasGroup *parent, GtkType type, gchar const *first_arg_ g_return_val_if_fail (SP_IS_CANVAS_GROUP (parent), NULL); g_return_val_if_fail (gtk_type_is_a (type, sp_canvas_item_get_type ()), NULL); - SPCanvasItem *item = SP_CANVAS_ITEM (gtk_type_new (type)); + SPCanvasItem *item = SP_CANVAS_ITEM (g_object_new (type, NULL)); va_start (args, first_arg_name); sp_canvas_item_construct (item, parent, first_arg_name, args); @@ -727,7 +727,7 @@ sp_canvas_group_class_init (SPCanvasGroupClass *klass) GtkObjectClass *object_class = (GtkObjectClass *) klass; SPCanvasItemClass *item_class = (SPCanvasItemClass *) klass; - group_parent_class = (SPCanvasItemClass*)gtk_type_class (sp_canvas_item_get_type ()); + group_parent_class = (SPCanvasItemClass*)g_type_class_peek_parent (klass); object_class->destroy = sp_canvas_group_destroy; @@ -884,7 +884,7 @@ static void group_add (SPCanvasGroup *group, SPCanvasItem *item) { gtk_object_ref (GTK_OBJECT (item)); - gtk_object_sink (GTK_OBJECT (item)); + g_object_ref_sink (item); if (!group->items) { group->items = g_list_append (group->items, item); @@ -989,7 +989,7 @@ sp_canvas_class_init (SPCanvasClass *klass) GtkObjectClass *object_class = (GtkObjectClass *) klass; GtkWidgetClass *widget_class = (GtkWidgetClass *) klass; - canvas_parent_class = (GtkWidgetClass *)gtk_type_class (GTK_TYPE_WIDGET); + canvas_parent_class = (GtkWidgetClass *)g_type_class_peek_parent (klass); object_class->destroy = sp_canvas_destroy; @@ -1025,11 +1025,11 @@ sp_canvas_init (SPCanvas *canvas) canvas->pick_event.crossing.y = 0; /* Create the root item as a special case */ - canvas->root = SP_CANVAS_ITEM (gtk_type_new (sp_canvas_group_get_type ())); + canvas->root = SP_CANVAS_ITEM (g_object_new (sp_canvas_group_get_type (), NULL)); canvas->root->canvas = canvas; gtk_object_ref (GTK_OBJECT (canvas->root)); - gtk_object_sink (GTK_OBJECT (canvas->root)); + g_object_ref_sink (canvas->root); canvas->need_repick = TRUE; @@ -1125,7 +1125,7 @@ static void track_latency(GdkEvent const *event) { GtkWidget * sp_canvas_new_aa (void) { - SPCanvas *canvas = (SPCanvas *)gtk_type_new (sp_canvas_get_type ()); + SPCanvas *canvas = (SPCanvas *)g_object_new (sp_canvas_get_type (), NULL); return (GtkWidget *) canvas; } @@ -1464,9 +1464,6 @@ pick_current_item (SPCanvas *canvas, GdkEvent *event) && (canvas->current_item != NULL) && !canvas->left_grabbed_item) { GdkEvent new_event; - SPCanvasItem *item; - - item = canvas->current_item; new_event = canvas->pick_event; new_event.type = GDK_LEAVE_NOTIFY; diff --git a/src/display/sp-ctrlline.cpp b/src/display/sp-ctrlline.cpp index 6c763abdf..c185234d4 100644 --- a/src/display/sp-ctrlline.cpp +++ b/src/display/sp-ctrlline.cpp @@ -65,7 +65,7 @@ sp_ctrlline_class_init (SPCtrlLineClass *klass) GtkObjectClass *object_class = (GtkObjectClass *) klass; SPCanvasItemClass *item_class = (SPCanvasItemClass *) klass; - parent_class = (SPCanvasItemClass*)gtk_type_class (SP_TYPE_CANVAS_ITEM); + parent_class = (SPCanvasItemClass*)g_type_class_peek_parent (klass); object_class->destroy = sp_ctrlline_destroy; diff --git a/src/display/sp-ctrlpoint.cpp b/src/display/sp-ctrlpoint.cpp index c33cdeeb9..1cf7dded0 100644 --- a/src/display/sp-ctrlpoint.cpp +++ b/src/display/sp-ctrlpoint.cpp @@ -56,7 +56,7 @@ sp_ctrlpoint_class_init (SPCtrlPointClass *klass) GtkObjectClass *object_class = (GtkObjectClass *) klass; SPCanvasItemClass *item_class = (SPCanvasItemClass *) klass; - parent_class = (SPCanvasItemClass*)gtk_type_class (SP_TYPE_CANVAS_ITEM); + parent_class = (SPCanvasItemClass*)g_type_class_peek_parent (klass); object_class->destroy = sp_ctrlpoint_destroy; diff --git a/src/display/sp-ctrlquadr.cpp b/src/display/sp-ctrlquadr.cpp index 0701d0b10..b39886178 100644 --- a/src/display/sp-ctrlquadr.cpp +++ b/src/display/sp-ctrlquadr.cpp @@ -64,7 +64,7 @@ sp_ctrlquadr_class_init (SPCtrlQuadrClass *klass) GtkObjectClass *object_class = (GtkObjectClass *) klass; SPCanvasItemClass *item_class = (SPCanvasItemClass *) klass; - parent_class = (SPCanvasItemClass*)gtk_type_class (SP_TYPE_CANVAS_ITEM); + parent_class = (SPCanvasItemClass*)g_type_class_peek_parent (klass); object_class->destroy = sp_ctrlquadr_destroy; diff --git a/src/dom/CMakeLists.txt b/src/dom/CMakeLists.txt index b328418c7..df2411b13 100644 --- a/src/dom/CMakeLists.txt +++ b/src/dom/CMakeLists.txt @@ -32,6 +32,7 @@ set(dom_SRC util/thread.cpp util/ziptool.cpp + # ------- # Headers css.h @@ -69,8 +70,6 @@ set(dom_SRC io/bufferstream.h io/domstream.h io/gzipstream.h - io/httpclient.h - io/socket.h io/stringstream.h io/uristream.h diff --git a/src/dom/mingwenv.bat b/src/dom/mingwenv.bat index 996566e7b..48e8bf096 100644 --- a/src/dom/mingwenv.bat +++ b/src/dom/mingwenv.bat @@ -1,2 +1,2 @@ -set PATH=c:\mingw\bin;%PATH%
-set RM=del
+set PATH=c:\mingw\bin;%PATH% +set RM=del diff --git a/src/ege-adjustment-action.cpp b/src/ege-adjustment-action.cpp index 6b0ffd1ab..45a44ae0c 100644 --- a/src/ege-adjustment-action.cpp +++ b/src/ege-adjustment-action.cpp @@ -779,7 +779,7 @@ static GtkWidget* create_menu_item( GtkAction* action ) void value_changed_cb( GtkSpinButton* spin, EgeAdjustmentAction* act ) { - if ( GTK_WIDGET_HAS_FOCUS( GTK_WIDGET(spin) ) ) { + if ( gtk_widget_has_focus( GTK_WIDGET(spin) ) ) { ege_adjustment_action_defocus( act ); } } @@ -987,7 +987,7 @@ static gboolean process_tab( GtkWidget* widget, int direction ) GList* subChildren = gtk_container_get_children( GTK_CONTAINER(child) ); if ( subChildren ) { GList* last = g_list_last(subChildren); - if ( last && GTK_IS_SPIN_BUTTON(last->data) && GTK_WIDGET_IS_SENSITIVE( GTK_WIDGET(last->data) ) ) { + if ( last && GTK_IS_SPIN_BUTTON(last->data) && gtk_widget_is_sensitive( GTK_WIDGET(last->data) ) ) { gtk_widget_grab_focus( GTK_WIDGET(last->data) ); handled = TRUE; mid = 0; /* to stop loop */ diff --git a/src/ege-select-one-action.cpp b/src/ege-select-one-action.cpp index ea08f1c06..e0130a68d 100644 --- a/src/ege-select-one-action.cpp +++ b/src/ege-select-one-action.cpp @@ -735,7 +735,7 @@ GtkWidget* create_tool_item( GtkAction* action ) g_signal_connect( G_OBJECT(ract), "changed", G_CALLBACK( proxy_action_chagned_cb ), act ); sub = gtk_action_create_tool_item( GTK_ACTION(ract) ); - gtk_action_connect_proxy( GTK_ACTION(ract), sub ); + gtk_activatable_set_related_action( GTK_ACTIVATABLE (sub), GTK_ACTION(ract) ); gtk_tool_item_set_tooltip_text( GTK_TOOL_ITEM(sub), tip ); gtk_box_pack_start( GTK_BOX(holder), sub, FALSE, FALSE, 0 ); diff --git a/src/extension/CMakeLists.txt b/src/extension/CMakeLists.txt index 5ccb5c984..c9c466bb0 100644 --- a/src/extension/CMakeLists.txt +++ b/src/extension/CMakeLists.txt @@ -118,6 +118,7 @@ set(extension_SRC internal/filter/drop-shadow.h internal/filter/experimental.h internal/filter/filter.h + internal/filter/image.h internal/filter/morphology.h internal/filter/shadows.h internal/filter/snow.h diff --git a/src/extension/effect.cpp b/src/extension/effect.cpp index 51aa42da6..e01eb760a 100644 --- a/src/extension/effect.cpp +++ b/src/extension/effect.cpp @@ -324,7 +324,7 @@ Effect::set_last_effect (Effect * in_effect) Inkscape::XML::Node * Effect::find_menu (Inkscape::XML::Node * menustruct, const gchar *name) { - if (menustruct == NULL) return false; + if (menustruct == NULL) return NULL; for (Inkscape::XML::Node * child = menustruct; child != NULL; child = child->next()) { diff --git a/src/extension/internal/filter/experimental.h b/src/extension/internal/filter/experimental.h index f60a6b414..96485ad97 100755 --- a/src/extension/internal/filter/experimental.h +++ b/src/extension/internal/filter/experimental.h @@ -301,7 +301,7 @@ CrossEngraving::get_filter_text (Inkscape::Extension::Extension * ext) * Smoothness strength (0.01->20, default 0.6) -> blur2 (stdDeviation) * Dilatation (1.->50., default 6) -> color2 (n-1th value) * Erosion (0.->50., default 2) -> color2 (nth value 0->-50) - * Transluscent (boolean, default false) -> composite 8 (in, true->merge1, false->color5) + * translucent (boolean, default false) -> composite 8 (in, true->merge1, false->color5) * Blur strength (0.01->20., default 1.) -> blur3 (stdDeviation) * Blur dilatation (1.->50., default 6) -> color4 (n-1th value) @@ -379,7 +379,7 @@ Drawing::get_filter_text (Inkscape::Extension::Extension * ext) std::ostringstream smooth; std::ostringstream dilat; std::ostringstream erosion; - std::ostringstream transluscent; + std::ostringstream translucent; std::ostringstream offset; std::ostringstream blur; std::ostringstream bdilat; @@ -401,10 +401,10 @@ Drawing::get_filter_text (Inkscape::Extension::Extension * ext) smooth << ext->get_param_float("smooth"); dilat << ext->get_param_float("dilat"); erosion << (- ext->get_param_float("erosion")); - if (ext->get_param_bool("transluscent")) - transluscent << "merge1"; + if (ext->get_param_bool("translucent")) + translucent << "merge1"; else - transluscent << "color5"; + translucent << "color5"; offset << ext->get_param_int("offset"); blur << ext->get_param_float("blur"); @@ -462,7 +462,7 @@ Drawing::get_filter_text (Inkscape::Extension::Extension * ext) "</feMerge>\n" "<feColorMatrix values=\"1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 1.3 0 \" result=\"color5\" flood-opacity=\"0.56\" />\n" "<feComposite in=\"%s\" in2=\"SourceGraphic\" operator=\"in\" result=\"composite8\" />\n" - "</filter>\n", simply.str().c_str(), clean.str().c_str(), erase.str().c_str(), smooth.str().c_str(), dilat.str().c_str(), erosion.str().c_str(), blur.str().c_str(), bdilat.str().c_str(), berosion.str().c_str(), stroker.str().c_str(), strokeg.str().c_str(), strokeb.str().c_str(), ios.str().c_str(), strokea.str().c_str(), offset.str().c_str(), offset.str().c_str(), fillr.str().c_str(), fillg.str().c_str(), fillb.str().c_str(), iof.str().c_str(), filla.str().c_str(), transluscent.str().c_str()); + "</filter>\n", simply.str().c_str(), clean.str().c_str(), erase.str().c_str(), smooth.str().c_str(), dilat.str().c_str(), erosion.str().c_str(), blur.str().c_str(), bdilat.str().c_str(), berosion.str().c_str(), stroker.str().c_str(), strokeg.str().c_str(), strokeb.str().c_str(), ios.str().c_str(), strokea.str().c_str(), offset.str().c_str(), offset.str().c_str(), fillr.str().c_str(), fillg.str().c_str(), fillb.str().c_str(), iof.str().c_str(), filla.str().c_str(), translucent.str().c_str()); return _filter; }; /* Drawing filter */ diff --git a/src/extension/internal/filter/filter-all.cpp b/src/extension/internal/filter/filter-all.cpp index 280dc9563..6ee849925 100755 --- a/src/extension/internal/filter/filter-all.cpp +++ b/src/extension/internal/filter/filter-all.cpp @@ -11,6 +11,7 @@ #include "abc.h" #include "color.h" #include "drop-shadow.h" +#include "image.h" #include "morphology.h" #include "shadows.h" #include "snow.h" @@ -57,6 +58,9 @@ Filter::filters_all (void ) Solarize::init(); Tritone::init(); + // Image + EdgeDetect::init(); + // Morphology Crosssmooth::init(); diff --git a/src/extension/internal/filter/image.h b/src/extension/internal/filter/image.h new file mode 100644 index 000000000..926c56a4d --- /dev/null +++ b/src/extension/internal/filter/image.h @@ -0,0 +1,113 @@ +#ifndef __INKSCAPE_EXTENSION_INTERNAL_FILTER_IMAGE_H__ +#define __INKSCAPE_EXTENSION_INTERNAL_FILTER_IMAGE_H__ +/* Change the 'IMAGE' above to be your file name */ + +/* + * Copyright (C) 2011 Authors: + * Ivan Louette (filters) + * Nicolas Dufour (UI) <nicoduf@yahoo.fr> + * + * Image filters + * Edge detect + * + * Released under GNU GPL, read the file 'COPYING' for more information + */ +/* ^^^ Change the copyright to be you and your e-mail address ^^^ */ + +#include "filter.h" + +#include "extension/internal/clear-n_.h" +#include "extension/system.h" +#include "extension/extension.h" + +namespace Inkscape { +namespace Extension { +namespace Internal { +namespace Filter { + +/** + \brief Custom predefined Edge detect filter. + + Detect color edges in object. + + Filter's parameters: + * Detection type (enum, default Full) -> convolve (kernelMatrix) + * Level (0.01->10., default 1.) -> convolve (divisor) + * Inverted (boolean, default false) -> convolve (bias) +*/ +class EdgeDetect : public Inkscape::Extension::Internal::Filter::Filter { +protected: + virtual gchar const * get_filter_text (Inkscape::Extension::Extension * ext); + +public: + EdgeDetect ( ) : Filter() { }; + virtual ~EdgeDetect ( ) { if (_filter != NULL) g_free((void *)_filter); return; } + + static void init (void) { + Inkscape::Extension::build_from_mem( + "<inkscape-extension xmlns=\"" INKSCAPE_EXTENSION_URI "\">\n" + "<name>" N_("Edge detect, custom (Image)") "</name>\n" + "<id>org.inkscape.effect.filter.EdgeDetect</id>\n" + "<param name=\"type\" gui-text=\"" N_("Detect:") "\" type=\"enum\" >\n" + "<_item value=\"all\">" N_("All") "</_item>\n" + "<_item value=\"vertical\">" N_("Vertical lines") "</_item>\n" + "<_item value=\"horizontal\">" N_("Horizontal lines") "</_item>\n" + "</param>\n" + "<param name=\"level\" gui-text=\"" N_("Level:") "\" type=\"float\" appearance=\"full\" min=\"0.01\" max=\"10.0\">1.0</param>\n" + "<param name=\"inverted\" gui-text=\"" N_("Invert colors") "\" type=\"boolean\" >false</param>\n" + "<effect>\n" + "<object-type>all</object-type>\n" + "<effects-menu>\n" + "<submenu name=\"" N_("Filters") "\">\n" + "<submenu name=\"" N_("Experimental") "\"/>\n" + "</submenu>\n" + "</effects-menu>\n" + "<menu-tip>" N_("Detect color edges in object") "</menu-tip>\n" + "</effect>\n" + "</inkscape-extension>\n", new EdgeDetect()); + }; + +}; + +gchar const * +EdgeDetect::get_filter_text (Inkscape::Extension::Extension * ext) +{ + if (_filter != NULL) g_free((void *)_filter); + + std::ostringstream matrix; + std::ostringstream inverted; + std::ostringstream level; + + const gchar *type = ext->get_param_enum("type"); + + level << ext->get_param_float("level"); + + if ((g_ascii_strcasecmp("vertical", type) == 0)) { + matrix << "0 0 0 1 -2 1 0 0 0"; + } else if ((g_ascii_strcasecmp("horizontal", type) == 0)) { + matrix << "0 1 0 0 -2 0 0 1 0"; + } else { + matrix << "1 1 1 1 -8 1 1 1 1"; + } + + if (ext->get_param_bool("inverted")) { + inverted << "1"; + } else { + inverted << "0"; + } + + _filter = g_strdup_printf( + "<filter xmlns:inkscape=\"http://www.inkscape.org/namespaces/inkscape\" color-interpolation-filters=\"sRGB\" height=\"1.2\" width=\"1.2\" y=\"-0.1\" x=\"-0.1\" inkscape:label=\"Edge detect, custom\">\n" + "<feConvolveMatrix in=\"SourceGraphic\" kernelMatrix=\"%s\" order=\"3 3\" bias=\"%s\" divisor=\"%s\" targetX=\"1\" targetY=\"1\" preserveAlpha=\"true\" result=\"convolve\" />\n" + "</filter>\n", matrix.str().c_str(), inverted.str().c_str(), level.str().c_str()); + + return _filter; +}; + +}; /* namespace Filter */ +}; /* namespace Internal */ +}; /* namespace Extension */ +}; /* namespace Inkscape */ + +/* Change the 'IMAGE' below to be your file name */ +#endif /* __INKSCAPE_EXTENSION_INTERNAL_FILTER_IMAGE_H__ */ diff --git a/src/extension/internal/filter/shadows.h b/src/extension/internal/filter/shadows.h index e29092ae9..bfc6cace6 100644 --- a/src/extension/internal/filter/shadows.h +++ b/src/extension/internal/filter/shadows.h @@ -7,7 +7,7 @@ * Ivan Louette (filters) * Nicolas Dufour (UI) <nicoduf@yahoo.fr> * - * Color filters + * Shadow filters * Drop shadow * * Released under GNU GPL, read the file 'COPYING' for more information @@ -34,7 +34,12 @@ namespace Filter { * Blur radius (0.->200., default 3) -> blur (stdDeviation) * Horizontal offset (-50.->50., default 6.0) -> offset (dx) * Vertical offset (-50.->50., default 6.0) -> offset (dy) + * Blur type (enum, default outer) -> + outer = composite1 (operator="in"), composite2 (operator="over", in1="SourceGraphic", in2="offset") + inner = composite1 (operator="out"), composite2 (operator="atop", in1="offset", in2="SourceGraphic") + cutout = composite1 (operator="in"), composite2 (operator="out", in1="offset", in2="SourceGraphic") * Color (guint, default 0,0,0,127) -> flood (flood-opacity, flood-color) + * Use object's color (boolean, default false) -> composite1 (in1, in2) */ class ColorizableDropShadow : public Inkscape::Extension::Internal::Filter::Filter { protected: @@ -47,21 +52,33 @@ public: static void init (void) { Inkscape::Extension::build_from_mem( "<inkscape-extension xmlns=\"" INKSCAPE_EXTENSION_URI "\">\n" - "<name>" N_("Drop shadow, custom (Shadows and Glows)") "</name>\n" - "<id>org.inkscape.effect.filter.ColorDropShadow</id>\n" - "<param name=\"blur\" gui-text=\"" N_("Blur radius (px):") "\" type=\"float\" appearance=\"full\" min=\"0.0\" max=\"200.0\">3.0</param>\n" - "<param name=\"xoffset\" gui-text=\"" N_("Horizontal offset (px):") "\" type=\"float\" appearance=\"full\" min=\"-50.0\" max=\"50.0\">6.0</param>\n" - "<param name=\"yoffset\" gui-text=\"" N_("Vertical offset (px):") "\" type=\"float\" appearance=\"full\" min=\"-50.0\" max=\"50.0\">6.0</param>\n" - "<param name=\"color\" gui-text=\"" N_("Color") "\" type=\"color\">127</param>\n" - "<effect>\n" - "<object-type>all</object-type>\n" - "<effects-menu>\n" - "<submenu name=\"" N_("Filters") "\">\n" - "<submenu name=\"" N_("Experimental") "\"/>\n" + "<name>" N_("Drop shadow, custom (Shadows and Glows)") "</name>\n" + "<id>org.inkscape.effect.filter.ColorDropShadow</id>\n" + "<param name=\"tab\" type=\"notebook\">\n" + "<page name=\"optionstab\" _gui-text=\"" N_("Options") "\">\n" + "<param name=\"blur\" gui-text=\"" N_("Blur radius (px):") "\" type=\"float\" appearance=\"full\" min=\"0.0\" max=\"200.0\">3.0</param>\n" + "<param name=\"xoffset\" gui-text=\"" N_("Horizontal offset (px):") "\" type=\"float\" appearance=\"full\" min=\"-50.0\" max=\"50.0\">6.0</param>\n" + "<param name=\"yoffset\" gui-text=\"" N_("Vertical offset (px):") "\" type=\"float\" appearance=\"full\" min=\"-50.0\" max=\"50.0\">6.0</param>\n" + "<param name=\"type\" gui-text=\"" N_("Blur type:") "\" type=\"enum\" >\n" + "<_item value=\"outer\">" N_("Outer") "</_item>\n" + "<_item value=\"inner\">" N_("Inner") "</_item>\n" + "<_item value=\"cutout\">" N_("Cutout") "</_item>\n" + "</param>\n" + "</page>\n" + "<page name=\"coltab\" _gui-text=\"" N_("Blur color") "\">\n" + "<param name=\"color\" gui-text=\"" N_("Color") "\" type=\"color\">127</param>\n" + "<param name=\"objcolor\" gui-text=\"" N_("Use object's color") "\" type=\"boolean\" >false</param>\n" + "</page>\n" + "</param>\n" + "<effect>\n" + "<object-type>all</object-type>\n" + "<effects-menu>\n" + "<submenu name=\"" N_("Filters") "\">\n" + "<submenu name=\"" N_("Experimental") "\"/>\n" "</submenu>\n" - "</effects-menu>\n" - "<menu-tip>" N_("Colorizable Drop shadow") "</menu-tip>\n" - "</effect>\n" + "</effects-menu>\n" + "<menu-tip>" N_("Colorizable Drop shadow") "</menu-tip>\n" + "</effect>\n" "</inkscape-extension>\n", new ColorizableDropShadow()); }; @@ -79,9 +96,15 @@ ColorizableDropShadow::get_filter_text (Inkscape::Extension::Extension * ext) std::ostringstream b; std::ostringstream x; std::ostringstream y; - + std::ostringstream comp1in1; + std::ostringstream comp1in2; + std::ostringstream comp1op; + std::ostringstream comp2in1; + std::ostringstream comp2in2; + std::ostringstream comp2op; + + const gchar *type = ext->get_param_enum("type"); guint32 color = ext->get_param_color("color"); - blur << ext->get_param_float("blur"); x << ext->get_param_float("xoffset"); y << ext->get_param_float("yoffset"); @@ -90,14 +113,43 @@ ColorizableDropShadow::get_filter_text (Inkscape::Extension::Extension * ext) g << ((color >> 16) & 0xff); b << ((color >> 8) & 0xff); + if (ext->get_param_bool("objcolor")) { + comp1in1 << "SourceGraphic"; + comp1in2 << "flood"; + } else { + comp1in1 << "flood"; + comp1in2 << "SourceGraphic"; + } + + if ((g_ascii_strcasecmp("outer", type) == 0)) { + comp1op << "in"; + comp2op << "over"; + comp2in1 << "SourceGraphic"; + comp2in2 << "offset"; + } else if ((g_ascii_strcasecmp("inner", type) == 0)) { + comp1op << "out"; + comp2op << "atop"; + comp2in1 << "offset"; + comp2in2 << "SourceGraphic"; + } else { + comp1op << "in"; + comp2op << "out"; + comp2in1 << "offset"; + comp2in2 << "SourceGraphic"; + } + + _filter = g_strdup_printf( "<filter xmlns:inkscape=\"http://www.inkscape.org/namespaces/inkscape\" color-interpolation-filters=\"sRGB\" height=\"1.2\" width=\"1.2\" y=\"-0.1\" x=\"-0.1\" inkscape:label=\"Drop shadow, custom\">\n" "<feFlood flood-opacity=\"%s\" flood-color=\"rgb(%s,%s,%s)\" result=\"flood\" />\n" - "<feComposite in=\"flood\" in2=\"SourceGraphic\" operator=\"in\" result=\"composite1\" />\n" + "<feComposite in=\"%s\" in2=\"%s\" operator=\"%s\" result=\"composite1\" />\n" "<feGaussianBlur in=\"composite1\" stdDeviation=\"%s\" result=\"blur\" />\n" "<feOffset dx=\"%s\" dy=\"%s\" result=\"offset\" />\n" - "<feComposite in=\"SourceGraphic\" in2=\"offset\" operator=\"over\" result=\"composite2\" />\n" - "</filter>\n", a.str().c_str(), r.str().c_str(), g.str().c_str(), b.str().c_str(), blur.str().c_str(), x.str().c_str(), y.str().c_str()); + "<feComposite in=\"%s\" in2=\"%s\" operator=\"%s\" result=\"composite2\" />\n" + "</filter>\n", a.str().c_str(), r.str().c_str(), g.str().c_str(), b.str().c_str(), + comp1in1.str().c_str(), comp1in2.str().c_str(), comp1op.str().c_str(), + blur.str().c_str(), x.str().c_str(), y.str().c_str(), + comp2in1.str().c_str(), comp2in2.str().c_str(), comp2op.str().c_str()); return _filter; }; diff --git a/src/filters/CMakeLists.txt b/src/filters/CMakeLists.txt index 7c698777d..50d4bc33a 100644 --- a/src/filters/CMakeLists.txt +++ b/src/filters/CMakeLists.txt @@ -22,6 +22,7 @@ set(filters_SRC tile.cpp turbulence.cpp + # ------- # Headers blend.h diff --git a/src/filters/merge.cpp b/src/filters/merge.cpp index 47830c38b..b5a6d7dad 100644 --- a/src/filters/merge.cpp +++ b/src/filters/merge.cpp @@ -1,5 +1,3 @@ -#define __SP_FEMERGE_CPP__ - /** \file * SVG <feMerge> implementation. * diff --git a/src/filters/tile.cpp b/src/filters/tile.cpp index c3555ee7c..42a59ede8 100644 --- a/src/filters/tile.cpp +++ b/src/filters/tile.cpp @@ -1,5 +1,3 @@ -#define __SP_FETILE_CPP__ - /** \file * SVG <feTile> implementation. * diff --git a/src/flood-context.cpp b/src/flood-context.cpp index 73e82607a..90278ac95 100644 --- a/src/flood-context.cpp +++ b/src/flood-context.cpp @@ -84,7 +84,7 @@ static void sp_flood_finish(SPFloodContext *rc); static SPEventContextClass *parent_class; -GtkType sp_flood_context_get_type() +GType sp_flood_context_get_type() { static GType type = 0; if (!type) { diff --git a/src/flood-context.h b/src/flood-context.h index 6847c19be..0cab0f7c5 100644 --- a/src/flood-context.h +++ b/src/flood-context.h @@ -46,7 +46,7 @@ struct SPFloodContextClass { /* Standard Gtk function */ -GtkType sp_flood_context_get_type (void); +GType sp_flood_context_get_type (void); GList* flood_channels_dropdown_items_list (void); GList* flood_autogap_dropdown_items_list (void); diff --git a/src/gradient-context.cpp b/src/gradient-context.cpp index 86c86d2dc..c4bef4683 100644 --- a/src/gradient-context.cpp +++ b/src/gradient-context.cpp @@ -63,7 +63,7 @@ static void sp_gradient_drag(SPGradientContext &rc, Geom::Point const pt, guint static SPEventContextClass *parent_class; -GtkType sp_gradient_context_get_type() +GType sp_gradient_context_get_type() { static GType type = 0; if (!type) { @@ -557,10 +557,12 @@ sp_gradient_context_root_handler(SPEventContext *event_context, GdkEvent *event) if (!(event->button.state & GDK_CONTROL_MASK)) event_context->item_to_select = sp_event_context_find_item (desktop, button_w, event->button.state & GDK_MOD1_MASK, TRUE); - SnapManager &m = desktop->namedview->snap_manager; - m.setup(desktop); - m.freeSnapReturnByRef(button_dt, Inkscape::SNAPSOURCE_NODE_HANDLE); - m.unSetup(); + if (!selection->isEmpty()) { + SnapManager &m = desktop->namedview->snap_manager; + m.setup(desktop); + m.freeSnapReturnByRef(button_dt, Inkscape::SNAPSOURCE_NODE_HANDLE); + m.unSetup(); + } rc->origin = button_dt; } @@ -595,14 +597,14 @@ sp_gradient_context_root_handler(SPEventContext *event_context, GdkEvent *event) ret = TRUE; } else { - if (!drag->mouseOver()) { + if (!drag->mouseOver() && !selection->isEmpty()) { SnapManager &m = desktop->namedview->snap_manager; m.setup(desktop); Geom::Point const motion_w(event->motion.x, event->motion.y); Geom::Point const motion_dt = event_context->desktop->w2d(motion_w); - m.preSnap(Inkscape::SnapCandidatePoint(motion_dt, Inkscape::SNAPSOURCE_NODE_HANDLE)); + m.preSnap(Inkscape::SnapCandidatePoint(motion_dt, Inkscape::SNAPSOURCE_OTHER_HANDLE)); m.unSetup(); } diff --git a/src/gradient-context.h b/src/gradient-context.h index 1ed14cf3f..bdd7208b6 100644 --- a/src/gradient-context.h +++ b/src/gradient-context.h @@ -49,7 +49,7 @@ struct SPGradientContextClass { }; /* Standard Gtk function */ -GtkType sp_gradient_context_get_type(); +GType sp_gradient_context_get_type(); void sp_gradient_context_select_next (SPEventContext *event_context); void sp_gradient_context_select_prev (SPEventContext *event_context); diff --git a/src/gradient-drag.cpp b/src/gradient-drag.cpp index 8f7effe43..142ae2a98 100644 --- a/src/gradient-drag.cpp +++ b/src/gradient-drag.cpp @@ -1962,7 +1962,7 @@ GrDrag::deleteSelected (bool just_one) { if (!selected) return; - SPDocument *document = false; + SPDocument *document = NULL; struct StructStopInfo { SPStop * spstop; diff --git a/src/graphlayout.cpp b/src/graphlayout.cpp index 41e523b86..57002bfb6 100644 --- a/src/graphlayout.cpp +++ b/src/graphlayout.cpp @@ -157,11 +157,12 @@ void graphlayout(GSList const *const items) { ++i) { SPItem *iu=*i; - map<string,unsigned>::iterator i=nodelookup.find(iu->getId()); - if(i==nodelookup.end()) { + map<string,unsigned>::iterator i_iter=nodelookup.find(iu->getId()); + map<string,unsigned>::iterator i_iter_end=nodelookup.end(); + if(i_iter==i_iter_end) { continue; } - unsigned u=i->second; + unsigned u=i_iter->second; GSList *nlist=iu->avoidRef->getAttachedConnectors(Avoid::runningFrom); list<SPItem *> connectors; diff --git a/src/helper/CMakeLists.txt b/src/helper/CMakeLists.txt index 8137487e2..1d6a82e41 100644 --- a/src/helper/CMakeLists.txt +++ b/src/helper/CMakeLists.txt @@ -1,5 +1,5 @@ -include(UseGlibMarshal) +include(${CMAKE_SOURCE_DIR}/CMakeScripts/UseGlibMarshal.cmake) GLIB_MARSHAL(sp_marshal sp-marshal "${CMAKE_CURRENT_BINARY_DIR}/helper") @@ -46,5 +46,7 @@ set(helper_SRC window.h ) +set_source_files_properties(sp_marshal_SRC PROPERTIES GENERATED true) + # add_inkscape_lib(helper_LIB "${helper_SRC}") add_inkscape_source("${helper_SRC}") diff --git a/src/helper/unit-menu.cpp b/src/helper/unit-menu.cpp index bcc8589e2..a87ac4abd 100644 --- a/src/helper/unit-menu.cpp +++ b/src/helper/unit-menu.cpp @@ -79,13 +79,8 @@ GType sp_unit_selector_get_type(void) static void sp_unit_selector_class_init(SPUnitSelectorClass *klass) { - GObjectClass *object_class; - GtkWidgetClass *widget_class; - - object_class = G_OBJECT_CLASS(klass); - widget_class = GTK_WIDGET_CLASS(klass); - - unit_selector_parent_class = (GtkHBoxClass*)gtk_type_class(GTK_TYPE_HBOX); + GObjectClass *object_class = G_OBJECT_CLASS(klass); + unit_selector_parent_class = (GtkHBoxClass*)g_type_class_peek_parent(klass); signals[SET_UNIT] = g_signal_new("set_unit", G_TYPE_FROM_CLASS(klass), @@ -138,7 +133,7 @@ sp_unit_selector_finalize(GObject *object) GtkWidget * sp_unit_selector_new(guint bases) { - SPUnitSelector *us = (SPUnitSelector*)gtk_type_new(SP_TYPE_UNIT_SELECTOR); + SPUnitSelector *us = (SPUnitSelector*)g_object_new(SP_TYPE_UNIT_SELECTOR, NULL); sp_unit_selector_set_bases(us, bases); @@ -163,7 +158,7 @@ sp_unit_selector_get_unit(SPUnitSelector const *us) static void spus_unit_activate(GtkWidget *widget, SPUnitSelector *us) { - SPUnit const *unit = (SPUnit const *) gtk_object_get_data(GTK_OBJECT(widget), "unit"); + SPUnit const *unit = (SPUnit const *) g_object_get_data(G_OBJECT(widget), "unit"); g_return_if_fail(unit != NULL); #ifdef UNIT_SELECTOR_VERBOSE @@ -232,7 +227,7 @@ spus_rebuild_menu(SPUnitSelector *us) // i = gtk_menu_item_new_with_label((us->abbr) ? (us->plural) ? u->abbr_plural : u->abbr : (us->plural) ? u->plural : u->name); GtkWidget *i = gtk_menu_item_new_with_label( u->abbr ); - gtk_object_set_data(GTK_OBJECT(i), "unit", (gpointer) u); + g_object_set_data(G_OBJECT(i), "unit", (gpointer) u); g_signal_connect(G_OBJECT(i), "activate", G_CALLBACK(spus_unit_activate), us); sp_set_font_size_smaller (i); diff --git a/src/ink-comboboxentry-action.cpp b/src/ink-comboboxentry-action.cpp index 49ab343c2..5147b04a8 100644 --- a/src/ink-comboboxentry-action.cpp +++ b/src/ink-comboboxentry-action.cpp @@ -402,7 +402,7 @@ GtkWidget* create_tool_item( GtkAction* action ) } - gtk_action_connect_proxy( GTK_ACTION( action ), item ); + gtk_activatable_set_related_action( GTK_ACTIVATABLE (item), GTK_ACTION( action ) ); gtk_widget_show_all( item ); } else { diff --git a/src/inkscape-manifest.xml b/src/inkscape-manifest.xml index fd2f19e43..f9ca4617f 100644 --- a/src/inkscape-manifest.xml +++ b/src/inkscape-manifest.xml @@ -1,10 +1,10 @@ -<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
-<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
-<dependency>
-<dependentAssembly>
-<assemblyIdentity type="win32" name="Microsoft.Windows.Common-Controls"
- version="6.0.0.0" processorArchitecture="X86"
- publicKeyToken="6595b64144ccf1df" language="*"/>
-</dependentAssembly>
-</dependency>
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?> +<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0"> +<dependency> +<dependentAssembly> +<assemblyIdentity type="win32" name="Microsoft.Windows.Common-Controls" + version="6.0.0.0" processorArchitecture="X86" + publicKeyToken="6595b64144ccf1df" language="*"/> +</dependentAssembly> +</dependency> </assembly>
\ No newline at end of file diff --git a/src/inkview-manifest.xml b/src/inkview-manifest.xml index fd2f19e43..f9ca4617f 100644 --- a/src/inkview-manifest.xml +++ b/src/inkview-manifest.xml @@ -1,10 +1,10 @@ -<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
-<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
-<dependency>
-<dependentAssembly>
-<assemblyIdentity type="win32" name="Microsoft.Windows.Common-Controls"
- version="6.0.0.0" processorArchitecture="X86"
- publicKeyToken="6595b64144ccf1df" language="*"/>
-</dependentAssembly>
-</dependency>
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?> +<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0"> +<dependency> +<dependentAssembly> +<assemblyIdentity type="win32" name="Microsoft.Windows.Common-Controls" + version="6.0.0.0" processorArchitecture="X86" + publicKeyToken="6595b64144ccf1df" language="*"/> +</dependentAssembly> +</dependency> </assembly>
\ No newline at end of file diff --git a/src/inkview.cpp b/src/inkview.cpp index 173427aae..09169f5be 100644 --- a/src/inkview.cpp +++ b/src/inkview.cpp @@ -312,7 +312,6 @@ main (int argc, const char **argv) gtk_window_set_default_size (GTK_WINDOW (w), MIN ((int)(ss.doc)->getWidth (), (int)gdk_screen_width () - 64), MIN ((int)(ss.doc)->getHeight (), (int)gdk_screen_height () - 64)); - gtk_window_set_policy (GTK_WINDOW (w), TRUE, TRUE, FALSE); ss.window = w; g_signal_connect (G_OBJECT (w), "delete_event", (GCallback) sp_svgview_main_delete, &ss); diff --git a/src/inkview.rc b/src/inkview.rc index b2d3da7bc..83bb89ba4 100644 --- a/src/inkview.rc +++ b/src/inkview.rc @@ -1,29 +1,29 @@ -
-APPLICATION_ICON ICON DISCARDABLE "../inkscape.ico"
-1 24 DISCARDABLE "./inkview-manifest.xml"
-
-1 VERSIONINFO
- FILEVERSION 0,48,0,9
- PRODUCTVERSION 0,48,0,9
-BEGIN
- BLOCK "StringFileInfo"
- BEGIN
- BLOCK "040901b5"
- BEGIN
- VALUE "Comments", "Published under the GNU GPL"
- VALUE "CompanyName", "inkscape.org"
- VALUE "FileDescription", "Inkview"
- VALUE "FileVersion", "0.48+devel"
- VALUE "InternalName", "Inkview"
- VALUE "LegalCopyright", "© 2010 Inkscape"
- VALUE "ProductName", "Inkview"
- VALUE "ProductVersion", "0.48+devel"
- END
- END
- BLOCK "VarFileInfo"
- BEGIN
- VALUE "Translation", 1033, 437
- END
-END
-
-1000 BITMAP "./show-preview.bmp"
+ +APPLICATION_ICON ICON DISCARDABLE "../inkscape.ico" +1 24 DISCARDABLE "./inkview-manifest.xml" + +1 VERSIONINFO + FILEVERSION 0,48,0,9 + PRODUCTVERSION 0,48,0,9 +BEGIN + BLOCK "StringFileInfo" + BEGIN + BLOCK "040901b5" + BEGIN + VALUE "Comments", "Published under the GNU GPL" + VALUE "CompanyName", "inkscape.org" + VALUE "FileDescription", "Inkview" + VALUE "FileVersion", "0.48+devel" + VALUE "InternalName", "Inkview" + VALUE "LegalCopyright", "© 2010 Inkscape" + VALUE "ProductName", "Inkview" + VALUE "ProductVersion", "0.48+devel" + END + END + BLOCK "VarFileInfo" + BEGIN + VALUE "Translation", 1033, 437 + END +END + +1000 BITMAP "./show-preview.bmp" diff --git a/src/interface.cpp b/src/interface.cpp index 11882ddf9..c7946cf18 100644 --- a/src/interface.cpp +++ b/src/interface.cpp @@ -216,9 +216,7 @@ sp_create_window(SPViewWidget *vw, gboolean editable) } } - } else { - gtk_window_set_policy(GTK_WINDOW(win->gobj()), TRUE, TRUE, TRUE); - } + } if ( completeDropTargets == 0 || completeDropTargetsCount == 0 ) { @@ -458,7 +456,7 @@ sp_ui_menu_append_item( GtkMenu *menu, gchar const *stock, g_signal_connect( G_OBJECT(item), "deselect", G_CALLBACK(sp_ui_menu_deselect), NULL); } - gtk_menu_append(GTK_MENU(menu), item); + gtk_menu_shell_append(GTK_MENU_SHELL(menu), item); return item; @@ -564,7 +562,7 @@ sp_ui_menu_append_item_from_verb(GtkMenu *menu, Inkscape::Verb *verb, Inkscape:: } gtk_widget_show(item); - gtk_menu_append(GTK_MENU(menu), item); + gtk_menu_shell_append(GTK_MENU_SHELL(menu), item); return item; @@ -955,7 +953,7 @@ sp_ui_build_dyn_menus(Inkscape::XML::Node *menus, GtkWidget *menu, Inkscape::UI: GtkWidget *item = gtk_menu_item_new_with_label(string); gtk_widget_set_sensitive(item, false); gtk_widget_show(item); - gtk_menu_append(GTK_MENU(menu), item); + gtk_menu_shell_append(GTK_MENU_SHELL(menu), item); } continue; } @@ -966,7 +964,7 @@ sp_ui_build_dyn_menus(Inkscape::XML::Node *menus, GtkWidget *menu, Inkscape::UI: || !strcmp(menu_pntr->name(), "seperator")) { GtkWidget *item = gtk_separator_menu_item_new(); gtk_widget_show(item); - gtk_menu_append(GTK_MENU(menu), item); + gtk_menu_shell_append(GTK_MENU_SHELL(menu), item); continue; } if (!strcmp(menu_pntr->name(), "template-list")) { @@ -995,7 +993,7 @@ sp_ui_build_dyn_menus(Inkscape::XML::Node *menus, GtkWidget *menu, Inkscape::UI: GtkWidget *recent_item = gtk_menu_item_new_with_mnemonic(_("Open _Recent")); gtk_menu_item_set_submenu(GTK_MENU_ITEM(recent_item), recent_menu); - gtk_menu_append(GTK_MENU(menu), GTK_WIDGET(recent_item)); + gtk_menu_shell_append(GTK_MENU_SHELL(menu), GTK_WIDGET(recent_item)); // this will just sit and update the list's item count static MaxRecentObserver *mro = new MaxRecentObserver(recent_menu); prefs->addObserver(*mro); diff --git a/src/knot.cpp b/src/knot.cpp index 638b31007..1ffb5269c 100644 --- a/src/knot.cpp +++ b/src/knot.cpp @@ -649,12 +649,12 @@ void sp_knot_update_ctrl(SPKnot *knot) return; } - gtk_object_set(GTK_OBJECT(knot->item), "shape", knot->shape, NULL); - gtk_object_set(GTK_OBJECT(knot->item), "mode", knot->mode, NULL); - gtk_object_set(GTK_OBJECT(knot->item), "size", (gdouble) knot->size, NULL); - gtk_object_set(GTK_OBJECT(knot->item), "anchor", knot->anchor, NULL); + g_object_set(knot->item, "shape", knot->shape, NULL); + g_object_set(knot->item, "mode", knot->mode, NULL); + g_object_set(knot->item, "size", (gdouble) knot->size, NULL); + g_object_set(knot->item, "anchor", knot->anchor, NULL); if (knot->pixbuf) { - gtk_object_set(GTK_OBJECT (knot->item), "pixbuf", knot->pixbuf, NULL); + g_object_set(knot->item, "pixbuf", knot->pixbuf, NULL); } sp_knot_set_ctrl_state(knot); @@ -666,29 +666,29 @@ void sp_knot_update_ctrl(SPKnot *knot) static void sp_knot_set_ctrl_state(SPKnot *knot) { if (knot->flags & SP_KNOT_DRAGGING) { - gtk_object_set(GTK_OBJECT (knot->item), + g_object_set(knot->item, "fill_color", knot->fill[SP_KNOT_STATE_DRAGGING], NULL); - gtk_object_set(GTK_OBJECT (knot->item), + g_object_set(knot->item, "stroke_color", knot->stroke[SP_KNOT_STATE_DRAGGING], NULL); } else if (knot->flags & SP_KNOT_MOUSEOVER) { - gtk_object_set(GTK_OBJECT(knot->item), + g_object_set(knot->item, "fill_color", knot->fill[SP_KNOT_STATE_MOUSEOVER], NULL); - gtk_object_set(GTK_OBJECT(knot->item), + g_object_set(knot->item, "stroke_color", knot->stroke[SP_KNOT_STATE_MOUSEOVER], NULL); } else { - gtk_object_set(GTK_OBJECT(knot->item), + g_object_set(knot->item, "fill_color", knot->fill[SP_KNOT_STATE_NORMAL], NULL); - gtk_object_set(GTK_OBJECT(knot->item), + g_object_set(knot->item, "stroke_color", knot->stroke[SP_KNOT_STATE_NORMAL], NULL); diff --git a/src/libavoid/vpsc.cpp b/src/libavoid/vpsc.cpp index 19d360375..1646ddaaa 100644 --- a/src/libavoid/vpsc.cpp +++ b/src/libavoid/vpsc.cpp @@ -422,7 +422,7 @@ Constraint* IncSolver::mostViolated(Constraints &l) { // downwards. There is always at least 1 element in the // vector because of search. // TODO check this logic and add parens: - if((deletePoint != end) && ((minSlack < ZERO_UPPERBOUND) && !v->active || v->equality)) { + if((deletePoint != end) && (((minSlack < ZERO_UPPERBOUND) && !v->active) || v->equality)) { *deletePoint = l[l.size()-1]; l.resize(l.size()-1); } diff --git a/src/libcola/cola.cpp b/src/libcola/cola.cpp index 62771ece2..87fbf9f79 100644 --- a/src/libcola/cola.cpp +++ b/src/libcola/cola.cpp @@ -4,6 +4,8 @@ #include "shortest_paths.h" #include <2geom/math-utils.h> +using namespace std; + namespace cola { /** @@ -16,8 +18,8 @@ inline double dummy_var_euclidean_dist(GradientProjection* gpx, GradientProjecti } ConstrainedMajorizationLayout ::ConstrainedMajorizationLayout( - vector<Rectangle*>& rs, - vector<Edge>& es, + std::vector<Rectangle*>& rs, + std::vector<Edge>& es, double* eweights, double idealLength, TestConvergence& done) @@ -85,10 +87,10 @@ ConstrainedMajorizationLayout for(Cluster::iterator vit=c->begin(); vit!=c->end(); ++vit) { double pos = coords[k][*vit]; - minPos=min(pos,minPos); - maxPos=max(pos,maxPos); - p->leftof.push_back(make_pair(*vit,0)); - p->rightof.push_back(make_pair(*vit,0)); + minPos = std::min(pos, minPos); + maxPos = std::max(pos, maxPos); + p->leftof.push_back(std::make_pair(*vit,0)); + p->rightof.push_back(std::make_pair(*vit,0)); } p->place_l = minPos; p->place_r = maxPos; @@ -108,7 +110,7 @@ void ConstrainedMajorizationLayout::majlayout( double** Dij, GradientProjection* gp, double* coords) { double b[n]; - fill(b,b+n,0); + std::fill(b,b+n,0); majlayout(Dij,gp,coords,b); } void ConstrainedMajorizationLayout::majlayout( @@ -123,7 +125,7 @@ void ConstrainedMajorizationLayout::majlayout( for (unsigned j = 0; j < lapSize; j++) { if (j == i) continue; dist_ij = euclidean_distance(i, j); - if (dist_ij > 1e-30 && Dij[i][j] > 1e-30) { /* skip zero distances */ + if (dist_ij > 1e-30 && Dij[i][j] > 1e-30) { /* skip zero distances */ /* calculate L_ij := w_{ij}*d_{ij}/dist_{ij} */ L_ij = 1.0 / (dist_ij * Dij[i][j]); degree -= L_ij; @@ -216,11 +218,11 @@ bool ConstrainedMajorizationLayout::run() { return true; } static bool straightenToProjection=true; -void ConstrainedMajorizationLayout::straighten(vector<straightener::Edge*>& sedges, Dim dim) { - vector<straightener::Node*> snodes; - for (unsigned i=0;i<lapSize;i++) { - snodes.push_back(new straightener::Node(i,boundingBoxes[i])); - } +void ConstrainedMajorizationLayout::straighten(std::vector<straightener::Edge*>& sedges, Dim dim) { + std::vector<straightener::Node*> snodes; + for (unsigned i=0;i<lapSize;i++) { + snodes.push_back(new straightener::Node(i,boundingBoxes[i])); + } SimpleConstraints cs; straightener::generateConstraints(snodes,sedges,cs,dim); n=snodes.size(); @@ -244,7 +246,7 @@ void ConstrainedMajorizationLayout::straighten(vector<straightener::Edge*>& sedg LinearConstraints linearConstraints; for(unsigned i=0;i<sedges.size();i++) { sedges[i]->nodePath(snodes); - vector<unsigned>& path=sedges[i]->path; + std::vector<unsigned>& path=sedges[i]->path; // take u and v as the ends of the line //unsigned u=path[0]; //unsigned v=path[path.size()-1]; @@ -267,7 +269,7 @@ void ConstrainedMajorizationLayout::straighten(vector<straightener::Edge*>& sedg //cout << "Generated "<<linearConstraints.size()<< " linear constraints"<<endl; assert(snodes.size()==lapSize+linearConstraints.size()); double b[n],*coords=dim==HORIZONTAL?X:Y,dist_ub,dist_bv; - fill(b,b+n,0); + std::fill(b,b+n,0); for(LinearConstraints::iterator i=linearConstraints.begin(); i!= linearConstraints.end();i++) { LinearConstraint* c=*i; @@ -286,10 +288,10 @@ void ConstrainedMajorizationLayout::straighten(vector<straightener::Edge*>& sedg double wbv=edge_length*c->frac_bv; dist_ub=euclidean_distance(c->u,c->b)*wub; dist_bv=euclidean_distance(c->b,c->v)*wbv; - wub=max(wub,0.00001); - wbv=max(wbv,0.00001); - dist_ub=max(dist_ub,0.00001); - dist_bv=max(dist_bv,0.00001); + wub = std::max(wub,0.00001); + wbv = std::max(wbv,0.00001); + dist_ub = std::max(dist_ub,0.00001); + dist_bv = std::max(dist_bv,0.00001); wub=1/(wub*wub); wbv=1/(wbv*wbv); Q[c->u][c->u]-=wub; @@ -306,8 +308,8 @@ void ConstrainedMajorizationLayout::straighten(vector<straightener::Edge*>& sedg - coords[c->b] / dist_ub - coords[c->b] / dist_bv; } } - GradientProjection gp(dim,n,Q,coords,tol,100, - (AlignmentConstraints*)NULL,false,(vpsc::Rectangle**)NULL,(PageBoundaryConstraints*)NULL,&cs); + GradientProjection gp(dim,n,Q,coords,tol,100, + (AlignmentConstraints*)NULL,false,(vpsc::Rectangle**)NULL,(PageBoundaryConstraints*)NULL,&cs); constrainedLayout = true; majlayout(Dij,&gp,coords,b); for(unsigned i=0;i<sedges.size();i++) { @@ -337,16 +339,14 @@ void ConstrainedMajorizationLayout::setupConstraints( PageBoundaryConstraints* pbcx, PageBoundaryConstraints* pbcy, SimpleConstraints* scx, SimpleConstraints* scy, Clusters* cs, - vector<straightener::Edge*>* straightenEdges) { + std::vector<straightener::Edge*>* straightenEdges) { constrainedLayout = true; this->avoidOverlaps = avoidOverlaps; if(cs) { clusters=cs; } - gpX=new GradientProjection( - HORIZONTAL,n,Q,X,tol,100,acsx,avoidOverlaps,boundingBoxes,pbcx,scx); - gpY=new GradientProjection( - VERTICAL,n,Q,Y,tol,100,acsy,avoidOverlaps,boundingBoxes,pbcy,scy); + gpX = new GradientProjection(HORIZONTAL,n,Q,X,tol,100,acsx,avoidOverlaps,boundingBoxes,pbcx,scx); + gpY = new GradientProjection(VERTICAL,n,Q,Y,tol,100,acsy,avoidOverlaps,boundingBoxes,pbcy,scy); this->straightenEdges = straightenEdges; } } // namespace cola diff --git a/src/libcola/cola.h b/src/libcola/cola.h index eda64cb5f..e1f19994e 100644 --- a/src/libcola/cola.h +++ b/src/libcola/cola.h @@ -12,47 +12,48 @@ #include "straightener.h" -typedef vector<unsigned> Cluster; -typedef vector<Cluster*> Clusters; +typedef std::vector<unsigned> Cluster; +typedef std::vector<Cluster*> Clusters; namespace vpsc { class Rectangle; } namespace cola { using vpsc::Rectangle; - typedef pair<unsigned, unsigned> Edge; + typedef std::pair<unsigned, unsigned> Edge; // a graph component with a list of node_ids giving indices for some larger list of nodes // for the nodes in this component, and a list of edges - node indices relative to this component class Component { public: - vector<unsigned> node_ids; - vector<Rectangle*> rects; - vector<Edge> edges; + std::vector<unsigned> node_ids; + std::vector<Rectangle*> rects; + std::vector<Edge> edges; SimpleConstraints scx, scy; virtual ~Component(); void moveRectangles(double x, double y); Rectangle* getBoundingBox(); }; + // for a graph of n nodes, return connected components void connectedComponents( - const vector<Rectangle*> &rs, - const vector<Edge> &es, + const std::vector<Rectangle*> &rs, + const std::vector<Edge> &es, const SimpleConstraints &scx, - const SimpleConstraints &scy, - vector<Component*> &components); + const SimpleConstraints &scy, + std::vector<Component*> &components); // move the contents of each component so that the components do not // overlap. - void separateComponents(const vector<Component*> &components); + void separateComponents(const std::vector<Component*> &components); // defines references to three variables for which the goal function // will be altered to prefer points u-b-v are in a linear arrangement // such that b is placed at u+t(v-u). struct LinearConstraint { - LinearConstraint(unsigned u, unsigned v, unsigned b, double w, + LinearConstraint(unsigned u, unsigned v, unsigned b, double w, double frac_ub, double frac_bv, - double* X, double* Y) + double* X, double* Y) : u(u),v(v),b(b),w(w),frac_ub(frac_ub),frac_bv(frac_bv), - tAtProjection(true) + tAtProjection(true) { assert(frac_ub<=1.0); assert(frac_bv<=1.0); @@ -88,7 +89,7 @@ namespace cola { dvv=t*t; dvb=-t; dbb=1; - //printf("New LC: t=%f\n",t); + //printf("New LC: t=%f\n",t); } unsigned u; unsigned v; @@ -108,67 +109,69 @@ namespace cola { double frac_bv; bool tAtProjection; }; - typedef vector<LinearConstraint*> LinearConstraints; - - class TestConvergence { - public: - double old_stress; - TestConvergence(const double& tolerance = 0.001, const unsigned maxiterations = 1000) - : tolerance(tolerance), - maxiterations(maxiterations) { reset(); } - virtual ~TestConvergence() {} - - virtual bool operator()(double new_stress, double* X, double* Y) { - //std::cout<<"iteration="<<iterations<<", new_stress="<<new_stress<<std::endl; - if (old_stress == DBL_MAX) { - old_stress = new_stress; - if(++iterations>=maxiterations) {; - return true; - } else { - return false; - } - } - bool converged = - fabs(new_stress - old_stress) / (new_stress + 1e-10) < tolerance - || ++iterations > maxiterations; + + typedef std::vector<LinearConstraint*> LinearConstraints; + +class TestConvergence { +public: + double old_stress; + TestConvergence(const double& tolerance = 0.001, const unsigned maxiterations = 1000) + : tolerance(tolerance), + maxiterations(maxiterations) { reset(); } + virtual ~TestConvergence() {} + + virtual bool operator()(double new_stress, double* X, double* Y) { + //std::cout<<"iteration="<<iterations<<", new_stress="<<new_stress<<std::endl; + if (old_stress == DBL_MAX) { old_stress = new_stress; - return converged; - } - void reset() { - old_stress = DBL_MAX; - iterations = 0; - } - private: - const double tolerance; - const unsigned maxiterations; - unsigned iterations; - }; - static TestConvergence defaultTest(0.0001,100); - class ConstrainedMajorizationLayout { - public: - ConstrainedMajorizationLayout( - vector<Rectangle*>& rs, - vector<Edge>& es, - double* eweights, - double idealLength, - TestConvergence& done=defaultTest); - - void moveBoundingBoxes() { - for(unsigned i=0;i<lapSize;i++) { - boundingBoxes[i]->moveCentreX(X[i]); - boundingBoxes[i]->moveCentreY(Y[i]); + if(++iterations>=maxiterations) {; + return true; + } else { + return false; } } + bool converged = + fabs(new_stress - old_stress) / (new_stress + 1e-10) < tolerance + || ++iterations > maxiterations; + old_stress = new_stress; + return converged; + } + void reset() { + old_stress = DBL_MAX; + iterations = 0; + } +private: + const double tolerance; + const unsigned maxiterations; + unsigned iterations; +}; + +static TestConvergence defaultTest(0.0001,100); +class ConstrainedMajorizationLayout { +public: + ConstrainedMajorizationLayout( + std::vector<Rectangle*>& rs, + std::vector<Edge>& es, + double* eweights, + double idealLength, + TestConvergence& done=defaultTest); + + void moveBoundingBoxes() { + for(unsigned i=0;i<lapSize;i++) { + boundingBoxes[i]->moveCentreX(X[i]); + boundingBoxes[i]->moveCentreY(Y[i]); + } + } void setupConstraints( AlignmentConstraints* acsx, AlignmentConstraints* acsy, - bool avoidOverlaps, + bool avoidOverlaps, PageBoundaryConstraints* pbcx = NULL, PageBoundaryConstraints* pbcy = NULL, SimpleConstraints* scx = NULL, SimpleConstraints* scy = NULL, Clusters* cs = NULL, - vector<straightener::Edge*>* straightenEdges = NULL); + std::vector<straightener::Edge*>* straightenEdges = NULL); void addLinearConstraints(LinearConstraints* linearConstraints); @@ -191,8 +194,8 @@ namespace cola { delete [] X; delete [] Y; } - bool run(); - void straighten(vector<straightener::Edge*>&, Dim); + bool run(); + void straighten(std::vector<straightener::Edge*>&, Dim); bool avoidOverlaps; bool constrainedLayout; private: @@ -203,7 +206,7 @@ namespace cola { } double compute_stress(double **Dij); void majlayout(double** Dij,GradientProjection* gp, double* coords); - void majlayout(double** Dij,GradientProjection* gp, double* coords, + void majlayout(double** Dij,GradientProjection* gp, double* coords, double* b); unsigned n; // is lapSize + dummyVars unsigned lapSize; // lapSize is the number of variables for actual nodes @@ -211,15 +214,25 @@ namespace cola { double** Q; // quadratic terms matrix used in computations double** Dij; double tol; - TestConvergence& done; + TestConvergence& done; Rectangle** boundingBoxes; double *X, *Y; Clusters* clusters; double edge_length; LinearConstraints *linearConstraints; GradientProjection *gpX, *gpY; - vector<straightener::Edge*>* straightenEdges; - }; + std::vector<straightener::Edge*>* straightenEdges; +}; + } -#endif // COLA_H +#endif // COLA_H +/* + Local Variables: + mode:c++ + c-file-style:"stroustrup" + c-file-offsets:((innamespace . 0)(inline-open . 0)) + indent-tabs-mode:nil + fill-column:99 + End: +*/ // vim: filetype=cpp:expandtab:shiftwidth=4:tabstop=4:softtabstop=4 diff --git a/src/libcola/gradient_projection.h b/src/libcola/gradient_projection.h index 4ef68fc2e..9907cdb13 100644 --- a/src/libcola/gradient_projection.h +++ b/src/libcola/gradient_projection.h @@ -9,11 +9,9 @@ #include <iostream> #include <math.h> -using namespace std; - -typedef vector<vpsc::Constraint*> Constraints; -typedef vector<vpsc::Variable*> Variables; -typedef vector<pair<unsigned,double> > OffsetList; +typedef std::vector<vpsc::Constraint*> Constraints; +typedef std::vector<vpsc::Variable*> Variables; +typedef std::vector<std::pair<unsigned, double> > OffsetList; class SimpleConstraint { public: @@ -23,7 +21,7 @@ public: unsigned right; double gap; }; -typedef vector<SimpleConstraint*> SimpleConstraints; +typedef std::vector<SimpleConstraint*> SimpleConstraints; class AlignmentConstraint { friend class GradientProjection; public: @@ -37,7 +35,7 @@ public: private: vpsc::Variable* variable; }; -typedef vector<AlignmentConstraint*> AlignmentConstraints; +typedef std::vector<AlignmentConstraint*> AlignmentConstraints; class PageBoundaryConstraints { public: @@ -63,7 +61,7 @@ private: double weight; }; -typedef vector<pair<unsigned,double> > CList; +typedef std::vector<std::pair<unsigned, double> > CList; /** * A DummyVarPair is a pair of variables with an ideal distance between them and which have no * other interaction with other variables apart from through constraints. This means that @@ -170,19 +168,19 @@ friend class GradientProjection; double old_place_l; // old_place is where the descent vec g was computed double old_place_r; }; -typedef vector<DummyVarPair*> DummyVars; +typedef std::vector<DummyVarPair*> DummyVars; enum Dim { HORIZONTAL, VERTICAL }; class GradientProjection { public: - GradientProjection( + GradientProjection( const Dim k, - unsigned n, - double** A, - double* x, - double tol, - unsigned max_iterations, + unsigned n, + double** A, + double* x, + double tol, + unsigned max_iterations, AlignmentConstraints* acs=NULL, bool nonOverlapConstraints=false, vpsc::Rectangle** rs=NULL, @@ -222,7 +220,7 @@ public: if(!gcs.empty() || nonOverlapConstraints) { constrained=true; } - } + } virtual ~GradientProjection() { delete [] g; delete [] d; @@ -236,16 +234,16 @@ public: } } void clearDummyVars(); - unsigned solve(double* b); + unsigned solve(double* b); DummyVars dummy_vars; // special vars that must be considered in Lapl. private: vpsc::IncSolver* setupVPSC(); void destroyVPSC(vpsc::IncSolver *vpsc); Dim k; - unsigned n; // number of actual vars - double** A; // Graph laplacian matrix + unsigned n; // number of actual vars + double** A; // Graph laplacian matrix double* place; - Variables vars; // all variables + Variables vars; // all variables // computations Constraints gcs; /* global constraints - persist throughout all iterations */ @@ -255,9 +253,9 @@ private: double tolerance; AlignmentConstraints* acs; unsigned max_iterations; - double* g; /* gradient */ - double* d; - double* old_place; + double* g; /* gradient */ + double* d; + double* old_place; bool constrained; }; diff --git a/src/libcola/shortest_paths.cpp b/src/libcola/shortest_paths.cpp index 4f4183b07..ebc2c93de 100644 --- a/src/libcola/shortest_paths.cpp +++ b/src/libcola/shortest_paths.cpp @@ -73,6 +73,7 @@ void dijkstra( } } } + void dijkstra( unsigned s, unsigned n, @@ -80,21 +81,22 @@ void dijkstra( vector<Edge>& es, double* eweights) { - assert(s<n); - Node vs[n]; - dijkstra_init(vs,es,eweights); - dijkstra(s,n,vs,d); + assert(s < n); + std::vector<Node> vs(n); + dijkstra_init(&vs[0], es, eweights); + dijkstra(s, n, &vs[0], d); } + void johnsons( unsigned n, double** D, vector<Edge>& es, double* eweights) { - Node vs[n]; - dijkstra_init(vs,es,eweights); - for(unsigned k=0;k<n;k++) { - dijkstra(k,n,vs,D[k]); + std::vector<Node> vs(n); + dijkstra_init(&vs[0], es, eweights); + for (unsigned k = 0; k < n; k++) { + dijkstra(k,n,&vs[0],D[k]); } } } diff --git a/src/libcola/shortest_paths.h b/src/libcola/shortest_paths.h index 20107caf0..f376b631c 100644 --- a/src/libcola/shortest_paths.h +++ b/src/libcola/shortest_paths.h @@ -1,7 +1,7 @@ // vim: set cindent // vim: ts=4 sw=4 et tw=0 wm=0 #include <vector> -using namespace std; + template <class T> class PairNode; namespace shortest_paths { @@ -9,20 +9,23 @@ namespace shortest_paths { struct Node { unsigned id; double d; - Node* p; // predecessor - vector<Node*> neighbours; - vector<double> nweights; - PairNode<Node*>* qnode; + Node *p; // predecessor + std::vector<Node*> neighbours; + std::vector<double> nweights; + PairNode<Node*> *qnode; }; inline bool compareNodes(Node *const &u, Node *const &v) { - return u->d < v->d; + return u->d < v->d; } -typedef pair<unsigned,unsigned> Edge; +typedef std::pair<unsigned,unsigned> Edge; + void floyd_warshall(unsigned n, double** D, - vector<Edge>& es,double* eweights); + std::vector<Edge>& es,double* eweights); + void johnsons(unsigned n, double** D, - vector<Edge>& es, double* eweights); + std::vector<Edge>& es, double* eweights); + void dijkstra(unsigned s, unsigned n, double* d, - vector<Edge>& es, double* eweights); + std::vector<Edge>& es, double* eweights); } diff --git a/src/libcola/straightener.cpp b/src/libcola/straightener.cpp index e237c03c3..7a1020781 100644 --- a/src/libcola/straightener.cpp +++ b/src/libcola/straightener.cpp @@ -25,6 +25,8 @@ using std::set; using std::vector; using std::list; +using std::pair; +using std::make_pair; namespace straightener { @@ -108,7 +110,7 @@ namespace straightener { int compare_events(const void *a, const void *b) { Event *ea=*(Event**)a; Event *eb=*(Event**)b; - if(ea->v!=NULL&&ea->v==eb->v||ea->e!=NULL&&ea->e==eb->e) { + if((ea->v!=NULL&&ea->v==eb->v)||(ea->e!=NULL&&ea->e==eb->e)) { // when comparing opening and closing from object // open must come first if(ea->type==Open) return -1; @@ -263,8 +265,8 @@ namespace straightener { // node is on an edge Edge *edge=(*i)->edge; if(!edge->isEnd(v->id) - &&(l!=NULL&&!edge->isEnd(l->id)||l==NULL) - &&(r!=NULL&&!edge->isEnd(r->id)||r==NULL)) { + &&((l!=NULL&&!edge->isEnd(l->id))||l==NULL) + &&((r!=NULL&&!edge->isEnd(r->id))||r==NULL)) { if(lastNode!=NULL) { //printf(" Rule A: Constraint: v%d +g <= v%d\n",lastNode->id,(*i)->id); cs.push_back(createConstraint(lastNode,*i,dim)); diff --git a/src/libcola/straightener.h b/src/libcola/straightener.h index 934be45ba..b1ce665f4 100644 --- a/src/libcola/straightener.h +++ b/src/libcola/straightener.h @@ -18,10 +18,10 @@ namespace straightener { xmin=ymin=DBL_MAX; xmax=ymax=-DBL_MAX; for(unsigned i=0;i<n;i++) { - xmin=min(xmin,xs[i]); - xmax=max(xmax,xs[i]); - ymin=min(ymin,ys[i]); - ymax=max(ymax,ys[i]); + xmin = std::min(xmin,xs[i]); + xmax = std::max(xmax,xs[i]); + ymin = std::min(ymin,ys[i]); + ymax = std::max(ymax,ys[i]); } } unsigned n; @@ -35,8 +35,8 @@ namespace straightener { unsigned startNode, endNode; Route* route; double xmin, xmax, ymin, ymax; - vector<unsigned> dummyNodes; - vector<unsigned> path; + std::vector<unsigned> dummyNodes; + std::vector<unsigned> path; Edge(unsigned id, unsigned start, unsigned end, Route* route) : id(id), startNode(start), endNode(end), route(route) { @@ -54,7 +54,7 @@ namespace straightener { if(startNode==n||endNode==n) return true; return false; } - void nodePath(vector<Node*>& nodes); + void nodePath(std::vector<Node*>& nodes); void createRouteFromPath(double* X, double* Y) { Route* r=new Route(path.size()); for(unsigned i=0;i<path.size();i++) { @@ -63,7 +63,7 @@ namespace straightener { } setRoute(r); } - void xpos(double y, vector<double>& xs) { + void xpos(double y, std::vector<double>& xs) { // search line segments for intersection points with y pos for(unsigned i=1;i<route->n;i++) { double ax=route->xs[i-1], bx=route->xs[i], ay=route->ys[i-1], by=route->ys[i]; @@ -74,7 +74,7 @@ namespace straightener { } } } - void ypos(double x, vector<double>& ys) { + void ypos(double x, std::vector<double>& ys) { // search line segments for intersection points with x pos for(unsigned i=1;i<route->n;i++) { double ax=route->xs[i-1], bx=route->xs[i], ay=route->ys[i-1], by=route->ys[i]; @@ -104,8 +104,8 @@ namespace straightener { edge(NULL),dummy(false),weight(-0.1),open(false) { } private: friend void sortNeighbours(Node* v, Node* l, Node* r, - double conjpos, vector<Edge*>& openEdges, - vector<Node*>& L,vector<Node*>& nodes, Dim dim); + double conjpos, std::vector<Edge*>& openEdges, + std::vector<Node*>& L, std::vector<Node*>& nodes, Dim dim); Node(unsigned id, double x, double y, Edge* e) : id(id),x(x),y(y), width(4), height(width), xmin(x-width/2),xmax(x+width/2), @@ -126,8 +126,8 @@ namespace straightener { } }; typedef std::set<Node*,CmpNodePos> NodeSet; - void generateConstraints(vector<Node*>& nodes, vector<Edge*>& edges,vector<SimpleConstraint*>& cs, Dim dim); - void nodePath(Edge& e,vector<Node*>& nodes, vector<unsigned>& path); + void generateConstraints(std::vector<Node*>& nodes, std::vector<Edge*>& edges, std::vector<SimpleConstraint*>& cs, Dim dim); + void nodePath(Edge& e, std::vector<Node*>& nodes, std::vector<unsigned>& path); } #endif diff --git a/src/libcroco/CMakeLists.txt b/src/libcroco/CMakeLists.txt index 890f58825..af7f49654 100644 --- a/src/libcroco/CMakeLists.txt +++ b/src/libcroco/CMakeLists.txt @@ -28,6 +28,9 @@ set(libcroco_SRC cr-token.c cr-utils.c + + # ------- + # Headers cr-additional-sel.h cr-attr-sel.h cr-cascade.h diff --git a/src/libcroco/cr-parser.c b/src/libcroco/cr-parser.c index 5b0a56f32..a8e2de5a3 100644 --- a/src/libcroco/cr-parser.c +++ b/src/libcroco/cr-parser.c @@ -2408,7 +2408,7 @@ cr_parser_parse_stylesheet (CRParser * a_this) import_string, NULL, &location) ; - if ((PRIVATE (a_this)->sac_handler->resolve_import == TRUE)) { + if (PRIVATE (a_this)->sac_handler->resolve_import == TRUE) { /* *TODO: resolve the *import rule. diff --git a/src/libgdl/gdl-dock-bar.c b/src/libgdl/gdl-dock-bar.c index 1e694eec5..663378b7f 100644 --- a/src/libgdl/gdl-dock-bar.c +++ b/src/libgdl/gdl-dock-bar.c @@ -246,6 +246,7 @@ gdl_dock_bar_item_clicked (GtkWidget *button, { GdlDockBar *dockbar; GdlDockObject *controller; + (void)button; g_return_if_fail (item != NULL); @@ -301,7 +302,7 @@ gdl_dock_bar_add_item (GdlDockBar *dockbar, label = gtk_label_new (name); if (dockbar->_priv->orientation == GTK_ORIENTATION_VERTICAL) gtk_label_set_angle (GTK_LABEL (label), 90); - gtk_box_pack_start_defaults (GTK_BOX (box), label); + gtk_box_pack_start (GTK_BOX (box), label, TRUE, TRUE, 0); } /* FIXME: For now AUTO behaves same as BOTH */ @@ -319,7 +320,7 @@ gdl_dock_bar_add_item (GdlDockBar *dockbar, image = gtk_image_new_from_stock (GTK_STOCK_NEW, GTK_ICON_SIZE_SMALL_TOOLBAR); } - gtk_box_pack_start_defaults (GTK_BOX (box), image); + gtk_box_pack_start (GTK_BOX (box), image, TRUE, TRUE, 0); } gtk_container_add (GTK_CONTAINER (button), box); @@ -394,6 +395,7 @@ static void gdl_dock_bar_layout_changed_cb (GdlDockMaster *master, GdlDockBar *dockbar) { + (void)master; update_dock_items (dockbar, FALSE); } diff --git a/src/libgdl/gdl-dock-item-grip.c b/src/libgdl/gdl-dock-item-grip.c index c51b782b3..2513313ef 100644 --- a/src/libgdl/gdl-dock-item-grip.c +++ b/src/libgdl/gdl-dock-item-grip.c @@ -127,12 +127,11 @@ gdl_dock_item_grip_expose (GtkWidget *widget, GdlDockItemGrip *grip; GdkRectangle title_area; GdkRectangle expose_area; - GtkStyle *bg_style; + GdkGC *bg_style; gint layout_width; gint layout_height; gint text_x; gint text_y; - gboolean item_or_child_has_focus; grip = GDL_DOCK_ITEM_GRIP (widget); gdl_dock_item_grip_get_title_area (grip, &title_area); @@ -143,6 +142,7 @@ gdl_dock_item_grip_expose (GtkWidget *widget, gtk_widget_get_style (widget)->dark_gc[widget->state] : gtk_widget_get_style (widget)->mid_gc[widget->state]); + gdk_draw_rectangle (GDK_DRAWABLE (widget->window), bg_style, TRUE, 1, 0, widget->allocation.width - 1, widget->allocation.height); @@ -201,6 +201,7 @@ gdl_dock_item_grip_item_notify (GObject *master, { GdlDockItemGrip *grip; gboolean cursor; + (void)master; grip = GDL_DOCK_ITEM_GRIP (data); @@ -318,6 +319,7 @@ static void gdl_dock_item_grip_close_clicked (GtkWidget *widget, GdlDockItemGrip *grip) { + (void)widget; g_return_if_fail (grip->item != NULL); gdl_dock_item_hide_item (grip->item); @@ -327,6 +329,7 @@ static void gdl_dock_item_grip_iconify_clicked (GtkWidget *widget, GdlDockItemGrip *grip) { + (void)widget; g_return_if_fail (grip->item != NULL); gdl_dock_item_iconify_item (grip->item); @@ -556,8 +559,9 @@ gdl_dock_item_grip_size_allocate (GtkWidget *widget, { GdlDockItemGrip *grip; GtkContainer *container; - GtkRequisition button_requisition = { 0, }; + GtkRequisition button_requisition; GtkAllocation child_allocation; + memset(&button_requisition, 0, sizeof(button_requisition)); g_return_if_fail (GDL_IS_DOCK_ITEM_GRIP (widget)); g_return_if_fail (allocation != NULL); @@ -625,6 +629,8 @@ static void gdl_dock_item_grip_add (GtkContainer *container, GtkWidget *widget) { + (void)container; + (void)widget; g_warning ("gtk_container_add not implemented for GdlDockItemGrip"); } @@ -632,6 +638,8 @@ static void gdl_dock_item_grip_remove (GtkContainer *container, GtkWidget *widget) { + (void)container; + (void)widget; g_warning ("gtk_container_remove not implemented for GdlDockItemGrip"); } @@ -653,9 +661,10 @@ gdl_dock_item_grip_forall (GtkContainer *container, } } -static GtkType +static GType gdl_dock_item_grip_child_type (GtkContainer *container) { + (void)container; return G_TYPE_NONE; } diff --git a/src/libgdl/gdl-dock-item.c b/src/libgdl/gdl-dock-item.c index b0d97a06d..c01737636 100644 --- a/src/libgdl/gdl-dock-item.c +++ b/src/libgdl/gdl-dock-item.c @@ -79,11 +79,10 @@ static void gdl_dock_item_forall (GtkContainer *container, gboolean include_internals, GtkCallback callback, gpointer callback_data); -static GtkType gdl_dock_item_child_type (GtkContainer *container); +static GType gdl_dock_item_child_type (GtkContainer *container); static void gdl_dock_item_set_focus_child (GtkContainer *container, - GtkWidget *widget, - gpointer callback_data); + GtkWidget *widget); static void gdl_dock_item_size_request (GtkWidget *widget, GtkRequisition *requisition); @@ -684,7 +683,7 @@ gdl_dock_item_forall (GtkContainer *container, (* callback) (item->child, callback_data); } -static GtkType +static GType gdl_dock_item_child_type (GtkContainer *container) { g_return_val_if_fail (GDL_IS_DOCK_ITEM (container), G_TYPE_NONE); @@ -697,13 +696,13 @@ gdl_dock_item_child_type (GtkContainer *container) static void gdl_dock_item_set_focus_child (GtkContainer *container, - GtkWidget *child, - gpointer callback_data) + GtkWidget *child) { g_return_if_fail (GDL_IS_DOCK_ITEM (container)); - if (GTK_CONTAINER_CLASS (parent_class)->set_focus_child) + if (GTK_CONTAINER_CLASS (parent_class)->set_focus_child) { (* GTK_CONTAINER_CLASS (parent_class)->set_focus_child) (container, child); + } gdl_dock_item_showhide_grip (GDL_DOCK_ITEM (container)); } @@ -920,6 +919,8 @@ static void gdl_dock_item_style_set (GtkWidget *widget, GtkStyle *previous_style) { + (void)previous_style; + g_return_if_fail (widget != NULL); g_return_if_fail (GDL_IS_DOCK_ITEM (widget)); @@ -935,10 +936,6 @@ static void gdl_dock_item_paint (GtkWidget *widget, GdkEventExpose *event) { - GdlDockItem *item; - - item = GDL_DOCK_ITEM (widget); - gtk_paint_box (widget->style, widget->window, gtk_widget_get_state (widget), @@ -1454,9 +1451,10 @@ static void gdl_dock_item_detach_menu (GtkWidget *widget, GtkMenu *menu) { - GdlDockItem *item; - - item = GDL_DOCK_ITEM (widget); + GdlDockItem *item = GDL_DOCK_ITEM(widget); + + (void)menu; + item->_priv->menu = NULL; } @@ -1539,12 +1537,13 @@ gdl_dock_item_tab_button (GtkWidget *widget, GdkEventButton *event, gpointer data) { - GdlDockItem *item; + GdlDockItem *item = GDL_DOCK_ITEM(data); - item = GDL_DOCK_ITEM (data); + (void)widget; - if (!GDL_DOCK_ITEM_NOT_LOCKED (item)) + if (!GDL_DOCK_ITEM_NOT_LOCKED (item)) { return; + } switch (event->button) { case 1: @@ -1576,11 +1575,10 @@ static void gdl_dock_item_hide_cb (GtkWidget *widget, GdlDockItem *item) { - GdlDockMaster *master; - + (void)widget; + g_return_if_fail (item != NULL); - master = GDL_DOCK_OBJECT_GET_MASTER (item); gdl_dock_item_hide_item (item); } @@ -1590,6 +1588,8 @@ gdl_dock_item_lock_cb (GtkWidget *widget, { g_return_if_fail (item != NULL); + (void)widget; + gdl_dock_item_lock (item); } @@ -1599,6 +1599,8 @@ gdl_dock_item_unlock_cb (GtkWidget *widget, { g_return_if_fail (item != NULL); + (void)widget; + gdl_dock_item_unlock (item); } @@ -1705,6 +1707,8 @@ gdl_dock_item_dock_to (GdlDockItem *item, GdlDockPlacement position, gint docking_param) { + (void)docking_param; + g_return_if_fail (item != NULL); g_return_if_fail (item != target); g_return_if_fail (target != NULL || position == GDL_DOCK_FLOATING); @@ -1782,13 +1786,12 @@ gdl_dock_item_set_tablabel (GdlDockItem *item, NULL, item); g_object_set (item->_priv->tab_label, "item", NULL, NULL); } - gtk_widget_unref (item->_priv->tab_label); + g_object_unref (item->_priv->tab_label); item->_priv->tab_label = NULL; } if (tablabel) { - gtk_widget_ref (tablabel); - gtk_object_sink (GTK_OBJECT (tablabel)); + g_object_ref_sink (G_OBJECT (tablabel)); item->_priv->tab_label = tablabel; if (GDL_IS_DOCK_TABLABEL (tablabel)) { g_object_set (tablabel, "item", item, NULL); @@ -1883,8 +1886,7 @@ gdl_dock_item_hide_item (GdlDockItem *item) "floatx", x, "floaty", y, NULL)); - g_object_ref (item->_priv->ph); - gtk_object_sink (GTK_OBJECT (item->_priv->ph)); + g_object_ref_sink (item->_priv->ph); } gdl_dock_object_freeze (GDL_DOCK_OBJECT (item)); @@ -1988,8 +1990,7 @@ gdl_dock_item_set_default_position (GdlDockItem *item, if (reference && GDL_DOCK_OBJECT_ATTACHED (reference)) { if (GDL_IS_DOCK_PLACEHOLDER (reference)) { - g_object_ref (reference); - gtk_object_sink (GTK_OBJECT (reference)); + g_object_ref_sink (reference); item->_priv->ph = GDL_DOCK_PLACEHOLDER (reference); } else { item->_priv->ph = GDL_DOCK_PLACEHOLDER ( @@ -1997,8 +1998,7 @@ gdl_dock_item_set_default_position (GdlDockItem *item, "sticky", TRUE, "host", reference, NULL)); - g_object_ref (item->_priv->ph); - gtk_object_sink (GTK_OBJECT (item->_priv->ph)); + g_object_ref_sink (item->_priv->ph); } } } diff --git a/src/libgdl/gdl-dock-master.c b/src/libgdl/gdl-dock-master.c index 1c362ed16..78cbf69ec 100644 --- a/src/libgdl/gdl-dock-master.c +++ b/src/libgdl/gdl-dock-master.c @@ -262,6 +262,7 @@ ht_foreach_build_slist (gpointer key, gpointer value, GSList **slist) { + (void)key; *slist = g_slist_prepend (*slist, value); } @@ -718,7 +719,11 @@ item_dock_cb (GdlDockObject *object, gpointer user_data) { GdlDockMaster *master = user_data; - + + (void)object; + (void)position; + (void)other_data; + g_return_if_fail (requestor && GDL_IS_DOCK_OBJECT (requestor)); g_return_if_fail (master && GDL_IS_DOCK_MASTER (master)); @@ -740,6 +745,8 @@ item_detach_cb (GdlDockObject *object, { GdlDockMaster *master = user_data; + (void)recursive; + g_return_if_fail (object && GDL_IS_DOCK_OBJECT (object)); g_return_if_fail (master && GDL_IS_DOCK_MASTER (master)); @@ -760,6 +767,8 @@ item_notify_cb (GdlDockObject *object, gint locked = COMPUTE_LOCKED (master); gboolean item_locked; + (void)pspec; + g_object_get (object, "locked", &item_locked, NULL); if (item_locked) { @@ -798,8 +807,7 @@ gdl_dock_master_add (GdlDockMaster *master, master, object, object->name, found_object); } else { - g_object_ref (object); - gtk_object_sink (GTK_OBJECT (object)); + g_object_ref_sink (object); g_hash_table_insert (master->dock_objects, g_strdup (object->name), object); } } diff --git a/src/libgdl/gdl-dock-notebook.c b/src/libgdl/gdl-dock-notebook.c index 6fb931ac7..f6e0aeeef 100644 --- a/src/libgdl/gdl-dock-notebook.c +++ b/src/libgdl/gdl-dock-notebook.c @@ -60,7 +60,7 @@ static void gdl_dock_notebook_dock (GdlDockObject *object, GValue *other_data); static void gdl_dock_notebook_switch_page_cb (GtkNotebook *nb, - GtkNotebookPage *page, + GtkWidget *page, gint page_num, gpointer data); @@ -157,6 +157,7 @@ gdl_dock_notebook_notify_cb (GObject *g_object, gpointer user_data) { g_return_if_fail (user_data != NULL && GDL_IS_DOCK_NOTEBOOK (user_data)); + (void)g_object; /* chain the notify signal */ g_object_notify (G_OBJECT (user_data), pspec->name); @@ -167,10 +168,12 @@ gdl_dock_notebook_button_cb (GtkWidget *widget, GdkEventButton *event, gpointer user_data) { - if (event->type == GDK_BUTTON_PRESS) + (void)widget; + if (event->type == GDK_BUTTON_PRESS) { GDL_DOCK_ITEM_SET_FLAGS (user_data, GDL_DOCK_USER_ACTION); - else + } else { GDL_DOCK_ITEM_UNSET_FLAGS (user_data, GDL_DOCK_USER_ACTION); + } return FALSE; } @@ -261,12 +264,13 @@ gdl_dock_notebook_destroy (GtkObject *object) static void gdl_dock_notebook_switch_page_cb (GtkNotebook *nb, - GtkNotebookPage *page, + GtkWidget *page, gint page_num, gpointer data) { GdlDockNotebook *notebook; GtkWidget *tablabel; + (void)page_num; notebook = GDL_DOCK_NOTEBOOK (data); @@ -281,7 +285,7 @@ gdl_dock_notebook_switch_page_cb (GtkNotebook *nb, /* activate new label */ tablabel = gtk_notebook_get_tab_label ( - nb, gtk_notebook_get_nth_page (nb, page_num)); + nb, page); if (tablabel && GDL_IS_DOCK_TABLABEL (tablabel)) gdl_dock_tablabel_activate (GDL_DOCK_TABLABEL (tablabel)); @@ -332,6 +336,7 @@ gdl_dock_notebook_forall (GtkContainer *container, static GType gdl_dock_notebook_child_type (GtkContainer *container) { + (void)container; return GDL_TYPE_DOCK_ITEM; } diff --git a/src/libgdl/gdl-dock-object.c b/src/libgdl/gdl-dock-object.c index dadf072a0..9bdcd18ed 100644 --- a/src/libgdl/gdl-dock-object.c +++ b/src/libgdl/gdl-dock-object.c @@ -289,6 +289,7 @@ static void gdl_dock_object_foreach_detach (GdlDockObject *object, gpointer user_data) { + (void)user_data; gdl_dock_object_detach (object, TRUE); } @@ -415,7 +416,7 @@ gdl_dock_object_real_reduce (GdlDockObject *object) g_object_unref (child); } /* sink the widget, so any automatic floating widget is destroyed */ - gtk_object_sink (GTK_OBJECT (object)); + g_object_ref_sink (object); /* don't reenter */ object->reduce_pending = FALSE; gdl_dock_object_thaw (object); @@ -431,6 +432,9 @@ gdl_dock_object_dock_unimplemented (GdlDockObject *object, GdlDockPlacement position, GValue *other_data) { + (void)requestor; + (void)position; + (void)other_data; g_warning (_("Call to gdl_dock_object_dock in a dock object %p " "(object type is %s) which hasn't implemented this method"), object, G_OBJECT_TYPE_NAME (object)); @@ -440,6 +444,7 @@ static void gdl_dock_object_real_present (GdlDockObject *object, GdlDockObject *child) { + (void)child; gtk_widget_show (GTK_WIDGET (object)); } @@ -830,7 +835,7 @@ gdl_dock_param_get_type (void) static GType our_type = 0; if (our_type == 0) { - GTypeInfo tinfo = { 0, }; + GTypeInfo tinfo = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }; our_type = g_type_register_static (G_TYPE_STRING, "GdlDockParam", &tinfo, 0); /* register known transform functions */ diff --git a/src/libgdl/gdl-dock-paned.c b/src/libgdl/gdl-dock-paned.c index 70273c886..5d0ac17ed 100644 --- a/src/libgdl/gdl-dock-paned.c +++ b/src/libgdl/gdl-dock-paned.c @@ -205,6 +205,7 @@ gdl_dock_paned_notify_cb (GObject *g_object, gpointer user_data) { GdlDockPaned *paned; + (void)g_object; g_return_if_fail (user_data != NULL && GDL_IS_DOCK_PANED (user_data)); @@ -255,6 +256,7 @@ gdl_dock_paned_button_cb (GtkWidget *widget, gpointer user_data) { GdlDockPaned *paned; + (void)widget; g_return_val_if_fail (user_data != NULL && GDL_IS_DOCK_PANED (user_data), FALSE); diff --git a/src/libgdl/gdl-dock-placeholder.c b/src/libgdl/gdl-dock-placeholder.c index e1785ae83..ca7763a55 100644 --- a/src/libgdl/gdl-dock-placeholder.c +++ b/src/libgdl/gdl-dock-placeholder.c @@ -352,6 +352,7 @@ gdl_dock_placeholder_detach (GdlDockObject *object, gboolean recursive) { GdlDockPlaceholder *ph = GDL_DOCK_PLACEHOLDER (object); + (void)recursive; /* disconnect handlers */ disconnect_host (ph); @@ -366,6 +367,7 @@ gdl_dock_placeholder_detach (GdlDockObject *object, static void gdl_dock_placeholder_reduce (GdlDockObject *object) { + (void)object; /* placeholders are not reduced */ return; } @@ -532,6 +534,8 @@ static void gdl_dock_placeholder_present (GdlDockObject *object, GdlDockObject *child) { + (void)object; + (void)child; /* do nothing */ return; } @@ -574,7 +578,8 @@ gdl_dock_placeholder_weak_notify (gpointer data, GObject *old_object) { GdlDockPlaceholder *ph; - + (void)old_object; + g_return_if_fail (data != NULL && GDL_IS_DOCK_PLACEHOLDER (data)); ph = GDL_DOCK_PLACEHOLDER (data); @@ -606,6 +611,7 @@ detach_cb (GdlDockObject *object, { GdlDockPlaceholder *ph; GdlDockObject *new_host, *obj; + (void)recursive; g_return_if_fail (user_data != NULL && GDL_IS_DOCK_PLACEHOLDER (user_data)); @@ -735,7 +741,9 @@ dock_cb (GdlDockObject *object, { GdlDockPlacement pos = GDL_DOCK_NONE; GdlDockPlaceholder *ph; - + (void)position; + (void)other_data; + g_return_if_fail (user_data != NULL && GDL_IS_DOCK_PLACEHOLDER (user_data)); ph = GDL_DOCK_PLACEHOLDER (user_data); g_return_if_fail (ph->_priv->host == object); diff --git a/src/libgdl/gdl-dock-tablabel.c b/src/libgdl/gdl-dock-tablabel.c index 790bf7612..fb233fc3e 100644 --- a/src/libgdl/gdl-dock-tablabel.c +++ b/src/libgdl/gdl-dock-tablabel.c @@ -254,6 +254,7 @@ gdl_dock_tablabel_item_notify (GObject *master, gboolean locked; gchar *label; GtkBin *bin; + (void)pspec; g_object_get (master, "locked", &locked, diff --git a/src/libgdl/gdl-dock.c b/src/libgdl/gdl-dock.c index c366ed69b..d80a47a1f 100644 --- a/src/libgdl/gdl-dock.c +++ b/src/libgdl/gdl-dock.c @@ -79,7 +79,7 @@ static void gdl_dock_forall (GtkContainer *container, gboolean include_internals, GtkCallback callback, gpointer callback_data); -static GtkType gdl_dock_child_type (GtkContainer *container); +static GType gdl_dock_child_type (GtkContainer *container); static void gdl_dock_detach (GdlDockObject *object, gboolean recursive); @@ -275,6 +275,8 @@ gdl_dock_floating_configure_event_cb (GtkWidget *widget, { GdlDock *dock; + (void)widget; + g_return_val_if_fail (user_data != NULL && GDL_IS_DOCK (user_data), TRUE); dock = GDL_DOCK (user_data); @@ -510,7 +512,10 @@ gdl_dock_notify_cb (GObject *object, gpointer user_data) { GdlDock *dock; - + + (void)pspec; + (void)user_data; + g_return_if_fail (object != NULL || GDL_IS_DOCK (object)); dock = GDL_DOCK (object); @@ -561,7 +566,7 @@ gdl_dock_size_request (GtkWidget *widget, border_width = container->border_width; /* make request to root */ - if (dock->root && gtk_widget_get_visible (dock->root)) + if (dock->root && gtk_widget_get_visible( GTK_WIDGET(dock->root) )) gtk_widget_size_request (GTK_WIDGET (dock->root), requisition); else { requisition->width = 0; @@ -597,8 +602,9 @@ gdl_dock_size_allocate (GtkWidget *widget, allocation->width = MAX (1, allocation->width - 2 * border_width); allocation->height = MAX (1, allocation->height - 2 * border_width); - if (dock->root && gtk_widget_get_visible (dock->root)) + if (dock->root && gtk_widget_get_visible( GTK_WIDGET(dock->root) )) { gtk_widget_size_allocate (GTK_WIDGET (dock->root), allocation); + } } static void @@ -740,6 +746,8 @@ gdl_dock_forall (GtkContainer *container, { GdlDock *dock; + (void)include_internals; + g_return_if_fail (container != NULL); g_return_if_fail (GDL_IS_DOCK (container)); g_return_if_fail (callback != NULL); @@ -750,9 +758,10 @@ gdl_dock_forall (GtkContainer *container, (*callback) (GTK_WIDGET (dock->root), callback_data); } -static GtkType +static GType gdl_dock_child_type (GtkContainer *container) { + (void)container; return GDL_TYPE_DOCK_ITEM; } @@ -927,15 +936,16 @@ gdl_dock_dock (GdlDockObject *object, /* Realize the item (create its corresponding GdkWindow) when GdlDock has been realized. */ - if (gtk_widget_get_realized (dock)) + if ( gtk_widget_get_realized( GTK_WIDGET(dock) )) { gtk_widget_realize (widget); - + } + /* Map the widget if it's visible and the parent is visible and has been mapped. This is done to make sure that the GdkWindow is visible. */ - if (gtk_widget_get_visible (dock) && + if (gtk_widget_get_visible( GTK_WIDGET(dock) ) && gtk_widget_get_visible (widget)) { - if (gtk_widget_get_mapped (dock)) + if (gtk_widget_get_mapped( GTK_WIDGET(dock) )) gtk_widget_map (widget); /* Make the widget resize. */ @@ -1023,8 +1033,11 @@ gdl_dock_present (GdlDockObject *object, { GdlDock *dock = GDL_DOCK (object); - if (dock->_priv->floating) + (void)child; + + if (dock->_priv->floating) { gtk_window_present (GTK_WINDOW (dock->_priv->window)); + } } @@ -1097,6 +1110,8 @@ gdl_dock_select_larger_item (GdlDockItem *dock_item_1, gint level /* for debugging */) { GtkRequisition size_1, size_2; + + (void)level; g_return_val_if_fail (dock_item_1 != NULL, dock_item_2); g_return_val_if_fail (dock_item_2 != NULL, dock_item_1); @@ -1218,7 +1233,7 @@ gdl_dock_add_item (GdlDock *dock, /* Non-floating item. */ if (dock->root) { GdlDockPlacement local_placement; - GtkRequisition preferred_size; + /* GtkRequisition preferred_size; */ best_dock_item = gdl_dock_find_best_placement_item (GDL_DOCK_ITEM (dock->root), @@ -1258,10 +1273,11 @@ gdl_dock_add_floating_item (GdlDock *dock, "floaty", y, NULL)); - if (gtk_widget_get_visible (dock)) { + if (gtk_widget_get_visible( GTK_WIDGET(dock) )) { gtk_widget_show (GTK_WIDGET (new_dock)); - if (gtk_widget_get_mapped (dock)) + if (gtk_widget_get_mapped( GTK_WIDGET(dock) )) { gtk_widget_map (GTK_WIDGET (new_dock)); + } /* Make the widget resize. */ gtk_widget_queue_resize (GTK_WIDGET (new_dock)); diff --git a/src/libgdl/gdl-switcher.c b/src/libgdl/gdl-switcher.c index 65e8b98fe..eccd66ce2 100644 --- a/src/libgdl/gdl-switcher.c +++ b/src/libgdl/gdl-switcher.c @@ -609,21 +609,22 @@ gdl_switcher_notify_cb (GObject *g_object, GParamSpec *pspec, GdlSwitcher *switcher) { gboolean show_tabs; + (void)g_object; + (void)pspec; g_return_if_fail (switcher != NULL && GDL_IS_SWITCHER (switcher)); show_tabs = gtk_notebook_get_show_tabs (GTK_NOTEBOOK (switcher)); gdl_switcher_set_show_buttons (switcher, !show_tabs); } static void -gdl_switcher_switch_page_cb (GtkNotebook *nb, GtkNotebookPage *page, +gdl_switcher_switch_page_cb (GtkNotebook *nb, GtkWidget *page_widget, gint page_num, GdlSwitcher *switcher) { - GtkWidget *page_widget; - GtkWidget *tablabel; gint switcher_id; - + + (void)nb; + (void)page_num; /* Change switcher button */ - page_widget = gtk_notebook_get_nth_page (nb, page_num); switcher_id = gdl_switcher_get_page_id (page_widget); gdl_switcher_select_button (GDL_SWITCHER (switcher), switcher_id); } @@ -633,7 +634,9 @@ gdl_switcher_page_added_cb (GtkNotebook *nb, GtkWidget *page, gint page_num, GdlSwitcher *switcher) { gint switcher_id; - + + (void)nb; + (void)page_num; switcher_id = gdl_switcher_get_page_id (page); gdl_switcher_add_button (GDL_SWITCHER (switcher), NULL, NULL, NULL, NULL, @@ -679,6 +682,7 @@ gdl_switcher_class_init (GdlSwitcherClass *klass) GtkContainerClass *container_class = GTK_CONTAINER_CLASS (klass); GtkWidgetClass *widget_class = GTK_WIDGET_CLASS (klass); GObjectClass *object_class = G_OBJECT_CLASS (klass); + (void)notebook_class; container_class->forall = gdl_switcher_forall; container_class->remove = gdl_switcher_remove; @@ -758,12 +762,13 @@ gdl_switcher_add_button (GdlSwitcher *switcher, const gchar *label, gtk_container_add (GTK_CONTAINER (button_widget), hbox); gtk_widget_show (hbox); - if (stock_id) + if (stock_id) { icon_widget = gtk_image_new_from_stock (stock_id, GTK_ICON_SIZE_BUTTON); - else if (pixbuf_icon) + } else if (pixbuf_icon) { icon_widget = gtk_image_new_from_pixbuf (pixbuf_icon); - else + } else { icon_widget = gtk_image_new_from_stock (GTK_STOCK_NEW, GTK_ICON_SIZE_BUTTON); + } gtk_widget_show (icon_widget); diff --git a/src/libgdl/gdl-tools.h b/src/libgdl/gdl-tools.h index 0cfc9fb95..2cc68c035 100644 --- a/src/libgdl/gdl-tools.h +++ b/src/libgdl/gdl-tools.h @@ -104,6 +104,7 @@ static void type_as_function ## _class_init_trampoline (gpointer klass, \ gpointer data) \ { \ + (void)data; \ parent_class = (parent_type ## Class *)g_type_class_ref ( \ parent_type_macro); \ type_as_function ## _class_init ((type ## Class *)klass); \ @@ -122,7 +123,8 @@ type_as_function ## _get_type (void) NULL, /* class_data */ \ sizeof (type), \ 0, /* n_preallocs */ \ - (GInstanceInitFunc) type_as_function ## _instance_init \ + (GInstanceInitFunc) type_as_function ## _instance_init , \ + NULL, /* value_table */ \ }; \ object_type = register_type_macro \ (type, type_as_function, corba_type, \ diff --git a/src/libnr/CMakeLists.txt b/src/libnr/CMakeLists.txt index b310068c0..b83358ae0 100644 --- a/src/libnr/CMakeLists.txt +++ b/src/libnr/CMakeLists.txt @@ -13,6 +13,7 @@ set(nr_SRC nr-values.cpp # testnr.cpp + # ------- # Headers # in-svg-plane-test.h diff --git a/src/libnrtype/CMakeLists.txt b/src/libnrtype/CMakeLists.txt index 3d52e2c4e..1b28eb8e4 100644 --- a/src/libnrtype/CMakeLists.txt +++ b/src/libnrtype/CMakeLists.txt @@ -14,6 +14,9 @@ set(nrtype_SRC nr-type-primitives.cpp TextWrapper.cpp + + # ------- + # Headers FontFactory.h Layout-TNG-Scanline-Maker.h Layout-TNG.h diff --git a/src/libnrtype/Layout-TNG-OutIter.cpp b/src/libnrtype/Layout-TNG-OutIter.cpp index 4d461a486..1d300b210 100644 --- a/src/libnrtype/Layout-TNG-OutIter.cpp +++ b/src/libnrtype/Layout-TNG-OutIter.cpp @@ -13,6 +13,7 @@ #include "font-instance.h" #include "svg/svg-length.h" #include <2geom/transforms.h> +#include <2geom/line.h> #include "style.h" namespace Inkscape { @@ -250,6 +251,26 @@ boost::optional<Geom::Point> Layout::baselineAnchorPoint() const } } +Geom::Path Layout::baseline() const +{ + iterator pos = this->begin(); + Geom::Point left_pt = this->characterAnchorPoint(pos); + pos.thisEndOfLine(); + Geom::Point right_pt = this->characterAnchorPoint(pos); + + if (this->_blockProgression() == LEFT_TO_RIGHT || this->_blockProgression() == RIGHT_TO_LEFT) { + left_pt = Geom::Point(left_pt[Geom::Y], left_pt[Geom::X]); + right_pt = Geom::Point(right_pt[Geom::Y], right_pt[Geom::X]); + } + + Geom::Path baseline; + baseline.start(left_pt); + baseline.appendNew<Geom::LineSegment>(right_pt); + + return baseline; +} + + Geom::Point Layout::chunkAnchorPoint(iterator const &it) const { unsigned chunk_index; diff --git a/src/libnrtype/Layout-TNG.h b/src/libnrtype/Layout-TNG.h index 7d0c58c3e..6ab02c0e3 100644 --- a/src/libnrtype/Layout-TNG.h +++ b/src/libnrtype/Layout-TNG.h @@ -486,6 +486,8 @@ public: For rightmost text, the rightmost... you probably got it by now ;-)*/ boost::optional<Geom::Point> baselineAnchorPoint() const; + Geom::Path baseline() const; + /** This is that value to apply to the x,y attributes of tspan role=line elements, and hence it takes alignment into account. */ Geom::Point chunkAnchorPoint(iterator const &it) const; diff --git a/src/libvpsc/CMakeLists.txt b/src/libvpsc/CMakeLists.txt index 8db059b5d..4099900b5 100644 --- a/src/libvpsc/CMakeLists.txt +++ b/src/libvpsc/CMakeLists.txt @@ -1,29 +1,29 @@ -
-set(libvpsc_SRC
- block.cpp
- blocks.cpp
- constraint.cpp
- csolve_VPSC.cpp
- generate-constraints.cpp
- remove_rectangle_overlap.cpp
- solve_VPSC.cpp
- variable.cpp
- pairingheap/PairingHeap.cpp
-
-
- # -------
- # Headers
- block.h
- blocks.h
- constraint.h
- csolve_VPSC.h
- generate-constraints.h
- pairingheap/PairingHeap.h
- pairingheap/dsexceptions.h
- placement_SolveVPSC.h
- remove_rectangle_overlap.h
- solve_VPSC.h
- variable.h
-)
-
-add_inkscape_lib(vpsc_LIB "${libvpsc_SRC}")
+ +set(libvpsc_SRC + block.cpp + blocks.cpp + constraint.cpp + csolve_VPSC.cpp + generate-constraints.cpp + remove_rectangle_overlap.cpp + solve_VPSC.cpp + variable.cpp + pairingheap/PairingHeap.cpp + + + # ------- + # Headers + block.h + blocks.h + constraint.h + csolve_VPSC.h + generate-constraints.h + pairingheap/PairingHeap.h + pairingheap/dsexceptions.h + placement_SolveVPSC.h + remove_rectangle_overlap.h + solve_VPSC.h + variable.h +) + +add_inkscape_lib(vpsc_LIB "${libvpsc_SRC}") diff --git a/src/libvpsc/block.cpp b/src/libvpsc/block.cpp index 221df536a..0bd662f28 100644 --- a/src/libvpsc/block.cpp +++ b/src/libvpsc/block.cpp @@ -72,7 +72,7 @@ void Block::setUpConstraintHeap(PairingHeap<Constraint*>* &h,bool in) { for (Cit j=cs->begin();j!=cs->end();++j) { Constraint *c=*j; c->timeStamp=blockTimeCtr; - if (c->left->block != this && in || c->right->block != this && !in) { + if ((c->left->block != this && in) || (c->right->block != this && !in)) { h->insert(c); } } diff --git a/src/livarot/CMakeLists.txt b/src/livarot/CMakeLists.txt index 1890bd1a7..83e0f40c8 100644 --- a/src/livarot/CMakeLists.txt +++ b/src/livarot/CMakeLists.txt @@ -21,6 +21,9 @@ set(livarot_SRC sweep-tree.cpp sweep-tree-list.cpp + + # ------- + # Headers AVL.h AlphaLigne.h BitLigne.h diff --git a/src/live_effects/CMakeLists.txt b/src/live_effects/CMakeLists.txt index 3bca16715..01cd7f25f 100644 --- a/src/live_effects/CMakeLists.txt +++ b/src/live_effects/CMakeLists.txt @@ -53,6 +53,7 @@ set(live_effects_SRC parameter/unit.cpp parameter/vector.cpp + # ------- # Headers bezctx.h diff --git a/src/live_effects/lpe-powerstroke.cpp b/src/live_effects/lpe-powerstroke.cpp index 82f4ccdea..cd692f402 100644 --- a/src/live_effects/lpe-powerstroke.cpp +++ b/src/live_effects/lpe-powerstroke.cpp @@ -3,9 +3,9 @@ * @brief PowerStroke LPE implementation. Creates curves with modifiable stroke width. */ /* Authors: - * Johan Engelen <j.b.c.engelen@utwente.nl> + * Johan Engelen <j.b.c.engelen@alumnus.utwente.nl> * - * Copyright (C) 2010 Authors + * Copyright (C) 2010-2011 Authors * * Released under GNU GPL, read the file 'COPYING' for more information */ @@ -20,6 +20,7 @@ #include <2geom/sbasis-geometric.h> #include <2geom/transforms.h> #include <2geom/bezier-utils.h> +#include <2geom/svg-elliptical-arc.h> #include "live_effects/bezctx.h" #include "live_effects/bezctx_intf.h" @@ -275,11 +276,24 @@ static const Util::EnumData<unsigned> InterpolatorTypeData[] = { }; static const Util::EnumDataConverter<unsigned> InterpolatorTypeConverter(InterpolatorTypeData, sizeof(InterpolatorTypeData)/sizeof(*InterpolatorTypeData)); +enum LineCapType { + LINECAP_BUTT, + LINECAP_ROUND, + LINECAP_SHARP +}; +static const Util::EnumData<unsigned> LineCapTypeData[] = { + {LINECAP_BUTT , N_("Butt"), "Butt"}, + {LINECAP_ROUND , N_("Round"), "Round"}, + {LINECAP_SHARP , N_("Sharp"), "Sharp"} +}; +static const Util::EnumDataConverter<unsigned> LineCapTypeConverter(LineCapTypeData, sizeof(LineCapTypeData)/sizeof(*LineCapTypeData)); + LPEPowerStroke::LPEPowerStroke(LivePathEffectObject *lpeobject) : Effect(lpeobject), offset_points(_("Offset points"), _("Offset points"), "offset_points", &wr, this), sort_points(_("Sort points"), _("Sort offset points according to their time value along the curve."), "sort_points", &wr, this, true), - interpolator_type(_("Interpolator type"), _("Determines which kind of interpolator will be used to interpolate between stroke width along the path."), "interpolator_type", InterpolatorTypeConverter, &wr, this, Geom::Interpolate::INTERP_CUBICBEZIER_JOHAN) + interpolator_type(_("Interpolator type"), _("Determines which kind of interpolator will be used to interpolate between stroke width along the path."), "interpolator_type", InterpolatorTypeConverter, &wr, this, Geom::Interpolate::INTERP_CUBICBEZIER_JOHAN), + linecap_type(_("Line cap type"), _("Determines the shape of the path ends."), "linecap_type", LineCapTypeConverter, &wr, this, LINECAP_ROUND) { show_orig_path = true; @@ -288,6 +302,7 @@ LPEPowerStroke::LPEPowerStroke(LivePathEffectObject *lpeobject) : registerParameter( dynamic_cast<Parameter *>(&offset_points) ); registerParameter( dynamic_cast<Parameter *>(&sort_points) ); registerParameter( dynamic_cast<Parameter *>(&interpolator_type) ); + registerParameter( dynamic_cast<Parameter *>(&linecap_type) ); } LPEPowerStroke::~LPEPowerStroke() @@ -332,35 +347,88 @@ LPEPowerStroke::doEffect_pwd2 (Geom::Piecewise<Geom::D2<Geom::SBasis> > const & Piecewise<D2<SBasis> > output; if (!closed_path) { + LineCapType linecap = static_cast<LineCapType>(linecap_type.get_value()); + // perhaps use std::list instead of std::vector? std::vector<Geom::Point> ts(offset_points.data().size() + 2); - // first and last point coincide with input path (for now at least) - ts.front() = Point(pwd2_in.domain().min(),0); - ts.back() = Point(pwd2_in.domain().max(),0); for (unsigned int i = 0; i < offset_points.data().size(); ++i) { ts.at(i+1) = offset_points.data().at(i); } - if (sort_points) { - sort(ts.begin(), ts.end(), compare_offsets); + sort(ts.begin()+1, ts.end()-1, compare_offsets); + } + switch (linecap) { + case LINECAP_SHARP: + // first and last point coincide with input path to make sharp points on ends + ts.front() = Point(pwd2_in.domain().min(),0); + ts.back() = Point(pwd2_in.domain().max(),0); + break; + case LINECAP_BUTT: + case LINECAP_ROUND: + default: + // first and last point have same distance from path as second and second to last points, respectively. + ts.front() = Point(pwd2_in.domain().min(), (*(ts.begin()+1))[Geom::Y] ); + ts.back() = Point(pwd2_in.domain().max(), (*(ts.end()-2))[Geom::Y] ); + break; } // create stroke path where points (x,y) := (t, offset) Geom::Interpolate::Interpolator *interpolator = Geom::Interpolate::Interpolator::create(static_cast<Geom::Interpolate::InterpolatorType>(interpolator_type.get_value())); Geom::Path strokepath = interpolator->interpolateToPath(ts); - Geom::Path mirroredpath = strokepath.reverse() * Geom::Scale(1,-1); delete interpolator; - strokepath.append(mirroredpath, Geom::Path::STITCH_DISCONTINUOUS); - strokepath.close(); + switch (linecap) { + case LINECAP_SHARP: + case LINECAP_BUTT: + { + Geom::Path mirroredpath = strokepath.reverse() * Geom::Scale(1,-1); + strokepath.append(mirroredpath, Geom::Path::STITCH_DISCONTINUOUS); + strokepath.close(); - D2<Piecewise<SBasis> > patternd2 = make_cuts_independent(strokepath.toPwSb()); - Piecewise<SBasis> x = Piecewise<SBasis>(patternd2[0]); - Piecewise<SBasis> y = Piecewise<SBasis>(patternd2[1]); + D2<Piecewise<SBasis> > patternd2 = make_cuts_independent(strokepath.toPwSb()); + Piecewise<SBasis> x = Piecewise<SBasis>(patternd2[0]); + Piecewise<SBasis> y = Piecewise<SBasis>(patternd2[1]); - output = compose(pwd2_in,x) + y*compose(n,x); + output = compose(pwd2_in,x) + y*compose(n,x); + break; + } + case LINECAP_ROUND: + default: + { + D2<Piecewise<SBasis> > patternd2 = make_cuts_independent(strokepath.toPwSb()); + Piecewise<SBasis> x = Piecewise<SBasis>(patternd2[0]); + Piecewise<SBasis> y = Piecewise<SBasis>(patternd2[1]); + + // find time values for which x lies outside path domain + // and only take portion of x and y that lies within those time values + std::vector< double > rtsmin = roots (x - pwd2_in.domain().min()); + std::vector< double > rtsmax = roots (x - pwd2_in.domain().max()); + if ( !rtsmin.empty() && !rtsmax.empty() ) { + x = portion(x, rtsmin.at(0), rtsmax.at(0)); + y = portion(y, rtsmin.at(0), rtsmax.at(0)); + } + + output = compose(pwd2_in,x) + y*compose(n,x); + x = reverse(x); + y = reverse(y); + Piecewise<D2<SBasis> > mirrorpath = compose(pwd2_in,x) - y*compose(n,x); + + double radius1 = 0.5 * distance(output.lastValue(), mirrorpath.firstValue()); + Geom::SVGEllipticalArc cap1(output.lastValue(), radius1, radius1, M_PI/2., false, false, mirrorpath.firstValue()); + output.continuousConcat(Piecewise<D2<SBasis> >(cap1.toSBasis())); + + output.continuousConcat(mirrorpath); + + double radius2 = 0.5 * distance(output.firstValue(), output.lastValue()); + Geom::SVGEllipticalArc cap2(output.lastValue(), radius2, radius2, M_PI/2., false, false, output.firstValue()); + output.continuousConcat(Piecewise<D2<SBasis> >(cap2.toSBasis())); + + break; + } + } } else { // path is closed + // linecap parameter can be ignored // perhaps use std::list instead of std::vector? std::vector<Geom::Point> ts = offset_points.data(); diff --git a/src/live_effects/lpe-powerstroke.h b/src/live_effects/lpe-powerstroke.h index 7a1f3829a..6f34e16e2 100644 --- a/src/live_effects/lpe-powerstroke.h +++ b/src/live_effects/lpe-powerstroke.h @@ -2,9 +2,9 @@ * @brief PowerStroke LPE effect, see lpe-powerstroke.cpp. */ /* Authors: - * Johan Engelen <j.b.c.engelen@utwente.nl> + * Johan Engelen <j.b.c.engelen@alumnus.utwente.nl> * - * Copyright (C) 2010 Authors + * Copyright (C) 2010-2011 Authors * * Released under GNU GPL, read the file 'COPYING' for more information */ @@ -33,6 +33,7 @@ private: PowerStrokePointArrayParam offset_points; BoolParam sort_points; EnumParam<unsigned> interpolator_type; + EnumParam<unsigned> linecap_type; LPEPowerStroke(const LPEPowerStroke&); LPEPowerStroke& operator=(const LPEPowerStroke&); diff --git a/src/main.cpp b/src/main.cpp index 26774fd66..1614e97f7 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -641,7 +641,7 @@ main(int argc, char **argv) gboolean use_gui; -#ifndef WIN32 +#if !defined(WIN32) && !defined(GDK_WINDOWING_QUARTZ) use_gui = (g_getenv("DISPLAY") != NULL); #else use_gui = TRUE; diff --git a/src/measure-context.cpp b/src/measure-context.cpp index bc766872b..8cb30f983 100644 --- a/src/measure-context.cpp +++ b/src/measure-context.cpp @@ -36,6 +36,10 @@ #include <2geom/path-intersection.h> #include <2geom/pathvector.h> #include <2geom/crossing.h> +#include <2geom/angle.h> +#include "snap.h" +#include "sp-namedview.h" + static void sp_measure_context_class_init(SPMeasureContextClass *klass); static void sp_measure_context_init(SPMeasureContext *measure_context); @@ -184,16 +188,32 @@ static gint sp_measure_context_root_handler(SPEventContext *event_context, GdkEv ret = TRUE; } + SnapManager &m = desktop->namedview->snap_manager; + m.setup(desktop); + m.freeSnapReturnByRef(start_point, Inkscape::SNAPSOURCE_OTHER_HANDLE); + m.unSetup(); + sp_canvas_item_grab(SP_CANVAS_ITEM(desktop->acetate), - GDK_KEY_PRESS_MASK | GDK_KEY_RELEASE_MASK | GDK_BUTTON_RELEASE_MASK | GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK, - NULL, event->button.time); + GDK_KEY_PRESS_MASK | GDK_KEY_RELEASE_MASK | GDK_BUTTON_RELEASE_MASK | GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK, + NULL, event->button.time); mc->grabbed = SP_CANVAS_ITEM(desktop->acetate); break; } case GDK_MOTION_NOTIFY: { - if (event->motion.state & GDK_BUTTON1_MASK && !event_context->space_panning) { + if (!((event->motion.state & GDK_BUTTON1_MASK) && !event_context->space_panning)) { + if (!(event->motion.state & GDK_SHIFT_MASK)) { + Geom::Point const motion_w(event->motion.x, event->motion.y); + Geom::Point const motion_dt(desktop->w2d(motion_w)); + + SnapManager &m = desktop->namedview->snap_manager; + m.setup(desktop); + + m.preSnap(Inkscape::SnapCandidatePoint(motion_dt, Inkscape::SNAPSOURCE_OTHER_HANDLE)); + m.unSetup(); + } + } else { ret = TRUE; if ( within_tolerance @@ -217,9 +237,16 @@ static gint sp_measure_context_root_handler(SPEventContext *event_context, GdkEv Geom::Point const motion_dt(desktop->w2d(motion_w)); Geom::Point end_point = motion_dt; - //rotation constraint - if (event->motion.state & GDK_CONTROL_MASK) + if (event->motion.state & GDK_CONTROL_MASK) { spdc_endpoint_snap_rotation(event_context, end_point, start_point, event->motion.state); + } else { + if (!(event->motion.state & GDK_SHIFT_MASK)) { + SnapManager &m = desktop->namedview->snap_manager; + m.setup(desktop); + m.freeSnapReturnByRef(end_point, Inkscape::SNAPSOURCE_OTHER_HANDLE); + m.unSetup(); + } + } //draw control line SPCanvasItem * control_line = NULL; @@ -247,6 +274,10 @@ static gint sp_measure_context_root_handler(SPEventContext *event_context, GdkEv points.push_back(desktop->d2w(start_point + (i/NPOINTS)*(end_point-start_point))); } +// TODO: Felipe, why don't you simply iterate over all items, and test whether their bounding boxes intersect +// with the measurement line, instead of interpolating? E.g. bbox_of_measurement_line.intersects(*bbox_of_item). +// That's also how the object-snapper works, see _findCandidates() in object-snapper.cpp. + //select elements crossed by line segment: GSList *items = sp_desktop_document(desktop)->getItemsAtPoints(desktop->dkey, points); SPItem* item; @@ -355,7 +386,7 @@ static gint sp_measure_context_root_handler(SPEventContext *event_context, GdkEv } char* angle_str = (char*) malloc(sizeof(char)*20); - sprintf(angle_str, "%.2f °", angle * 180/3.1415 ); + sprintf(angle_str, "%.2f °", angle * 180/M_PI ); SPCanvasItem *canvas_tooltip = sp_canvastext_new(sp_desktop_tempgroup(desktop), desktop, end_point + desktop->w2d(Geom::Point(5*fontsize,0)), angle_str); sp_canvastext_set_fontsize (SP_CANVASTEXT(canvas_tooltip), fontsize); sp_canvastext_set_rgba32 (SP_CANVASTEXT(canvas_tooltip), 0x337f33ff, 0xffffffff); @@ -374,6 +405,8 @@ static gint sp_measure_context_root_handler(SPEventContext *event_context, GdkEv case GDK_BUTTON_RELEASE: { + sp_event_context_discard_delayed_snap_event(event_context); + //clear all temporary canvas items related to the measurement tool. unsigned int idx; for (idx=0; idx<measure_tmp_items.size(); idx++){ diff --git a/src/object-snapper.cpp b/src/object-snapper.cpp index 682c26869..1944f7ffa 100644 --- a/src/object-snapper.cpp +++ b/src/object-snapper.cpp @@ -181,9 +181,9 @@ void Inkscape::ObjectSnapper::_collectNodes(Inkscape::SnapSourceType const &t, bool p_is_a_node = t & Inkscape::SNAPSOURCE_NODE_CATEGORY; bool p_is_a_bbox = t & Inkscape::SNAPSOURCE_BBOX_CATEGORY; - bool p_is_other = t & Inkscape::SNAPSOURCE_OTHER_CATEGORY; + bool p_is_other = t & Inkscape::SNAPSOURCE_OTHERS_CATEGORY; - // A point considered for snapping should be either a node, a bbox corner or a guide. Pick only ONE! + // A point considered for snapping should be either a node, a bbox corner or a guide/other. Pick only ONE! g_assert(!((p_is_a_node && p_is_a_bbox) || (p_is_a_bbox && p_is_other) || (p_is_a_node && p_is_other))); if (_snapmanager->snapprefs.getSnapToBBoxNode() || _snapmanager->snapprefs.getSnapBBoxEdgeMidpoints() || _snapmanager->snapprefs.getSnapBBoxMidpoints()) { @@ -282,27 +282,30 @@ void Inkscape::ObjectSnapper::_snapNodes(SnappedConstraints &sc, SnappedPoint s; bool success = false; + bool strict_snapping = _snapmanager->snapprefs.getStrictSnapping(); for (std::vector<SnapCandidatePoint>::const_iterator k = _points_to_snap_to->begin(); k != _points_to_snap_to->end(); k++) { - Geom::Point target_pt = (*k).getPoint(); - Geom::Coord dist = NR_HUGE; - if (!c.isUndefined()) { - // We're snapping to nodes along a constraint only, so find out if this node - // is at the constraint, while allowing for a small margin - if (Geom::L2(target_pt - c.projection(target_pt)) > 1e-9) { - // The distance from the target point to its projection on the constraint - // is too large, so this point is not on the constraint. Skip it! - continue; + if (_allowSourceToSnapToTarget(p.getSourceType(), (*k).getTargetType(), strict_snapping)) { + Geom::Point target_pt = (*k).getPoint(); + Geom::Coord dist = NR_HUGE; + if (!c.isUndefined()) { + // We're snapping to nodes along a constraint only, so find out if this node + // is at the constraint, while allowing for a small margin + if (Geom::L2(target_pt - c.projection(target_pt)) > 1e-9) { + // The distance from the target point to its projection on the constraint + // is too large, so this point is not on the constraint. Skip it! + continue; + } + dist = Geom::L2(target_pt - p_proj_on_constraint); + } else { + // Free (unconstrained) snapping + dist = Geom::L2(target_pt - p.getPoint()); } - dist = Geom::L2(target_pt - p_proj_on_constraint); - } else { - // Free (unconstrained) snapping - dist = Geom::L2(target_pt - p.getPoint()); - } - if (dist < getSnapperTolerance() && dist < s.getSnapDistance()) { - s = SnappedPoint(target_pt, p.getSourceType(), p.getSourceNum(), (*k).getTargetType(), dist, getSnapperTolerance(), getSnapperAlwaysSnap(), false, true, (*k).getTargetBBox()); - success = true; + if (dist < getSnapperTolerance() && dist < s.getSnapDistance()) { + s = SnappedPoint(target_pt, p.getSourceType(), p.getSourceNum(), (*k).getTargetType(), dist, getSnapperTolerance(), getSnapperAlwaysSnap(), false, true, (*k).getTargetBBox()); + success = true; + } } } @@ -359,7 +362,7 @@ void Inkscape::ObjectSnapper::_collectPaths(Geom::Point /*p*/, SPItem::BBoxType bbox_type = SPItem::GEOMETRIC_BBOX; bool p_is_a_node = source_type & Inkscape::SNAPSOURCE_NODE_CATEGORY; - bool p_is_other = source_type & Inkscape::SNAPSOURCE_OTHER_CATEGORY; + bool p_is_other = source_type & Inkscape::SNAPSOURCE_OTHERS_CATEGORY; if (_snapmanager->snapprefs.getSnapToBBoxPath()) { Inkscape::Preferences *prefs = Inkscape::Preferences::get(); @@ -369,7 +372,7 @@ void Inkscape::ObjectSnapper::_collectPaths(Geom::Point /*p*/, } // Consider the page border for snapping - if (_snapmanager->snapprefs.getSnapToPageBorder() && _snapmanager->snapprefs.getSnapModeBBoxOrNodes()) { + if (_snapmanager->snapprefs.getSnapToPageBorder() && _snapmanager->snapprefs.getSnapModeAny()) { Geom::PathVector *border_path = _getBorderPathv(); if (border_path != NULL) { _paths_to_snap_to->push_back(Inkscape::SnapCandidatePath(border_path, SNAPTARGET_PAGE_BORDER, Geom::OptRect())); @@ -394,51 +397,53 @@ void Inkscape::ObjectSnapper::_collectPaths(Geom::Point /*p*/, //Build a list of all paths considered for snapping to //Add the item's path to snap to - if (_snapmanager->snapprefs.getSnapToItemPath() && _snapmanager->snapprefs.getSnapModeNode()) { + if ((_snapmanager->snapprefs.getSnapToItemPath() && _snapmanager->snapprefs.getSnapModeNode()) || + (_snapmanager->snapprefs.getSnapTextBaseline() && (_snapmanager->snapprefs.getSnapModeNode() || _snapmanager->snapprefs.getSnapToItemPath())) ) { if (p_is_other || !(_snapmanager->snapprefs.getStrictSnapping() && !p_is_a_node)) { - // Snapping to the path of characters is very cool, but for a large - // chunk of text this will take ages! So limit snapping to text paths - // containing max. 240 characters. Snapping the bbox will not be affected - bool very_lenghty_prose = false; if (SP_IS_TEXT(root_item) || SP_IS_FLOWTEXT(root_item)) { - very_lenghty_prose = sp_text_get_length(SP_TEXT(root_item)) > 240; - } - // On my AMD 3000+, the snapping lag becomes annoying at approx. 240 chars - // which corresponds to a lag of 500 msec. This is for snapping a rect - // to a single line of text. - - // Snapping for example to a traced bitmap is also very stressing for - // the CPU, so we'll only snap to paths having no more than 500 nodes - // This also leads to a lag of approx. 500 msec (in my lousy test set-up). - bool very_complex_path = false; - if (SP_IS_PATH(root_item)) { - very_complex_path = sp_nodes_in_path(SP_PATH(root_item)) > 500; - } - - if (!very_lenghty_prose && !very_complex_path && root_item) { - SPCurve *curve = NULL; - if (SP_IS_SHAPE(root_item)) { - curve = SP_SHAPE(root_item)->getCurve(); - } else if (SP_IS_TEXT(root_item) || SP_IS_FLOWTEXT(root_item)) { - curve = te_get_layout(root_item)->convertToCurves(); + if (_snapmanager->snapprefs.getSnapTextBaseline()) { + // Snap to the text baseline + Inkscape::Text::Layout const *layout = te_get_layout((SPItem *) root_item); + if (layout != NULL && layout->outputExists()) { + Geom::PathVector *pv = new Geom::PathVector(); + pv->push_back(layout->baseline() * root_item->i2d_affine() * (*i).additional_affine * _snapmanager->getDesktop()->doc2dt()); + _paths_to_snap_to->push_back(Inkscape::SnapCandidatePath(pv, SNAPTARGET_TEXT_BASELINE, Geom::OptRect())); + } + } + } else { + // Snapping for example to a traced bitmap is very stressing for + // the CPU, so we'll only snap to paths having no more than 500 nodes + // This also leads to a lag of approx. 500 msec (in my lousy test set-up). + bool very_complex_path = false; + if (SP_IS_PATH(root_item)) { + very_complex_path = sp_nodes_in_path(SP_PATH(root_item)) > 500; } - if (curve) { - // We will get our own copy of the pathvector, which must be freed at some point - // Geom::PathVector *pv = pathvector_for_curve(root_item, curve, true, true, Geom::identity(), (*i).additional_affine); + if (!very_complex_path && root_item && (_snapmanager->snapprefs.getSnapToItemPath() && _snapmanager->snapprefs.getSnapModeNode())) { + SPCurve *curve = NULL; + if (SP_IS_SHAPE(root_item)) { + curve = SP_SHAPE(root_item)->getCurve(); + }/* else if (SP_IS_TEXT(root_item) || SP_IS_FLOWTEXT(root_item)) { + curve = te_get_layout(root_item)->convertToCurves(); + }*/ + if (curve) { + // We will get our own copy of the pathvector, which must be freed at some point + + // Geom::PathVector *pv = pathvector_for_curve(root_item, curve, true, true, Geom::identity(), (*i).additional_affine); - Geom::PathVector *pv = new Geom::PathVector(curve->get_pathvector()); - (*pv) *= root_item->i2d_affine() * (*i).additional_affine * _snapmanager->getDesktop()->doc2dt(); // (_edit_transform * _i2d_transform); + Geom::PathVector *pv = new Geom::PathVector(curve->get_pathvector()); + (*pv) *= root_item->i2d_affine() * (*i).additional_affine * _snapmanager->getDesktop()->doc2dt(); // (_edit_transform * _i2d_transform); - _paths_to_snap_to->push_back(Inkscape::SnapCandidatePath(pv, SNAPTARGET_PATH, Geom::OptRect())); // Perhaps for speed, get a reference to the Geom::pathvector, and store the transformation besides it. - curve->unref(); + _paths_to_snap_to->push_back(Inkscape::SnapCandidatePath(pv, SNAPTARGET_PATH, Geom::OptRect())); // Perhaps for speed, get a reference to the Geom::pathvector, and store the transformation besides it. + curve->unref(); + } } } } } //Add the item's bounding box to snap to - if (_snapmanager->snapprefs.getSnapToBBoxPath() && _snapmanager->snapprefs.getSnapModeBBox()) { + if (_snapmanager->snapprefs.getSnapToBBoxPath() && (_snapmanager->snapprefs.getSnapModeBBox() || _snapmanager->snapprefs.getSnapModeOthers())) { if (p_is_other || !(_snapmanager->snapprefs.getStrictSnapping() && p_is_a_node)) { // Discard the bbox of a clipped path / mask, because we don't want to snap to both the bbox // of the item AND the bbox of the clipping path at the same time @@ -490,54 +495,58 @@ void Inkscape::ObjectSnapper::_snapPaths(SnappedConstraints &sc, int num_path = 0; int num_segm = 0; - for (std::vector<Inkscape::SnapCandidatePath >::const_iterator it_p = _paths_to_snap_to->begin(); it_p != _paths_to_snap_to->end(); it_p++) { - bool const being_edited = node_tool_active && (*it_p).currently_being_edited; - //if true then this pathvector it_pv is currently being edited in the node tool - - for(Geom::PathVector::iterator it_pv = (it_p->path_vector)->begin(); it_pv != (it_p->path_vector)->end(); ++it_pv) { - // Find a nearest point for each curve within this path - // n curves will return n time values with 0 <= t <= 1 - std::vector<double> anp = (*it_pv).nearestPointPerCurve(p_doc); + bool strict_snapping = _snapmanager->snapprefs.getStrictSnapping(); - std::vector<double>::const_iterator np = anp.begin(); - unsigned int index = 0; - for (; np != anp.end(); np++, index++) { - Geom::Curve const *curve = &((*it_pv).at_index(index)); - Geom::Point const sp_doc = curve->pointAt(*np); - - bool c1 = true; - bool c2 = true; - if (being_edited) { - /* If the path is being edited, then we should only snap though to stationary pieces of the path - * and not to the pieces that are being dragged around. This way we avoid - * self-snapping. For this we check whether the nodes at both ends of the current - * piece are unselected; if they are then this piece must be stationary - */ - g_assert(unselected_nodes != NULL); - Geom::Point start_pt = _snapmanager->getDesktop()->doc2dt(curve->pointAt(0)); - Geom::Point end_pt = _snapmanager->getDesktop()->doc2dt(curve->pointAt(1)); - c1 = isUnselectedNode(start_pt, unselected_nodes); - c2 = isUnselectedNode(end_pt, unselected_nodes); - /* Unfortunately, this might yield false positives for coincident nodes. Inkscape might therefore mistakenly - * snap to path segments that are not stationary. There are at least two possible ways to overcome this: - * - Linking the individual nodes of the SPPath we have here, to the nodes of the NodePath::SubPath class as being - * used in sp_nodepath_selected_nodes_move. This class has a member variable called "selected". For this the nodes - * should be in the exact same order for both classes, so we can index them - * - Replacing the SPPath being used here by the the NodePath::SubPath class; but how? - */ - } + for (std::vector<Inkscape::SnapCandidatePath >::const_iterator it_p = _paths_to_snap_to->begin(); it_p != _paths_to_snap_to->end(); it_p++) { + if (_allowSourceToSnapToTarget(p.getSourceType(), (*it_p).target_type, strict_snapping)) { + bool const being_edited = node_tool_active && (*it_p).currently_being_edited; + //if true then this pathvector it_pv is currently being edited in the node tool + + for(Geom::PathVector::iterator it_pv = (it_p->path_vector)->begin(); it_pv != (it_p->path_vector)->end(); ++it_pv) { + // Find a nearest point for each curve within this path + // n curves will return n time values with 0 <= t <= 1 + std::vector<double> anp = (*it_pv).nearestPointPerCurve(p_doc); + + std::vector<double>::const_iterator np = anp.begin(); + unsigned int index = 0; + for (; np != anp.end(); np++, index++) { + Geom::Curve const *curve = &((*it_pv).at_index(index)); + Geom::Point const sp_doc = curve->pointAt(*np); + + bool c1 = true; + bool c2 = true; + if (being_edited) { + /* If the path is being edited, then we should only snap though to stationary pieces of the path + * and not to the pieces that are being dragged around. This way we avoid + * self-snapping. For this we check whether the nodes at both ends of the current + * piece are unselected; if they are then this piece must be stationary + */ + g_assert(unselected_nodes != NULL); + Geom::Point start_pt = _snapmanager->getDesktop()->doc2dt(curve->pointAt(0)); + Geom::Point end_pt = _snapmanager->getDesktop()->doc2dt(curve->pointAt(1)); + c1 = isUnselectedNode(start_pt, unselected_nodes); + c2 = isUnselectedNode(end_pt, unselected_nodes); + /* Unfortunately, this might yield false positives for coincident nodes. Inkscape might therefore mistakenly + * snap to path segments that are not stationary. There are at least two possible ways to overcome this: + * - Linking the individual nodes of the SPPath we have here, to the nodes of the NodePath::SubPath class as being + * used in sp_nodepath_selected_nodes_move. This class has a member variable called "selected". For this the nodes + * should be in the exact same order for both classes, so we can index them + * - Replacing the SPPath being used here by the the NodePath::SubPath class; but how? + */ + } - Geom::Point const sp_dt = _snapmanager->getDesktop()->doc2dt(sp_doc); - if (!being_edited || (c1 && c2)) { - Geom::Coord const dist = Geom::distance(sp_doc, p_doc); - if (dist < getSnapperTolerance()) { - sc.curves.push_back(Inkscape::SnappedCurve(sp_dt, num_path, num_segm, dist, getSnapperTolerance(), getSnapperAlwaysSnap(), false, curve, p.getSourceType(), p.getSourceNum(), it_p->target_type, it_p->target_bbox)); + Geom::Point const sp_dt = _snapmanager->getDesktop()->doc2dt(sp_doc); + if (!being_edited || (c1 && c2)) { + Geom::Coord const dist = Geom::distance(sp_doc, p_doc); + if (dist < getSnapperTolerance()) { + sc.curves.push_back(Inkscape::SnappedCurve(sp_dt, num_path, num_segm, dist, getSnapperTolerance(), getSnapperAlwaysSnap(), false, curve, p.getSourceType(), p.getSourceNum(), it_p->target_type, it_p->target_bbox)); + } } } - } - num_segm++; - } // End of: for (Geom::PathVector::iterator ....) - num_path++; + num_segm++; + } // End of: for (Geom::PathVector::iterator ....) + num_path++; + } } } @@ -572,7 +581,6 @@ void Inkscape::ObjectSnapper::_snapPathsConstrained(SnappedConstraints &sc, // Now we can finally do the real snapping, using the paths collected above g_assert(_snapmanager->getDesktop() != NULL); - Geom::Point const p_doc = _snapmanager->getDesktop()->dt2doc(p_proj_on_constraint); Geom::Point direction_vector = c.getDirection(); if (!is_zero(direction_vector)) { @@ -600,10 +608,12 @@ void Inkscape::ObjectSnapper::_snapPathsConstrained(SnappedConstraints &sc, } // Length of constraint_path will always be one + bool strict_snapping = _snapmanager->snapprefs.getStrictSnapping(); + // Find all intersections of the constrained path with the snap target candidates std::vector<Geom::Point> intersections; for (std::vector<Inkscape::SnapCandidatePath >::const_iterator k = _paths_to_snap_to->begin(); k != _paths_to_snap_to->end(); k++) { - if (k->path_vector) { + if (k->path_vector && _allowSourceToSnapToTarget(p.getSourceType(), (*k).target_type, strict_snapping)) { // Do the intersection math Geom::CrossingSet cs = Geom::crossings(constraint_path, *(k->path_vector)); // Store the results as intersection points @@ -674,16 +684,17 @@ void Inkscape::ObjectSnapper::freeSnap(SnappedConstraints &sc, bool snap_nodes = (_snapmanager->snapprefs.getSnapModeNode() && ( _snapmanager->snapprefs.getSnapToItemNode() || _snapmanager->snapprefs.getSnapSmoothNodes() || - _snapmanager->snapprefs.getSnapLineMidpoints() || - _snapmanager->snapprefs.getSnapObjectMidpoints() + _snapmanager->snapprefs.getSnapLineMidpoints() )) || (_snapmanager->snapprefs.getSnapModeBBox() && ( _snapmanager->snapprefs.getSnapToBBoxNode() || _snapmanager->snapprefs.getSnapBBoxEdgeMidpoints() || _snapmanager->snapprefs.getSnapBBoxMidpoints() - )) || (_snapmanager->snapprefs.getSnapModeBBoxOrNodes() && ( + )) || (_snapmanager->snapprefs.getSnapModeAny() && ( _snapmanager->snapprefs.getIncludeItemCenter() || - _snapmanager->snapprefs.getSnapToPageBorder() - )); + _snapmanager->snapprefs.getSnapToPageBorder() || + _snapmanager->snapprefs.getSnapObjectMidpoints() || + _snapmanager->snapprefs.getSnapTextBaseline() + )) ; if (snap_nodes) { _snapNodes(sc, p, unselected_nodes); @@ -691,7 +702,7 @@ void Inkscape::ObjectSnapper::freeSnap(SnappedConstraints &sc, if ((_snapmanager->snapprefs.getSnapModeNode() && _snapmanager->snapprefs.getSnapToItemPath()) || (_snapmanager->snapprefs.getSnapModeBBox() && _snapmanager->snapprefs.getSnapToBBoxPath()) || - (_snapmanager->snapprefs.getSnapModeBBoxOrNodes() && _snapmanager->snapprefs.getSnapToPageBorder())) { + _snapmanager->snapprefs.getSnapModeAny()) { unsigned n = (unselected_nodes == NULL) ? 0 : unselected_nodes->size(); if (n > 0) { /* While editing a path in the node tool, findCandidates must ignore that path because @@ -741,15 +752,16 @@ void Inkscape::ObjectSnapper::constrainedSnap( SnappedConstraints &sc, bool snap_nodes = (_snapmanager->snapprefs.getSnapModeNode() && ( _snapmanager->snapprefs.getSnapToItemNode() || _snapmanager->snapprefs.getSnapSmoothNodes() || - _snapmanager->snapprefs.getSnapLineMidpoints() || - _snapmanager->snapprefs.getSnapObjectMidpoints() + _snapmanager->snapprefs.getSnapLineMidpoints() )) || (_snapmanager->snapprefs.getSnapModeBBox() && ( _snapmanager->snapprefs.getSnapToBBoxNode() || _snapmanager->snapprefs.getSnapBBoxEdgeMidpoints() || _snapmanager->snapprefs.getSnapBBoxMidpoints() - )) || (_snapmanager->snapprefs.getSnapModeBBoxOrNodes() && ( + )) || (_snapmanager->snapprefs.getSnapModeAny() && ( _snapmanager->snapprefs.getIncludeItemCenter() || - _snapmanager->snapprefs.getSnapToPageBorder() + _snapmanager->snapprefs.getSnapObjectMidpoints() || + _snapmanager->snapprefs.getSnapToPageBorder() || + _snapmanager->snapprefs.getSnapTextBaseline() )); if (snap_nodes) { @@ -800,16 +812,17 @@ bool Inkscape::ObjectSnapper::ThisSnapperMightSnap() const _snapmanager->snapprefs.getSnapToItemPath() || _snapmanager->snapprefs.getSnapToItemNode() || _snapmanager->snapprefs.getSnapSmoothNodes() || - _snapmanager->snapprefs.getSnapLineMidpoints() || - _snapmanager->snapprefs.getSnapObjectMidpoints() + _snapmanager->snapprefs.getSnapLineMidpoints() )) || (_snapmanager->snapprefs.getSnapModeBBox() && ( _snapmanager->snapprefs.getSnapToBBoxPath() || _snapmanager->snapprefs.getSnapToBBoxNode() || _snapmanager->snapprefs.getSnapBBoxEdgeMidpoints() || _snapmanager->snapprefs.getSnapBBoxMidpoints() - )) || (_snapmanager->snapprefs.getSnapModeBBoxOrNodes() && ( + )) || (_snapmanager->snapprefs.getSnapModeAny() && ( _snapmanager->snapprefs.getSnapToPageBorder() || - _snapmanager->snapprefs.getIncludeItemCenter() + _snapmanager->snapprefs.getIncludeItemCenter() || + _snapmanager->snapprefs.getSnapObjectMidpoints() || + _snapmanager->snapprefs.getSnapTextBaseline() )); return (_snap_enabled && snap_to_something); @@ -874,6 +887,24 @@ void Inkscape::getBBoxPoints(Geom::OptRect const bbox, } } +bool Inkscape::ObjectSnapper::_allowSourceToSnapToTarget(SnapSourceType source, SnapTargetType target, bool strict_snapping) const +{ + bool allow_this_pair_to_snap = false; + + if (strict_snapping) { // bounding boxes will not snap to nodes/paths and vice versa + int source_cat = source & (SNAPSOURCE_BBOX_CATEGORY | SNAPSOURCE_NODE_CATEGORY | SNAPSOURCE_OTHERS_CATEGORY); + int target_cat = target & (SNAPTARGET_BBOX_CATEGORY | SNAPTARGET_NODE_CATEGORY | SNAPTARGET_OTHERS_CATEGORY); + if (source_cat == target_cat || source_cat == SNAPSOURCE_OTHERS_CATEGORY || target_cat == SNAPTARGET_OTHERS_CATEGORY) { + allow_this_pair_to_snap = true; + } + } else { // anything will snap to anything + allow_this_pair_to_snap = true; + } + + return allow_this_pair_to_snap; +} + + /* Local Variables: mode:c++ diff --git a/src/object-snapper.h b/src/object-snapper.h index 6e3cc620f..00fb18923 100644 --- a/src/object-snapper.h +++ b/src/object-snapper.h @@ -106,6 +106,7 @@ private: Geom::PathVector* _getBorderPathv() const; Geom::PathVector* _getPathvFromRect(Geom::Rect const rect) const; void _getBorderNodes(std::vector<SnapCandidatePoint> *points) const; + bool _allowSourceToSnapToTarget(SnapSourceType source, SnapTargetType target, bool strict_snapping) const; }; // end of ObjectSnapper class diff --git a/src/rect-context.cpp b/src/rect-context.cpp index be4f1c71d..188b5a9a3 100644 --- a/src/rect-context.cpp +++ b/src/rect-context.cpp @@ -65,7 +65,7 @@ static void sp_rect_cancel(SPRectContext *rc); static SPEventContextClass *parent_class; -GtkType sp_rect_context_get_type() +GType sp_rect_context_get_type() { static GType type = 0; if (!type) { diff --git a/src/rect-context.h b/src/rect-context.h index 00caf5d96..b6fbb6854 100644 --- a/src/rect-context.h +++ b/src/rect-context.h @@ -46,6 +46,6 @@ struct SPRectContextClass { /* Standard Gtk function */ -GtkType sp_rect_context_get_type (void); +GType sp_rect_context_get_type (void); #endif diff --git a/src/select-context.cpp b/src/select-context.cpp index 640aae9ee..143fb1ae2 100644 --- a/src/select-context.cpp +++ b/src/select-context.cpp @@ -69,7 +69,7 @@ static gint xp = 0, yp = 0; // where drag started static gint tolerance = 0; static bool within_tolerance = false; -GtkType +GType sp_select_context_get_type(void) { static GType type = 0; diff --git a/src/select-context.h b/src/select-context.h index 934892d40..d579f7ebc 100644 --- a/src/select-context.h +++ b/src/select-context.h @@ -55,6 +55,6 @@ struct SPSelectContextClass { /* Standard Gtk function */ -GtkType sp_select_context_get_type (void); +GType sp_select_context_get_type (void); #endif diff --git a/src/seltrans.cpp b/src/seltrans.cpp index bb333caca..f95a204a9 100644 --- a/src/seltrans.cpp +++ b/src/seltrans.cpp @@ -359,7 +359,7 @@ void Inkscape::SelTrans::grab(Geom::Point const &p, gdouble x, gdouble y, bool s // points immediately. if (prefs->getBool("/options/snapclosestonly/value", false)) { - if (m.snapprefs.getSnapModeNode()) { + if (m.snapprefs.getSnapModeNode() || m.snapprefs.getSnapModeOthers()) { m.keepClosestPointOnly(_snap_points, p); } else { _snap_points.clear(); // don't keep any point diff --git a/src/snap-enums.h b/src/snap-enums.h index aa5db9328..6ef021fc0 100644 --- a/src/snap-enums.h +++ b/src/snap-enums.h @@ -15,37 +15,6 @@ namespace Inkscape { -enum SnapTargetType { - SNAPTARGET_UNDEFINED = 0, - SNAPTARGET_GRID, - SNAPTARGET_GRID_INTERSECTION, - SNAPTARGET_GUIDE, - SNAPTARGET_GUIDE_INTERSECTION, - SNAPTARGET_GUIDE_ORIGIN, - SNAPTARGET_GRID_GUIDE_INTERSECTION, - SNAPTARGET_NODE_SMOOTH, - SNAPTARGET_NODE_CUSP, - SNAPTARGET_LINE_MIDPOINT, - SNAPTARGET_OBJECT_MIDPOINT, - SNAPTARGET_ROTATION_CENTER, - SNAPTARGET_HANDLE, - SNAPTARGET_PATH, - SNAPTARGET_PATH_INTERSECTION, - SNAPTARGET_BBOX_CORNER, - SNAPTARGET_BBOX_EDGE, - SNAPTARGET_BBOX_EDGE_MIDPOINT, - SNAPTARGET_BBOX_MIDPOINT, - SNAPTARGET_PAGE_BORDER, - SNAPTARGET_PAGE_CORNER, - SNAPTARGET_CONVEX_HULL_CORNER, - SNAPTARGET_ELLIPSE_QUADRANT_POINT, - SNAPTARGET_CENTER, // of ellipse - SNAPTARGET_CORNER, // of image or of rectangle - SNAPTARGET_TEXT_BASELINE, - SNAPTARGET_CONSTRAINED_ANGLE, - SNAPTARGET_CONSTRAINT -}; - enum SnapSourceType { SNAPSOURCE_UNDEFINED = 0, //------------------------------------------------------------------- @@ -66,18 +35,54 @@ enum SnapSourceType { SNAPSOURCE_CONVEX_HULL_CORNER, SNAPSOURCE_ELLIPSE_QUADRANT_POINT, SNAPSOURCE_NODE_HANDLE, // eg. nodes in the path editor, handles of stars or rectangles, etc. (tied to a stroke) - SNAPSOURCE_OBJECT_MIDPOINT, // midpoint of rectangles, polygon, etc. //------------------------------------------------------------------- // Other points (e.g. guides, gradient knots) will snap to both bounding boxes and nodes - SNAPSOURCE_OTHER_CATEGORY = 1024, // will be used as a flag and must therefore be a power of two + SNAPSOURCE_OTHERS_CATEGORY = 1024, // will be used as a flag and must therefore be a power of two SNAPSOURCE_ROTATION_CENTER, - SNAPSOURCE_CENTER, // of ellipse + SNAPSOURCE_OBJECT_MIDPOINT, // midpoint of rectangles, ellipses, polygon, etc. SNAPSOURCE_GUIDE, SNAPSOURCE_GUIDE_ORIGIN, - SNAPSOURCE_TEXT_BASELINE, - SNAPSOURCE_OTHER_HANDLE, // eg. the handle of a gradient of a connector (ie not being tied to a stroke) + SNAPSOURCE_TEXT_ANCHOR, + SNAPSOURCE_OTHER_HANDLE, // eg. the handle of a gradient or of a connector (ie not being tied to a stroke) SNAPSOURCE_GRID_PITCH, // eg. when pasting or alt-dragging in the selector tool; not realy a snap source }; +enum SnapTargetType { + SNAPTARGET_UNDEFINED = 0, + //------------------------------------------------------------------- + SNAPTARGET_BBOX_CATEGORY = 256, // will be used as a flag and must therefore be a power of two + SNAPTARGET_BBOX_CORNER, + SNAPTARGET_BBOX_EDGE, + SNAPTARGET_BBOX_EDGE_MIDPOINT, + SNAPTARGET_BBOX_MIDPOINT, + //------------------------------------------------------------------- + SNAPTARGET_NODE_CATEGORY = 512, // will be used as a flag and must therefore be a power of two + SNAPTARGET_NODE_SMOOTH, + SNAPTARGET_NODE_CUSP, + SNAPTARGET_LINE_MIDPOINT, + SNAPTARGET_PATH, + SNAPTARGET_PATH_INTERSECTION, + SNAPTARGET_ELLIPSE_QUADRANT_POINT, + SNAPTARGET_CORNER, // of image or of rectangle + //------------------------------------------------------------------- + SNAPTARGET_OTHERS_CATEGORY = 1024, // will be used as a flag and must therefore be a power of two + SNAPTARGET_GRID, + SNAPTARGET_GRID_INTERSECTION, + SNAPTARGET_GUIDE, + SNAPTARGET_GUIDE_INTERSECTION, + SNAPTARGET_GUIDE_ORIGIN, + SNAPTARGET_GRID_GUIDE_INTERSECTION, + SNAPTARGET_OBJECT_MIDPOINT, + SNAPTARGET_ROTATION_CENTER, + SNAPTARGET_HANDLE, + SNAPTARGET_PAGE_BORDER, + SNAPTARGET_PAGE_CORNER, + SNAPTARGET_CONVEX_HULL_CORNER, + SNAPTARGET_TEXT_ANCHOR, + SNAPTARGET_TEXT_BASELINE, + SNAPTARGET_CONSTRAINED_ANGLE, + SNAPTARGET_CONSTRAINT +}; + } #endif /* SNAPENUMS_H_ */ diff --git a/src/snap-preferences.cpp b/src/snap-preferences.cpp index 15c976466..4859b111e 100644 --- a/src/snap-preferences.cpp +++ b/src/snap-preferences.cpp @@ -1,5 +1,3 @@ -#define __SNAPPREFERENCES_CPP__ - /** * \file snap-preferences.cpp * \brief Storing of snapping preferences @@ -27,15 +25,16 @@ Inkscape::SnapPreferences::SnapPreferences() : _snap_to_page_border(false), _strict_snapping(true) { - setSnapFrom(SnapSourceType(SNAPSOURCE_BBOX_CATEGORY | SNAPSOURCE_NODE_CATEGORY | SNAPSOURCE_OTHER_CATEGORY), true); //Snap any point. In v0.45 and earlier, this was controlled in the preferences tab + setSnapFrom(SnapSourceType(SNAPSOURCE_BBOX_CATEGORY | SNAPSOURCE_NODE_CATEGORY | SNAPSOURCE_OTHERS_CATEGORY), true); //Snap any point. In v0.45 and earlier, this was controlled in the preferences tab } /* * The snappers have too many parameters to adjust individually. Therefore only - * two snapping modes are presented to the user: snapping bounding box corners (to + * three snapping modes are presented to the user: snapping bounding box corners (to * other bounding boxes, grids or guides), and/or snapping nodes (to other nodes, - * paths, grids or guides). To select either of these modes (or both), use the - * methods defined below: setSnapModeBBox() and setSnapModeNode(). + * paths, grids or guides), and or snapping to/from others (e.g. grids, guide, text, etc) + * To select either of these three modes (or all), use the + * methods defined below: setSnapModeBBox(), setSnapModeNode(), or setSnapModeOthers() * * */ @@ -68,11 +67,26 @@ bool Inkscape::SnapPreferences::getSnapModeNode() const return (_snap_from & Inkscape::SNAPSOURCE_NODE_CATEGORY); } -bool Inkscape::SnapPreferences::getSnapModeBBoxOrNodes() const +void Inkscape::SnapPreferences::setSnapModeOthers(bool enabled) { - return (_snap_from & (Inkscape::SNAPSOURCE_BBOX_CATEGORY | Inkscape::SNAPSOURCE_NODE_CATEGORY) ); + if (enabled) { + _snap_from = SnapSourceType(_snap_from | Inkscape::SNAPSOURCE_OTHERS_CATEGORY); + } else { + _snap_from = SnapSourceType(_snap_from & ~Inkscape::SNAPSOURCE_OTHERS_CATEGORY); + } } +bool Inkscape::SnapPreferences::getSnapModeOthers() const +{ + return (_snap_from & Inkscape::SNAPSOURCE_OTHERS_CATEGORY); +} + + +//bool Inkscape::SnapPreferences::getSnapModeBBoxOrNodes() const +//{ +// return (_snap_from & (Inkscape::SNAPSOURCE_BBOX_CATEGORY | Inkscape::SNAPSOURCE_NODE_CATEGORY) ); +//} + bool Inkscape::SnapPreferences::getSnapModeAny() const { return (_snap_from != 0); @@ -81,15 +95,15 @@ bool Inkscape::SnapPreferences::getSnapModeAny() const void Inkscape::SnapPreferences::setSnapModeGuide(bool enabled) { if (enabled) { - _snap_from = SnapSourceType(_snap_from | Inkscape::SNAPSOURCE_OTHER_CATEGORY); + _snap_from = SnapSourceType(_snap_from | Inkscape::SNAPSOURCE_OTHERS_CATEGORY); } else { - _snap_from = SnapSourceType(_snap_from & ~Inkscape::SNAPSOURCE_OTHER_CATEGORY); + _snap_from = SnapSourceType(_snap_from & ~Inkscape::SNAPSOURCE_OTHERS_CATEGORY); } } bool Inkscape::SnapPreferences::getSnapModeGuide() const { - return (_snap_from & Inkscape::SNAPSOURCE_OTHER_CATEGORY); + return (_snap_from & Inkscape::SNAPSOURCE_OTHERS_CATEGORY); } /** diff --git a/src/snap-preferences.h b/src/snap-preferences.h index cc8f24503..8e8ebc9cf 100644 --- a/src/snap-preferences.h +++ b/src/snap-preferences.h @@ -26,10 +26,12 @@ public: void setSnapModeBBox(bool enabled); void setSnapModeNode(bool enabled); + void setSnapModeOthers(bool enabled); void setSnapModeGuide(bool enabled); bool getSnapModeBBox() const; bool getSnapModeNode() const; - bool getSnapModeBBoxOrNodes() const; + bool getSnapModeOthers() const; + //bool getSnapModeBBoxOrNodes() const; bool getSnapModeAny() const; bool getSnapModeGuide() const; @@ -38,6 +40,7 @@ public: void setSnapSmoothNodes(bool enabled) {_smoothNodes = enabled;} void setSnapLineMidpoints(bool enabled) {_line_midpoints = enabled;} void setSnapObjectMidpoints(bool enabled) {_object_midpoints = enabled;} + void setSnapTextBaseline(bool enabled) {_text_baseline = enabled;} void setSnapBBoxEdgeMidpoints(bool enabled) {_bbox_edge_midpoints = enabled;} void setSnapBBoxMidpoints(bool enabled) {_bbox_midpoints = enabled;} bool getSnapIntersectionGG() const {return _intersectionGG;} @@ -45,6 +48,7 @@ public: bool getSnapSmoothNodes() const {return _smoothNodes;} bool getSnapLineMidpoints() const {return _line_midpoints;} bool getSnapObjectMidpoints() const {return _object_midpoints;} + bool getSnapTextBaseline() const {return _text_baseline;} bool getSnapBBoxEdgeMidpoints() const {return _bbox_edge_midpoints;} bool getSnapBBoxMidpoints() const {return _bbox_midpoints;} @@ -87,7 +91,6 @@ public: void setGuideTolerance(gdouble val) {_guide_tolerance = val;} void setObjectTolerance(gdouble val) {_object_tolerance = val;} - private: bool _include_item_center; //If true, snapping nodes will also snap the item's center bool _intersectionGG; //Consider snapping to intersections of grid and guides @@ -95,6 +98,7 @@ private: bool _smoothNodes; bool _line_midpoints; bool _object_midpoints; // the midpoint of shapes (e.g. a circle, rect, polygon) or of any other shape (at [h/2, w/2]) + bool _text_baseline; // both anchor point and baseline of the text bool _bbox_edge_midpoints; bool _bbox_midpoints; bool _snap_to_grids; diff --git a/src/snap.cpp b/src/snap.cpp index 922dfd530..3e79a221e 100644 --- a/src/snap.cpp +++ b/src/snap.cpp @@ -917,7 +917,7 @@ Inkscape::SnappedPoint SnapManager::_snapTransformed( // We might still need to apply a constraint though, if we tried a constrained snap. And // in case of a free snap we might have use for the transformed point, so let's return that // point, whether it's constrained or not - if (best_snapped_point.isOtherSnapBetter(snapped_point, true)) { + if (best_snapped_point.isOtherSnapBetter(snapped_point, true) || points.size() == 1) { // .. so we must keep track of the best non-snapped constrained point best_transformation = result; best_snapped_point = snapped_point; @@ -1441,7 +1441,7 @@ void SnapManager::_displaySnapsource(Inkscape::SnapCandidatePoint const &p) cons if (prefs->getBool("/options/snapclosestonly/value")) { bool p_is_a_node = p.getSourceType() & Inkscape::SNAPSOURCE_NODE_CATEGORY; bool p_is_a_bbox = p.getSourceType() & Inkscape::SNAPSOURCE_BBOX_CATEGORY; - bool p_is_other = p.getSourceType() & Inkscape::SNAPSOURCE_OTHER_CATEGORY; + bool p_is_other = p.getSourceType() & Inkscape::SNAPSOURCE_OTHERS_CATEGORY; g_assert(_desktop != NULL); if (snapprefs.getSnapEnabledGlobally() && (p_is_other || (p_is_a_node && snapprefs.getSnapModeNode()) || (p_is_a_bbox && snapprefs.getSnapModeBBox()))) { diff --git a/src/sp-conn-end-pair.cpp b/src/sp-conn-end-pair.cpp index 3cc022c39..e22145425 100644 --- a/src/sp-conn-end-pair.cpp +++ b/src/sp-conn-end-pair.cpp @@ -224,7 +224,7 @@ SPConnEndPair::getEndpoints(Geom::Point endPts[]) const { g_assert(h2attItem[h]->avoidRef); endPts[h] = h2attItem[h]->avoidRef->getConnectionPointPos(_connEnd[h]->type, _connEnd[h]->id); } - else + else if (!curve->is_empty()) { if (h == 0) { endPts[h] = *(curve->first_point())*i2d; diff --git a/src/sp-ellipse.cpp b/src/sp-ellipse.cpp index cf5927fc8..7ebedb816 100644 --- a/src/sp-ellipse.cpp +++ b/src/sp-ellipse.cpp @@ -276,7 +276,7 @@ static void sp_genericellipse_snappoints(SPItem const *item, std::vector<Inkscap g_assert(SP_IS_GENERICELLIPSE(item)); // Help enforcing strict snapping, i.e. only return nodes when we're snapping nodes to nodes or a guide to nodes - if (!(snapprefs->getSnapModeNode() || snapprefs->getSnapModeGuide())) { + if (!(snapprefs->getSnapModeNode() || snapprefs->getSnapModeGuide() || snapprefs->getSnapModeOthers())) { return; } @@ -317,7 +317,7 @@ static void sp_genericellipse_snappoints(SPItem const *item, std::vector<Inkscap // Add the centre, if we have a closed slice or when explicitly asked for if ((snapprefs->getSnapToItemNode() && slice && ellipse->closed) || snapprefs->getSnapObjectMidpoints()) { pt = Geom::Point(cx, cy) * i2d; - p.push_back(Inkscape::SnapCandidatePoint(pt, Inkscape::SNAPSOURCE_CENTER, Inkscape::SNAPTARGET_CENTER)); + p.push_back(Inkscape::SnapCandidatePoint(pt, Inkscape::SNAPSOURCE_OBJECT_MIDPOINT, Inkscape::SNAPTARGET_OBJECT_MIDPOINT)); } // And if we have a slice, also snap to the endpoints diff --git a/src/sp-flowtext.cpp b/src/sp-flowtext.cpp index 9db0d29b2..ab545919f 100644 --- a/src/sp-flowtext.cpp +++ b/src/sp-flowtext.cpp @@ -391,15 +391,17 @@ static gchar *sp_flowtext_description(SPItem *item) } } -static void sp_flowtext_snappoints(SPItem const *item, std::vector<Inkscape::SnapCandidatePoint> &p, Inkscape::SnapPreferences const */*snapprefs*/) +static void sp_flowtext_snappoints(SPItem const *item, std::vector<Inkscape::SnapCandidatePoint> &p, Inkscape::SnapPreferences const *snapprefs) { - // Choose a point on the baseline for snapping from or to, with the horizontal position - // of this point depending on the text alignment (left vs. right) - Inkscape::Text::Layout const *layout = te_get_layout((SPItem *) item); - if (layout != NULL && layout->outputExists()) { - boost::optional<Geom::Point> pt = layout->baselineAnchorPoint(); - if (pt) { - p.push_back(Inkscape::SnapCandidatePoint((*pt) * item->i2d_affine(), Inkscape::SNAPSOURCE_TEXT_BASELINE, Inkscape::SNAPTARGET_TEXT_BASELINE)); + if (snapprefs->getSnapTextBaseline()) { + // Choose a point on the baseline for snapping from or to, with the horizontal position + // of this point depending on the text alignment (left vs. right) + Inkscape::Text::Layout const *layout = te_get_layout((SPItem *) item); + if (layout != NULL && layout->outputExists()) { + boost::optional<Geom::Point> pt = layout->baselineAnchorPoint(); + if (pt) { + p.push_back(Inkscape::SnapCandidatePoint((*pt) * item->i2d_affine(), Inkscape::SNAPSOURCE_TEXT_ANCHOR, Inkscape::SNAPTARGET_TEXT_ANCHOR)); + } } } } diff --git a/src/sp-namedview.cpp b/src/sp-namedview.cpp index 35a159192..ac2d7dc1b 100644 --- a/src/sp-namedview.cpp +++ b/src/sp-namedview.cpp @@ -252,11 +252,13 @@ static void sp_namedview_build(SPObject *object, SPDocument *document, Inkscape: object->readAttr( "inkscape:snap-global" ); object->readAttr( "inkscape:snap-bbox" ); object->readAttr( "inkscape:snap-nodes" ); + object->readAttr( "inkscape:snap-others" ); object->readAttr( "inkscape:snap-from-guide" ); object->readAttr( "inkscape:snap-center" ); object->readAttr( "inkscape:snap-smooth-nodes" ); object->readAttr( "inkscape:snap-midpoints" ); object->readAttr( "inkscape:snap-object-midpoints" ); + object->readAttr( "inkscape:snap-text-baseline" ); object->readAttr( "inkscape:snap-bbox-edge-midpoints" ); object->readAttr( "inkscape:snap-bbox-midpoints" ); object->readAttr( "inkscape:snap-to-guides" ); @@ -309,8 +311,6 @@ static void sp_namedview_release(SPObject *object) static void sp_namedview_set(SPObject *object, unsigned int key, const gchar *value) { SPNamedView *nv = SP_NAMEDVIEW(object); - // TODO investigate why we grab this and then never use it - SPUnit const &px = sp_unit_get_by_id(SP_UNIT_PX); switch (key) { case SP_ATTR_VIEWONLY: @@ -335,17 +335,17 @@ static void sp_namedview_set(SPObject *object, unsigned int key, const gchar *va object->requestModified(SP_OBJECT_MODIFIED_FLAG); break; case SP_ATTR_GRIDTOLERANCE: - nv->snap_manager.snapprefs.setGridTolerance(value ? g_ascii_strtod(value, NULL) : 10000); - object->requestModified(SP_OBJECT_MODIFIED_FLAG); - break; + nv->snap_manager.snapprefs.setGridTolerance(value ? g_ascii_strtod(value, NULL) : 10000); + object->requestModified(SP_OBJECT_MODIFIED_FLAG); + break; case SP_ATTR_GUIDETOLERANCE: - nv->snap_manager.snapprefs.setGuideTolerance(value ? g_ascii_strtod(value, NULL) : 20); - object->requestModified(SP_OBJECT_MODIFIED_FLAG); - break; + nv->snap_manager.snapprefs.setGuideTolerance(value ? g_ascii_strtod(value, NULL) : 20); + object->requestModified(SP_OBJECT_MODIFIED_FLAG); + break; case SP_ATTR_OBJECTTOLERANCE: - nv->snap_manager.snapprefs.setObjectTolerance(value ? g_ascii_strtod(value, NULL) : 20); - object->requestModified(SP_OBJECT_MODIFIED_FLAG); - break; + nv->snap_manager.snapprefs.setObjectTolerance(value ? g_ascii_strtod(value, NULL) : 20); + object->requestModified(SP_OBJECT_MODIFIED_FLAG); + break; case SP_ATTR_GUIDECOLOR: nv->guidecolor = (nv->guidecolor & 0xff) | (DEFAULTGUIDECOLOR & 0xffffff00); if (value) { @@ -452,9 +452,9 @@ static void sp_namedview_set(SPObject *object, unsigned int key, const gchar *va object->requestModified(SP_OBJECT_MODIFIED_FLAG); break; case SP_ATTR_INKSCAPE_WINDOW_MAXIMIZED: - nv->window_maximized = value ? atoi(value) : 0; - object->requestModified(SP_OBJECT_MODIFIED_FLAG); - break; + nv->window_maximized = value ? atoi(value) : 0; + object->requestModified(SP_OBJECT_MODIFIED_FLAG); + break; case SP_ATTR_INKSCAPE_SNAP_GLOBAL: nv->snap_manager.snapprefs.setSnapEnabledGlobally(value ? sp_str_to_bool(value) : TRUE); object->requestModified(SP_OBJECT_MODIFIED_FLAG); @@ -467,18 +467,22 @@ static void sp_namedview_set(SPObject *object, unsigned int key, const gchar *va nv->snap_manager.snapprefs.setSnapModeNode(value ? sp_str_to_bool(value) : TRUE); object->requestModified(SP_OBJECT_MODIFIED_FLAG); break; + case SP_ATTR_INKSCAPE_SNAP_OTHERS: + nv->snap_manager.snapprefs.setSnapModeOthers(value ? sp_str_to_bool(value) : TRUE); + object->requestModified(SP_OBJECT_MODIFIED_FLAG); + break; case SP_ATTR_INKSCAPE_SNAP_CENTER: nv->snap_manager.snapprefs.setIncludeItemCenter(value ? sp_str_to_bool(value) : FALSE); object->requestModified(SP_OBJECT_MODIFIED_FLAG); break; case SP_ATTR_INKSCAPE_SNAP_GRIDS: - nv->snap_manager.snapprefs.setSnapToGrids(value ? sp_str_to_bool(value) : TRUE); - object->requestModified(SP_OBJECT_MODIFIED_FLAG); - break; + nv->snap_manager.snapprefs.setSnapToGrids(value ? sp_str_to_bool(value) : TRUE); + object->requestModified(SP_OBJECT_MODIFIED_FLAG); + break; case SP_ATTR_INKSCAPE_SNAP_TO_GUIDES: - nv->snap_manager.snapprefs.setSnapToGuides(value ? sp_str_to_bool(value) : TRUE); - object->requestModified(SP_OBJECT_MODIFIED_FLAG); - break; + nv->snap_manager.snapprefs.setSnapToGuides(value ? sp_str_to_bool(value) : TRUE); + object->requestModified(SP_OBJECT_MODIFIED_FLAG); + break; case SP_ATTR_INKSCAPE_SNAP_SMOOTH_NODES: nv->snap_manager.snapprefs.setSnapSmoothNodes(value ? sp_str_to_bool(value) : FALSE); object->requestModified(SP_OBJECT_MODIFIED_FLAG); @@ -488,17 +492,21 @@ static void sp_namedview_set(SPObject *object, unsigned int key, const gchar *va object->requestModified(SP_OBJECT_MODIFIED_FLAG); break; case SP_ATTR_INKSCAPE_SNAP_OBJECT_MIDPOINTS: - nv->snap_manager.snapprefs.setSnapObjectMidpoints(value ? sp_str_to_bool(value) : FALSE); - object->requestModified(SP_OBJECT_MODIFIED_FLAG); - break; + nv->snap_manager.snapprefs.setSnapObjectMidpoints(value ? sp_str_to_bool(value) : FALSE); + object->requestModified(SP_OBJECT_MODIFIED_FLAG); + break; + case SP_ATTR_INKSCAPE_SNAP_TEXT_BASELINE: + nv->snap_manager.snapprefs.setSnapTextBaseline(value ? sp_str_to_bool(value) : FALSE); + object->requestModified(SP_OBJECT_MODIFIED_FLAG); + break; case SP_ATTR_INKSCAPE_SNAP_BBOX_EDGE_MIDPOINTS: - nv->snap_manager.snapprefs.setSnapBBoxEdgeMidpoints(value ? sp_str_to_bool(value) : FALSE); - object->requestModified(SP_OBJECT_MODIFIED_FLAG); - break; + nv->snap_manager.snapprefs.setSnapBBoxEdgeMidpoints(value ? sp_str_to_bool(value) : FALSE); + object->requestModified(SP_OBJECT_MODIFIED_FLAG); + break; case SP_ATTR_INKSCAPE_SNAP_BBOX_MIDPOINTS: - nv->snap_manager.snapprefs.setSnapBBoxMidpoints(value ? sp_str_to_bool(value) : FALSE); - object->requestModified(SP_OBJECT_MODIFIED_FLAG); - break; + nv->snap_manager.snapprefs.setSnapBBoxMidpoints(value ? sp_str_to_bool(value) : FALSE); + object->requestModified(SP_OBJECT_MODIFIED_FLAG); + break; case SP_ATTR_INKSCAPE_SNAP_FROM_GUIDE: nv->snap_manager.snapprefs.setSnapModeGuide(value ? sp_str_to_bool(value) : TRUE); object->requestModified(SP_OBJECT_MODIFIED_FLAG); diff --git a/src/sp-rect.cpp b/src/sp-rect.cpp index 94a453ae6..db5a62f8f 100644 --- a/src/sp-rect.cpp +++ b/src/sp-rect.cpp @@ -567,7 +567,7 @@ static void sp_rect_snappoints(SPItem const *item, std::vector<Inkscape::SnapCan g_assert(SP_IS_RECT(item)); // Help enforcing strict snapping, i.e. only return nodes when we're snapping nodes to nodes or a guide to nodes - if (!(snapprefs->getSnapModeNode() || snapprefs->getSnapModeGuide())) { + if (!(snapprefs->getSnapModeNode() || snapprefs->getSnapModeGuide() || snapprefs->getSnapModeOthers())) { return; } diff --git a/src/sp-shape.cpp b/src/sp-shape.cpp index ea79b6cee..24b6b8025 100644 --- a/src/sp-shape.cpp +++ b/src/sp-shape.cpp @@ -1190,7 +1190,7 @@ void SPShape::sp_shape_snappoints(SPItem const *item, std::vector<Inkscape::Snap } // Help enforcing strict snapping, i.e. only return nodes when we're snapping nodes to nodes or a guide to nodes - if (!(snapprefs->getSnapModeNode() || snapprefs->getSnapModeGuide())) { + if (!(snapprefs->getSnapModeNode() || snapprefs->getSnapModeGuide() || snapprefs->getSnapModeOthers())) { return; } diff --git a/src/sp-spiral.cpp b/src/sp-spiral.cpp index 05c6bc9cd..a772e057d 100644 --- a/src/sp-spiral.cpp +++ b/src/sp-spiral.cpp @@ -529,7 +529,7 @@ static void sp_spiral_snappoints(SPItem const *item, std::vector<Inkscape::SnapC } // Help enforcing strict snapping, i.e. only return nodes when we're snapping nodes to nodes or a guide to nodes - if (!(snapprefs->getSnapModeNode() || snapprefs->getSnapModeGuide())) { + if (!(snapprefs->getSnapModeNode() || snapprefs->getSnapModeGuide() || snapprefs->getSnapModeOthers())) { return; } diff --git a/src/sp-star.cpp b/src/sp-star.cpp index 39efe2537..17ddf7279 100644 --- a/src/sp-star.cpp +++ b/src/sp-star.cpp @@ -557,7 +557,7 @@ static void sp_star_snappoints(SPItem const *item, std::vector<Inkscape::SnapCan } // Help enforcing strict snapping, i.e. only return nodes when we're snapping nodes to nodes or a guide to nodes - if (!(snapprefs->getSnapModeNode() || snapprefs->getSnapModeGuide())) { + if (!(snapprefs->getSnapModeNode() || snapprefs->getSnapModeGuide() || snapprefs->getSnapModeOthers())) { return; } diff --git a/src/sp-text.cpp b/src/sp-text.cpp index 3f30c2422..f7ba7592b 100644 --- a/src/sp-text.cpp +++ b/src/sp-text.cpp @@ -441,15 +441,17 @@ static char * sp_text_description(SPItem *item) return ret; } -static void sp_text_snappoints(SPItem const *item, std::vector<Inkscape::SnapCandidatePoint> &p, Inkscape::SnapPreferences const */*snapprefs*/) +static void sp_text_snappoints(SPItem const *item, std::vector<Inkscape::SnapCandidatePoint> &p, Inkscape::SnapPreferences const *snapprefs) { - // Choose a point on the baseline for snapping from or to, with the horizontal position - // of this point depending on the text alignment (left vs. right) - Inkscape::Text::Layout const *layout = te_get_layout((SPItem *) item); - if (layout != NULL && layout->outputExists()) { - boost::optional<Geom::Point> pt = layout->baselineAnchorPoint(); - if (pt) { - p.push_back(Inkscape::SnapCandidatePoint((*pt) * item->i2d_affine(), Inkscape::SNAPSOURCE_TEXT_BASELINE, Inkscape::SNAPTARGET_TEXT_BASELINE)); + if (snapprefs->getSnapTextBaseline()) { + // Choose a point on the baseline for snapping from or to, with the horizontal position + // of this point depending on the text alignment (left vs. right) + Inkscape::Text::Layout const *layout = te_get_layout((SPItem *) item); + if (layout != NULL && layout->outputExists()) { + boost::optional<Geom::Point> pt = layout->baselineAnchorPoint(); + if (pt) { + p.push_back(Inkscape::SnapCandidatePoint((*pt) * item->i2d_affine(), Inkscape::SNAPSOURCE_TEXT_ANCHOR, Inkscape::SNAPTARGET_TEXT_ANCHOR)); + } } } } diff --git a/src/spiral-context.cpp b/src/spiral-context.cpp index a5e1fbc17..93ff48c3e 100644 --- a/src/spiral-context.cpp +++ b/src/spiral-context.cpp @@ -59,7 +59,7 @@ static void sp_spiral_cancel(SPSpiralContext *sc); static SPEventContextClass *parent_class; -GtkType +GType sp_spiral_context_get_type() { static GType type = 0; diff --git a/src/spiral-context.h b/src/spiral-context.h index d877e6ae4..12c0b5d68 100644 --- a/src/spiral-context.h +++ b/src/spiral-context.h @@ -48,6 +48,6 @@ struct SPSpiralContextClass { /* Standard Gtk function */ -GtkType sp_spiral_context_get_type (void); +GType sp_spiral_context_get_type (void); #endif diff --git a/src/spray-context.cpp b/src/spray-context.cpp index aa14e6ee5..b2d99a696 100644 --- a/src/spray-context.cpp +++ b/src/spray-context.cpp @@ -97,7 +97,7 @@ inline double NormalDistribution(double mu, double sigma) return mu + sigma * sqrt( -2.0 * log(g_random_double_range(0, 1)) ) * cos( 2.0*M_PI*g_random_double_range(0, 1) ); } -GtkType sp_spray_context_get_type(void) +GType sp_spray_context_get_type(void) { static GType type = 0; if (!type) { diff --git a/src/spray-context.h b/src/spray-context.h index fc2340b5e..f3564ac67 100644 --- a/src/spray-context.h +++ b/src/spray-context.h @@ -99,7 +99,7 @@ struct SPSprayContextClass SPEventContextClass parent_class; }; -GtkType sp_spray_context_get_type(void); +GType sp_spray_context_get_type(void); #endif diff --git a/src/star-context.cpp b/src/star-context.cpp index bc0376a20..878ecfbe7 100644 --- a/src/star-context.cpp +++ b/src/star-context.cpp @@ -64,7 +64,7 @@ static void sp_star_cancel(SPStarContext * sc); static SPEventContextClass * parent_class; -GtkType +GType sp_star_context_get_type (void) { static GType type = 0; diff --git a/src/star-context.h b/src/star-context.h index c7cba2bf0..7bcb26c41 100644 --- a/src/star-context.h +++ b/src/star-context.h @@ -52,6 +52,6 @@ struct SPStarContextClass { SPEventContextClass parent_class; }; -GtkType sp_star_context_get_type (void); +GType sp_star_context_get_type (void); #endif diff --git a/src/svg-view-widget.cpp b/src/svg-view-widget.cpp index 639216d1f..cda1ed546 100644 --- a/src/svg-view-widget.cpp +++ b/src/svg-view-widget.cpp @@ -63,15 +63,11 @@ GType sp_svg_view_widget_get_type(void) static void sp_svg_view_widget_class_init (SPSVGSPViewWidgetClass *klass) { - GtkObjectClass *object_class; - GtkWidgetClass *widget_class; - SPViewWidgetClass *vw_class; + GtkObjectClass *object_class = GTK_OBJECT_CLASS (klass); + GtkWidgetClass *widget_class = GTK_WIDGET_CLASS (klass); + SPViewWidgetClass *vw_class = SP_VIEW_WIDGET_CLASS (klass); - object_class = GTK_OBJECT_CLASS (klass); - widget_class = GTK_WIDGET_CLASS (klass); - vw_class = SP_VIEW_WIDGET_CLASS (klass); - - widget_parent_class = (SPViewWidgetClass*)gtk_type_class (SP_TYPE_VIEW_WIDGET); + widget_parent_class = (SPViewWidgetClass *)g_type_class_peek_parent (klass); object_class->destroy = sp_svg_view_widget_destroy; @@ -212,7 +208,7 @@ sp_svg_view_widget_new (SPDocument *doc) g_return_val_if_fail (doc != NULL, NULL); - widget = (GtkWidget*)gtk_type_new (SP_TYPE_SVG_VIEW_WIDGET); + widget = (GtkWidget*)g_object_new (SP_TYPE_SVG_VIEW_WIDGET, NULL); reinterpret_cast<SPSVGView*>(SP_VIEW_WIDGET_VIEW (widget))->setDocument (doc); diff --git a/src/svg-view-widget.h b/src/svg-view-widget.h index 1a8697fdf..46def687b 100644 --- a/src/svg-view-widget.h +++ b/src/svg-view-widget.h @@ -27,7 +27,7 @@ class SPSVGSPViewWidgetClass; #define SP_IS_SVG_VIEW_WIDGET(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), SP_TYPE_SVG_VIEW_WIDGET)) #define SP_IS_SVG_VIEW_WIDGET_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), SP_TYPE_SVG_VIEW_WIDGET)) -GtkType sp_svg_view_widget_get_type (void); +GType sp_svg_view_widget_get_type (void); GtkWidget *sp_svg_view_widget_new (SPDocument *doc); diff --git a/src/svg-view.cpp b/src/svg-view.cpp index 44c874150..03056de2e 100644 --- a/src/svg-view.cpp +++ b/src/svg-view.cpp @@ -199,6 +199,8 @@ SPSVGView::setDocument (SPDocument *document) g_signal_connect (G_OBJECT (_drawing), "arena_event", G_CALLBACK (arena_handler), this); } + View::setDocument (document); + if (document) { NRArenaItem *ai = SP_ITEM( document->getRoot() )->invoke_show( SP_CANVAS_ARENA (_drawing)->arena, @@ -211,8 +213,6 @@ SPSVGView::setDocument (SPDocument *document) doRescale (!_rescale); } - - View::setDocument (document); } /** diff --git a/src/svg/CMakeLists.txt b/src/svg/CMakeLists.txt index 9a721969a..943c3088f 100644 --- a/src/svg/CMakeLists.txt +++ b/src/svg/CMakeLists.txt @@ -14,6 +14,9 @@ set(svg_SRC svg-path.cpp # test-stubs.cpp + + # ------- + # Headers css-ostringstream-test.h css-ostringstream.h path-string.h diff --git a/src/text-context.cpp b/src/text-context.cpp index b709d4d24..a27ad3ee4 100644 --- a/src/text-context.cpp +++ b/src/text-context.cpp @@ -215,7 +215,7 @@ sp_text_context_setup(SPEventContext *ec) SP_CTRLRECT(tc->frame)->setColor(0x0000ff7f, false, 0); sp_canvas_item_hide(tc->frame); - tc->timeout = gtk_timeout_add(timeout, (GtkFunction) sp_text_context_timeout, ec); + tc->timeout = g_timeout_add(timeout, (GSourceFunc) sp_text_context_timeout, ec); tc->imc = gtk_im_multicontext_new(); if (tc->imc) { @@ -297,7 +297,7 @@ sp_text_context_finish(SPEventContext *ec) } if (tc->timeout) { - gtk_timeout_remove(tc->timeout); + g_source_remove(tc->timeout); tc->timeout = 0; } @@ -675,7 +675,7 @@ sp_text_context_root_handler(SPEventContext *const event_context, GdkEvent *cons Geom::Point const motion_w(event->motion.x, event->motion.y); Geom::Point motion_dt(desktop->w2d(motion_w)); - m.preSnap(Inkscape::SnapCandidatePoint(motion_dt, Inkscape::SNAPSOURCE_NODE_HANDLE)); + m.preSnap(Inkscape::SnapCandidatePoint(motion_dt, Inkscape::SNAPSOURCE_OTHER_HANDLE)); m.unSetup(); } break; diff --git a/src/text-context.h b/src/text-context.h index 0d7a93ef0..a140c2f08 100644 --- a/src/text-context.h +++ b/src/text-context.h @@ -80,7 +80,7 @@ struct SPTextContextClass { }; /* Standard Gtk function */ -GtkType sp_text_context_get_type (void); +GType sp_text_context_get_type (void); bool sp_text_paste_inline(SPEventContext *ec); Glib::ustring sp_text_get_selected_text(SPEventContext const *ec); diff --git a/src/tweak-context.cpp b/src/tweak-context.cpp index 022869c69..974197786 100644 --- a/src/tweak-context.cpp +++ b/src/tweak-context.cpp @@ -89,7 +89,7 @@ static gint sp_tweak_context_root_handler(SPEventContext *ec, GdkEvent *event); static SPEventContextClass *parent_class; -GtkType +GType sp_tweak_context_get_type(void) { static GType type = 0; diff --git a/src/tweak-context.h b/src/tweak-context.h index d77605a82..cb1cf301b 100644 --- a/src/tweak-context.h +++ b/src/tweak-context.h @@ -86,7 +86,7 @@ struct SPTweakContextClass SPEventContextClass parent_class; }; -GtkType sp_tweak_context_get_type(void); +GType sp_tweak_context_get_type(void); #endif diff --git a/src/ui/CMakeLists.txt b/src/ui/CMakeLists.txt index 30b72437f..9bbdd861e 100644 --- a/src/ui/CMakeLists.txt +++ b/src/ui/CMakeLists.txt @@ -166,9 +166,6 @@ set(ui_SRC dialog/tracedialog.h dialog/transformation.h dialog/undo-history.h - dialog/whiteboard-connect.h - dialog/whiteboard-sharewithchat.h - dialog/whiteboard-sharewithuser.h tool/commit-events.h tool/control-point-selection.h diff --git a/src/ui/context-menu.cpp b/src/ui/context-menu.cpp index a45b8ceaa..4d2c242a6 100644 --- a/src/ui/context-menu.cpp +++ b/src/ui/context-menu.cpp @@ -110,34 +110,34 @@ sp_item_menu(SPObject *object, SPDesktop *desktop, GtkMenu *m) /* Item dialog */ w = gtk_menu_item_new_with_mnemonic(_("_Object Properties...")); - gtk_object_set_data(GTK_OBJECT(w), "desktop", desktop); + g_object_set_data(G_OBJECT(w), "desktop", desktop); g_signal_connect(G_OBJECT(w), "activate", G_CALLBACK(sp_item_properties), item); gtk_widget_show(w); - gtk_menu_append(GTK_MENU(m), w); + gtk_menu_shell_append(GTK_MENU_SHELL(m), w); /* Separator */ w = gtk_menu_item_new(); gtk_widget_show(w); - gtk_menu_append(GTK_MENU(m), w); + gtk_menu_shell_append(GTK_MENU_SHELL(m), w); /* Select item */ w = gtk_menu_item_new_with_mnemonic(_("_Select This")); if (sp_desktop_selection(desktop)->includes(item)) { gtk_widget_set_sensitive(w, FALSE); } else { - gtk_object_set_data(GTK_OBJECT(w), "desktop", desktop); + g_object_set_data(G_OBJECT(w), "desktop", desktop); g_signal_connect(G_OBJECT(w), "activate", G_CALLBACK(sp_item_select_this), item); } gtk_widget_show(w); - gtk_menu_append(GTK_MENU(m), w); + gtk_menu_shell_append(GTK_MENU_SHELL(m), w); /* Create link */ w = gtk_menu_item_new_with_mnemonic(_("_Create Link")); - gtk_object_set_data(GTK_OBJECT(w), "desktop", desktop); + g_object_set_data(G_OBJECT(w), "desktop", desktop); g_signal_connect(G_OBJECT(w), "activate", G_CALLBACK(sp_item_create_link), item); gtk_widget_set_sensitive(w, !SP_IS_ANCHOR(item)); gtk_widget_show(w); - gtk_menu_append(GTK_MENU(m), w); + gtk_menu_shell_append(GTK_MENU_SHELL(m), w); /* Set mask */ w = gtk_menu_item_new_with_mnemonic(_("Set Mask")); - gtk_object_set_data(GTK_OBJECT(w), "desktop", desktop); + g_object_set_data(G_OBJECT(w), "desktop", desktop); g_signal_connect(G_OBJECT(w), "activate", G_CALLBACK(sp_set_mask), item); if ((item && item->mask_ref && item->mask_ref->getObject()) || (item->clip_ref && item->clip_ref->getObject())) { gtk_widget_set_sensitive(w, FALSE); @@ -145,10 +145,10 @@ sp_item_menu(SPObject *object, SPDesktop *desktop, GtkMenu *m) gtk_widget_set_sensitive(w, TRUE); } gtk_widget_show(w); - gtk_menu_append(GTK_MENU(m), w); + gtk_menu_shell_append(GTK_MENU_SHELL(m), w); /* Release mask */ w = gtk_menu_item_new_with_mnemonic(_("Release Mask")); - gtk_object_set_data(GTK_OBJECT(w), "desktop", desktop); + g_object_set_data(G_OBJECT(w), "desktop", desktop); g_signal_connect(G_OBJECT(w), "activate", G_CALLBACK(sp_release_mask), item); if (item && item->mask_ref && item->mask_ref->getObject()) { gtk_widget_set_sensitive(w, TRUE); @@ -156,10 +156,10 @@ sp_item_menu(SPObject *object, SPDesktop *desktop, GtkMenu *m) gtk_widget_set_sensitive(w, FALSE); } gtk_widget_show(w); - gtk_menu_append(GTK_MENU(m), w); + gtk_menu_shell_append(GTK_MENU_SHELL(m), w); /* Set Clip */ w = gtk_menu_item_new_with_mnemonic(_("Set _Clip")); - gtk_object_set_data(GTK_OBJECT(w), "desktop", desktop); + g_object_set_data(G_OBJECT(w), "desktop", desktop); g_signal_connect(G_OBJECT(w), "activate", G_CALLBACK(sp_set_clip), item); if ((item && item->mask_ref && item->mask_ref->getObject()) || (item->clip_ref && item->clip_ref->getObject())) { gtk_widget_set_sensitive(w, FALSE); @@ -167,10 +167,10 @@ sp_item_menu(SPObject *object, SPDesktop *desktop, GtkMenu *m) gtk_widget_set_sensitive(w, TRUE); } gtk_widget_show(w); - gtk_menu_append(GTK_MENU(m), w); + gtk_menu_shell_append(GTK_MENU_SHELL(m), w); /* Release Clip */ w = gtk_menu_item_new_with_mnemonic(_("Release C_lip")); - gtk_object_set_data(GTK_OBJECT(w), "desktop", desktop); + g_object_set_data(G_OBJECT(w), "desktop", desktop); g_signal_connect(G_OBJECT(w), "activate", G_CALLBACK(sp_release_clip), item); if (item && item->clip_ref && item->clip_ref->getObject()) { gtk_widget_set_sensitive(w, TRUE); @@ -178,7 +178,7 @@ sp_item_menu(SPObject *object, SPDesktop *desktop, GtkMenu *m) gtk_widget_set_sensitive(w, FALSE); } gtk_widget_show(w); - gtk_menu_append(GTK_MENU(m), w); + gtk_menu_shell_append(GTK_MENU_SHELL(m), w); } @@ -189,7 +189,7 @@ sp_item_properties(GtkMenuItem *menuitem, SPItem *item) g_assert(SP_IS_ITEM(item)); - desktop = (SPDesktop*)gtk_object_get_data(GTK_OBJECT(menuitem), "desktop"); + desktop = (SPDesktop*)g_object_get_data(G_OBJECT(menuitem), "desktop"); g_return_if_fail(desktop != NULL); sp_desktop_selection(desktop)->set(item); @@ -205,7 +205,7 @@ sp_set_mask(GtkMenuItem *menuitem, SPItem *item) g_assert(SP_IS_ITEM(item)); - desktop = (SPDesktop*)gtk_object_get_data(GTK_OBJECT(menuitem), "desktop"); + desktop = (SPDesktop*)g_object_get_data(G_OBJECT(menuitem), "desktop"); g_return_if_fail(desktop != NULL); sp_selection_set_mask(desktop, false, false); @@ -219,7 +219,7 @@ sp_release_mask(GtkMenuItem *menuitem, SPItem *item) g_assert(SP_IS_ITEM(item)); - desktop = (SPDesktop*)gtk_object_get_data(GTK_OBJECT(menuitem), "desktop"); + desktop = (SPDesktop*)g_object_get_data(G_OBJECT(menuitem), "desktop"); g_return_if_fail(desktop != NULL); sp_selection_unset_mask(desktop, false); @@ -233,7 +233,7 @@ sp_set_clip(GtkMenuItem *menuitem, SPItem *item) g_assert(SP_IS_ITEM(item)); - desktop = (SPDesktop*)gtk_object_get_data(GTK_OBJECT(menuitem), "desktop"); + desktop = (SPDesktop*)g_object_get_data(G_OBJECT(menuitem), "desktop"); g_return_if_fail(desktop != NULL); sp_selection_set_mask(desktop, true, false); @@ -247,7 +247,7 @@ sp_release_clip(GtkMenuItem *menuitem, SPItem *item) g_assert(SP_IS_ITEM(item)); - desktop = (SPDesktop*)gtk_object_get_data(GTK_OBJECT(menuitem), "desktop"); + desktop = (SPDesktop*)g_object_get_data(G_OBJECT(menuitem), "desktop"); g_return_if_fail(desktop != NULL); sp_selection_unset_mask(desktop, true); @@ -261,7 +261,7 @@ sp_item_select_this(GtkMenuItem *menuitem, SPItem *item) g_assert(SP_IS_ITEM(item)); - desktop = (SPDesktop*)gtk_object_get_data(GTK_OBJECT(menuitem), "desktop"); + desktop = (SPDesktop*)g_object_get_data(G_OBJECT(menuitem), "desktop"); g_return_if_fail(desktop != NULL); sp_desktop_selection(desktop)->set(item); @@ -273,7 +273,7 @@ sp_item_create_link(GtkMenuItem *menuitem, SPItem *item) g_assert(SP_IS_ITEM(item)); g_assert(!SP_IS_ANCHOR(item)); - SPDesktop *desktop = (SPDesktop*)gtk_object_get_data(GTK_OBJECT(menuitem), "desktop"); + SPDesktop *desktop = (SPDesktop*)g_object_get_data(G_OBJECT(menuitem), "desktop"); g_return_if_fail(desktop != NULL); Inkscape::XML::Document *xml_doc = desktop->doc()->getReprDoc(); @@ -311,10 +311,10 @@ sp_group_menu(SPObject *object, SPDesktop *desktop, GtkMenu *menu) /* "Ungroup" */ w = gtk_menu_item_new_with_mnemonic(_("_Ungroup")); - gtk_object_set_data(GTK_OBJECT(w), "desktop", desktop); + g_object_set_data(G_OBJECT(w), "desktop", desktop); g_signal_connect(G_OBJECT(w), "activate", G_CALLBACK(sp_item_group_ungroup_activate), item); gtk_widget_show(w); - gtk_menu_append(GTK_MENU(menu), w); + gtk_menu_shell_append(GTK_MENU_SHELL(menu), w); } static void @@ -325,7 +325,7 @@ sp_item_group_ungroup_activate(GtkMenuItem *menuitem, SPGroup *group) g_assert(SP_IS_GROUP(group)); - desktop = (SPDesktop*)gtk_object_get_data(GTK_OBJECT(menuitem), "desktop"); + desktop = (SPDesktop*)g_object_get_data(G_OBJECT(menuitem), "desktop"); g_return_if_fail(desktop != NULL); children = NULL; @@ -351,21 +351,21 @@ sp_anchor_menu(SPObject *object, SPDesktop *desktop, GtkMenu *m) /* Link dialog */ w = gtk_menu_item_new_with_mnemonic(_("Link _Properties...")); - gtk_object_set_data(GTK_OBJECT(w), "desktop", desktop); + g_object_set_data(G_OBJECT(w), "desktop", desktop); g_signal_connect(G_OBJECT(w), "activate", G_CALLBACK(sp_anchor_link_properties), item); gtk_widget_show(w); - gtk_menu_append(GTK_MENU(m), w); + gtk_menu_shell_append(GTK_MENU_SHELL(m), w); /* Select item */ w = gtk_menu_item_new_with_mnemonic(_("_Follow Link")); g_signal_connect(G_OBJECT(w), "activate", G_CALLBACK(sp_anchor_link_follow), item); gtk_widget_show(w); - gtk_menu_append(GTK_MENU(m), w); + gtk_menu_shell_append(GTK_MENU_SHELL(m), w); /* Reset transformations */ w = gtk_menu_item_new_with_mnemonic(_("_Remove Link")); - gtk_object_set_data(GTK_OBJECT(w), "desktop", desktop); + g_object_set_data(G_OBJECT(w), "desktop", desktop); g_signal_connect(G_OBJECT(w), "activate", G_CALLBACK(sp_anchor_link_remove), item); gtk_widget_show(w); - gtk_menu_append(GTK_MENU(m), w); + gtk_menu_shell_append(GTK_MENU_SHELL(m), w); } static void @@ -410,16 +410,16 @@ sp_image_menu(SPObject *object, SPDesktop *desktop, GtkMenu *m) /* Link dialog */ w = gtk_menu_item_new_with_mnemonic(_("Image _Properties...")); - gtk_object_set_data(GTK_OBJECT(w), "desktop", desktop); + g_object_set_data(G_OBJECT(w), "desktop", desktop); g_signal_connect(G_OBJECT(w), "activate", G_CALLBACK(sp_image_image_properties), item); gtk_widget_show(w); - gtk_menu_append(GTK_MENU(m), w); + gtk_menu_shell_append(GTK_MENU_SHELL(m), w); w = gtk_menu_item_new_with_mnemonic(_("Edit Externally...")); - gtk_object_set_data(GTK_OBJECT(w), "desktop", desktop); + g_object_set_data(G_OBJECT(w), "desktop", desktop); g_signal_connect(G_OBJECT(w), "activate", G_CALLBACK(sp_image_image_edit), item); gtk_widget_show(w); - gtk_menu_append(GTK_MENU(m), w); + gtk_menu_shell_append(GTK_MENU_SHELL(m), w); Inkscape::XML::Node *ir = object->getRepr(); const gchar *href = ir->attribute("xlink:href"); if ( (!href) || ((strncmp(href, "data:", 5) == 0)) ) { @@ -495,7 +495,7 @@ static void sp_image_image_edit(GtkMenuItem *menuitem, SPAnchor *anchor) if ( errThing ) { g_warning("Problem launching editor (%d). %s", errThing->code, errThing->message); - SPDesktop *desktop = (SPDesktop*)gtk_object_get_data(GTK_OBJECT(menuitem), "desktop"); + SPDesktop *desktop = (SPDesktop*)g_object_get_data(G_OBJECT(menuitem), "desktop"); desktop->messageStack()->flash(Inkscape::ERROR_MESSAGE, errThing->message); g_error_free(errThing); errThing = 0; @@ -511,7 +511,7 @@ sp_fill_settings(GtkMenuItem *menuitem, SPItem *item) g_assert(SP_IS_ITEM(item)); - desktop = (SPDesktop*)gtk_object_get_data(GTK_OBJECT(menuitem), "desktop"); + desktop = (SPDesktop*)g_object_get_data(G_OBJECT(menuitem), "desktop"); g_return_if_fail(desktop != NULL); if (sp_desktop_selection(desktop)->isEmpty()) { @@ -533,10 +533,10 @@ sp_shape_menu(SPObject *object, SPDesktop *desktop, GtkMenu *m) /* Item dialog */ w = gtk_menu_item_new_with_mnemonic(_("_Fill and Stroke...")); - gtk_object_set_data(GTK_OBJECT(w), "desktop", desktop); + g_object_set_data(G_OBJECT(w), "desktop", desktop); g_signal_connect(G_OBJECT(w), "activate", G_CALLBACK(sp_fill_settings), item); gtk_widget_show(w); - gtk_menu_append(GTK_MENU(m), w); + gtk_menu_shell_append(GTK_MENU_SHELL(m), w); } /* Edit Text entry */ @@ -548,7 +548,7 @@ sp_text_settings(GtkMenuItem *menuitem, SPItem *item) g_assert(SP_IS_ITEM(item)); - desktop = (SPDesktop*)gtk_object_get_data(GTK_OBJECT(menuitem), "desktop"); + desktop = (SPDesktop*)g_object_get_data(G_OBJECT(menuitem), "desktop"); g_return_if_fail(desktop != NULL); if (sp_desktop_selection(desktop)->isEmpty()) { @@ -567,7 +567,7 @@ sp_spellcheck_settings(GtkMenuItem *menuitem, SPItem *item) g_assert(SP_IS_ITEM(item)); - desktop = (SPDesktop*)gtk_object_get_data(GTK_OBJECT(menuitem), "desktop"); + desktop = (SPDesktop*)g_object_get_data(G_OBJECT(menuitem), "desktop"); g_return_if_fail(desktop != NULL); if (sp_desktop_selection(desktop)->isEmpty()) { @@ -589,24 +589,24 @@ sp_text_menu(SPObject *object, SPDesktop *desktop, GtkMenu *m) /* Fill and Stroke dialog */ w = gtk_menu_item_new_with_mnemonic(_("_Fill and Stroke...")); - gtk_object_set_data(GTK_OBJECT(w), "desktop", desktop); + g_object_set_data(G_OBJECT(w), "desktop", desktop); g_signal_connect(G_OBJECT(w), "activate", G_CALLBACK(sp_fill_settings), item); gtk_widget_show(w); - gtk_menu_append(GTK_MENU(m), w); + gtk_menu_shell_append(GTK_MENU_SHELL(m), w); /* Edit Text dialog */ w = gtk_menu_item_new_with_mnemonic(_("_Text and Font...")); - gtk_object_set_data(GTK_OBJECT(w), "desktop", desktop); + g_object_set_data(G_OBJECT(w), "desktop", desktop); g_signal_connect(G_OBJECT(w), "activate", G_CALLBACK(sp_text_settings), item); gtk_widget_show(w); - gtk_menu_append(GTK_MENU(m), w); + gtk_menu_shell_append(GTK_MENU_SHELL(m), w); /* Spellcheck dialog */ w = gtk_menu_item_new_with_mnemonic(_("Check Spellin_g...")); - gtk_object_set_data(GTK_OBJECT(w), "desktop", desktop); + g_object_set_data(G_OBJECT(w), "desktop", desktop); g_signal_connect(G_OBJECT(w), "activate", G_CALLBACK(sp_spellcheck_settings), item); gtk_widget_show(w); - gtk_menu_append(GTK_MENU(m), w); + gtk_menu_shell_append(GTK_MENU_SHELL(m), w); } /* Local Variables: diff --git a/src/ui/dialog/dock-behavior.cpp b/src/ui/dialog/dock-behavior.cpp index 47cbab485..25fa1739a 100644 --- a/src/ui/dialog/dock-behavior.cpp +++ b/src/ui/dialog/dock-behavior.cpp @@ -262,7 +262,7 @@ DockBehavior::onDesktopActivated(SPDesktop *desktop) } // we're done, allow next retransientizing not sooner than after 120 msec - gtk_timeout_add (120, (GtkFunction) sp_retransientize_again, (gpointer) floating_win); + g_timeout_add (120, (GSourceFunc) sp_retransientize_again, (gpointer) floating_win); } } diff --git a/src/ui/dialog/floating-behavior.cpp b/src/ui/dialog/floating-behavior.cpp index 35cc88090..6a086e0a1 100644 --- a/src/ui/dialog/floating-behavior.cpp +++ b/src/ui/dialog/floating-behavior.cpp @@ -220,7 +220,7 @@ FloatingBehavior::onDesktopActivated (SPDesktop *desktop) } // we're done, allow next retransientizing not sooner than after 120 msec - gtk_timeout_add (120, (GtkFunction) sp_retransientize_again, (gpointer) _d); + g_timeout_add (120, (GSourceFunc) sp_retransientize_again, (gpointer) _d); } diff --git a/src/ui/icon-names.h b/src/ui/icon-names.h index f7c16b0ed..8935b1def 100644 --- a/src/ui/icon-names.h +++ b/src/ui/icon-names.h @@ -458,6 +458,8 @@ "snap-nodes" #define INKSCAPE_ICON_SNAP_NODES_CENTER \ "snap-nodes-center" +#define INKSCAPE_ICON_SNAP_OTHERS \ + "snap-nodes-others" #define INKSCAPE_ICON_SNAP_NODES_CUSP \ "snap-nodes-cusp" #define INKSCAPE_ICON_SNAP_NODES_INTERSECTION \ @@ -468,6 +470,8 @@ "snap-nodes-path" #define INKSCAPE_ICON_SNAP_NODES_ROTATION_CENTER \ "snap-nodes-rotation-center" +#define INKSCAPE_ICON_SNAP_TEXT_BASELINE \ + "snap-text-baseline" #define INKSCAPE_ICON_SNAP_NODES_SMOOTH \ "snap-nodes-smooth" #define INKSCAPE_ICON_SNAP_PAGE \ diff --git a/src/ui/view/view-widget.cpp b/src/ui/view/view-widget.cpp index cf0f55f2c..d43877569 100644 --- a/src/ui/view/view-widget.cpp +++ b/src/ui/view/view-widget.cpp @@ -27,22 +27,21 @@ static GtkEventBoxClass *widget_parent_class; /** * Registers the SPViewWidget class with Glib and returns its type number. */ -GtkType sp_view_widget_get_type(void) +GType sp_view_widget_get_type(void) { - static GtkType type = 0; - //TODO: switch to GObject - // GtkType and such calls were deprecated a while back with the - // introduction of GObject as a separate layer, with GType instead. --JonCruz + static GType type = 0; if (!type) { - GtkTypeInfo info = { - (gchar*) "SPViewWidget", - sizeof(SPViewWidget), + GTypeInfo info = { sizeof(SPViewWidgetClass), - (GtkClassInitFunc) sp_view_widget_class_init, - (GtkObjectInitFunc) sp_view_widget_init, - NULL, NULL, NULL - }; - type = gtk_type_unique(GTK_TYPE_EVENT_BOX, &info); + NULL, NULL, + (GClassInitFunc) sp_view_widget_class_init, + NULL, NULL, + sizeof(SPViewWidget), + 0, + (GInstanceInitFunc) sp_view_widget_init, + NULL + }; + type = g_type_register_static (GTK_TYPE_EVENT_BOX, "SPViewWidget", &info, (GTypeFlags)0); } return type; @@ -55,7 +54,7 @@ static void sp_view_widget_class_init(SPViewWidgetClass *vwc) { GtkObjectClass *object_class = GTK_OBJECT_CLASS(vwc); - widget_parent_class = (GtkEventBoxClass*) gtk_type_class(GTK_TYPE_EVENT_BOX); + widget_parent_class = (GtkEventBoxClass*) g_type_class_peek_parent(vwc); object_class->destroy = sp_view_widget_destroy; } diff --git a/src/ui/widget/page-sizer.cpp b/src/ui/widget/page-sizer.cpp index 626be7625..f7759f103 100644 --- a/src/ui/widget/page-sizer.cpp +++ b/src/ui/widget/page-sizer.cpp @@ -236,7 +236,7 @@ PageSizer::PageSizer(Registry & _wr) _marginLeft( _("L_eft:"), _("Left margin"), "fit-margin-left", _wr), _marginRight( _("Ri_ght:"), _("Right margin"), "fit-margin-right", _wr), _marginBottom( _("Botto_m:"), _("Bottom margin"), "fit-margin-bottom", _wr), - + _lockMarginUpdate(false), _widgetRegistry(&_wr) { //# Set up the Paper Size combo box @@ -465,18 +465,20 @@ PageSizer::setDim (double w, double h, bool changeList) void PageSizer::updateFitMarginsUI(Inkscape::XML::Node *nv_repr) { - double value = 0.0; - if (sp_repr_get_double(nv_repr, "fit-margin-top", &value)) { - _marginTop.setValue(value); - } - if (sp_repr_get_double(nv_repr, "fit-margin-left", &value)) { - _marginLeft.setValue(value); - } - if (sp_repr_get_double(nv_repr, "fit-margin-right", &value)) { - _marginRight.setValue(value); - } - if (sp_repr_get_double(nv_repr, "fit-margin-bottom", &value)) { - _marginBottom.setValue(value); + if (!_lockMarginUpdate) { + double value = 0.0; + if (sp_repr_get_double(nv_repr, "fit-margin-top", &value)) { + _marginTop.setValue(value); + } + if (sp_repr_get_double(nv_repr, "fit-margin-left", &value)) { + _marginLeft.setValue(value); + } + if (sp_repr_get_double(nv_repr, "fit-margin-right", &value)) { + _marginRight.setValue(value); + } + if (sp_repr_get_double(nv_repr, "fit-margin-bottom", &value)) { + _marginBottom.setValue(value); + } } } @@ -538,14 +540,18 @@ PageSizer::fire_fit_canvas_to_selection_or_drawing() SPDocument *doc; SPNamedView *nv; Inkscape::XML::Node *nv_repr; + if ((doc = sp_desktop_document(SP_ACTIVE_DESKTOP)) && (nv = sp_document_namedview(doc, 0)) && (nv_repr = nv->getRepr())) { + _lockMarginUpdate = true; sp_repr_set_svg_double(nv_repr, "fit-margin-top", _marginTop.getValue()); sp_repr_set_svg_double(nv_repr, "fit-margin-left", _marginLeft.getValue()); sp_repr_set_svg_double(nv_repr, "fit-margin-right", _marginRight.getValue()); sp_repr_set_svg_double(nv_repr, "fit-margin-bottom", _marginBottom.getValue()); + _lockMarginUpdate = false; } + Verb *verb = Verb::get( SP_VERB_FIT_CANVAS_TO_SELECTION_OR_DRAWING ); if (verb) { SPAction *action = verb->get_action(dt); diff --git a/src/ui/widget/page-sizer.h b/src/ui/widget/page-sizer.h index 2072aeccd..cb7f8a069 100644 --- a/src/ui/widget/page-sizer.h +++ b/src/ui/widget/page-sizer.h @@ -219,6 +219,7 @@ protected: RegisteredScalar _marginBottom; Gtk::Alignment _fitPageButtonAlign; Gtk::Button _fitPageButton; + bool _lockMarginUpdate; //callback void on_value_changed(); diff --git a/src/ui/widget/registered-widget.h b/src/ui/widget/registered-widget.h index 560c63dd4..f05eb176a 100644 --- a/src/ui/widget/registered-widget.h +++ b/src/ui/widget/registered-widget.h @@ -62,9 +62,6 @@ public: bool is_updating() {if (_wr) return _wr->isUpdating(); else return false;} - // provide automatic 'upcast' for ease of use. (do it 'dynamic_cast' instead of 'static' because who knows what W is) - operator const Gtk::Widget () { return dynamic_cast<Gtk::Widget*>(this); } - protected: RegisteredWidget() : W() { construct(); } template< typename A > diff --git a/src/ui/widget/selected-style.cpp b/src/ui/widget/selected-style.cpp index ae8cd564e..0aa65b1a9 100644 --- a/src/ui/widget/selected-style.cpp +++ b/src/ui/widget/selected-style.cpp @@ -412,7 +412,7 @@ void SelectedStyle::setDesktop(SPDesktop *desktop) { _desktop = desktop; - gtk_object_set_data (GTK_OBJECT(_opacity_sb.gobj()), "dtw", _desktop->canvas); + g_object_set_data (G_OBJECT(_opacity_sb.gobj()), "dtw", _desktop->canvas); Inkscape::Selection *selection = sp_desktop_selection (desktop); diff --git a/src/ui/widget/svg-canvas.cpp b/src/ui/widget/svg-canvas.cpp index 7d37ec355..f0eb24a10 100644 --- a/src/ui/widget/svg-canvas.cpp +++ b/src/ui/widget/svg-canvas.cpp @@ -22,7 +22,7 @@ namespace Widget { SVGCanvas::SVGCanvas() { - void *canvas = gtk_type_new (sp_canvas_get_type ()); + void *canvas = g_object_new (sp_canvas_get_type (), NULL); _spcanvas = static_cast<SPCanvas*>(canvas); _widget = Glib::wrap (static_cast<GtkWidget*> (canvas)); _dt = 0; diff --git a/src/util/CMakeLists.txt b/src/util/CMakeLists.txt index 5c8411437..cfccfa94d 100644 --- a/src/util/CMakeLists.txt +++ b/src/util/CMakeLists.txt @@ -6,6 +6,9 @@ set(util_SRC share.cpp units.cpp + + # ------- + # Headers accumulators.h compose.hpp copy.h diff --git a/src/widgets/CMakeLists.txt b/src/widgets/CMakeLists.txt index 1a203afc6..418cc5c6f 100644 --- a/src/widgets/CMakeLists.txt +++ b/src/widgets/CMakeLists.txt @@ -34,6 +34,9 @@ set(widgets_SRC swatch-selector.cpp toolbox.cpp + + # ------- + # Headers button.h dash-selector.h desktop-widget.h diff --git a/src/widgets/desktop-widget.cpp b/src/widgets/desktop-widget.cpp index 797525838..1af678dc6 100644 --- a/src/widgets/desktop-widget.cpp +++ b/src/widgets/desktop-widget.cpp @@ -255,7 +255,7 @@ static GTimer *overallTimer = 0; */ GType SPDesktopWidget::getType(void) { - static GtkType type = 0; + static GType type = 0; if (!type) { GTypeInfo info = { sizeof(SPDesktopWidgetClass), @@ -282,7 +282,7 @@ GType SPDesktopWidget::getType(void) static void sp_desktop_widget_class_init (SPDesktopWidgetClass *klass) { - dtw_parent_class = (SPViewWidgetClass*)gtk_type_class (SP_TYPE_VIEW_WIDGET); + dtw_parent_class = (SPViewWidgetClass*)g_type_class_peek_parent (klass); GtkObjectClass *object_class = (GtkObjectClass *) klass; GtkWidgetClass *widget_class = (GtkWidgetClass *) klass; @@ -498,7 +498,7 @@ void SPDesktopWidget::init( SPDesktopWidget *dtw ) gtk_spin_button_set_update_policy (GTK_SPIN_BUTTON (dtw->zoom_status), GTK_UPDATE_ALWAYS); g_signal_connect (G_OBJECT (dtw->zoom_status), "input", G_CALLBACK (sp_dtw_zoom_input), dtw); g_signal_connect (G_OBJECT (dtw->zoom_status), "output", G_CALLBACK (sp_dtw_zoom_output), dtw); - gtk_object_set_data (GTK_OBJECT (dtw->zoom_status), "dtw", dtw->canvas); + g_object_set_data (G_OBJECT (dtw->zoom_status), "dtw", dtw->canvas); g_signal_connect (G_OBJECT (dtw->zoom_status), "focus-in-event", G_CALLBACK (spinbutton_focus_in), dtw->zoom_status); g_signal_connect (G_OBJECT (dtw->zoom_status), "key-press-event", G_CALLBACK (spinbutton_keypress), dtw->zoom_status); dtw->zoom_update = g_signal_connect (G_OBJECT (dtw->zoom_status), "value_changed", G_CALLBACK (sp_dtw_zoom_value_changed), dtw); @@ -630,7 +630,7 @@ sp_desktop_widget_destroy (GtkObject *object) void SPDesktopWidget::updateTitle(gchar const* uri) { - Gtk::Window *window = (Gtk::Window*)gtk_object_get_data (GTK_OBJECT(this), "window"); + Gtk::Window *window = (Gtk::Window*)g_object_get_data(G_OBJECT(this), "window"); if (window) { gchar const *fname = ( TRUE @@ -908,7 +908,7 @@ SPDesktopWidget::shutdown() switch (response) { case GTK_RESPONSE_YES: { - Gtk::Window *window = (Gtk::Window*)gtk_object_get_data (GTK_OBJECT(this), "window"); + Gtk::Window *window = (Gtk::Window*)g_object_get_data(G_OBJECT(this), "window"); doc->doRef(); sp_namedview_document_from_window(desktop); @@ -969,7 +969,7 @@ SPDesktopWidget::shutdown() { doc->doRef(); - Gtk::Window *window = (Gtk::Window*)gtk_object_get_data (GTK_OBJECT(this), "window"); + Gtk::Window *window = (Gtk::Window*)g_object_get_data(G_OBJECT(this), "window"); if (sp_file_save_dialog(*window, doc, Inkscape::Extension::FILE_SAVE_METHOD_INKSCAPE_SVG)) { doc->doUnref(); @@ -1081,7 +1081,7 @@ SPDesktopWidget::getWindowGeometry (gint &x, gint &y, gint &w, gint &h) gboolean vis = gtk_widget_get_visible (GTK_WIDGET(this)); (void)vis; // TODO figure out why it is here but not used. - Gtk::Window *window = (Gtk::Window*)gtk_object_get_data (GTK_OBJECT(this), "window"); + Gtk::Window *window = (Gtk::Window*)g_object_get_data(G_OBJECT(this), "window"); if (window) { @@ -1093,7 +1093,7 @@ SPDesktopWidget::getWindowGeometry (gint &x, gint &y, gint &w, gint &h) void SPDesktopWidget::setWindowPosition (Geom::Point p) { - Gtk::Window *window = (Gtk::Window*)gtk_object_get_data (GTK_OBJECT(this), "window"); + Gtk::Window *window = (Gtk::Window*)g_object_get_data(G_OBJECT(this), "window"); if (window) { @@ -1104,12 +1104,12 @@ SPDesktopWidget::setWindowPosition (Geom::Point p) void SPDesktopWidget::setWindowSize (gint w, gint h) { - Gtk::Window *window = (Gtk::Window*)gtk_object_get_data (GTK_OBJECT(this), "window"); + Gtk::Window *window = (Gtk::Window*)g_object_get_data(G_OBJECT(this), "window"); if (window) { window->set_default_size (w, h); - window->reshow_with_initial_size (); + window->resize (w, h); } } @@ -1122,7 +1122,7 @@ SPDesktopWidget::setWindowSize (gint w, gint h) void SPDesktopWidget::setWindowTransient (void *p, int transient_policy) { - Gtk::Window *window = (Gtk::Window*)gtk_object_get_data (GTK_OBJECT(this), "window"); + Gtk::Window *window = (Gtk::Window*)g_object_get_data(G_OBJECT(this), "window"); if (window) { GtkWindow *w = (GtkWindow *) window->gobj(); diff --git a/src/widgets/desktop-widget.h b/src/widgets/desktop-widget.h index 165367954..742411fb1 100644 --- a/src/widgets/desktop-widget.h +++ b/src/widgets/desktop-widget.h @@ -238,7 +238,7 @@ struct SPDesktopWidget { Inkscape::UI::Widget::Dock* getDock(); - static GtkType getType(); + static GType getType(); static SPDesktopWidget* createInstance(SPNamedView *namedview); void updateNamedview(); @@ -246,7 +246,7 @@ struct SPDesktopWidget { private: GtkWidget *tool_toolbox; GtkWidget *aux_toolbox; - GtkWidget *commands_toolbox,; + GtkWidget *commands_toolbox; GtkWidget *snap_toolbox; static void init(SPDesktopWidget *widget); diff --git a/src/widgets/font-selector.cpp b/src/widgets/font-selector.cpp index 965910ba2..a9340a291 100644 --- a/src/widgets/font-selector.cpp +++ b/src/widgets/font-selector.cpp @@ -26,13 +26,6 @@ #include <2geom/transforms.h> #include <gtk/gtk.h> -#include <gtk/gtkframe.h> -#include <gtk/gtkscrolledwindow.h> -#include <gtk/gtkclist.h> -#include <gtk/gtkvbox.h> -#include <gtk/gtkcombo.h> -#include <gtk/gtkentry.h> -#include <gtk/gtkdrawingarea.h> #include <glibmm/i18n.h> @@ -128,7 +121,7 @@ static void sp_font_selector_class_init(SPFontSelectorClass *c) { GtkObjectClass *object_class = (GtkObjectClass *) c; - fs_parent_class = (GtkHBoxClass* )gtk_type_class(GTK_TYPE_HBOX); + fs_parent_class = (GtkHBoxClass* )g_type_class_peek_parent (c); fs_signals[FONT_SET] = gtk_signal_new ("font_set", GTK_RUN_FIRST, @@ -391,7 +384,7 @@ static void sp_font_selector_emit_set (SPFontSelector *fsel) GtkWidget *sp_font_selector_new() { - SPFontSelector *fsel = (SPFontSelector*) gtk_type_new(SP_TYPE_FONT_SELECTOR); + SPFontSelector *fsel = (SPFontSelector*) g_object_new(SP_TYPE_FONT_SELECTOR, NULL); return (GtkWidget *) fsel; } diff --git a/src/widgets/font-selector.h b/src/widgets/font-selector.h index febd4a34a..3fc425f65 100644 --- a/src/widgets/font-selector.h +++ b/src/widgets/font-selector.h @@ -27,7 +27,7 @@ struct SPFontSelector; /* SPFontSelector */ -GtkType sp_font_selector_get_type (void); +GType sp_font_selector_get_type (void); GtkWidget *sp_font_selector_new (void); diff --git a/src/widgets/gradient-image.cpp b/src/widgets/gradient-image.cpp index 115935f50..1aeb43c91 100644 --- a/src/widgets/gradient-image.cpp +++ b/src/widgets/gradient-image.cpp @@ -36,24 +36,22 @@ static void sp_gradient_image_update (SPGradientImage *img); static GtkWidgetClass *parent_class; -GtkType +GType sp_gradient_image_get_type (void) { - //TODO: switch to GObject - // GtkType and such calls were deprecated a while back with the - // introduction of GObject as a separate layer, with GType instead. --JonCruz - - static GtkType type = 0; + static GType type = 0; if (!type) { - GtkTypeInfo info = { - (gchar*) "SPGradientImage", - sizeof (SPGradientImage), + GTypeInfo info = { sizeof (SPGradientImageClass), - (GtkClassInitFunc) sp_gradient_image_class_init, - (GtkObjectInitFunc) sp_gradient_image_init, - NULL, NULL, NULL + NULL, NULL, + (GClassInitFunc) sp_gradient_image_class_init, + NULL, NULL, + sizeof (SPGradientImage), + 0, + (GInstanceInitFunc) sp_gradient_image_init, + NULL }; - type = gtk_type_unique (GTK_TYPE_WIDGET, &info); + type = g_type_register_static (GTK_TYPE_WIDGET, "SPGradientImage", &info, (GTypeFlags)0); } return type; } @@ -67,7 +65,7 @@ sp_gradient_image_class_init (SPGradientImageClass *klass) object_class = (GtkObjectClass *) klass; widget_class = (GtkWidgetClass *) klass; - parent_class = (GtkWidgetClass*)gtk_type_class (GTK_TYPE_WIDGET); + parent_class = (GtkWidgetClass*)g_type_class_peek_parent (klass); object_class->destroy = sp_gradient_image_destroy; @@ -146,7 +144,7 @@ sp_gradient_image_new (SPGradient *gradient) { SPGradientImage *image; - image = (SPGradientImage*)gtk_type_new (SP_TYPE_GRADIENT_IMAGE); + image = (SPGradientImage*)g_object_new (SP_TYPE_GRADIENT_IMAGE, NULL); sp_gradient_image_set_gradient (image, gradient); diff --git a/src/widgets/gradient-image.h b/src/widgets/gradient-image.h index ae5d40f56..0fbed879f 100644 --- a/src/widgets/gradient-image.h +++ b/src/widgets/gradient-image.h @@ -40,7 +40,7 @@ struct SPGradientImageClass { GtkWidgetClass parent_class; }; -GtkType sp_gradient_image_get_type (void); +GType sp_gradient_image_get_type (void); GtkWidget *sp_gradient_image_new (SPGradient *gradient); void sp_gradient_image_set_gradient (SPGradientImage *gi, SPGradient *gr); diff --git a/src/widgets/gradient-selector.cpp b/src/widgets/gradient-selector.cpp index a3110ed5b..a6e9be581 100644 --- a/src/widgets/gradient-selector.cpp +++ b/src/widgets/gradient-selector.cpp @@ -83,7 +83,7 @@ sp_gradient_selector_class_init (SPGradientSelectorClass *klass) object_class = (GtkObjectClass *) klass; - parent_class = (GtkVBoxClass*)gtk_type_class (GTK_TYPE_VBOX); + parent_class = (GtkVBoxClass*)g_type_class_peek_parent (klass); signals[GRABBED] = g_signal_new ("grabbed", G_TYPE_FROM_CLASS(object_class), @@ -171,17 +171,17 @@ static void sp_gradient_selector_init(SPGradientSelector *sel) GtkWidget *m = gtk_menu_new(); GtkWidget *mi = gtk_menu_item_new_with_label(_("none")); - gtk_menu_append (GTK_MENU (m), mi); + gtk_menu_shell_append(GTK_MENU_SHELL (m), mi); g_object_set_data (G_OBJECT (mi), "gradientSpread", GUINT_TO_POINTER (SP_GRADIENT_SPREAD_PAD)); g_signal_connect (G_OBJECT (mi), "activate", G_CALLBACK (sp_gradient_selector_spread_activate), sel); mi = gtk_menu_item_new_with_label (_("reflected")); g_object_set_data (G_OBJECT (mi), "gradientSpread", GUINT_TO_POINTER (SP_GRADIENT_SPREAD_REFLECT)); g_signal_connect (G_OBJECT (mi), "activate", G_CALLBACK (sp_gradient_selector_spread_activate), sel); - gtk_menu_append (GTK_MENU (m), mi); + gtk_menu_shell_append(GTK_MENU_SHELL (m), mi); mi = gtk_menu_item_new_with_label (_("direct")); g_object_set_data (G_OBJECT (mi), "gradientSpread", GUINT_TO_POINTER (SP_GRADIENT_SPREAD_REPEAT)); g_signal_connect (G_OBJECT (mi), "activate", G_CALLBACK (sp_gradient_selector_spread_activate), sel); - gtk_menu_append (GTK_MENU (m), mi); + gtk_menu_shell_append(GTK_MENU_SHELL (m), mi); gtk_widget_show_all (m); gtk_option_menu_set_menu( GTK_OPTION_MENU(sel->spread), m ); @@ -212,7 +212,7 @@ sp_gradient_selector_new (void) { SPGradientSelector *sel; - sel = (SPGradientSelector*)gtk_type_new (SP_TYPE_GRADIENT_SELECTOR); + sel = (SPGradientSelector*)g_object_new (SP_TYPE_GRADIENT_SELECTOR, NULL); return (GtkWidget *) sel; } diff --git a/src/widgets/gradient-toolbar.cpp b/src/widgets/gradient-toolbar.cpp index 9186044de..6d4f6fae0 100644 --- a/src/widgets/gradient-toolbar.cpp +++ b/src/widgets/gradient-toolbar.cpp @@ -193,7 +193,7 @@ GtkWidget *gr_vector_list(SPDesktop *desktop, bool selection_empty, SPGradient * gtk_container_add (GTK_CONTAINER (i), l); gtk_widget_show (i); - gtk_menu_append (GTK_MENU (m), i); + gtk_menu_shell_append(GTK_MENU_SHELL (m), i); gtk_widget_set_sensitive (om, FALSE); } else if (selection_empty) { // Document has gradients, but nothing is currently selected. @@ -203,7 +203,7 @@ GtkWidget *gr_vector_list(SPDesktop *desktop, bool selection_empty, SPGradient * gtk_container_add (GTK_CONTAINER (i), l); gtk_widget_show (i); - gtk_menu_append (GTK_MENU (m), i); + gtk_menu_shell_append(GTK_MENU_SHELL (m), i); gtk_widget_set_sensitive (om, FALSE); } else { @@ -214,7 +214,7 @@ GtkWidget *gr_vector_list(SPDesktop *desktop, bool selection_empty, SPGradient * gtk_container_add (GTK_CONTAINER (i), l); gtk_widget_show (i); - gtk_menu_append (GTK_MENU (m), i); + gtk_menu_shell_append(GTK_MENU_SHELL (m), i); } if (gr_multi) { @@ -224,7 +224,7 @@ GtkWidget *gr_vector_list(SPDesktop *desktop, bool selection_empty, SPGradient * gtk_container_add (GTK_CONTAINER (i), l); gtk_widget_show (i); - gtk_menu_append (GTK_MENU (m), i); + gtk_menu_shell_append(GTK_MENU_SHELL (m), i); } while (gl) { @@ -250,7 +250,7 @@ GtkWidget *gr_vector_list(SPDesktop *desktop, bool selection_empty, SPGradient * gtk_container_add (GTK_CONTAINER (i), hb); - gtk_menu_append (GTK_MENU (m), i); + gtk_menu_shell_append(GTK_MENU_SHELL (m), i); if (gradient == gr_selected) { pos = idx; @@ -467,7 +467,7 @@ GtkWidget * gr_change_widget(SPDesktop *desktop) gr_read_selection (selection, ev? ev->get_drag() : 0, gr_selected, gr_multi, spr_selected, spr_multi); GtkWidget *widget = gtk_hbox_new(FALSE, FALSE); - gtk_object_set_data(GTK_OBJECT(widget), "dtw", desktop->canvas); + g_object_set_data(G_OBJECT(widget), "dtw", desktop->canvas); g_object_set_data (G_OBJECT (widget), "desktop", desktop); GtkWidget *om = gr_vector_list (desktop, selection->isEmpty(), gr_selected, gr_multi); @@ -537,8 +537,8 @@ sp_gradient_toolbox_new(SPDesktop *desktop) Inkscape::Preferences *prefs = Inkscape::Preferences::get(); GtkWidget *tbl = gtk_toolbar_new(); - gtk_object_set_data(GTK_OBJECT(tbl), "dtw", desktop->canvas); - gtk_object_set_data(GTK_OBJECT(tbl), "desktop", desktop); + g_object_set_data(G_OBJECT(tbl), "dtw", desktop->canvas); + g_object_set_data(G_OBJECT(tbl), "desktop", desktop); sp_toolbox_add_label(tbl, _("<b>New:</b>")); diff --git a/src/widgets/gradient-vector.cpp b/src/widgets/gradient-vector.cpp index a58b22d7c..8c39b52dd 100644 --- a/src/widgets/gradient-vector.cpp +++ b/src/widgets/gradient-vector.cpp @@ -102,7 +102,7 @@ static void sp_gradient_vector_selector_class_init(SPGradientVectorSelectorClass object_class = GTK_OBJECT_CLASS(klass); - parent_class = static_cast<GtkVBoxClass*>(gtk_type_class(GTK_TYPE_VBOX)); + parent_class = static_cast<GtkVBoxClass*>(g_type_class_peek_parent(klass)); signals[VECTOR_SET] = g_signal_new( "vector_set", G_TYPE_FROM_CLASS(object_class), @@ -165,7 +165,7 @@ GtkWidget *sp_gradient_vector_selector_new(SPDocument *doc, SPGradient *gr) g_return_val_if_fail(!gr || SP_IS_GRADIENT(gr), NULL); g_return_val_if_fail(!gr || (gr->document == doc), NULL); - gvs = static_cast<GtkWidget*>(gtk_type_new(SP_TYPE_GRADIENT_VECTOR_SELECTOR)); + gvs = static_cast<GtkWidget*>(g_object_new(SP_TYPE_GRADIENT_VECTOR_SELECTOR, NULL)); if (doc) { sp_gradient_vector_selector_set_gradient(SP_GRADIENT_VECTOR_SELECTOR(gvs), doc, gr); @@ -274,19 +274,19 @@ static void sp_gvs_rebuild_gui_full(SPGradientVectorSelector *gvs) GtkWidget *i; i = gtk_menu_item_new_with_label(_("No document selected")); gtk_widget_show(i); - gtk_menu_append(GTK_MENU(m), i); + gtk_menu_shell_append(GTK_MENU_SHELL(m), i); gtk_widget_set_sensitive(gvs->menu, FALSE); } else if (!gl) { GtkWidget *i; i = gtk_menu_item_new_with_label(_("No gradients in document")); gtk_widget_show(i); - gtk_menu_append(GTK_MENU(m), i); + gtk_menu_shell_append(GTK_MENU_SHELL(m), i); gtk_widget_set_sensitive(gvs->menu, FALSE); } else if (!gvs->gr) { GtkWidget *i; i = gtk_menu_item_new_with_label(_("No gradient selected")); gtk_widget_show(i); - gtk_menu_append(GTK_MENU(m), i); + gtk_menu_shell_append(GTK_MENU_SHELL(m), i); gtk_widget_set_sensitive(gvs->menu, FALSE); } else { while (gl) { @@ -320,7 +320,7 @@ static void sp_gvs_rebuild_gui_full(SPGradientVectorSelector *gvs) gtk_container_add(GTK_CONTAINER(i), w); - gtk_menu_append(GTK_MENU(m), i); + gtk_menu_shell_append(GTK_MENU_SHELL(m), i); if (gr == gvs->gr) { pos = idx; @@ -551,7 +551,7 @@ static void update_stop_list( GtkWidget *mnu, SPGradient *gradient, SPStop *new_ if (!sl) { GtkWidget *i = gtk_menu_item_new_with_label(_("No stops in gradient")); gtk_widget_show(i); - gtk_menu_append(GTK_MENU(m), i); + gtk_menu_shell_append(GTK_MENU_SHELL(m), i); gtk_widget_set_sensitive(mnu, FALSE); } else { @@ -562,10 +562,9 @@ static void update_stop_list( GtkWidget *mnu, SPGradient *gradient, SPStop *new_ gtk_widget_show(i); g_object_set_data(G_OBJECT(i), "stop", stop); GtkWidget *hb = gtk_hbox_new(FALSE, 4); - GtkWidget *cpv = GTK_WIDGET(Gtk::manage( - new Inkscape::UI::Widget::ColorPreview(sp_stop_get_rgba32(stop)))->gobj()); - gtk_widget_show(cpv); - gtk_container_add( GTK_CONTAINER(hb), cpv ); + Gtk::Widget *cpv = Gtk::manage(new Inkscape::UI::Widget::ColorPreview(sp_stop_get_rgba32(stop))); + cpv->show(); + gtk_container_add( GTK_CONTAINER(hb), cpv->gobj() ); g_object_set_data( G_OBJECT(i), "preview", cpv ); Inkscape::XML::Node *repr = reinterpret_cast<SPItem *>(sl->data)->getRepr(); GtkWidget *l = gtk_label_new(repr->attribute("id")); @@ -574,7 +573,7 @@ static void update_stop_list( GtkWidget *mnu, SPGradient *gradient, SPStop *new_ gtk_box_pack_start(GTK_BOX(hb), l, TRUE, TRUE, 0); gtk_widget_show(hb); gtk_container_add(GTK_CONTAINER(i), hb); - gtk_menu_append(GTK_MENU(m), i); + gtk_menu_shell_append(GTK_MENU_SHELL(m), i); } } @@ -610,7 +609,7 @@ static void sp_grad_edit_select(GtkOptionMenu *mnu, GtkWidget *tbl) GtkWidget *offspin = GTK_WIDGET(g_object_get_data(G_OBJECT(tbl), "offspn")); GtkWidget *offslide =GTK_WIDGET(g_object_get_data(G_OBJECT(tbl), "offslide")); - GtkAdjustment *adj = static_cast<GtkAdjustment*>(gtk_object_get_data(GTK_OBJECT(tbl), "offset")); + GtkAdjustment *adj = static_cast<GtkAdjustment*>(g_object_get_data(G_OBJECT(tbl), "offset")); bool isEndStop = false; @@ -797,7 +796,7 @@ static GtkWidget * sp_gradient_vector_widget_new(SPGradient *gradient, SPStop *s update_stop_list(GTK_WIDGET(mnu), gradient, NULL); g_signal_connect(G_OBJECT(mnu), "changed", G_CALLBACK(sp_grad_edit_select), vb); gtk_widget_show(mnu); - gtk_object_set_data(GTK_OBJECT(vb), "stopmenu", mnu); + g_object_set_data(G_OBJECT(vb), "stopmenu", mnu); gtk_box_pack_start(GTK_BOX(vb), mnu, FALSE, FALSE, 0); /* Add and Remove buttons */ @@ -830,7 +829,7 @@ static GtkWidget * sp_gradient_vector_widget_new(SPGradient *gradient, SPStop *s /* Adjustment */ GtkAdjustment *Offset_adj = NULL; Offset_adj= (GtkAdjustment *) gtk_adjustment_new(0.0, 0.0, 1.0, 0.01, 0.01, 0.0); - gtk_object_set_data(GTK_OBJECT(vb), "offset", Offset_adj); + g_object_set_data(G_OBJECT(vb), "offset", Offset_adj); GtkMenu *m = GTK_MENU(gtk_option_menu_get_menu(GTK_OPTION_MENU(mnu))); SPStop *stop = SP_STOP(g_object_get_data(G_OBJECT(gtk_menu_get_active(m)), "stop")); gtk_adjustment_set_value(Offset_adj, stop->offset); @@ -840,14 +839,14 @@ static GtkWidget * sp_gradient_vector_widget_new(SPGradient *gradient, SPStop *s gtk_scale_set_draw_value( GTK_SCALE(slider), FALSE ); gtk_widget_show(slider); gtk_box_pack_start(GTK_BOX(hb),slider, TRUE, TRUE, AUX_BETWEEN_BUTTON_GROUPS); - gtk_object_set_data(GTK_OBJECT(vb), "offslide", slider); + g_object_set_data(G_OBJECT(vb), "offslide", slider); /* Spinbutton */ GtkWidget *sbtn = gtk_spin_button_new(GTK_ADJUSTMENT(Offset_adj), 0.01, 2); sp_dialog_defocus_on_enter(sbtn); gtk_widget_show(sbtn); gtk_box_pack_start(GTK_BOX(hb),sbtn, FALSE, TRUE, AUX_BETWEEN_BUTTON_GROUPS); - gtk_object_set_data(GTK_OBJECT(vb), "offspn", sbtn); + g_object_set_data(G_OBJECT(vb), "offspn", sbtn); if (stop->offset>0 && stop->offset<1) { gtk_widget_set_sensitive(slider, TRUE); diff --git a/src/widgets/paint-selector.cpp b/src/widgets/paint-selector.cpp index 642837e61..9f2a30e32 100644 --- a/src/widgets/paint-selector.cpp +++ b/src/widgets/paint-selector.cpp @@ -127,14 +127,14 @@ static SPGradientSelector *getGradientFromData(SPPaintSelector const *psel) grad = swatchsel->getGradientSelector(); } } else { - grad = reinterpret_cast<SPGradientSelector*>(gtk_object_get_data(GTK_OBJECT(psel->selector), "gradient-selector")); + grad = reinterpret_cast<SPGradientSelector*>(g_object_get_data(G_OBJECT(psel->selector), "gradient-selector")); } return grad; } GType sp_paint_selector_get_type(void) { - static GtkType type = 0; + static GType type = 0; if (!type) { GTypeInfo info = { sizeof(SPPaintSelectorClass), @@ -156,13 +156,9 @@ GType sp_paint_selector_get_type(void) static void sp_paint_selector_class_init(SPPaintSelectorClass *klass) { - GtkObjectClass *object_class; - GtkWidgetClass *widget_class; + GtkObjectClass *object_class = (GtkObjectClass *) klass; - object_class = (GtkObjectClass *) klass; - widget_class = (GtkWidgetClass *) klass; - - parent_class = (GtkVBoxClass*)gtk_type_class(GTK_TYPE_VBOX); + parent_class = (GtkVBoxClass*)g_type_class_peek_parent(klass); psel_signals[MODE_CHANGED] = g_signal_new("mode_changed", G_TYPE_FROM_CLASS(object_class), @@ -251,18 +247,18 @@ sp_paint_selector_init(SPPaintSelector *psel) gtk_toggle_button_set_mode(GTK_TOGGLE_BUTTON(psel->evenodd), FALSE); // TRANSLATORS: for info, see http://www.w3.org/TR/2000/CR-SVG-20000802/painting.html#FillRuleProperty gtk_widget_set_tooltip_text(psel->evenodd, _("Any path self-intersections or subpaths create holes in the fill (fill-rule: evenodd)")); - gtk_object_set_data(GTK_OBJECT(psel->evenodd), "mode", GUINT_TO_POINTER(SPPaintSelector::FILLRULE_EVENODD)); + g_object_set_data(G_OBJECT(psel->evenodd), "mode", GUINT_TO_POINTER(SPPaintSelector::FILLRULE_EVENODD)); w = sp_icon_new(Inkscape::ICON_SIZE_DECORATION, INKSCAPE_ICON_FILL_RULE_EVEN_ODD); gtk_container_add(GTK_CONTAINER(psel->evenodd), w); gtk_box_pack_start(GTK_BOX(psel->fillrulebox), psel->evenodd, FALSE, FALSE, 0); g_signal_connect(G_OBJECT(psel->evenodd), "toggled", G_CALLBACK(sp_paint_selector_fillrule_toggled), psel); - psel->nonzero = gtk_radio_button_new(gtk_radio_button_group(GTK_RADIO_BUTTON(psel->evenodd))); + psel->nonzero = gtk_radio_button_new(gtk_radio_button_get_group(GTK_RADIO_BUTTON(psel->evenodd))); gtk_button_set_relief(GTK_BUTTON(psel->nonzero), GTK_RELIEF_NONE); gtk_toggle_button_set_mode(GTK_TOGGLE_BUTTON(psel->nonzero), FALSE); // TRANSLATORS: for info, see http://www.w3.org/TR/2000/CR-SVG-20000802/painting.html#FillRuleProperty gtk_widget_set_tooltip_text(psel->nonzero, _("Fill is solid unless a subpath is counterdirectional (fill-rule: nonzero)")); - gtk_object_set_data(GTK_OBJECT(psel->nonzero), "mode", GUINT_TO_POINTER(SPPaintSelector::FILLRULE_NONZERO)); + g_object_set_data(G_OBJECT(psel->nonzero), "mode", GUINT_TO_POINTER(SPPaintSelector::FILLRULE_NONZERO)); w = sp_icon_new(Inkscape::ICON_SIZE_DECORATION, INKSCAPE_ICON_FILL_RULE_NONZERO); gtk_container_add(GTK_CONTAINER(psel->nonzero), w); gtk_box_pack_start(GTK_BOX(psel->fillrulebox), psel->nonzero, FALSE, FALSE, 0); @@ -307,7 +303,7 @@ static GtkWidget *sp_paint_selector_style_button_add(SPPaintSelector *psel, gtk_button_set_relief(GTK_BUTTON(b), GTK_RELIEF_NONE); gtk_toggle_button_set_mode(GTK_TOGGLE_BUTTON(b), FALSE); - gtk_object_set_data(GTK_OBJECT(b), "mode", GUINT_TO_POINTER(mode)); + g_object_set_data(G_OBJECT(b), "mode", GUINT_TO_POINTER(mode)); w = sp_icon_new(Inkscape::ICON_SIZE_BUTTON, pixmap); gtk_widget_show(w); @@ -323,7 +319,7 @@ static void sp_paint_selector_style_button_toggled(GtkToggleButton *tb, SPPaintSelector *psel) { if (!psel->update && gtk_toggle_button_get_active(tb)) { - psel->setMode(static_cast<SPPaintSelector::Mode>(GPOINTER_TO_UINT(gtk_object_get_data(GTK_OBJECT(tb), "mode")))); + psel->setMode(static_cast<SPPaintSelector::Mode>(GPOINTER_TO_UINT(g_object_get_data(G_OBJECT(tb), "mode")))); } } @@ -352,7 +348,7 @@ sp_paint_selector_show_fillrule(SPPaintSelector *psel, bool is_fill) SPPaintSelector *sp_paint_selector_new(FillOrStroke kind) { - SPPaintSelector *psel = static_cast<SPPaintSelector*>(gtk_type_new(SP_TYPE_PAINT_SELECTOR)); + SPPaintSelector *psel = static_cast<SPPaintSelector*>(g_object_new(SP_TYPE_PAINT_SELECTOR, NULL)); psel->setMode(SPPaintSelector::MODE_MULTIPLE); @@ -440,7 +436,7 @@ void SPPaintSelector::setColorAlpha(SPColor const &color, float alpha) setMode(MODE_COLOR_RGB); } - csel = reinterpret_cast<SPColorSelector*>(gtk_object_get_data(GTK_OBJECT(selector), "color-selector")); + csel = reinterpret_cast<SPColorSelector*>(g_object_get_data(G_OBJECT(selector), "color-selector")); rgba = color.toRGBA32( alpha ); csel->base->setColorAlpha( color, alpha ); } @@ -646,7 +642,7 @@ static void sp_paint_selector_set_mode_color(SPPaintSelector *psel, SPPaintSelec if ((psel->mode == SPPaintSelector::MODE_COLOR_RGB) || (psel->mode == SPPaintSelector::MODE_COLOR_CMYK)) { /* Already have color selector */ - csel = (GtkWidget*)gtk_object_get_data(GTK_OBJECT(psel->selector), "color-selector"); + csel = (GtkWidget*)g_object_get_data(G_OBJECT(psel->selector), "color-selector"); } else { sp_paint_selector_clear_frame(psel); @@ -658,7 +654,7 @@ static void sp_paint_selector_set_mode_color(SPPaintSelector *psel, SPPaintSelec /* Color selector */ csel = sp_color_selector_new( SP_TYPE_COLOR_NOTEBOOK ); gtk_widget_show(csel); - gtk_object_set_data(GTK_OBJECT(vb), "color-selector", csel); + g_object_set_data(G_OBJECT(vb), "color-selector", csel); gtk_box_pack_start(GTK_BOX(vb), csel, TRUE, TRUE, 0); g_signal_connect(G_OBJECT(csel), "grabbed", G_CALLBACK(sp_paint_selector_color_grabbed), psel); g_signal_connect(G_OBJECT(csel), "dragged", G_CALLBACK(sp_paint_selector_color_dragged), psel); @@ -716,7 +712,7 @@ static void sp_paint_selector_set_mode_gradient(SPPaintSelector *psel, SPPaintSe if ((psel->mode == SPPaintSelector::MODE_GRADIENT_LINEAR) || (psel->mode == SPPaintSelector::MODE_GRADIENT_RADIAL)) { /* Already have gradient selector */ - gsel = (GtkWidget*)gtk_object_get_data(GTK_OBJECT(psel->selector), "gradient-selector"); + gsel = (GtkWidget*)g_object_get_data(G_OBJECT(psel->selector), "gradient-selector"); } else { sp_paint_selector_clear_frame(psel); /* Create new gradient selector */ @@ -729,7 +725,7 @@ static void sp_paint_selector_set_mode_gradient(SPPaintSelector *psel, SPPaintSe /* Pack everything to frame */ gtk_container_add(GTK_CONTAINER(psel->frame), gsel); psel->selector = gsel; - gtk_object_set_data(GTK_OBJECT(psel->selector), "gradient-selector", gsel); + g_object_set_data(G_OBJECT(psel->selector), "gradient-selector", gsel); } /* Actually we have to set option menu history here */ @@ -830,7 +826,7 @@ sp_pattern_menu_build (GtkWidget *m, GSList *pattern_list, SPDocument */*source* gtk_widget_show(hb); gtk_container_add(GTK_CONTAINER(i), hb); - gtk_menu_append(GTK_MENU(m), i); + gtk_menu_shell_append(GTK_MENU_SHELL(m), i); } } @@ -887,7 +883,7 @@ ink_pattern_menu_populate_menu(GtkWidget *m, SPDocument *doc) gchar const *patid = ""; g_object_set_data (G_OBJECT(i), "pattern", (void *) patid); gtk_widget_show(i); - gtk_menu_append(GTK_MENU(m), i); + gtk_menu_shell_append(GTK_MENU_SHELL(m), i); } // suck in from patterns.svg @@ -911,7 +907,7 @@ ink_pattern_menu(GtkWidget *mnu) GtkWidget *i; i = gtk_menu_item_new_with_label(_("No document selected")); gtk_widget_show(i); - gtk_menu_append(GTK_MENU(m), i); + gtk_menu_shell_append(GTK_MENU_SHELL(m), i); gtk_widget_set_sensitive(mnu, FALSE); } else { @@ -943,9 +939,9 @@ void SPPaintSelector::updatePatternList( SPPattern *pattern ) /* Set history */ - if (pattern && !gtk_object_get_data(GTK_OBJECT(mnu), "update")) { + if (pattern && !g_object_get_data(G_OBJECT(mnu), "update")) { - gtk_object_set_data(GTK_OBJECT(mnu), "update", GINT_TO_POINTER(TRUE)); + g_object_set_data(G_OBJECT(mnu), "update", GINT_TO_POINTER(TRUE)); gchar const *patname = pattern->getRepr()->attribute("id"); @@ -967,7 +963,7 @@ void SPPaintSelector::updatePatternList( SPPattern *pattern ) gtk_option_menu_set_history(GTK_OPTION_MENU(mnu), patpos); - gtk_object_set_data(GTK_OBJECT(mnu), "update", GINT_TO_POINTER(FALSE)); + g_object_set_data(G_OBJECT(mnu), "update", GINT_TO_POINTER(FALSE)); } //gtk_option_menu_set_history(GTK_OPTION_MENU(mnu), 0); } @@ -984,7 +980,7 @@ static void sp_paint_selector_set_mode_pattern(SPPaintSelector *psel, SPPaintSel if (psel->mode == SPPaintSelector::MODE_PATTERN) { /* Already have pattern menu */ - tbl = (GtkWidget*)gtk_object_get_data(GTK_OBJECT(psel->selector), "pattern-selector"); + tbl = (GtkWidget*)g_object_get_data(G_OBJECT(psel->selector), "pattern-selector"); } else { sp_paint_selector_clear_frame(psel); @@ -999,7 +995,7 @@ static void sp_paint_selector_set_mode_pattern(SPPaintSelector *psel, SPPaintSel ink_pattern_menu(mnu); g_signal_connect(G_OBJECT(mnu), "changed", G_CALLBACK(sp_psel_pattern_change), psel); g_signal_connect(G_OBJECT(mnu), "destroy", G_CALLBACK(sp_psel_pattern_destroy), psel); - gtk_object_set_data(GTK_OBJECT(psel), "patternmenu", mnu); + g_object_set_data(G_OBJECT(psel), "patternmenu", mnu); g_object_ref( G_OBJECT(mnu)); gtk_container_add(GTK_CONTAINER(hb), mnu); @@ -1020,7 +1016,7 @@ static void sp_paint_selector_set_mode_pattern(SPPaintSelector *psel, SPPaintSel gtk_container_add(GTK_CONTAINER(psel->frame), tbl); psel->selector = tbl; - gtk_object_set_data(GTK_OBJECT(psel->selector), "pattern-selector", tbl); + g_object_set_data(G_OBJECT(psel->selector), "pattern-selector", tbl); gtk_frame_set_label(GTK_FRAME(psel->frame), _("Pattern fill")); } @@ -1095,7 +1091,7 @@ static void sp_paint_selector_set_mode_swatch(SPPaintSelector *psel, SPPaintSele // Pack everything to frame gtk_container_add(GTK_CONTAINER(psel->frame), GTK_WIDGET(swatchsel->gobj())); psel->selector = GTK_WIDGET(swatchsel->gobj()); - gtk_object_set_data(GTK_OBJECT(psel->selector), "swatch-selector", swatchsel); + g_object_set_data(G_OBJECT(psel->selector), "swatch-selector", swatchsel); gtk_frame_set_label(GTK_FRAME(psel->frame), _("Swatch fill")); } diff --git a/src/widgets/paint-selector.h b/src/widgets/paint-selector.h index c0e44683b..ebcac380f 100644 --- a/src/widgets/paint-selector.h +++ b/src/widgets/paint-selector.h @@ -114,7 +114,7 @@ struct SPPaintSelectorClass { void (* fillrule_changed) (SPPaintSelector *psel, SPPaintSelector::FillRule fillrule); }; -GtkType sp_paint_selector_get_type (void); +GType sp_paint_selector_get_type (void); SPPaintSelector *sp_paint_selector_new(FillOrStroke kind); diff --git a/src/widgets/ruler.cpp b/src/widgets/ruler.cpp index 704d395f7..60e460cda 100644 --- a/src/widgets/ruler.cpp +++ b/src/widgets/ruler.cpp @@ -37,30 +37,25 @@ static gint sp_hruler_motion_notify (GtkWidget *widget, GdkEventMotion *eve static GtkWidgetClass *hruler_parent_class; -GtkType +GType sp_hruler_get_type (void) { - //TODO: switch to GObject - // GtkType and such calls were deprecated a while back with the - // introduction of GObject as a separate layer, with GType instead. --JonCruz - - static GtkType hruler_type = 0; + static GType hruler_type = 0; if (!hruler_type) { - static const GtkTypeInfo hruler_info = - { - (gchar*) "SPHRuler", - sizeof (SPHRuler), + static const GTypeInfo hruler_info = { sizeof (SPHRulerClass), - (GtkClassInitFunc) sp_hruler_class_init, - (GtkObjectInitFunc) sp_hruler_init, - /* reserved_1 */ NULL, - /* reserved_2 */ NULL, - (GtkClassInitFunc) NULL, + NULL, NULL, + (GClassInitFunc) sp_hruler_class_init, + NULL, NULL, + sizeof (SPHRuler), + 0, + (GInstanceInitFunc) sp_hruler_init, + NULL }; - hruler_type = gtk_type_unique (gtk_ruler_get_type (), &hruler_info); + hruler_type = g_type_register_static (gtk_ruler_get_type (), "SPHRuler", &hruler_info, (GTypeFlags)0); } return hruler_type; @@ -72,7 +67,7 @@ sp_hruler_class_init (SPHRulerClass *klass) GtkWidgetClass *widget_class; GtkRulerClass *ruler_class; - hruler_parent_class = (GtkWidgetClass *) gtk_type_class (GTK_TYPE_RULER); + hruler_parent_class = (GtkWidgetClass *) g_type_class_peek_parent (klass); widget_class = (GtkWidgetClass*) klass; ruler_class = (GtkRulerClass*) klass; @@ -96,7 +91,7 @@ sp_hruler_init (SPHRuler *hruler) GtkWidget* sp_hruler_new (void) { - return GTK_WIDGET (gtk_type_new (sp_hruler_get_type ())); + return GTK_WIDGET (g_object_new (sp_hruler_get_type (), NULL)); } static gint @@ -128,30 +123,25 @@ static void sp_vruler_size_request (GtkWidget *widget, GtkRequisition *requisiti static GtkWidgetClass *vruler_parent_class; -GtkType +GType sp_vruler_get_type (void) { - //TODO: switch to GObject - // GtkType and such calls were deprecated a while back with the - // introduction of GObject as a separate layer, with GType instead. --JonCruz - - static GtkType vruler_type = 0; + static GType vruler_type = 0; if (!vruler_type) { - static const GtkTypeInfo vruler_info = - { - (gchar*) "SPVRuler", - sizeof (SPVRuler), + static const GTypeInfo vruler_info = { sizeof (SPVRulerClass), - (GtkClassInitFunc) sp_vruler_class_init, - (GtkObjectInitFunc) sp_vruler_init, - /* reserved_1 */ NULL, - /* reserved_2 */ NULL, - (GtkClassInitFunc) NULL, + NULL, NULL, + (GClassInitFunc) sp_vruler_class_init, + NULL, NULL, + sizeof (SPVRuler), + 0, + (GInstanceInitFunc) sp_vruler_init, + NULL }; - vruler_type = gtk_type_unique (gtk_ruler_get_type (), &vruler_info); + vruler_type = g_type_register_static (gtk_ruler_get_type (), "SPVRuler", &vruler_info, (GTypeFlags)0); } return vruler_type; @@ -163,7 +153,7 @@ sp_vruler_class_init (SPVRulerClass *klass) GtkWidgetClass *widget_class; GtkRulerClass *ruler_class; - vruler_parent_class = (GtkWidgetClass *) gtk_type_class (GTK_TYPE_RULER); + vruler_parent_class = (GtkWidgetClass *) g_type_class_peek_parent (klass); widget_class = (GtkWidgetClass*) klass; ruler_class = (GtkRulerClass*) klass; @@ -189,7 +179,7 @@ sp_vruler_init (SPVRuler *vruler) GtkWidget* sp_vruler_new (void) { - return GTK_WIDGET (gtk_type_new (sp_vruler_get_type ())); + return GTK_WIDGET (g_object_new (sp_vruler_get_type (), NULL)); } @@ -222,8 +212,7 @@ static void sp_ruler_common_draw_ticks (GtkRuler *ruler) { GtkWidget *widget; - GdkGC *gc, *bg_gc; - PangoFontDescription *pango_desc; + GdkGC *gc; PangoContext *pango_context; PangoLayout *pango_layout; gint i, j, tick_index; @@ -252,9 +241,7 @@ sp_ruler_common_draw_ticks (GtkRuler *ruler) g_object_get(G_OBJECT(ruler), "orientation", &orientation, NULL); widget = GTK_WIDGET (ruler); gc = widget->style->fg_gc[GTK_STATE_NORMAL]; - bg_gc = widget->style->bg_gc[GTK_STATE_NORMAL]; - pango_desc = widget->style->font_desc; pango_context = gtk_widget_get_pango_context (widget); pango_layout = pango_layout_new (pango_context); PangoFontDescription *fs = pango_font_description_new (); diff --git a/src/widgets/ruler.h b/src/widgets/ruler.h index 3c55b39c4..a774f12ef 100644 --- a/src/widgets/ruler.h +++ b/src/widgets/ruler.h @@ -38,7 +38,7 @@ struct SPHRulerClass }; -GtkType sp_hruler_get_type (void); +GType sp_hruler_get_type (void); GtkWidget* sp_hruler_new (void); @@ -63,7 +63,7 @@ struct SPVRulerClass }; -GtkType sp_vruler_get_type (void); +GType sp_vruler_get_type (void); GtkWidget* sp_vruler_new (void); diff --git a/src/widgets/select-toolbar.cpp b/src/widgets/select-toolbar.cpp index 7012badf8..eb9b2805d 100644 --- a/src/widgets/select-toolbar.cpp +++ b/src/widgets/select-toolbar.cpp @@ -242,7 +242,14 @@ sp_object_layout_any_value_changed(GtkAdjustment *adj, SPWidget *spw) gdouble strokewidth = stroke_average_width (selection->itemList()); int transform_stroke = prefs->getBool("/options/transform/stroke", true) ? 1 : 0; - Geom::Affine scaler = get_scale_transform_with_stroke (*bbox, strokewidth, transform_stroke, x0, y0, x1, y1); + Geom::Affine scaler; + if (bbox_type == SPItem::APPROXIMATE_BBOX) { + // get_scale_transform_with_stroke() is intended for VISUAL (or APPROXIMATE) bounding boxes, not geometrical ones! + scaler = get_scale_transform_with_stroke (*bbox, strokewidth, transform_stroke, x0, y0, x1, y1); + } else { + // we'll trick it into using a geometrical bounding box though, by setting the stroke width to zero + scaler = get_scale_transform_with_stroke (*bbox, 0, false, x0, y0, x1, y1); + } sp_selection_apply_affine(selection, scaler); DocumentUndo::maybeDone(document, actionkey, SP_VERB_CONTEXT_SELECT, diff --git a/src/widgets/sp-attribute-widget.cpp b/src/widgets/sp-attribute-widget.cpp index 66ccb27f2..f7cd308b2 100644 --- a/src/widgets/sp-attribute-widget.cpp +++ b/src/widgets/sp-attribute-widget.cpp @@ -42,7 +42,7 @@ static GtkEntryClass *parent_class; GType sp_attribute_widget_get_type(void) { - static GtkType type = 0; + static GType type = 0; if (!type) { GTypeInfo info = { sizeof(SPAttributeWidgetClass), @@ -67,14 +67,12 @@ static void sp_attribute_widget_class_init (SPAttributeWidgetClass *klass) { GtkObjectClass *object_class; - GtkWidgetClass *widget_class; GtkEditableClass *editable_class; object_class = GTK_OBJECT_CLASS (klass); - widget_class = GTK_WIDGET_CLASS (klass); editable_class = GTK_EDITABLE_CLASS (klass); - parent_class = (GtkEntryClass*)gtk_type_class (GTK_TYPE_ENTRY); + parent_class = (GtkEntryClass*)g_type_class_peek_parent (klass); object_class->destroy = sp_attribute_widget_destroy; @@ -177,7 +175,7 @@ sp_attribute_widget_new ( SPObject *object, const gchar *attribute ) g_return_val_if_fail (!object || SP_IS_OBJECT (object), NULL); g_return_val_if_fail (!object || attribute, NULL); - spaw = (SPAttributeWidget*)gtk_type_new (SP_TYPE_ATTRIBUTE_WIDGET); + spaw = (SPAttributeWidget*)g_object_new (SP_TYPE_ATTRIBUTE_WIDGET, NULL); sp_attribute_widget_set_object (spaw, object, attribute); @@ -192,7 +190,7 @@ sp_attribute_widget_new_repr ( Inkscape::XML::Node *repr, const gchar *attribute { SPAttributeWidget *spaw; - spaw = (SPAttributeWidget*)gtk_type_new (SP_TYPE_ATTRIBUTE_WIDGET); + spaw = (SPAttributeWidget*)g_object_new (SP_TYPE_ATTRIBUTE_WIDGET, NULL); sp_attribute_widget_set_repr (spaw, repr, attribute); @@ -361,7 +359,7 @@ static GtkVBoxClass *table_parent_class; GType sp_attribute_table_get_type(void) { - static GtkType type = 0; + static GType type = 0; if (!type) { GTypeInfo info = { sizeof(SPAttributeTableClass), @@ -385,13 +383,9 @@ GType sp_attribute_table_get_type(void) static void sp_attribute_table_class_init (SPAttributeTableClass *klass) { - GtkObjectClass *object_class; - GtkWidgetClass *widget_class; - - object_class = GTK_OBJECT_CLASS (klass); - widget_class = GTK_WIDGET_CLASS (klass); + GtkObjectClass *object_class = GTK_OBJECT_CLASS (klass); - table_parent_class = (GtkVBoxClass*)gtk_type_class (GTK_TYPE_VBOX); + table_parent_class = (GtkVBoxClass*)g_type_class_peek_parent (klass); object_class->destroy = sp_attribute_table_destroy; @@ -472,7 +466,7 @@ sp_attribute_table_new ( SPObject *object, g_return_val_if_fail (!object || (num_attr > 0), NULL); g_return_val_if_fail (!num_attr || (labels && attributes), NULL); - spat = (SPAttributeTable*)gtk_type_new (SP_TYPE_ATTRIBUTE_TABLE); + spat = (SPAttributeTable*)g_object_new (SP_TYPE_ATTRIBUTE_TABLE, NULL); sp_attribute_table_set_object (spat, object, num_attr, labels, attributes); @@ -492,7 +486,7 @@ sp_attribute_table_new_repr ( Inkscape::XML::Node *repr, g_return_val_if_fail (!num_attr || (labels && attributes), NULL); - spat = (SPAttributeTable*)gtk_type_new (SP_TYPE_ATTRIBUTE_TABLE); + spat = (SPAttributeTable*)g_object_new (SP_TYPE_ATTRIBUTE_TABLE, NULL); sp_attribute_table_set_repr (spat, repr, num_attr, labels, attributes); diff --git a/src/widgets/sp-attribute-widget.h b/src/widgets/sp-attribute-widget.h index 5d23e6754..d5445c8bb 100644 --- a/src/widgets/sp-attribute-widget.h +++ b/src/widgets/sp-attribute-widget.h @@ -64,7 +64,7 @@ struct SPAttributeWidgetClass { GtkEntryClass entry_class; }; -GtkType sp_attribute_widget_get_type (void); +GType sp_attribute_widget_get_type (void); GtkWidget *sp_attribute_widget_new (SPObject *object, const gchar *attribute); GtkWidget *sp_attribute_widget_new_repr (Inkscape::XML::Node *repr, const gchar *attribute); @@ -99,7 +99,7 @@ struct SPAttributeTableClass { GtkEntryClass entry_class; }; -GtkType sp_attribute_table_get_type (void); +GType sp_attribute_table_get_type (void); GtkWidget *sp_attribute_table_new ( SPObject *object, gint num_attr, const gchar **labels, diff --git a/src/widgets/sp-color-gtkselector.cpp b/src/widgets/sp-color-gtkselector.cpp index 10254321a..60a63d8c4 100644 --- a/src/widgets/sp-color-gtkselector.cpp +++ b/src/widgets/sp-color-gtkselector.cpp @@ -113,7 +113,7 @@ sp_color_gtkselector_new( GType ) { SPColorGtkselector *csel; - csel = (SPColorGtkselector*)gtk_type_new (SP_TYPE_COLOR_GTKSELECTOR); + csel = (SPColorGtkselector*)g_object_new (SP_TYPE_COLOR_GTKSELECTOR, NULL); return GTK_WIDGET (csel); } diff --git a/src/widgets/sp-color-icc-selector.cpp b/src/widgets/sp-color-icc-selector.cpp index 3a2c7fbed..94f450e50 100644 --- a/src/widgets/sp-color-icc-selector.cpp +++ b/src/widgets/sp-color-icc-selector.cpp @@ -432,7 +432,7 @@ sp_color_icc_selector_new (void) { SPColorICCSelector *csel; - csel = (SPColorICCSelector*)gtk_type_new (SP_TYPE_COLOR_ICC_SELECTOR); + csel = (SPColorICCSelector*)g_object_new (SP_TYPE_COLOR_ICC_SELECTOR, NULL); return GTK_WIDGET (csel); } diff --git a/src/widgets/sp-color-notebook.cpp b/src/widgets/sp-color-notebook.cpp index 06e990dfb..377abf219 100644 --- a/src/widgets/sp-color-notebook.cpp +++ b/src/widgets/sp-color-notebook.cpp @@ -62,7 +62,7 @@ static SPColorSelectorClass *parent_class; GType sp_color_notebook_get_type(void) { - static GtkType type = 0; + static GType type = 0; if (!type) { GTypeInfo info = { sizeof(SPColorNotebookClass), @@ -102,7 +102,7 @@ sp_color_notebook_class_init (SPColorNotebookClass *klass) static void sp_color_notebook_switch_page(GtkNotebook *notebook, - GtkNotebookPage *page, + GtkWidget *page, guint page_num, SPColorNotebook *colorbook) { @@ -111,14 +111,14 @@ sp_color_notebook_switch_page(GtkNotebook *notebook, ColorNotebook* nb = (ColorNotebook*)(SP_COLOR_SELECTOR(colorbook)->base); nb->switchPage( notebook, page, page_num ); - // remember the page we seitched to + // remember the page we switched to Inkscape::Preferences *prefs = Inkscape::Preferences::get(); prefs->setInt("/colorselector/page", page_num); } } void ColorNotebook::switchPage(GtkNotebook*, - GtkNotebookPage*, + GtkWidget*, guint page_num) { SPColorSelector* csel; @@ -231,7 +231,7 @@ void ColorNotebook::init() if (!g_type_is_a (selector_types[i], SP_TYPE_COLOR_NOTEBOOK)) { guint howmany = 1; - gpointer klass = gtk_type_class (selector_types[i]); + gpointer klass = g_type_class_ref (selector_types[i]); if ( klass && SP_IS_COLOR_SELECTOR_CLASS (klass) ) { SPColorSelectorClass *ck = SP_COLOR_SELECTOR_CLASS (klass); @@ -294,7 +294,7 @@ void ColorNotebook::init() GtkWidget *item = gtk_check_menu_item_new_with_label (_(entry->name)); gtk_check_menu_item_set_active (GTK_CHECK_MENU_ITEM (item), entry->enabledFull); gtk_widget_show (item); - gtk_menu_append (menu, item); + gtk_menu_shell_append (GTK_MENU_SHELL(menu), item); g_signal_connect (G_OBJECT (item), "activate", G_CALLBACK (sp_color_notebook_menuitem_response), @@ -431,7 +431,7 @@ sp_color_notebook_new (void) { SPColorNotebook *colorbook; - colorbook = (SPColorNotebook*)gtk_type_new (SP_TYPE_COLOR_NOTEBOOK); + colorbook = (SPColorNotebook*)g_object_new (SP_TYPE_COLOR_NOTEBOOK, NULL); return GTK_WIDGET (colorbook); } diff --git a/src/widgets/sp-color-notebook.h b/src/widgets/sp-color-notebook.h index 8d2988636..85b4315ed 100644 --- a/src/widgets/sp-color-notebook.h +++ b/src/widgets/sp-color-notebook.h @@ -31,7 +31,7 @@ public: virtual void init(); SPColorSelector* getCurrentSelector(); - void switchPage( GtkNotebook *notebook, GtkNotebookPage *page, guint page_num ); + void switchPage( GtkNotebook *notebook, GtkWidget *page, guint page_num ); GtkWidget* addPage( GType page_type, guint submode ); void removePage( GType page_type, guint submode ); diff --git a/src/widgets/sp-color-scales.cpp b/src/widgets/sp-color-scales.cpp index 25162dead..c07e44aa6 100644 --- a/src/widgets/sp-color-scales.cpp +++ b/src/widgets/sp-color-scales.cpp @@ -166,7 +166,7 @@ void ColorScales::init() gtk_table_attach (GTK_TABLE (t), _b[i], 2, 3, i, i + 1, (GtkAttachOptions)0, (GtkAttachOptions)0, XPAD, YPAD); /* Attach channel value to adjustment */ - gtk_object_set_data (GTK_OBJECT (_a[i]), "channel", GINT_TO_POINTER (i)); + g_object_set_data (G_OBJECT (_a[i]), "channel", GINT_TO_POINTER (i)); /* Signals */ g_signal_connect (G_OBJECT (_a[i]), "value_changed", G_CALLBACK (_adjustmentAnyChanged), _csel); @@ -206,7 +206,7 @@ sp_color_scales_new (void) { SPColorScales *csel; - csel = (SPColorScales*)gtk_type_new (SP_TYPE_COLOR_SCALES); + csel = (SPColorScales*)g_object_new (SP_TYPE_COLOR_SCALES, NULL); return GTK_WIDGET (csel); } @@ -538,7 +538,7 @@ guint ColorScales::getSubmode() const void ColorScales::_adjustmentAnyChanged( GtkAdjustment *adjustment, SPColorScales *cs ) { - gint channel = GPOINTER_TO_INT (gtk_object_get_data (GTK_OBJECT (adjustment), "channel")); + gint channel = GPOINTER_TO_INT (g_object_get_data(G_OBJECT (adjustment), "channel")); _adjustmentChanged(cs, channel); } diff --git a/src/widgets/sp-color-selector.cpp b/src/widgets/sp-color-selector.cpp index bf3564d2e..b017ed923 100644 --- a/src/widgets/sp-color-selector.cpp +++ b/src/widgets/sp-color-selector.cpp @@ -68,7 +68,7 @@ void sp_color_selector_class_init( SPColorSelectorClass *klass ) object_class = GTK_OBJECT_CLASS(klass); widget_class = GTK_WIDGET_CLASS(klass); - parent_class = GTK_VBOX_CLASS( gtk_type_class(GTK_TYPE_VBOX) ); + parent_class = GTK_VBOX_CLASS( g_type_class_peek_parent(klass) ); csel_signals[GRABBED] = g_signal_new( "grabbed", G_TYPE_FROM_CLASS(object_class), diff --git a/src/widgets/sp-color-slider.cpp b/src/widgets/sp-color-slider.cpp index 7b365bc73..ad21e9031 100644 --- a/src/widgets/sp-color-slider.cpp +++ b/src/widgets/sp-color-slider.cpp @@ -54,24 +54,22 @@ static const guchar *sp_color_slider_render_map (gint x0, gint y0, gint width, g static GtkWidgetClass *parent_class; static guint slider_signals[LAST_SIGNAL] = {0}; -GtkType +GType sp_color_slider_get_type (void) { - //TODO: switch to GObject - // GtkType and such calls were deprecated a while back with the - // introduction of GObject as a separate layer, with GType instead. --JonCruz - - static GtkType type = 0; + static GType type = 0; if (!type) { - GtkTypeInfo info = { - (gchar*) "SPColorSlider", - sizeof (SPColorSlider), + GTypeInfo info = { sizeof (SPColorSliderClass), - (GtkClassInitFunc) sp_color_slider_class_init, - (GtkObjectInitFunc) sp_color_slider_init, - NULL, NULL, NULL + NULL, NULL, + (GClassInitFunc) sp_color_slider_class_init, + NULL, NULL, + sizeof (SPColorSlider), + 0, + (GInstanceInitFunc) sp_color_slider_init, + NULL }; - type = gtk_type_unique (GTK_TYPE_WIDGET, &info); + type = g_type_register_static (GTK_TYPE_WIDGET, "SPColorSlider", &info, (GTypeFlags)0); } return type; } @@ -85,7 +83,7 @@ sp_color_slider_class_init (SPColorSliderClass *klass) object_class = (GtkObjectClass *) klass; widget_class = (GtkWidgetClass *) klass; - parent_class = (GtkWidgetClass*)gtk_type_class (GTK_TYPE_WIDGET); + parent_class = (GtkWidgetClass*)g_type_class_peek_parent (klass); slider_signals[GRABBED] = g_signal_new ("grabbed", G_TYPE_FROM_CLASS(object_class), @@ -184,12 +182,9 @@ sp_color_slider_destroy (GtkObject *object) static void sp_color_slider_realize (GtkWidget *widget) { - SPColorSlider *slider; GdkWindowAttr attributes; gint attributes_mask; - slider = SP_COLOR_SLIDER (widget); - gtk_widget_set_realized (widget, TRUE); attributes.window_type = GDK_WINDOW_CHILD; @@ -218,10 +213,6 @@ sp_color_slider_realize (GtkWidget *widget) static void sp_color_slider_size_request (GtkWidget *widget, GtkRequisition *requisition) { - SPColorSlider *slider; - - slider = SP_COLOR_SLIDER (widget); - requisition->width = SLIDER_WIDTH + widget->style->xthickness * 2; requisition->height = SLIDER_HEIGHT + widget->style->ythickness * 2; } @@ -229,10 +220,6 @@ sp_color_slider_size_request (GtkWidget *widget, GtkRequisition *requisition) static void sp_color_slider_size_allocate (GtkWidget *widget, GtkAllocation *allocation) { - SPColorSlider *slider; - - slider = SP_COLOR_SLIDER (widget); - widget->allocation = *allocation; if (gtk_widget_get_realized (widget)) { @@ -249,9 +236,6 @@ sp_color_slider_expose (GtkWidget *widget, GdkEventExpose *event) slider = SP_COLOR_SLIDER (widget); if (gtk_widget_is_drawable (widget)) { - gint width, height; - width = widget->allocation.width; - height = widget->allocation.height; sp_color_slider_paint (slider, &event->area); } @@ -323,7 +307,7 @@ sp_color_slider_new (GtkAdjustment *adjustment) { SPColorSlider *slider; - slider = (SPColorSlider*)gtk_type_new (SP_TYPE_COLOR_SLIDER); + slider = (SPColorSlider*)g_object_new (SP_TYPE_COLOR_SLIDER, NULL); sp_color_slider_set_adjustment (slider, adjustment); @@ -350,7 +334,7 @@ void sp_color_slider_set_adjustment(SPColorSlider *slider, GtkAdjustment *adjust slider->adjustment = adjustment; gtk_object_ref (GTK_OBJECT (adjustment)); - gtk_object_sink (GTK_OBJECT (adjustment)); + g_object_ref_sink (adjustment); g_signal_connect (G_OBJECT (adjustment), "changed", G_CALLBACK (sp_color_slider_adjustment_changed), slider); diff --git a/src/widgets/sp-color-slider.h b/src/widgets/sp-color-slider.h index b8cfaf869..591d8368a 100644 --- a/src/widgets/sp-color-slider.h +++ b/src/widgets/sp-color-slider.h @@ -53,7 +53,7 @@ struct SPColorSliderClass { void (* changed) (SPColorSlider *slider); }; -GtkType sp_color_slider_get_type (void); +GType sp_color_slider_get_type (void); GtkWidget *sp_color_slider_new (GtkAdjustment *adjustment); diff --git a/src/widgets/sp-color-wheel-selector.cpp b/src/widgets/sp-color-wheel-selector.cpp index 4bbda79a6..18fc76a2d 100644 --- a/src/widgets/sp-color-wheel-selector.cpp +++ b/src/widgets/sp-color-wheel-selector.cpp @@ -241,7 +241,7 @@ sp_color_wheel_selector_new (void) { SPColorWheelSelector *csel; - csel = (SPColorWheelSelector*)gtk_type_new (SP_TYPE_COLOR_WHEEL_SELECTOR); + csel = (SPColorWheelSelector*)g_object_new (SP_TYPE_COLOR_WHEEL_SELECTOR, NULL); return GTK_WIDGET (csel); } diff --git a/src/widgets/sp-widget.cpp b/src/widgets/sp-widget.cpp index d5877db99..ef8a6c03c 100644 --- a/src/widgets/sp-widget.cpp +++ b/src/widgets/sp-widget.cpp @@ -43,24 +43,25 @@ static void sp_widget_set_selection (Inkscape::Application *inkscape, Inkscape:: static GtkBinClass *parent_class; static guint signals[LAST_SIGNAL] = {0}; -GtkType +GType sp_widget_get_type (void) { - //TODO: switch to GObject - // GtkType and such calls were deprecated a while back with the - // introduction of GObject as a separate layer, with GType instead. --JonCruz - - static GtkType type = 0; + static GType type = 0; if (!type) { - static const GtkTypeInfo info = { - (gchar*) "SPWidget", - sizeof (SPWidget), + static const GTypeInfo info = { sizeof (SPWidgetClass), - (GtkClassInitFunc) sp_widget_class_init, - (GtkObjectInitFunc) sp_widget_init, - NULL, NULL, NULL + NULL, NULL, + (GClassInitFunc) sp_widget_class_init, + NULL, NULL, + sizeof (SPWidget), + 0, + (GInstanceInitFunc) sp_widget_init, + NULL }; - type = gtk_type_unique (GTK_TYPE_BIN, &info); + type = g_type_register_static (GTK_TYPE_BIN, + "SPWidget", + &info, + (GTypeFlags)0); } return type; } @@ -74,7 +75,7 @@ sp_widget_class_init (SPWidgetClass *klass) object_class = (GtkObjectClass *) klass; widget_class = (GtkWidgetClass *) klass; - parent_class = (GtkBinClass*)gtk_type_class (GTK_TYPE_BIN); + parent_class = (GtkBinClass*)g_type_class_peek_parent (klass); object_class->destroy = sp_widget_destroy; @@ -221,7 +222,7 @@ sp_widget_new_global (Inkscape::Application *inkscape) { SPWidget *spw; - spw = (SPWidget*)gtk_type_new (SP_TYPE_WIDGET); + spw = (SPWidget*)g_object_new (SP_TYPE_WIDGET, NULL); if (!sp_widget_construct_global (spw, inkscape)) { gtk_object_unref (GTK_OBJECT (spw)); diff --git a/src/widgets/sp-widget.h b/src/widgets/sp-widget.h index decd9c056..66320cd4d 100644 --- a/src/widgets/sp-widget.h +++ b/src/widgets/sp-widget.h @@ -42,7 +42,7 @@ struct SPWidgetClass { void (* set_selection) (SPWidget *spw, Inkscape::Selection *selection); }; -GtkType sp_widget_get_type (void); +GType sp_widget_get_type (void); /* fixme: Think (Lauris) */ /* Generic constructor for global widget */ diff --git a/src/widgets/sp-xmlview-attr-list.cpp b/src/widgets/sp-xmlview-attr-list.cpp index 535a4b534..9aa46a399 100644 --- a/src/widgets/sp-xmlview-attr-list.cpp +++ b/src/widgets/sp-xmlview-attr-list.cpp @@ -108,7 +108,7 @@ sp_xmlview_attr_list_class_init (SPXMLViewAttrListClass * klass) object_class = (GtkObjectClass *) klass; object_class->destroy = sp_xmlview_attr_list_destroy; - parent_class = (GtkCListClass*)gtk_type_class (GTK_TYPE_CLIST); + parent_class = (GtkCListClass*)g_type_class_peek_parent (klass); g_signal_new ( "row-value-changed", G_TYPE_FROM_CLASS(klass), diff --git a/src/widgets/sp-xmlview-attr-list.h b/src/widgets/sp-xmlview-attr-list.h index de79c7a37..9479dd77a 100644 --- a/src/widgets/sp-xmlview-attr-list.h +++ b/src/widgets/sp-xmlview-attr-list.h @@ -38,7 +38,7 @@ struct SPXMLViewAttrListClass void (* row_changed) (SPXMLViewAttrList *list, gint row); }; -GtkType sp_xmlview_attr_list_get_type (void); +GType sp_xmlview_attr_list_get_type (void); GtkWidget * sp_xmlview_attr_list_new (Inkscape::XML::Node * repr); #define SP_XMLVIEW_ATTR_LIST_GET_REPR(list) (SP_XMLVIEW_ATTR_LIST (list)->repr) diff --git a/src/widgets/sp-xmlview-content.cpp b/src/widgets/sp-xmlview-content.cpp index 75d68d25c..1f35f2373 100644 --- a/src/widgets/sp-xmlview-content.cpp +++ b/src/widgets/sp-xmlview-content.cpp @@ -46,7 +46,7 @@ sp_xmlview_content_new (Inkscape::XML::Node * repr) SPXMLViewContent *text; tb = gtk_text_buffer_new (NULL); - text = (SPXMLViewContent*)gtk_type_new (SP_TYPE_XMLVIEW_CONTENT); + text = (SPXMLViewContent*)g_object_new (SP_TYPE_XMLVIEW_CONTENT, NULL); gtk_text_view_set_buffer (GTK_TEXT_VIEW (text), tb); gtk_text_view_set_wrap_mode (GTK_TEXT_VIEW (text), GTK_WRAP_CHAR); @@ -80,7 +80,7 @@ sp_xmlview_content_set_repr (SPXMLViewContent * text, Inkscape::XML::Node * repr GType sp_xmlview_content_get_type(void) { - static GtkType type = 0; + static GType type = 0; if (!type) { GTypeInfo info = { @@ -108,7 +108,7 @@ sp_xmlview_content_class_init (SPXMLViewContentClass * klass) object_class = (GtkObjectClass *) klass; - parent_class = (GtkTextViewClass*)gtk_type_class (GTK_TYPE_TEXT_VIEW); + parent_class = (GtkTextViewClass*)g_type_class_peek_parent (klass); object_class->destroy = sp_xmlview_content_destroy; } diff --git a/src/widgets/sp-xmlview-content.h b/src/widgets/sp-xmlview-content.h index fe26891d0..941ef0be1 100644 --- a/src/widgets/sp-xmlview-content.h +++ b/src/widgets/sp-xmlview-content.h @@ -41,7 +41,7 @@ struct SPXMLViewContentClass GtkTextViewClass parent_class; }; -GtkType sp_xmlview_content_get_type (void); +GType sp_xmlview_content_get_type (void); GtkWidget * sp_xmlview_content_new (Inkscape::XML::Node * repr); #define SP_XMLVIEW_CONTENT_GET_REPR(text) (SP_XMLVIEW_CONTENT (text)->repr) diff --git a/src/widgets/sp-xmlview-tree.cpp b/src/widgets/sp-xmlview-tree.cpp index b757123b5..b867b1044 100644 --- a/src/widgets/sp-xmlview-tree.cpp +++ b/src/widgets/sp-xmlview-tree.cpp @@ -125,25 +125,23 @@ sp_xmlview_tree_set_repr (SPXMLViewTree * tree, Inkscape::XML::Node * repr) gtk_clist_thaw (GTK_CLIST (tree)); } -GtkType +GType sp_xmlview_tree_get_type (void) { - //TODO: switch to GObject - // GtkType and such calls were deprecated a while back with the - // introduction of GObject as a separate layer, with GType instead. --JonCruz - - static GtkType type = 0; + static GType type = 0; if (!type) { - static const GtkTypeInfo info = { - (gchar*) "SPXMLViewTree", - sizeof (SPXMLViewTree), + static const GTypeInfo info = { sizeof (SPXMLViewTreeClass), - (GtkClassInitFunc) sp_xmlview_tree_class_init, - (GtkObjectInitFunc) sp_xmlview_tree_init, - NULL, NULL, NULL + NULL, NULL, + (GClassInitFunc) sp_xmlview_tree_class_init, + NULL, NULL, + sizeof (SPXMLViewTree), + 0, + (GInstanceInitFunc) sp_xmlview_tree_init, + NULL }; - type = gtk_type_unique (GTK_TYPE_CTREE, &info); + type = g_type_register_static (GTK_TYPE_CTREE, "SPXMLViewTree", &info, (GTypeFlags)0); } return type; @@ -155,7 +153,7 @@ sp_xmlview_tree_class_init (SPXMLViewTreeClass * klass) GtkObjectClass * object_class; object_class = (GtkObjectClass *) klass; - parent_class = (GtkCTreeClass *) gtk_type_class (GTK_TYPE_CTREE); + parent_class = (GtkCTreeClass *) g_type_class_peek_parent (klass); GTK_CTREE_CLASS (object_class)->tree_move = tree_move; diff --git a/src/widgets/sp-xmlview-tree.h b/src/widgets/sp-xmlview-tree.h index 2b04e79eb..5d228f982 100644 --- a/src/widgets/sp-xmlview-tree.h +++ b/src/widgets/sp-xmlview-tree.h @@ -40,7 +40,7 @@ struct SPXMLViewTreeClass GtkCTreeClass parent_class; }; -GtkType sp_xmlview_tree_get_type (void); +GType sp_xmlview_tree_get_type (void); GtkWidget * sp_xmlview_tree_new (Inkscape::XML::Node * repr, void * factory, void * data); #define SP_XMLVIEW_TREE_REPR(tree) (SP_XMLVIEW_TREE (tree)->repr) diff --git a/src/widgets/spinbutton-events.cpp b/src/widgets/spinbutton-events.cpp index 4b60ce812..994d954cc 100644 --- a/src/widgets/spinbutton-events.cpp +++ b/src/widgets/spinbutton-events.cpp @@ -27,7 +27,7 @@ spinbutton_focus_in (GtkWidget *w, GdkEventKey */*event*/, gpointer /*data*/) { gdouble *ini; - ini = (gdouble *) gtk_object_get_data (GTK_OBJECT (w), "ini"); + ini = (gdouble *) g_object_get_data(G_OBJECT (w), "ini"); if (ini) g_free (ini); // free the old value if any // retrieve the value @@ -35,7 +35,7 @@ spinbutton_focus_in (GtkWidget *w, GdkEventKey */*event*/, gpointer /*data*/) *ini = gtk_spin_button_get_value (GTK_SPIN_BUTTON(w)); // remember it - gtk_object_set_data (GTK_OBJECT (w), "ini", ini); + g_object_set_data (G_OBJECT (w), "ini", ini); return FALSE; // I didn't consume the event } @@ -43,7 +43,7 @@ spinbutton_focus_in (GtkWidget *w, GdkEventKey */*event*/, gpointer /*data*/) void spinbutton_undo (GtkWidget *w) { - gdouble *ini = (gdouble *) gtk_object_get_data (GTK_OBJECT (w), "ini"); + gdouble *ini = (gdouble *) g_object_get_data(G_OBJECT (w), "ini"); gtk_spin_button_set_value(GTK_SPIN_BUTTON(w), *ini); } @@ -51,11 +51,11 @@ void spinbutton_defocus (GtkObject *container) { // defocus spinbuttons by moving focus to the canvas, unless "stay" is on - gboolean stay = GPOINTER_TO_INT(gtk_object_get_data (GTK_OBJECT (container), "stay")); + gboolean stay = GPOINTER_TO_INT(g_object_get_data(G_OBJECT (container), "stay")); if (stay) { - gtk_object_set_data (GTK_OBJECT (container), "stay", GINT_TO_POINTER (FALSE)); + g_object_set_data (G_OBJECT (container), "stay", GINT_TO_POINTER (FALSE)); } else { - GtkWidget *canvas = (GtkWidget *) gtk_object_get_data (GTK_OBJECT (container), "dtw"); + GtkWidget *canvas = (GtkWidget *) g_object_get_data(G_OBJECT (container), "dtw"); if (canvas) { gtk_widget_grab_focus (GTK_WIDGET(canvas)); } @@ -82,7 +82,7 @@ spinbutton_keypress (GtkWidget *w, GdkEventKey *event, gpointer data) case GDK_Tab: case GDK_ISO_Left_Tab: // set the flag meaning "do not leave toolbar when changing value" - gtk_object_set_data (GTK_OBJECT (spw), "stay", GINT_TO_POINTER(TRUE)); + g_object_set_data (G_OBJECT (spw), "stay", GINT_TO_POINTER(TRUE)); return FALSE; // I didn't consume the event break; @@ -91,7 +91,7 @@ spinbutton_keypress (GtkWidget *w, GdkEventKey *event, gpointer data) case GDK_Up: case GDK_KP_Up: - gtk_object_set_data (GTK_OBJECT (spw), "stay", GINT_TO_POINTER(TRUE)); + g_object_set_data (G_OBJECT (spw), "stay", GINT_TO_POINTER(TRUE)); v = gtk_spin_button_get_value(GTK_SPIN_BUTTON (w)); v += SPIN_STEP; gtk_spin_button_set_value(GTK_SPIN_BUTTON(w), v); @@ -99,7 +99,7 @@ spinbutton_keypress (GtkWidget *w, GdkEventKey *event, gpointer data) break; case GDK_Down: case GDK_KP_Down: - gtk_object_set_data (GTK_OBJECT (spw), "stay", GINT_TO_POINTER(TRUE)); + g_object_set_data (G_OBJECT (spw), "stay", GINT_TO_POINTER(TRUE)); v = gtk_spin_button_get_value(GTK_SPIN_BUTTON (w)); v -= SPIN_STEP; gtk_spin_button_set_value(GTK_SPIN_BUTTON(w), v); @@ -107,7 +107,7 @@ spinbutton_keypress (GtkWidget *w, GdkEventKey *event, gpointer data) break; case GDK_Page_Up: case GDK_KP_Page_Up: - gtk_object_set_data (GTK_OBJECT (spw), "stay", GINT_TO_POINTER(TRUE)); + g_object_set_data (G_OBJECT (spw), "stay", GINT_TO_POINTER(TRUE)); v = gtk_spin_button_get_value(GTK_SPIN_BUTTON (w)); v += SPIN_PAGE_STEP; gtk_spin_button_set_value(GTK_SPIN_BUTTON(w), v); @@ -115,7 +115,7 @@ spinbutton_keypress (GtkWidget *w, GdkEventKey *event, gpointer data) break; case GDK_Page_Down: case GDK_KP_Page_Down: - gtk_object_set_data (GTK_OBJECT (spw), "stay", GINT_TO_POINTER(TRUE)); + g_object_set_data (G_OBJECT (spw), "stay", GINT_TO_POINTER(TRUE)); v = gtk_spin_button_get_value(GTK_SPIN_BUTTON (w)); v -= SPIN_PAGE_STEP; gtk_spin_button_set_value(GTK_SPIN_BUTTON(w), v); @@ -123,7 +123,7 @@ spinbutton_keypress (GtkWidget *w, GdkEventKey *event, gpointer data) break; case GDK_z: case GDK_Z: - gtk_object_set_data (GTK_OBJECT (spw), "stay", GINT_TO_POINTER(TRUE)); + g_object_set_data (G_OBJECT (spw), "stay", GINT_TO_POINTER(TRUE)); if (event->state & GDK_CONTROL_MASK) { spinbutton_undo (w); return TRUE; // I consumed the event diff --git a/src/widgets/spw-utilities.cpp b/src/widgets/spw-utilities.cpp index aec1e2e11..2225f2c57 100644 --- a/src/widgets/spw-utilities.cpp +++ b/src/widgets/spw-utilities.cpp @@ -97,8 +97,8 @@ GtkWidget *spw_vbox_checkbutton(GtkWidget *dialog, GtkWidget *vbox, g_assert (b != NULL); gtk_widget_show (b); gtk_box_pack_start (GTK_BOX (vbox), b, FALSE, FALSE, 0); - gtk_object_set_data (GTK_OBJECT (b), "key", key); - gtk_object_set_data (GTK_OBJECT (dialog), key, b); + g_object_set_data (G_OBJECT (b), "key", key); + g_object_set_data (G_OBJECT (dialog), key, b); g_signal_connect (G_OBJECT (b), "toggled", cb, dialog); return b; } @@ -128,8 +128,8 @@ spw_checkbutton(GtkWidget * dialog, GtkWidget * table, gtk_widget_show (b); gtk_table_attach (GTK_TABLE (table), b, 1, 2, row, row+1, (GtkAttachOptions)(GTK_EXPAND | GTK_FILL), (GtkAttachOptions)0, 0, 0); - gtk_object_set_data (GTK_OBJECT (b), "key", key); - gtk_object_set_data (GTK_OBJECT (dialog), key, b); + g_object_set_data (G_OBJECT (b), "key", key); + g_object_set_data (G_OBJECT (dialog), key, b); g_signal_connect (G_OBJECT (b), "toggled", cb, dialog); if (insensitive == 1) { gtk_widget_set_sensitive (b, FALSE); @@ -156,7 +156,7 @@ spw_dropdown(GtkWidget * dialog, GtkWidget * table, gtk_widget_show (selector); gtk_table_attach (GTK_TABLE (table), selector, 1, 2, row, row+1, (GtkAttachOptions)(GTK_EXPAND | GTK_FILL), (GtkAttachOptions)0, 0, 0); - gtk_object_set_data (GTK_OBJECT (dialog), key, selector); + g_object_set_data (G_OBJECT (dialog), key, selector); return selector; } @@ -181,9 +181,9 @@ spw_unit_selector(GtkWidget * dialog, GtkWidget * table, a = gtk_adjustment_new (0.0, can_be_negative?-1e6:0, 1e6, 1.0, 10.0, 10.0); g_assert(a != NULL); - gtk_object_set_data (GTK_OBJECT (a), "key", key); - gtk_object_set_data (GTK_OBJECT (a), "unit_selector", us); - gtk_object_set_data (GTK_OBJECT (dialog), key, a); + g_object_set_data (G_OBJECT (a), "key", key); + g_object_set_data (G_OBJECT (a), "unit_selector", us); + g_object_set_data (G_OBJECT (dialog), key, a); sp_unit_selector_add_adjustment (SP_UNIT_SELECTOR (us), GTK_ADJUSTMENT (a)); sb = gtk_spin_button_new (GTK_ADJUSTMENT (a), 1.0, 4); g_assert(sb != NULL); @@ -235,7 +235,7 @@ sp_search_by_data_recursive (GtkWidget *w, gpointer key) gpointer r = NULL; if (w && GTK_IS_OBJECT(w)) { - r = gtk_object_get_data (GTK_OBJECT(w), (gchar *) key); + r = g_object_get_data(G_OBJECT(w), (gchar *) key); } if (r) return r; @@ -260,7 +260,7 @@ sp_search_by_value_recursive (GtkWidget *w, gchar *key, gchar *value) GtkWidget *child; if (w && GTK_IS_OBJECT(w)) { - r = (gchar *) gtk_object_get_data (GTK_OBJECT(w), key); + r = (gchar *) g_object_get_data(G_OBJECT(w), key); } if (r && !strcmp (r, value)) return w; diff --git a/src/widgets/toolbox.cpp b/src/widgets/toolbox.cpp index d0ff38592..3c1196e96 100644 --- a/src/widgets/toolbox.cpp +++ b/src/widgets/toolbox.cpp @@ -2176,6 +2176,10 @@ static void toggle_snap_callback(GtkToggleAction *act, gpointer data) //data poi v = nv->snap_manager.snapprefs.getSnapIntersectionCS(); sp_repr_set_boolean(repr, "inkscape:snap-intersection-paths", !v); break; + case SP_ATTR_INKSCAPE_SNAP_OTHERS: + v = nv->snap_manager.snapprefs.getSnapModeOthers(); + sp_repr_set_boolean(repr, "inkscape:snap-others", !v); + break; case SP_ATTR_INKSCAPE_SNAP_CENTER: v = nv->snap_manager.snapprefs.getIncludeItemCenter(); sp_repr_set_boolean(repr, "inkscape:snap-center", !v); @@ -2204,6 +2208,10 @@ static void toggle_snap_callback(GtkToggleAction *act, gpointer data) //data poi v = nv->snap_manager.snapprefs.getSnapObjectMidpoints(); sp_repr_set_boolean(repr, "inkscape:snap-object-midpoints", !v); break; + case SP_ATTR_INKSCAPE_SNAP_TEXT_BASELINE: + v = nv->snap_manager.snapprefs.getSnapTextBaseline(); + sp_repr_set_boolean(repr, "inkscape:snap-text-baseline", !v); + break; case SP_ATTR_INKSCAPE_SNAP_BBOX_EDGE_MIDPOINTS: v = nv->snap_manager.snapprefs.getSnapBBoxEdgeMidpoints(); sp_repr_set_boolean(repr, "inkscape:snap-bbox-edge-midpoints", !v); @@ -2244,8 +2252,11 @@ void setup_snap_toolbox(GtkWidget *toolbox, SPDesktop *desktop) " <toolitem action='ToggleSnapToItemNode' />" " <toolitem action='ToggleSnapToSmoothNodes' />" " <toolitem action='ToggleSnapToFromLineMidpoints' />" + " <separator />" + " <toolitem action='ToggleSnapFromOthers' />" " <toolitem action='ToggleSnapToFromObjectCenters' />" " <toolitem action='ToggleSnapToFromRotationCenter' />" + " <toolitem action='ToggleSnapToFromTextBaseline' />" " <separator />" " <toolitem action='ToggleSnapToPageBorder' />" " <toolitem action='ToggleSnapToGrids' />" @@ -2370,6 +2381,14 @@ void setup_snap_toolbox(GtkWidget *toolbox, SPDesktop *desktop) } { + InkToggleAction* act = ink_toggle_action_new("ToggleSnapFromOthers", + _("Others"), _("Snap other points (centers, guide origins, gradient handles, etc.)"), INKSCAPE_ICON_SNAP_OTHERS, secondarySize, SP_ATTR_INKSCAPE_SNAP_OTHERS); + + gtk_action_group_add_action( mainActions->gobj(), GTK_ACTION( act ) ); + g_signal_connect_after( G_OBJECT(act), "toggled", G_CALLBACK(toggle_snap_callback), toolbox ); + } + + { InkToggleAction* act = ink_toggle_action_new("ToggleSnapToFromObjectCenters", _("Object Centers"), _("Snap from and to centers of objects"), INKSCAPE_ICON_SNAP_NODES_CENTER, secondarySize, SP_ATTR_INKSCAPE_SNAP_OBJECT_MIDPOINTS); @@ -2388,6 +2407,16 @@ void setup_snap_toolbox(GtkWidget *toolbox, SPDesktop *desktop) } { + InkToggleAction* act = ink_toggle_action_new("ToggleSnapToFromTextBaseline", + _("Text baseline"), _("Snap from and to text anchors and baselines"), + INKSCAPE_ICON_SNAP_TEXT_BASELINE, secondarySize, SP_ATTR_INKSCAPE_SNAP_TEXT_BASELINE); + + gtk_action_group_add_action( mainActions->gobj(), GTK_ACTION( act ) ); + g_signal_connect_after( G_OBJECT(act), "toggled", G_CALLBACK(toggle_snap_callback), toolbox ); + } + + + { InkToggleAction* act = ink_toggle_action_new("ToggleSnapToPageBorder", _("Page border"), _("Snap to the page border"), INKSCAPE_ICON_SNAP_PAGE, secondarySize, SP_ATTR_INKSCAPE_SNAP_PAGE); @@ -2476,8 +2505,10 @@ void ToolboxFactory::updateSnapToolbox(SPDesktop *desktop, SPEventContext * /*ev Glib::RefPtr<Gtk::Action> act7 = mainActions->get_action("ToggleSnapToItemNode"); Glib::RefPtr<Gtk::Action> act8 = mainActions->get_action("ToggleSnapToSmoothNodes"); Glib::RefPtr<Gtk::Action> act9 = mainActions->get_action("ToggleSnapToFromLineMidpoints"); - Glib::RefPtr<Gtk::Action> act10 = mainActions->get_action("ToggleSnapToFromObjectCenters"); + Glib::RefPtr<Gtk::Action> act10 = mainActions->get_action("ToggleSnapFromOthers"); + Glib::RefPtr<Gtk::Action> act10b = mainActions->get_action("ToggleSnapToFromObjectCenters"); Glib::RefPtr<Gtk::Action> act11 = mainActions->get_action("ToggleSnapToFromRotationCenter"); + Glib::RefPtr<Gtk::Action> act11b = mainActions->get_action("ToggleSnapToFromTextBaseline"); Glib::RefPtr<Gtk::Action> act12 = mainActions->get_action("ToggleSnapToPageBorder"); //Glib::RefPtr<Gtk::Action> act13 = mainActions->get_action("ToggleSnapToGridGuideIntersections"); Glib::RefPtr<Gtk::Action> act14 = mainActions->get_action("ToggleSnapToGrids"); @@ -2524,10 +2555,16 @@ void ToolboxFactory::updateSnapToolbox(SPDesktop *desktop, SPEventContext * /*ev gtk_action_set_sensitive(GTK_ACTION(act8->gobj()), c1 && c3); gtk_toggle_action_set_active(GTK_TOGGLE_ACTION(act9->gobj()), nv->snap_manager.snapprefs.getSnapLineMidpoints()); gtk_action_set_sensitive(GTK_ACTION(act9->gobj()), c1 && c3); - gtk_toggle_action_set_active(GTK_TOGGLE_ACTION(act10->gobj()), nv->snap_manager.snapprefs.getSnapObjectMidpoints()); - gtk_action_set_sensitive(GTK_ACTION(act10->gobj()), c1 && c3); + + bool const c5 = nv->snap_manager.snapprefs.getSnapModeOthers(); + gtk_toggle_action_set_active(GTK_TOGGLE_ACTION(act10->gobj()), c5); + gtk_action_set_sensitive(GTK_ACTION(act10->gobj()), c1); + gtk_toggle_action_set_active(GTK_TOGGLE_ACTION(act10b->gobj()), nv->snap_manager.snapprefs.getSnapObjectMidpoints()); + gtk_action_set_sensitive(GTK_ACTION(act10b->gobj()), c1 && c5); gtk_toggle_action_set_active(GTK_TOGGLE_ACTION(act11->gobj()), nv->snap_manager.snapprefs.getIncludeItemCenter()); - gtk_action_set_sensitive(GTK_ACTION(act11->gobj()), c1 && c3); + gtk_action_set_sensitive(GTK_ACTION(act11->gobj()), c1 && c5); + gtk_toggle_action_set_active(GTK_TOGGLE_ACTION(act11b->gobj()), nv->snap_manager.snapprefs.getSnapTextBaseline()); + gtk_action_set_sensitive(GTK_ACTION(act11->gobj()), c1 && c5); gtk_toggle_action_set_active(GTK_TOGGLE_ACTION(act12->gobj()), nv->snap_manager.snapprefs.getSnapToPageBorder()); gtk_action_set_sensitive(GTK_ACTION(act12->gobj()), c1); @@ -2560,8 +2597,8 @@ void ToolboxFactory::showAuxToolbox(GtkWidget *toolbox_toplevel) static GtkWidget *sp_empty_toolbox_new(SPDesktop *desktop) { GtkWidget *tbl = gtk_toolbar_new(); - gtk_object_set_data(GTK_OBJECT(tbl), "dtw", desktop->canvas); - gtk_object_set_data(GTK_OBJECT(tbl), "desktop", desktop); + g_object_set_data(G_OBJECT(tbl), "dtw", desktop->canvas); + g_object_set_data(G_OBJECT(tbl), "desktop", desktop); gtk_widget_show_all(tbl); sp_set_font_size_smaller (tbl); @@ -2808,10 +2845,10 @@ static void star_tb_event_attr_changed(Inkscape::XML::Node *repr, gchar const *n bool isFlatSided = prefs->getBool("/tools/shapes/star/isflatsided", true); if (!strcmp(name, "inkscape:randomized")) { - adj = GTK_ADJUSTMENT( gtk_object_get_data(GTK_OBJECT(tbl), "randomized") ); + adj = GTK_ADJUSTMENT( g_object_get_data(G_OBJECT(tbl), "randomized") ); gtk_adjustment_set_value(adj, sp_repr_get_double_attribute(repr, "inkscape:randomized", 0.0)); } else if (!strcmp(name, "inkscape:rounded")) { - adj = GTK_ADJUSTMENT( gtk_object_get_data(GTK_OBJECT(tbl), "rounded") ); + adj = GTK_ADJUSTMENT( g_object_get_data(G_OBJECT(tbl), "rounded") ); gtk_adjustment_set_value(adj, sp_repr_get_double_attribute(repr, "inkscape:rounded", 0.0)); } else if (!strcmp(name, "inkscape:flatsided")) { GtkAction* prop_action = GTK_ACTION( g_object_get_data(G_OBJECT(tbl), "prop_action") ); @@ -2825,7 +2862,7 @@ static void star_tb_event_attr_changed(Inkscape::XML::Node *repr, gchar const *n gtk_action_set_sensitive( prop_action, FALSE ); } } else if ((!strcmp(name, "sodipodi:r1") || !strcmp(name, "sodipodi:r2")) && (!isFlatSided) ) { - adj = (GtkAdjustment*)gtk_object_get_data(GTK_OBJECT(tbl), "proportion"); + adj = (GtkAdjustment*)g_object_get_data(G_OBJECT(tbl), "proportion"); gdouble r1 = sp_repr_get_double_attribute(repr, "sodipodi:r1", 1.0); gdouble r2 = sp_repr_get_double_attribute(repr, "sodipodi:r2", 1.0); if (r2 < r1) { @@ -2834,7 +2871,7 @@ static void star_tb_event_attr_changed(Inkscape::XML::Node *repr, gchar const *n gtk_adjustment_set_value(adj, r1/r2); } } else if (!strcmp(name, "sodipodi:sides")) { - adj = (GtkAdjustment*)gtk_object_get_data(GTK_OBJECT(tbl), "magnitude"); + adj = (GtkAdjustment*)g_object_get_data(G_OBJECT(tbl), "magnitude"); gtk_adjustment_set_value(adj, sp_repr_get_int_attribute(repr, "sodipodi:sides", 0)); } @@ -2948,7 +2985,7 @@ void sp_toolbox_add_label(GtkWidget *tbl, gchar const *title, bool wide) } else { gtk_box_pack_start(GTK_BOX(tbl), boxl, FALSE, FALSE, 0); } - gtk_object_set_data(GTK_OBJECT(tbl), "mode_label", l); + g_object_set_data(G_OBJECT(tbl), "mode_label", l); } @@ -3480,21 +3517,21 @@ static void box3d_resync_toolbar(Inkscape::XML::Node *persp_repr, GObject *data) return; } { - adj = GTK_ADJUSTMENT(gtk_object_get_data(GTK_OBJECT(tbl), "box3d_angle_x")); + adj = GTK_ADJUSTMENT(g_object_get_data(G_OBJECT(tbl), "box3d_angle_x")); act = GTK_ACTION(g_object_get_data(G_OBJECT(tbl), "box3d_angle_x_action")); tact = &INK_TOGGLE_ACTION(g_object_get_data(G_OBJECT(tbl), "box3d_vp_x_state_action"))->action; box3d_set_button_and_adjustment(persp, Proj::X, adj, act, tact); } { - adj = GTK_ADJUSTMENT(gtk_object_get_data(GTK_OBJECT(tbl), "box3d_angle_y")); + adj = GTK_ADJUSTMENT(g_object_get_data(G_OBJECT(tbl), "box3d_angle_y")); act = GTK_ACTION(g_object_get_data(G_OBJECT(tbl), "box3d_angle_y_action")); tact = &INK_TOGGLE_ACTION(g_object_get_data(G_OBJECT(tbl), "box3d_vp_y_state_action"))->action; box3d_set_button_and_adjustment(persp, Proj::Y, adj, act, tact); } { - adj = GTK_ADJUSTMENT(gtk_object_get_data(GTK_OBJECT(tbl), "box3d_angle_z")); + adj = GTK_ADJUSTMENT(g_object_get_data(G_OBJECT(tbl), "box3d_angle_z")); act = GTK_ACTION(g_object_get_data(G_OBJECT(tbl), "box3d_angle_z_action")); tact = &INK_TOGGLE_ACTION(g_object_get_data(G_OBJECT(tbl), "box3d_vp_z_state_action"))->action; @@ -3861,15 +3898,15 @@ static void sp_spl_tb_defaults(GtkWidget * /*widget*/, GtkObject *obj) gdouble exp = 1.0; gdouble t0 = 0.0; - adj = (GtkAdjustment*)gtk_object_get_data(obj, "revolution"); + adj = (GtkAdjustment*)g_object_get_data(G_OBJECT(obj), "revolution"); gtk_adjustment_set_value(adj, rev); gtk_adjustment_value_changed(adj); - adj = (GtkAdjustment*)gtk_object_get_data(obj, "expansion"); + adj = (GtkAdjustment*)g_object_get_data(G_OBJECT(obj), "expansion"); gtk_adjustment_set_value(adj, exp); gtk_adjustment_value_changed(adj); - adj = (GtkAdjustment*)gtk_object_get_data(obj, "t0"); + adj = (GtkAdjustment*)g_object_get_data(G_OBJECT(obj), "t0"); gtk_adjustment_set_value(adj, t0); gtk_adjustment_value_changed(adj); @@ -3895,13 +3932,13 @@ static void spiral_tb_event_attr_changed(Inkscape::XML::Node *repr, g_object_set_data(G_OBJECT(tbl), "freeze", GINT_TO_POINTER(TRUE)); GtkAdjustment *adj; - adj = (GtkAdjustment*)gtk_object_get_data(GTK_OBJECT(tbl), "revolution"); + adj = (GtkAdjustment*)g_object_get_data(G_OBJECT(tbl), "revolution"); gtk_adjustment_set_value(adj, (sp_repr_get_double_attribute(repr, "sodipodi:revolution", 3.0))); - adj = (GtkAdjustment*)gtk_object_get_data(GTK_OBJECT(tbl), "expansion"); + adj = (GtkAdjustment*)g_object_get_data(G_OBJECT(tbl), "expansion"); gtk_adjustment_set_value(adj, (sp_repr_get_double_attribute(repr, "sodipodi:expansion", 1.0))); - adj = (GtkAdjustment*)gtk_object_get_data(GTK_OBJECT(tbl), "t0"); + adj = (GtkAdjustment*)g_object_get_data(G_OBJECT(tbl), "t0"); gtk_adjustment_set_value(adj, (sp_repr_get_double_attribute(repr, "sodipodi:t0", 0.0))); g_object_set_data(G_OBJECT(tbl), "freeze", GINT_TO_POINTER(FALSE)); @@ -4186,7 +4223,7 @@ static void sp_pencil_tb_defaults(GtkWidget * /*widget*/, GtkObject *obj) // fixme: make settable gdouble tolerance = 4; - adj = (GtkAdjustment*)gtk_object_get_data(obj, "tolerance"); + adj = (GtkAdjustment*)g_object_get_data(G_OBJECT(obj), "tolerance"); gtk_adjustment_set_value(adj, tolerance); gtk_adjustment_value_changed(adj); @@ -4633,12 +4670,6 @@ static void sp_spray_standard_deviation_value_changed( GtkAdjustment *adj, GObje prefs->setDouble( "/tools/spray/standard_deviation", adj->value ); } -static void sp_spray_pressure_state_changed( GtkToggleAction *act, gpointer /*data*/ ) -{ - Inkscape::Preferences *prefs = Inkscape::Preferences::get(); - prefs->setBool("/tools/spray/usepressure", gtk_toggle_action_get_active(act)); -} - static void sp_spray_mode_changed( EgeSelectOneAction *act, GObject * /*tbl*/ ) { int mode = ege_select_one_action_get_active( act ); @@ -8021,7 +8052,7 @@ static void sp_connector_orthogonal_toggled( GtkToggleAction* act, GObject *tbl if (cc_item_is_connector(item)) { item->setAttribute( "inkscape:connector-type", - value, false); + value, NULL); item->avoidRef->handleSettingChange(); modmade = true; } @@ -8070,7 +8101,7 @@ static void connector_curvature_changed(GtkAdjustment *adj, GObject* tbl) if (cc_item_is_connector(item)) { item->setAttribute( "inkscape:connector-curvature", - value, false); + value, NULL); item->avoidRef->handleSettingChange(); modmade = true; } @@ -8186,7 +8217,7 @@ static void connector_tb_event_attr_changed(Inkscape::XML::Node *repr, if ( !g_object_get_data(G_OBJECT(tbl), "freeze") && (strcmp(name, "inkscape:connector-spacing") == 0) ) { - GtkAdjustment *adj = static_cast<GtkAdjustment*>(gtk_object_get_data(GTK_OBJECT(tbl), "spacing")); + GtkAdjustment *adj = static_cast<GtkAdjustment*>(g_object_get_data(G_OBJECT(tbl), "spacing")); gdouble spacing = defaultConnSpacing; sp_repr_get_double(repr, "inkscape:connector-spacing", &spacing); diff --git a/src/xml/CMakeLists.txt b/src/xml/CMakeLists.txt index d7a0e197d..4f86599de 100644 --- a/src/xml/CMakeLists.txt +++ b/src/xml/CMakeLists.txt @@ -17,6 +17,9 @@ set(xml_SRC helper-observer.cpp rebase-hrefs.cpp + + # ------- + # Headers attribute-record.h comment-node.h composite-node-observer.h |
