On 1/7/13 7:45 AM, ~suv wrote:
On 07/01/2013 08:13, Valerio Aimale wrote:
This is a good example of Mac OSX integration. Not complete, but, I'd say a good start.
https://rapidshare.com/files/2004754462/Inkscape-r9943-10.7%2B-x86_64.dmg
Many thanks for sharing this third build/package!
AFAICT the basics for the menubar integration are fine (Inkscape's dynamic sub-menus, for example), and working with multiple files from within the same Inkscape process is better supported, too.
- Issues noticed with 'Inkscape-r9943-10.7+-x86_64' (on OS X 10.7):
- Menubar (blocker):
Closing a second window opened from within Inkscape may empty the global menubar. The content of the menubar is restored e.g. when opening a new window again (with the keyboard shortcut, or button on the commands bar), or when switching between other document windows if there are still multiple ones open.
Steps to reproduce:
- launch Inkscape.app (with default preferences)
- open new (second) window with 'Ctrl+N'
- close second window with 'Ctrl+W'
--> the menubar now has only one menu ('Inkscape'), which basically allows to quit the application, but nothing else.
- Menubar:
Menu items with a 'checkmark' (toggle state) don't update if the setting is changed (e.g. 'View > Display mode > { … | Normal | No Filters | Outline }' or don't reflect the initial state (e.g. items in 'View > Show/Hide').
Your email, unfortunately, made me think that OSX menu integration might not be possible, without a major rewriting of the source code. Inkscape's architecture (as for the majority of gtk apps) assumes that, in multi-document mode, every window has its own private menu that receives and process events.
In OSX, in multi-dicument mode, there is only one menu that processes events and dispatches actions to the window that currently has the focus.
It might not be possible to achieve this type of integration with the current state of Inkscape' sources.
- Extension modules:
Import of lxml fails on Lion: system libs (libxml2 and libxslt) shipping with Lion [1] provide older versions than those that the python module was linked against:
$ otool -L /tmp/Inkscape-r9943-10.7+-x86_64.app/Contents/Resources/python/site-packages/lxml/etree.so /tmp/Inkscape-r9943-10.7+-x86_64.app/Contents/Resources/python/site-packages/lxml/etree.so: @executable_path/../lib/libxslt.1.dylib (compatibility version 3.0.0, current version 3.27.0) @executable_path/../lib/libexslt.0.dylib (compatibility version 9.0.0, current version 9.16.0) @executable_path/../lib/libxml2.2.dylib (compatibility version 11.0.0, current version 11.0.0) @executable_path/../lib/libz.1.dylib (compatibility version 1.0.0, current version 1.2.7) /usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 159.1.0) $ otool -L /usr/lib/libxml2.2.dylib /usr/lib/libxml2.2.dylib: /usr/lib/libxml2.2.dylib (compatibility version 10.0.0, current version 10.3.0) /usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 159.1.0) /usr/lib/libz.1.dylib (compatibility version 1.0.0, current version 1.2.5) /usr/lib/libicucore.A.dylib (compatibility version 1.0.0, current version 46.1.0) $ otool -L /usr/lib/libxslt.1.dylib /usr/lib/libxslt.1.dylib: /usr/lib/libxslt.1.dylib (compatibility version 3.0.0, current version 3.24.0) /usr/lib/libxml2.2.dylib (compatibility version 10.0.0, current version 10.3.0) /usr/lib/libz.1.dylib (compatibility version 1.0.0, current version 1.2.5) /usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 159.1.0) /usr/lib/libicucore.A.dylib (compatibility version 1.0.0, current version 46.1.0) $ otool -L /usr/lib/libexslt.0.dylib /usr/lib/libexslt.0.dylib: /usr/lib/libexslt.0.dylib (compatibility version 9.0.0, current version 9.13.0) /usr/lib/libxslt.1.dylib (compatibility version 3.0.0, current version 3.24.0) /usr/lib/libxml2.2.dylib (compatibility version 10.0.0, current version 10.3.0) /usr/lib/libz.1.dylib (compatibility version 1.0.0, current version 1.2.5) /usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 159.1.0) /usr/lib/libicucore.A.dylib (compatibility version 1.0.0, current version 46.1.0)
Rewriting the paths of *.so files in the bundled python modules doesn't help for compatibility with Lion (AFAIU for the spawned python process, "@executable_path" does not resolve relative to the path of the main Inkscape binary to make '/usr/bin/python' load libraries from inside the Inkscape application bundle, and the same libs loaded from '/usr/lib' are not compatible):
Packing of python from the macports root installation directory was a wrong choice. Python numpy and lxml packages have to be packaged from the system-wide python 'site-packages'
I'll correct that.
Valerio
The fantastic lxml wrapper for libxml2 is required by this extension.
Technical details: dlopen(/tmp/Inkscape-r9943-10.7+-x86_64.app/Contents/Resources/python/site-packages/lxml/etree.so, 2): Library not loaded: @executable_path/../lib/libxml2.2.dylib Referenced from: /tmp/Inkscape-r9943-10.7+-x86_64.app/Contents/Resources/python/site-packages/lxml/etree.so Reason: Incompatible library version: etree.so requires version 11.0.0 or later, but libxml2.2.dylib provides version 10.0.0
- ...
At first sight the package otherwise seems to be at about the state of gellule's blueprint/branch (which was based on Inkscape trunk from Aug 2012), with similar (known) issues (see below).
I'll be more verbose tomorrow and replay to all emails. Too late now.
Thanks - looking forward to more detailed information… :)
Regards, V
- Known issues with 'gtk-mac-integration' (from gtk-osx)
(originally tracked in bug #721448 and bug #738973):
Menubar: thousands of console messages about "object class `GtkLabel' has no property named `accel-closure'" (bug #1043266)
Menubar: menus display no keyboard shortcuts (bug #1043266 (gtk-osx), bug #998276 (Unity))
Menubar: 'File > Open Recent' always opens file listed at the top (bug #1043266 (gtk-osx), bug #708185 (Unity), bug #752674 (Unity))
Bundle: Missing Dock & Finder integration (bug #1045963)
...
- Known issues with GTK+/Quartz:
Quartz backend: Modifiers (Ctrl <-> Alt/Cmd) not swapped (bug #1043266, #438603)
Quartz backend: screen updates may be slow or delayed (compared to X11-based builds) - noticeable e.g. with the pen tool, which is rather slow (delayed screen updates when rendering the red & green path handles?) if the window size is big (e.g. maximised) and the rulers are visible; or when rotating shapes interactively (the constantly updating status bar messages possibly cause additional delays, and the rotation arrows don't update until the LBM press is released).
Blocker: Clipboard: Random calls to output extensions (or crash) on quit after having used the clipboard within the current session (bug #1046068)
Clipboard: Import/export via system clipboard doesn't work as expected (bug #546934)
...
- Other features related to OS X & packaging:
Adjust menu structure if using 'gtk-mac-integration' on osx: move items like 'Preferences' and 'Input Devices' to the 'Inkscape' application menu (similar to GIMP 2.8.2 with GTK+/Quartz)
Adjust location for preferences, shared and cached items (XDG spec) to the structure recommended by Apple (~/Library/*) if compiled with Quartz backend (or possibly only if linked with 'gtk-mac-integration')
Fonts: there should be no more issues with current versions of pango and/or fontconfig which would prevent re-enabling the system fonts directory in 'Contents/Resources/etc/fonts/fonts.conf':
<!-- <dir>/System/Library/Fonts</dir> -->
(dfonts are handled ok; Helvetica on >= 10.7 seems fixed, bug #408190)
...
- Issues with gellule's branch/bundling script solved (or improved)
with your package(s):
add gtk-themes support: new default theme, same as current GIMP 2.8.2 package for OS X (bug #1045963)
include python modules for extensions (still needs support for Lion) (bug #1042597)
[1] According to information at Apple's opensource site:
- OS X 10.7.5: libxml2-21.15.1, libxslt-10.10
http://opensource.apple.com/release/mac-os-x-1075/
- OS X 10.8.2: libxml2-22.3, libxslt-11.3