Branch: refs/heads/master Author: Lars Paulsen lars_paulsen@web.de Committer: LarsGit223 lars_paulsen@web.de Date: Sat, 20 Oct 2018 09:43:08 UTC Commit: f0dbabab09f2ffc0f25054deb58ea7f32b8256e9 https://github.com/geany/geany-plugins/commit/f0dbabab09f2ffc0f25054deb58ea7...
Log Message: ----------- scope: added GTK3 support (keeping GTK2 support)
- use vte-2.91 for GTK3 and vte >= 0.17 for GTK2 - for GTK 3.4 and higher use CSS padding instead of deprecated 'inner-border' style property This prevents a warning in the debug messages. - Fixed overlapping widgets in 'command_dialog': A gtk3 specific glade file was created. In the 'command_dialog' the deprecated 'GtkVBox' was replaced by 'GtkBox'. Also less frames were used. This fixed overlapping of the widgets 'command_view' and 'command_history'. - Corrected missing 'min-content-height' for 'command_view' in 'command_dialog'
Modified Paths: -------------- build/scope.m4 po/POTFILES.in scope/data/Makefile.am scope/data/scope_gtk3.glade scope/src/Makefile.am scope/src/conterm.c scope/src/plugme.c scope/src/prefs.c scope/src/prefs.h scope/src/scope.c scope/src/utils.c utils/src/Makefile.am utils/src/gp_gtkcompat.h utils/src/gp_vtecompat.c utils/src/gp_vtecompat.h
Modified: build/scope.m4 8 lines changed, 5 insertions(+), 3 deletions(-) =================================================================== @@ -1,16 +1,18 @@ AC_DEFUN([GP_CHECK_SCOPE], [ GP_ARG_DISABLE([Scope], [auto]) - GP_CHECK_PLUGIN_GTK2_ONLY([Scope])
case "$host_os" in cygwin* | mingw* | win32*) PTY_LIBS="" ;;
*) - GP_CHECK_PLUGIN_DEPS([scope], [VTE], - [vte >= 0.17]) + + GP_CHECK_GTK3([vte_package=vte-2.91], [vte_package="vte >= 0.17"]) + GP_CHECK_PLUGIN_DEPS([scope], [VTE], [$vte_package]) + AM_CONDITIONAL([GP_VTE291_USED], [test "$enable_scope" != no && test "$vte_package" = vte-2.91]) + AC_CHECK_HEADERS([util.h pty.h libutil.h]) PTY_LIBS="-lutil" ;;
Modified: po/POTFILES.in 1 lines changed, 1 insertions(+), 0 deletions(-) =================================================================== @@ -267,6 +267,7 @@ projectorganizer/src/prjorg-sidebar.c
# Scope scope/data/scope.glade +scope/data/scope_gtk3.glade scope/src/break.c scope/src/conterm.c scope/src/debug.c
Modified: scope/data/Makefile.am 3 lines changed, 2 insertions(+), 1 deletions(-) =================================================================== @@ -29,4 +29,5 @@ dist_plugindata_DATA = \ StepOver.png \ StepOver22.png \ StepOver24.png \ - scope.glade + scope.glade \ + scope_gtk3.glade
Modified: scope/data/scope_gtk3.glade 3982 lines changed, 3982 insertions(+), 0 deletions(-) =================================================================== No diff available, check online
Modified: scope/src/Makefile.am 6 lines changed, 4 insertions(+), 2 deletions(-) =================================================================== @@ -51,11 +51,13 @@ scope_la_SOURCES = \ store/scptreestore.h \ store/scptreestore.c
-scope_la_LIBADD = $(COMMONLIBS) $(VTE_LIBS) $(PTY_LIBS) +scope_la_LIBADD = $(COMMONLIBS) $(VTE_LIBS) $(PTY_LIBS) \ + $(top_builddir)/utils/src/libgeanypluginutils.la
scope_la_CPPFLAGS = $(AM_CPPFLAGS) -DG_LOG_DOMAIN="Scope" scope_la_CFLAGS = $(AM_CFLAGS) $(VTE_CFLAGS) \ -DPLUGINHTMLDOCDIR="$(plugindocdir)/html" \ - -Wno-shadow + -Wno-shadow \ + -I$(top_srcdir)/utils/src
include $(top_srcdir)/build/cppcheck.mk
Modified: scope/src/conterm.c 45 lines changed, 44 insertions(+), 1 deletions(-) =================================================================== @@ -33,6 +33,7 @@
#ifdef G_OS_UNIX #include <vte/vte.h> +#include <gp_vtecompat.h> /* instead of detecting N kinds of *nix */ #if defined(HAVE_UTIL_H) #include <util.h> @@ -394,19 +395,53 @@ void conterm_load_config(void) pref_vte_font = utils_get_setting_string(config, "VTE", "font", "Monospace 10"); pref_vte_scrollback = utils_get_setting_integer(config, "VTE", "scrollback_lines", 500); tmp_string = utils_get_setting_string(config, "VTE", "colour_fore", "#ffffff"); +#if !GTK_CHECK_VERSION(3, 14, 0) gdk_color_parse(tmp_string, &pref_vte_colour_fore); +#else + gdk_rgba_parse(&pref_vte_colour_fore, tmp_string); +#endif g_free(tmp_string); tmp_string = utils_get_setting_string(config, "VTE", "colour_back", "#000000"); +#if !GTK_CHECK_VERSION(3, 14, 0) gdk_color_parse(tmp_string, &pref_vte_colour_back); +#else + gdk_rgba_parse(&pref_vte_colour_back, tmp_string); +#endif g_free(tmp_string); g_key_file_free(config); g_free(configfile); }
static void context_apply_config(GtkWidget *console) { +#if !GTK_CHECK_VERSION(3, 0, 0) gtk_widget_modify_base(console, GTK_STATE_NORMAL, &pref_vte_colour_back); gtk_widget_modify_cursor(console, &pref_vte_colour_fore, &pref_vte_colour_back); +#else + GString *css_string; + GtkStyleContext *context; + GtkCssProvider *provider; + gchar *css_code, *color, *background_color; + + color = gdk_rgba_to_string (&pref_vte_colour_fore); + background_color = gdk_rgba_to_string (&pref_vte_colour_back); + + gtk_widget_set_name(console, "scope-console"); + context = gtk_widget_get_style_context(console); + provider = gtk_css_provider_new(); + gtk_style_context_add_provider(context, GTK_STYLE_PROVIDER(provider), + GTK_STYLE_PROVIDER_PRIORITY_APPLICATION); + + css_string = g_string_new(NULL); + g_string_printf(css_string, "#scope-console { color: %s; background-color: %s; }", + color, background_color); + css_code = g_string_free(css_string, FALSE); + + gtk_css_provider_load_from_data(GTK_CSS_PROVIDER(provider), css_code, -1, NULL); + + g_free(css_code); + g_object_unref(provider); +#endif ui_widget_modify_font_from_string(console, pref_vte_font); }
@@ -457,7 +492,15 @@ void conterm_init(void) { gint vte_border_x, vte_border_y;
-#if VTE_CHECK_VERSION(0, 24, 0) +#if GTK_CHECK_VERSION(3, 4, 0) + GtkStyleContext *context; + GtkBorder border; + + context = gtk_widget_get_style_context (console); + gtk_style_context_get_padding (context, GTK_STATE_FLAG_NORMAL, &border); + vte_border_x = border.left + border.right; + vte_border_y = border.top + border.bottom; +#elif VTE_CHECK_VERSION(0, 24, 0) GtkBorder *border = NULL;
gtk_widget_style_get(console, "inner-border", &border, NULL);
Modified: scope/src/plugme.c 4 lines changed, 4 insertions(+), 0 deletions(-) =================================================================== @@ -23,6 +23,10 @@
#include <string.h>
+#include "common.h" + +#include <gp_gtkcompat.h> + #include "geanyplugin.h"
extern GeanyData *geany_data;
Modified: scope/src/prefs.c 6 lines changed, 6 insertions(+), 0 deletions(-) =================================================================== @@ -76,8 +76,14 @@ gboolean pref_vte_blinken; gchar *pref_vte_emulation; gchar *pref_vte_font; gint pref_vte_scrollback; + +#if !GTK_CHECK_VERSION(3, 14, 0) GdkColor pref_vte_colour_fore; GdkColor pref_vte_colour_back; +#else +GdkRGBA pref_vte_colour_fore; +GdkRGBA pref_vte_colour_back; +#endif
typedef struct _MarkerStyle {
Modified: scope/src/prefs.h 6 lines changed, 6 insertions(+), 0 deletions(-) =================================================================== @@ -64,8 +64,14 @@ extern gboolean pref_vte_blinken; extern gchar *pref_vte_emulation; extern gchar *pref_vte_font; extern gint pref_vte_scrollback; + +#if !GTK_CHECK_VERSION(3, 14, 0) extern GdkColor pref_vte_colour_fore; extern GdkColor pref_vte_colour_back; +#else +extern GdkRGBA pref_vte_colour_fore; +extern GdkRGBA pref_vte_colour_back; +#endif
void prefs_apply(GeanyDocument *doc); char *prefs_file_name(void);
Modified: scope/src/scope.c 8 lines changed, 8 insertions(+), 0 deletions(-) =================================================================== @@ -25,6 +25,10 @@
#include "common.h"
+#include <vte/vte.h> + +#include <gp_gtkcompat.h> + GeanyPlugin *geany_plugin; GeanyData *geany_data;
@@ -545,7 +549,11 @@ static gchar *get_data_dir_path(const gchar *filename) void plugin_init(G_GNUC_UNUSED GeanyData *gdata) { GeanyKeyGroup *scope_key_group; +#if GTK_CHECK_VERSION(3, 0, 0) + char *gladefile = get_data_dir_path("scope_gtk3.glade"); +#else char *gladefile = get_data_dir_path("scope.glade"); +#endif GError *gerror = NULL; GtkWidget *menubar1 = ui_lookup_widget(geany->main_widgets->window, "menubar1"); guint item;
Modified: scope/src/utils.c 11 lines changed, 11 insertions(+), 0 deletions(-) =================================================================== @@ -437,10 +437,21 @@ void utils_remark(GeanyDocument *doc)
guint utils_parse_sci_color(const gchar *string) { +#if !GTK_CHECK_VERSION(3, 14, 0) GdkColor color;
gdk_color_parse(string, &color); return ((color.blue >> 8) << 16) + (color.green & 0xFF00) + (color.red >> 8); +#else + GdkRGBA color; + guint blue, green, red; + + gdk_rgba_parse(&color, string); + blue = color.blue * 0xFF; + green = color.green * 0xFF; + red = color.red * 0xFF; + return (blue << 16) + (green << 8) + red; +#endif }
gboolean utils_key_file_write_to_file(GKeyFile *config, const char *configfile)
Modified: utils/src/Makefile.am 11 lines changed, 9 insertions(+), 2 deletions(-) =================================================================== @@ -6,9 +6,16 @@ libgeanypluginutils_la_SOURCES = \ filelist.h \ filelist.c
+if GP_VTE291_USED +libgeanypluginutils_la_SOURCES += \ + gp_vtecompat.h \ + gp_vtecompat.c +endif + libgeanypluginutils_la_CPPFLAGS = $(AM_CPPFLAGS) \ -DG_LOG_DOMAIN="Utils" -libgeanypluginutils_la_CFLAGS = $(AM_CFLAGS) -libgeanypluginutils_la_LIBADD = $(COMMONLIBS) +libgeanypluginutils_la_CFLAGS = $(AM_CFLAGS) $(VTE_CFLAGS) +libgeanypluginutils_la_LIBADD = $(COMMONLIBS) $(VTE_LIBS) libgeanypluginutils_la_LDFLAGS = -no-undefined $(GP_LDFLAGS) include $(top_srcdir)/build/cppcheck.mk +
Modified: utils/src/gp_gtkcompat.h 57 lines changed, 57 insertions(+), 0 deletions(-) =================================================================== @@ -0,0 +1,57 @@ +/* + * Copyright 2017 LarsGit223 + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +/* Compatibility macros to support different GTK versions */ + +#ifndef GP_GTKCOMPAT_H +#define GP_GTKCOMPAT_H + +G_BEGIN_DECLS + +/* Remove gtk_window_set_has_resize_grip() starting from version 3.14 */ +#if GTK_CHECK_VERSION(3, 14, 0) +#define gtk_window_set_has_resize_grip(window, value) +#endif + +/* Replace calls to gtk_widget_set_state() with call to + gtk_widget_set_state_flags() and translate States to State-Flags. + Starting from version 3.0.*/ +#if GTK_CHECK_VERSION(3, 0, 0) +#define GTK_STATE_NORMAL GTK_STATE_FLAG_NORMAL +#define GTK_STATE_ACTIVE GTK_STATE_FLAG_ACTIVE +#define GTK_STATE_PRELIGHT GTK_STATE_FLAG_PRELIGHT +#define GTK_STATE_SELECTED GTK_STATE_FLAG_SELECTED +#define GTK_STATE_INSENSITIVE GTK_STATE_FLAG_INSENSITIVE +#define GTK_STATE_INCONSISTENT GTK_STATE_FLAG_INCONSISTENT +#define GTK_STATE_FOCUSED GTK_STATE_FLAG_FOCUSED +#define gtk_widget_set_state(widget, state) \ + gtk_widget_set_state_flags(widget, state, FALSE) +#endif + +/* Replace some GTK_STOCK constants with labels. + Add new ones on-demand. Starting from version 3.10 */ +#if GTK_CHECK_VERSION(3, 10, 0) +#undef GTK_STOCK_OPEN +#undef GTK_STOCK_CANCEL +#define GTK_STOCK_OPEN _("_Open") +#define GTK_STOCK_CANCEL _("_Cancel") +#endif +G_END_DECLS + +#endif /* GP_GTKCOMPAT_H */ +
Modified: utils/src/gp_vtecompat.c 47 lines changed, 47 insertions(+), 0 deletions(-) =================================================================== @@ -0,0 +1,47 @@ +/* + * Copyright 2017 LarsGit223 + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#include <glib.h> +#include <glib/gstdio.h> + +#ifdef HAVE_CONFIG_H +# include "config.h" +#endif + +#ifdef G_OS_UNIX +#include <vte/vte.h> +#include <../../utils/src/gp_vtecompat.h> +#endif + +/** Set font from string. + * + * Compatibility function to replace deprecated vte_terminal_set_font_from_string(). + * + * @param vte Pointer to VteTerminal + * @param font Font specification as string + * + **/ +void gp_vtecompat_set_font_from_string(VteTerminal *vte, char *font) +{ + PangoFontDescription *font_desc; + + font_desc = pango_font_description_from_string(font); + vte_terminal_set_font(vte, font_desc); + pango_font_description_free (font_desc); +} +
Modified: utils/src/gp_vtecompat.h 60 lines changed, 60 insertions(+), 0 deletions(-) =================================================================== @@ -0,0 +1,60 @@ +/* + * Copyright 2017 LarsGit223 + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +/* Compatibility macros to support different VTE versions */ + +#ifndef GP_VTECOMPAT_H +#define GP_VTECOMPAT_H + +G_BEGIN_DECLS + +/* Replace call to vte_terminal_copy_clipboard() with a call to + vte_terminal_copy_clipboard_format starting from version 0.50 */ +#if VTE_CHECK_VERSION(0, 50, 0) +#define vte_terminal_copy_clipboard(terminal) \ + vte_terminal_copy_clipboard_format(terminal, VTE_FORMAT_TEXT) +#endif + +/* Version info for VTE is incomplete so we use all the macros below + simply if GTK3 is used. */ +#if GTK_CHECK_VERSION(3, 0, 0) +/* Remove vte_terminal_set_emulation() starting from 0.26.2 version */ +#define vte_terminal_set_emulation(vte, emulation) + +/* Replace call to vte_terminal_set_font_from_string() with a call to + gp_vtecompat_set_font_from_string() starting from version 0.26.2 */ +#define vte_terminal_set_font_from_string(vte, font) \ + gp_vtecompat_set_font_from_string(vte, font) + +/* Replace call to vte_pty_new_foreign() with a call to + vte_pty_new_foreign_sync() starting from version 0.26.2 */ +#define vte_pty_new_foreign(pty, error) \ + vte_pty_new_foreign_sync(pty, NULL, error) + +/* Replace call to vte_terminal_set_pty_object() with a call to + vte_terminal_set_pty() starting from version 0.26.2 */ +#define vte_terminal_set_pty_object(terminal, pty) \ + vte_terminal_set_pty(terminal, pty) + +void gp_vtecompat_set_font_from_string(VteTerminal *vte, char *font); +#endif + +G_END_DECLS + +#endif /* GP_VTECOMPAT_H */ +
-------------- This E-Mail was brought to you by github_commit_mail.py (Source: https://github.com/geany/infrastructure).