diff options
| author | Shlomi Fish <shlomif@shlomifish.org> | 2015-10-26 22:50:52 +0000 |
|---|---|---|
| committer | Marc Jeanmougin <marcjeanmougin@free.fr> | 2015-10-26 22:50:52 +0000 |
| commit | 0d4e511c524d9102d90adbf2defea4f644eb3edd (patch) | |
| tree | ffd9da7dadc59fa46ca91fa123659f5271214614 | |
| parent | Extensions. Fixed 'none' setting in flow control dropdown. Fixes bug #1509580 (diff) | |
| download | inkscape-0d4e511c524d9102d90adbf2defea4f644eb3edd.tar.gz inkscape-0d4e511c524d9102d90adbf2defea4f644eb3edd.zip | |
add gtk3 experimental support in CMake
Fixed bugs:
- https://launchpad.net/bugs/1509969
(bzr r14430)
| -rw-r--r-- | CMakeLists.txt | 1 | ||||
| -rw-r--r-- | CMakeScripts/DefineDependsandFlags.cmake | 148 | ||||
| -rw-r--r-- | config.h.cmake | 12 | ||||
| -rw-r--r-- | share/filters/CMakeLists.txt | 4 | ||||
| -rw-r--r-- | share/palettes/CMakeLists.txt | 2 | ||||
| -rw-r--r-- | share/patterns/CMakeLists.txt | 4 | ||||
| -rw-r--r-- | share/symbols/CMakeLists.txt | 2 | ||||
| -rw-r--r-- | share/templates/CMakeLists.txt | 2 | ||||
| -rw-r--r-- | src/CMakeLists.txt | 5 | ||||
| -rw-r--r-- | src/libgdl/CMakeLists.txt | 87 | ||||
| -rw-r--r-- | src/ui/dialog/text-edit.cpp | 14 |
11 files changed, 183 insertions, 98 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt index 4506ad3fe..17c994321 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -90,6 +90,7 @@ option(WITH_LIBCDR "Compile with support of libcdr for CorelDRAW Diagrams" ON) option(WITH_LIBVISIO "Compile with support of libvisio for Microsoft Visio Diagrams" ON) option(WITH_LIBWPG "Compile with support of libwpg for WordPerfect Graphics" ON) option(WITH_NLS "Compile with Native Language Support (using gettext)" ON) +option(WITH_GTK3_EXPERIMENTAL "Enable compilation with GTK+3 (EXPERIMENTAL!)" OFF) include(CMakeScripts/ConfigPaths.cmake) # Installation Paths include(CMakeScripts/DefineDependsandFlags.cmake) # Includes, Compiler Flags, and Link Libraries diff --git a/CMakeScripts/DefineDependsandFlags.cmake b/CMakeScripts/DefineDependsandFlags.cmake index e6089daa4..63e4315b8 100644 --- a/CMakeScripts/DefineDependsandFlags.cmake +++ b/CMakeScripts/DefineDependsandFlags.cmake @@ -220,55 +220,107 @@ endif() # CMake's builtin # ---------------------------------------------------------------------------- +SET (TRY_GTKSPELL 1) # Include dependencies: # use patched version until GTK2_CAIROMMCONFIG_INCLUDE_DIR is added -find_package(GTK2 COMPONENTS gtk gtkmm REQUIRED) -list(APPEND INKSCAPE_INCS_SYS - ${GTK2_GDK_INCLUDE_DIR} - ${GTK2_GDKMM_INCLUDE_DIR} - ${GTK2_GDK_PIXBUF_INCLUDE_DIR} - ${GTK2_GDKCONFIG_INCLUDE_DIR} - ${GTK2_GDKMMCONFIG_INCLUDE_DIR} - ${GTK2_GLIB_INCLUDE_DIR} - ${GTK2_GLIBCONFIG_INCLUDE_DIR} - ${GTK2_GLIBMM_INCLUDE_DIR} - ${GTK2_GLIBMMCONFIG_INCLUDE_DIR} - ${GTK2_GTK_INCLUDE_DIR} - ${GTK2_GTKMM_INCLUDE_DIR} - ${GTK2_GTKMMCONFIG_INCLUDE_DIR} - ${GTK2_ATK_INCLUDE_DIR} - ${GTK2_ATKMM_INCLUDE_DIR} - ${GTK2_PANGO_INCLUDE_DIR} - ${GTK2_PANGOMM_INCLUDE_DIR} - ${GTK2_PANGOMMCONFIG_INCLUDE_DIR} - ${GTK2_CAIRO_INCLUDE_DIR} - ${GTK2_CAIROMM_INCLUDE_DIR} - ${GTK2_CAIROMMCONFIG_INCLUDE_DIR} # <-- not in cmake 2.8.4 - ${GTK2_GIOMM_INCLUDE_DIR} - ${GTK2_GIOMMCONFIG_INCLUDE_DIR} - ${GTK2_SIGC++_INCLUDE_DIR} - ${GTK2_SIGC++CONFIG_INCLUDE_DIR} -) - -list(APPEND INKSCAPE_LIBS - ${GTK2_GDK_LIBRARY} - ${GTK2_GDKMM_LIBRARY} - ${GTK2_GDK_PIXBUF_LIBRARY} - ${GTK2_GLIB_LIBRARY} - ${GTK2_GLIBMM_LIBRARY} - ${GTK2_GTK_LIBRARY} - ${GTK2_GTKMM_LIBRARY} - ${GTK2_ATK_LIBRARY} - ${GTK2_ATKMM_LIBRARY} - ${GTK2_PANGO_LIBRARY} - ${GTK2_PANGOMM_LIBRARY} - ${GTK2_CAIRO_LIBRARY} - ${GTK2_CAIROMM_LIBRARY} - ${GTK2_GIOMM_LIBRARY} - ${GTK2_SIGC++_LIBRARY} - ${GTK2_GOBJECT_LIBRARY} -) - +IF ("${WITH_GTK3_EXPERIMENTAL}") + pkg_check_modules( + GTK + REQUIRED + gtkmm-3.0>=3.2 + gdkmm-3.0>=3.2 + gtk+-3.0>=3.2 + gdk-3.0>=3.2 + gdl-3.0>=3.3.5 + ) + message("Using EXPERIMENTAL Gtkmm 3 build") + SET (WITH_GTKMM_3_0 1) + message("Using external GDL") + SET(WITH_EXT_GDL 1) + + # Check whether we can use new features in Gtkmm 3.10 + # TODO: Drop this test and bump the version number in the GTK test above + # as soon as all supported distributions provide Gtkmm >= 3.10 + pkg_check_modules(GTKMM_3_10 + gtkmm-3.0>=3.10, + ) + + IF ("${GTKMM_3_10_FOUND}") + message("Using Gtkmm 3.10 build") + SET (WITH_GTKMM_3_10 1) + ENDIF() + + pkg_check_modules(GDL_3_6 gdl-3.0>=3.6) + + IF ("${GDL_3_6_FOUND}") + message("Using Gdl 3.6 or higher") + SET (WITH_GDL_3_6 1) + ENDIF() + + SET (TRY_GTKSPELL ) + pkg_check_modules(GTKSPELL3 gtkspell3-3.0) + + IF ("${GTKSPELL3_FOUND}") + message("Using GtkSpell3 3.0") + SET (WITH_GTKSPELL 1) + ENDIF() + list(APPEND INKSCAPE_INCS_SYS + ${GTK_INCLUDE_DIRS} + ${GTKSPELL3_INCLUDE_DIRS} + ) + + list(APPEND INKSCAPE_LIBS + ${GTK_LIBRARIES} + ${GTKSPELL3_LIBRARIES} + ) +ELSE() + find_package(GTK2 COMPONENTS gtk gtkmm REQUIRED) + list(APPEND INKSCAPE_INCS_SYS + ${GTK2_GDK_INCLUDE_DIR} + ${GTK2_GDKMM_INCLUDE_DIR} + ${GTK2_GDK_PIXBUF_INCLUDE_DIR} + ${GTK2_GDKCONFIG_INCLUDE_DIR} + ${GTK2_GDKMMCONFIG_INCLUDE_DIR} + ${GTK2_GLIB_INCLUDE_DIR} + ${GTK2_GLIBCONFIG_INCLUDE_DIR} + ${GTK2_GLIBMM_INCLUDE_DIR} + ${GTK2_GLIBMMCONFIG_INCLUDE_DIR} + ${GTK2_GTK_INCLUDE_DIR} + ${GTK2_GTKMM_INCLUDE_DIR} + ${GTK2_GTKMMCONFIG_INCLUDE_DIR} + ${GTK2_ATK_INCLUDE_DIR} + ${GTK2_ATKMM_INCLUDE_DIR} + ${GTK2_PANGO_INCLUDE_DIR} + ${GTK2_PANGOMM_INCLUDE_DIR} + ${GTK2_PANGOMMCONFIG_INCLUDE_DIR} + ${GTK2_CAIRO_INCLUDE_DIR} + ${GTK2_CAIROMM_INCLUDE_DIR} + ${GTK2_CAIROMMCONFIG_INCLUDE_DIR} # <-- not in cmake 2.8.4 + ${GTK2_GIOMM_INCLUDE_DIR} + ${GTK2_GIOMMCONFIG_INCLUDE_DIR} + ${GTK2_SIGC++_INCLUDE_DIR} + ${GTK2_SIGC++CONFIG_INCLUDE_DIR} + ) + + list(APPEND INKSCAPE_LIBS + ${GTK2_GDK_LIBRARY} + ${GTK2_GDKMM_LIBRARY} + ${GTK2_GDK_PIXBUF_LIBRARY} + ${GTK2_GLIB_LIBRARY} + ${GTK2_GLIBMM_LIBRARY} + ${GTK2_GTK_LIBRARY} + ${GTK2_GTKMM_LIBRARY} + ${GTK2_ATK_LIBRARY} + ${GTK2_ATKMM_LIBRARY} + ${GTK2_PANGO_LIBRARY} + ${GTK2_PANGOMM_LIBRARY} + ${GTK2_CAIRO_LIBRARY} + ${GTK2_CAIROMM_LIBRARY} + ${GTK2_GIOMM_LIBRARY} + ${GTK2_SIGC++_LIBRARY} + ${GTK2_GOBJECT_LIBRARY} + ) +ENDIF() find_package(Freetype REQUIRED) list(APPEND INKSCAPE_INCS_SYS ${FREETYPE_INCLUDE_DIRS}) @@ -286,7 +338,7 @@ if(ASPELL_FOUND) set(HAVE_ASPELL TRUE) endif() -if(WITH_GTKSPELL) +if("${TRY_GTKSPELL}" AND "${WITH_GTKSPELL}") find_package(GtkSpell) if(GTKSPELL_FOUND) list(APPEND INKSCAPE_INCS_SYS ${GTKSPELL_INCLUDE_DIR}) diff --git a/config.h.cmake b/config.h.cmake index cd1d4eb5c..a63768f74 100644 --- a/config.h.cmake +++ b/config.h.cmake @@ -80,6 +80,18 @@ function. */ #cmakedefine HAVE_GTK_WINDOW_SET_DEFAULT_ICON_FROM_FILE 1 +/* Build with Gtkmm 3.0.x or higher */ +#cmakedefine WITH_GTKMM_3_0 1 + +/* Build with Gtkmm 3.10.x or higher */ +#cmakedefine WITH_GTKMM_3_10 1 + +/* Build with external GDL */ +#cmakedefine WITH_EXT_GDL 1 + +/* Build with GDL 3.6 or higher */ +#cmakedefine WITH_GDL_3_6 1 + /* Define to 1 if you have the <ieeefp.h> header file. */ #cmakedefine HAVE_IEEEFP_H 1 diff --git a/share/filters/CMakeLists.txt b/share/filters/CMakeLists.txt index 6b5356e53..7f9708c52 100644 --- a/share/filters/CMakeLists.txt +++ b/share/filters/CMakeLists.txt @@ -1,10 +1,10 @@ add_custom_command( - OUTPUT filters.svg.h + OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/filters.svg.h COMMAND ${CMAKE_CURRENT_SOURCE_DIR}/i18n.py ${CMAKE_CURRENT_SOURCE_DIR}/filters.svg > ${CMAKE_CURRENT_BINARY_DIR}/filters.svg.h MAIN_DEPENDENCY ${CMAKE_CURRENT_SOURCE_DIR}/filters.svg DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/i18n.py ) -add_custom_target(filters.svg.h ALL DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/filters.svg.h) +add_custom_target(filters_svg_h ALL DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/filters.svg.h) install(FILES ${CMAKE_CURRENT_BINARY_DIR}/filters.svg.h DESTINATION ${SHARE_INSTALL}/inkscape/filters) install(FILES "filters.svg" "README" DESTINATION ${SHARE_INSTALL}/inkscape/filters) diff --git a/share/palettes/CMakeLists.txt b/share/palettes/CMakeLists.txt index 77b4b2a37..924e35e5a 100644 --- a/share/palettes/CMakeLists.txt +++ b/share/palettes/CMakeLists.txt @@ -6,7 +6,7 @@ add_custom_command( WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/i18n.py ${I18N_FILES} ) -add_custom_target(palettes.h ALL DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/palettes.h) +add_custom_target(palettes_h ALL DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/palettes.h) file(GLOB _FILES "*.gpl") diff --git a/share/patterns/CMakeLists.txt b/share/patterns/CMakeLists.txt index 98415b225..de4a44797 100644 --- a/share/patterns/CMakeLists.txt +++ b/share/patterns/CMakeLists.txt @@ -4,7 +4,7 @@ add_custom_command( MAIN_DEPENDENCY ${CMAKE_CURRENT_SOURCE_DIR}/patterns.svg DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/i18n.py ) -add_custom_target(patterns.svg.h ALL DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/patterns.svg.h) +add_custom_target(patterns_svg_h ALL DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/patterns.svg.h) install(FILES ${CMAKE_CURRENT_BINARY_DIR}/patterns.svg.h DESTINATION ${SHARE_INSTALL}/inkscape/patterns) -install(FILES "patterns.svg" "README" DESTINATION ${SHARE_INSTALL}/inkscape/patterns)
\ No newline at end of file +install(FILES "patterns.svg" "README" DESTINATION ${SHARE_INSTALL}/inkscape/patterns) diff --git a/share/symbols/CMakeLists.txt b/share/symbols/CMakeLists.txt index ef44c89e4..b578ff851 100644 --- a/share/symbols/CMakeLists.txt +++ b/share/symbols/CMakeLists.txt @@ -6,6 +6,6 @@ add_custom_command( WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/i18n.py ${_FILES} ) -add_custom_target(symbols.h ALL DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/symbols.h) +add_custom_target(symbols_h ALL DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/symbols.h) install(FILES ${_FILES} "README" ${CMAKE_CURRENT_BINARY_DIR}/symbols.h DESTINATION ${SHARE_INSTALL}/inkscape/symbols) diff --git a/share/templates/CMakeLists.txt b/share/templates/CMakeLists.txt index eee5b4458..af79e2ec5 100644 --- a/share/templates/CMakeLists.txt +++ b/share/templates/CMakeLists.txt @@ -6,6 +6,6 @@ add_custom_command( WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/i18n.py ${_FILES} ) -add_custom_target(templates.h ALL DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/templates.h) +add_custom_target(templates_h ALL DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/templates.h) install(FILES ${_FILES} "README" ${CMAKE_CURRENT_BINARY_DIR}/templates.h DESTINATION ${SHARE_INSTALL}/inkscape/templates) diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index ec7713464..30af55925 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -531,6 +531,10 @@ endif() add_dependencies(inkscape inkscape_version) +if (NOT "${WITH_EXT_GDL}") + list (APPEND INKSCAPE_LIBS "gdl_LIB") +endif() + set(INKSCAPE_TARGET_LIBS # order from automake #sp_LIB @@ -542,7 +546,6 @@ set(INKSCAPE_TARGET_LIBS croco_LIB avoid_LIB - gdl_LIB cola_LIB vpsc_LIB livarot_LIB diff --git a/src/libgdl/CMakeLists.txt b/src/libgdl/CMakeLists.txt index d59d017f0..a452320f7 100644 --- a/src/libgdl/CMakeLists.txt +++ b/src/libgdl/CMakeLists.txt @@ -1,47 +1,50 @@ +if (NOT "${WITH_EXT_GDL}") -set(libgdl_SRC - gdl-dock-bar.c - gdl-dock-item-button-image.c - gdl-dock-item-grip.c - gdl-dock-item.c - gdl-dock-master.c - gdl-dock-notebook.c - gdl-dock-object.c - gdl-dock-paned.c - gdl-dock-placeholder.c - gdl-dock-tablabel.c - gdl-dock.c - gdl-i18n.c - gdl-switcher.c - libgdlmarshal.c - libgdltypebuiltins.c + set(libgdl_SRC + gdl-dock-bar.c + gdl-dock-item-button-image.c + gdl-dock-item-grip.c + gdl-dock-item.c + gdl-dock-master.c + gdl-dock-notebook.c + gdl-dock-object.c + gdl-dock-paned.c + gdl-dock-placeholder.c + gdl-dock-tablabel.c + gdl-dock.c + gdl-i18n.c + gdl-switcher.c + libgdlmarshal.c + libgdltypebuiltins.c - # ------- - # Headers - gdl-dock-bar.h - gdl-dock-item-button-image.h - gdl-dock-item-grip.h - gdl-dock-item.h - gdl-dock-master.h - gdl-dock-notebook.h - gdl-dock-object.h - gdl-dock-paned.h - gdl-dock-placeholder.h - gdl-dock-tablabel.h - gdl-dock.h - gdl-i18n.h - gdl-switcher.h - gdl.h - libgdlmarshal.h - libgdltypebuiltins.h -) + # ------- + # Headers + gdl-dock-bar.h + gdl-dock-item-button-image.h + gdl-dock-item-grip.h + gdl-dock-item.h + gdl-dock-master.h + gdl-dock-notebook.h + gdl-dock-object.h + gdl-dock-paned.h + gdl-dock-placeholder.h + gdl-dock-tablabel.h + gdl-dock.h + gdl-i18n.h + gdl-switcher.h + gdl.h + libgdlmarshal.h + libgdltypebuiltins.h + ) -if(WIN32) - list(APPEND libgdl_SRC - gdl-win32.c - gdl-win32.h - ) -endif() + if(WIN32) + list(APPEND libgdl_SRC + gdl-win32.c + gdl-win32.h + ) + endif() + + add_inkscape_lib(gdl_LIB "${libgdl_SRC}") -add_inkscape_lib(gdl_LIB "${libgdl_SRC}") +endif() diff --git a/src/ui/dialog/text-edit.cpp b/src/ui/dialog/text-edit.cpp index 7575cc854..cf53e1441 100644 --- a/src/ui/dialog/text-edit.cpp +++ b/src/ui/dialog/text-edit.cpp @@ -175,6 +175,19 @@ TextEdit::TextEdit() gtk_text_view_set_wrap_mode ((GtkTextView *) text_view, GTK_WRAP_WORD); #ifdef WITH_GTKSPELL +#ifdef WITH_GTKMM_3_0 +/* + TODO: Use computed xml:lang attribute of relevant element, if present, to specify the + language (either as 2nd arg of gtkspell_new_attach, or with explicit + gtkspell_set_language call in; see advanced.c example in gtkspell docs). + onReadSelection looks like a suitable place. +*/ + GtkSpellChecker * speller = gtk_spell_checker_new(); + + if (! gtk_spell_checker_attach(speller, GTK_TEXT_VIEW(text_view))) { + g_print("gtkspell error:\n"); + } +#else GError *error = NULL; /* @@ -188,6 +201,7 @@ TextEdit::TextEdit() g_error_free(error); } #endif +#endif gtk_widget_set_size_request (text_view, -1, 64); gtk_text_view_set_editable (GTK_TEXT_VIEW (text_view), TRUE); |
