summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--CMakeLists.txt1
-rw-r--r--CMakeScripts/DefineDependsandFlags.cmake148
-rw-r--r--config.h.cmake12
-rw-r--r--share/filters/CMakeLists.txt4
-rw-r--r--share/palettes/CMakeLists.txt2
-rw-r--r--share/patterns/CMakeLists.txt4
-rw-r--r--share/symbols/CMakeLists.txt2
-rw-r--r--share/templates/CMakeLists.txt2
-rw-r--r--src/CMakeLists.txt5
-rw-r--r--src/libgdl/CMakeLists.txt87
-rw-r--r--src/ui/dialog/text-edit.cpp14
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);