diff options
author | Antenore Gatta <antenore@simbiosi.org> | 2014-12-08 00:29:52 +0300 |
---|---|---|
committer | Antenore Gatta <antenore@simbiosi.org> | 2014-12-08 00:29:52 +0300 |
commit | 716b56934bb9e16771de44409a1039f8daa1e6a7 (patch) | |
tree | ba091ca5e07d8c84c154ed441cc3c351a5dfa6bd | |
parent | a2aee21b56a9f2908ba62363d800281891576efb (diff) | |
parent | f0b1e1bf110d2fb189896e21c6d5b1176d0b8aab (diff) |
The following brings back compatibility with GTK+2 to Remmina 1.1.x (HEAD of master branch), while to keeping compatibility with GTK+3, by using GtkGrid on GTK+3 and the old GtkTable in GTK+2. Close #386v1.1.1-gtk2
25 files changed, 759 insertions, 194 deletions
diff --git a/.gitignore b/.gitignore index 722c54cda..4aeb7c432 100644 --- a/.gitignore +++ b/.gitignore @@ -49,3 +49,5 @@ remmina/src/remmina remmina/desktop/remmina.desktop remmina-plugins/libvncserver/rfb/rfbconfig.h remmina-plugins/telepathy/org.freedesktop.Telepathy.Client.Remmina.service + +build diff --git a/cmake/FindLibintl.cmake b/cmake/FindLibintl.cmake new file mode 100644 index 000000000..8c4cd8b15 --- /dev/null +++ b/cmake/FindLibintl.cmake @@ -0,0 +1,67 @@ +# Try to find Libintl functionality +# Once done this will define +# +# LIBINTL_FOUND - system has Libintl +# LIBINTL_INCLUDE_DIR - Libintl include directory +# LIBINTL_LIBRARIES - Libraries needed to use Libintl +# +# TODO: This will enable translations only if Gettext functionality is +# present in libc. Must have more robust system for release, where Gettext +# functionality can also reside in standalone Gettext library, or the one +# embedded within kdelibs (cf. gettext.m4 from Gettext source). + +# Copyright (c) 2006, Chusslove Illich, <caslav.ilic@gmx.net> +# Copyright (c) 2007, Alexander Neundorf, <neundorf@kde.org> +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions +# are met: +# +# 1. Redistributions of source code must retain the copyright +# notice, this list of conditions and the following disclaimer. +# 2. Redistributions in binary form must reproduce the copyright +# notice, this list of conditions and the following disclaimer in the +# documentation and/or other materials provided with the distribution. +# 3. The name of the author may not be used to endorse or promote products +# derived from this software without specific prior written permission. +# +# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR +# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES +# OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. +# IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, +# INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT +# NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF +# THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +if(LIBINTL_INCLUDE_DIR AND LIBINTL_LIB_FOUND) + set(Libintl_FIND_QUIETLY TRUE) +endif(LIBINTL_INCLUDE_DIR AND LIBINTL_LIB_FOUND) + +find_path(LIBINTL_INCLUDE_DIR libintl.h) + +set(LIBINTL_LIB_FOUND FALSE) + +if(LIBINTL_INCLUDE_DIR) + include(CheckFunctionExists) + check_function_exists(dgettext LIBINTL_LIBC_HAS_DGETTEXT) + + if (LIBINTL_LIBC_HAS_DGETTEXT) + set(LIBINTL_LIBRARIES) + set(LIBINTL_LIB_FOUND TRUE) + else (LIBINTL_LIBC_HAS_DGETTEXT) + find_library(LIBINTL_LIBRARIES NAMES intl libintl ) + if(LIBINTL_LIBRARIES) + set(LIBINTL_LIB_FOUND TRUE) + endif(LIBINTL_LIBRARIES) + endif (LIBINTL_LIBC_HAS_DGETTEXT) + +endif(LIBINTL_INCLUDE_DIR) + +include(FindPackageHandleStandardArgs) +find_package_handle_standard_args(Libintl DEFAULT_MSG LIBINTL_LIBRARIES LIBINTL_LIB_FOUND) + +mark_as_advanced(LIBINTL_INCLUDE_DIR LIBINTL_LIBRARIES LIBINTL_LIBC_HAS_DGETTEXT LIBINTL_LIB_FOUND) + diff --git a/cmake/GETTEXT.cmake b/cmake/GETTEXT.cmake index d920a45b1..e140dc4bb 100644 --- a/cmake/GETTEXT.cmake +++ b/cmake/GETTEXT.cmake @@ -18,6 +18,9 @@ # Boston, MA 02111-1307, USA. find_suggested_package(Gettext) +if (GETTEXT_FOUND) + find_package(Libintl) +endif() function(gettext po_dir package_name) set(mo_files) diff --git a/remmina-plugins/rdp/rdp_file.c b/remmina-plugins/rdp/rdp_file.c index 4ee497c03..d519bed16 100644 --- a/remmina-plugins/rdp/rdp_file.c +++ b/remmina-plugins/rdp/rdp_file.c @@ -163,7 +163,7 @@ static RemminaFile* remmina_rdp_file_import_channel(GIOChannel* channel) else { enc = "UTF-8"; - if (g_io_channel_seek(channel, 0, G_SEEK_SET) != G_IO_ERROR_NONE) + if (g_io_channel_seek_position(channel, 0, G_SEEK_SET, &error) != G_IO_STATUS_NORMAL) { g_print("g_io_channel_seek: failed\n"); return NULL; @@ -233,7 +233,7 @@ RemminaFile* remmina_rdp_file_import(const gchar* from_file) } remminafile = remmina_rdp_file_import_channel(channel); - g_io_channel_close(channel); + g_io_channel_shutdown(channel, FALSE, &error); return remminafile; } diff --git a/remmina-plugins/rdp/rdp_plugin.c b/remmina-plugins/rdp/rdp_plugin.c index 67912ad82..ddabe82c1 100644 --- a/remmina-plugins/rdp/rdp_plugin.c +++ b/remmina-plugins/rdp/rdp_plugin.c @@ -863,14 +863,10 @@ static gboolean remmina_rdp_main(RemminaProtocolWidget* gp) if (!rfi->user_cancelled) { remmina_plugin_service->protocol_plugin_set_error(gp, _("Unable to connect to RDP server %s"), rfi->settings->ServerHostname); - } - return FALSE; } - - remmina_rdp_main_loop(gp); return TRUE; diff --git a/remmina-plugins/rdp/rdp_settings.c b/remmina-plugins/rdp/rdp_settings.c index 507b4c159..228de63b9 100644 --- a/remmina-plugins/rdp/rdp_settings.c +++ b/remmina-plugins/rdp/rdp_settings.c @@ -72,7 +72,11 @@ guint remmina_rdp_settings_get_keyboard_layout(void) typedef struct _RemminaPluginRdpsetGrid { +#if GTK_VERSION == 3 GtkGrid grid; +#else + GtkTable grid; +#endif GtkWidget* keyboard_layout_label; GtkWidget* keyboard_layout_combo; @@ -95,12 +99,20 @@ typedef struct _RemminaPluginRdpsetGrid typedef struct _RemminaPluginRdpsetGridClass { +#if GTK_VERSION == 3 GtkGridClass parent_class; +#else + GtkTableClass parent_class; +#endif } RemminaPluginRdpsetGridClass; GType remmina_rdp_settings_grid_get_type(void) G_GNUC_CONST; +#if GTK_VERSION == 3 G_DEFINE_TYPE(RemminaPluginRdpsetGrid, remmina_rdp_settings_grid, GTK_TYPE_GRID) +#else +G_DEFINE_TYPE(RemminaPluginRdpsetGrid, remmina_rdp_settings_grid, GTK_TYPE_TABLE) +#endif static void remmina_rdp_settings_grid_class_init(RemminaPluginRdpsetGridClass* klass) { @@ -261,6 +273,19 @@ static void remmina_rdp_settings_quality_option_on_toggled(GtkToggleButton* togg } } +static inline void remmina_rdp_settings_grid_attach(RemminaPluginRdpsetGrid *grid, GtkWidget *child, +gint left, gint top, gint width, gint height) +{ +#if GTK_VERSION == 3 + //gtk_grid_attach (GtkGrid *grid, GtkWidget *child, gint left, gint top, gint width, gint height); + gtk_grid_attach(GTK_GRID(grid), child, left, top, width, height); +#else + //gtk_table_attach_defaults (GtkTable *table, GtkWidget *widget, + // guint left_attach, guint right_attach, guint top_attach, guint bottom_attach); + gtk_table_attach_defaults(GTK_TABLE(grid), child, left, left + width - 1, top, top + height - 1); +#endif +} + static void remmina_rdp_settings_grid_init(RemminaPluginRdpsetGrid *grid) { gchar* s; @@ -269,23 +294,30 @@ static void remmina_rdp_settings_grid_init(RemminaPluginRdpsetGrid *grid) /* Create the grid */ g_signal_connect(G_OBJECT(grid), "destroy", G_CALLBACK(remmina_rdp_settings_grid_destroy), NULL); +#if GTK_VERSION == 3 gtk_grid_set_row_homogeneous(GTK_GRID(grid), FALSE); gtk_grid_set_column_homogeneous(GTK_GRID(grid), FALSE); gtk_container_set_border_width(GTK_CONTAINER(grid), 8); gtk_grid_set_row_spacing(GTK_GRID(grid), 4); gtk_grid_set_column_spacing(GTK_GRID(grid), 4); - - //gtk_grid_attach (GtkGrid *grid, GtkWidget *child, gint left, gint top, gint width, gint height); +#else + gtk_table_resize(GTK_TABLE(grid), 8, 3); + gtk_table_set_homogeneous(GTK_TABLE(grid), FALSE); + gtk_container_set_border_width(GTK_CONTAINER(grid), 8); + gtk_table_set_row_spacings(GTK_TABLE(grid), 4); + gtk_table_set_col_spacings(GTK_TABLE(grid), 4); +#endif + /* Create the content */ widget = gtk_label_new(_("Keyboard layout")); gtk_widget_show(widget); gtk_misc_set_alignment(GTK_MISC(widget), 0.0, 0.5); - gtk_grid_attach(GTK_GRID(grid), widget, 0, 0, 1, 1); + remmina_rdp_settings_grid_attach(grid, widget, 0, 0, 1, 1); grid->keyboard_layout_store = gtk_list_store_new(2, G_TYPE_UINT, G_TYPE_STRING); widget = gtk_combo_box_new_with_model(GTK_TREE_MODEL(grid->keyboard_layout_store)); gtk_widget_show(widget); - gtk_grid_attach(GTK_GRID(grid), widget, 1, 0, 4, 1); + remmina_rdp_settings_grid_attach(grid, widget, 1, 0, 4, 1); renderer = gtk_cell_renderer_text_new(); gtk_cell_layout_pack_start(GTK_CELL_LAYOUT(widget), renderer, TRUE); @@ -295,14 +327,14 @@ static void remmina_rdp_settings_grid_init(RemminaPluginRdpsetGrid *grid) widget = gtk_label_new("-"); gtk_widget_show(widget); gtk_misc_set_alignment(GTK_MISC(widget), 0.0, 0.5); - gtk_grid_attach(GTK_GRID(grid), widget, 1, 1, 4, 2); + remmina_rdp_settings_grid_attach(grid, widget, 1, 1, 4, 2); grid->keyboard_layout_label = widget; remmina_rdp_settings_grid_load_layout(grid); widget = gtk_check_button_new_with_label(_("Use client keyboard mapping")); gtk_widget_show(widget); - gtk_grid_attach(GTK_GRID(grid), widget, 1, 3, 3, 3); + remmina_rdp_settings_grid_attach(grid, widget, 1, 3, 3, 3); grid->use_client_keymap_check = widget; s = remmina_plugin_service->pref_get_value("rdp_use_client_keymap"); @@ -313,12 +345,12 @@ static void remmina_rdp_settings_grid_init(RemminaPluginRdpsetGrid *grid) widget = gtk_label_new(_("Quality option")); gtk_widget_show(widget); gtk_misc_set_alignment(GTK_MISC(widget), 0.0, 0.5); - gtk_grid_attach(GTK_GRID(grid), widget, 0, 6, 1, 4); + remmina_rdp_settings_grid_attach(grid, widget, 0, 6, 1, 4); grid->quality_store = gtk_list_store_new(2, G_TYPE_UINT, G_TYPE_STRING); widget = gtk_combo_box_new_with_model(GTK_TREE_MODEL(grid->quality_store)); gtk_widget_show(widget); - gtk_grid_attach(GTK_GRID(grid), widget, 1, 6, 4, 4); + remmina_rdp_settings_grid_attach(grid, widget, 1, 6, 4, 4); renderer = gtk_cell_renderer_text_new(); gtk_cell_layout_pack_start(GTK_CELL_LAYOUT(widget), renderer, TRUE); @@ -331,56 +363,56 @@ static void remmina_rdp_settings_grid_init(RemminaPluginRdpsetGrid *grid) widget = gtk_check_button_new_with_label(_("Wallpaper")); gtk_widget_show(widget); - gtk_grid_attach(GTK_GRID(grid), widget, 1, 10, 2, 5); + remmina_rdp_settings_grid_attach(grid, widget, 1, 10, 2, 5); g_signal_connect(G_OBJECT(widget), "toggled", G_CALLBACK(remmina_rdp_settings_quality_option_on_toggled), grid); grid->wallpaper_check = widget; widget = gtk_check_button_new_with_label(_("Window drag")); gtk_widget_show(widget); - gtk_grid_attach(GTK_GRID(grid), widget, 3, 10, 3, 5); + remmina_rdp_settings_grid_attach(grid, widget, 3, 10, 3, 5); g_signal_connect(G_OBJECT(widget), "toggled", G_CALLBACK(remmina_rdp_settings_quality_option_on_toggled), grid); grid->windowdrag_check = widget; widget = gtk_check_button_new_with_label(_("Menu animation")); gtk_widget_show(widget); - gtk_grid_attach(GTK_GRID(grid), widget, 1, 13, 2, 6); + remmina_rdp_settings_grid_attach(grid, widget, 1, 13, 2, 6); g_signal_connect(G_OBJECT(widget), "toggled", G_CALLBACK(remmina_rdp_settings_quality_option_on_toggled), grid); grid->menuanimation_check = widget; widget = gtk_check_button_new_with_label(_("Theme")); gtk_widget_show(widget); - gtk_grid_attach(GTK_GRID(grid), widget, 3, 13, 3, 6); + remmina_rdp_settings_grid_attach(grid, widget, 3, 13, 3, 6); g_signal_connect(G_OBJECT(widget), "toggled", G_CALLBACK(remmina_rdp_settings_quality_option_on_toggled), grid); grid->theme_check = widget; widget = gtk_check_button_new_with_label(_("Cursor shadow")); gtk_widget_show(widget); - gtk_grid_attach(GTK_GRID(grid), widget, 1, 16, 2, 7); + remmina_rdp_settings_grid_attach(grid, widget, 1, 16, 2, 7); g_signal_connect(G_OBJECT(widget), "toggled", G_CALLBACK(remmina_rdp_settings_quality_option_on_toggled), grid); grid->cursorshadow_check = widget; widget = gtk_check_button_new_with_label(_("Cursor blinking")); gtk_widget_show(widget); - gtk_grid_attach(GTK_GRID(grid), widget, 3, 16, 3, 7); + remmina_rdp_settings_grid_attach(grid, widget, 3, 16, 3, 7); g_signal_connect(G_OBJECT(widget), "toggled", G_CALLBACK(remmina_rdp_settings_quality_option_on_toggled), grid); grid->cursorblinking_check = widget; widget = gtk_check_button_new_with_label(_("Font smoothing")); gtk_widget_show(widget); - gtk_grid_attach(GTK_GRID(grid), widget, 1, 19, 2, 8); + remmina_rdp_settings_grid_attach(grid, widget, 1, 19, 2, 8); g_signal_connect(G_OBJECT(widget), "toggled", G_CALLBACK(remmina_rdp_settings_quality_option_on_toggled), grid); grid->fontsmoothing_check = widget; widget = gtk_check_button_new_with_label(_("Composition")); gtk_widget_show(widget); - gtk_grid_attach(GTK_GRID(grid), widget, 3, 19, 3, 8); + remmina_rdp_settings_grid_attach(grid, widget, 3, 19, 3, 8); g_signal_connect(G_OBJECT(widget), "toggled", G_CALLBACK(remmina_rdp_settings_quality_option_on_toggled), grid); grid->composition_check = widget; @@ -397,4 +429,3 @@ GtkWidget* remmina_rdp_settings_new(void) return widget; } - diff --git a/remmina/CMakeLists.txt b/remmina/CMakeLists.txt index e7494f699..1127bfdae 100644 --- a/remmina/CMakeLists.txt +++ b/remmina/CMakeLists.txt @@ -110,6 +110,9 @@ add_executable(remmina ${REMMINA_SRCS}) include_directories(${GTK_INCLUDE_DIRS}) target_link_libraries(remmina ${GTK_LIBRARIES}) +if(NOT LIBINTL_LIBC_HAS_DGETTEXT) + target_link_libraries(remmina -lintl) +endif() find_package(X11) include_directories(${X11_INCLUDE_DIR}) @@ -149,7 +152,7 @@ if(GTK3_FOUND AND WITH_VTE) message(STATUS "VTE ${__VTE_VERSION} not found") endforeach(__VTE_VERSION) elseif(WITH_VTE) - set(_VTE_VERSION_NUM) + set(_VTE_VERSION_NUM 2.90) find_package(VTE) endif() diff --git a/remmina/src/remmina.c b/remmina/src/remmina.c index c327f662a..bbe76fce8 100644 --- a/remmina/src/remmina.c +++ b/remmina/src/remmina.c @@ -216,7 +216,9 @@ int main(int argc, char* argv[]) textdomain(GETTEXT_PACKAGE); #ifdef HAVE_PTHREAD +#if !GLIB_CHECK_VERSION(2,36,0) g_type_init (); +#endif gdk_threads_init (); #endif diff --git a/remmina/src/remmina_applet_menu.c b/remmina/src/remmina_applet_menu.c index ad5ddafd1..cdaf54ab8 100644 --- a/remmina/src/remmina_applet_menu.c +++ b/remmina/src/remmina_applet_menu.c @@ -32,6 +32,7 @@ * */ +#include "config.h" #include <gtk/gtk.h> #include <glib/gi18n.h> #include <string.h> @@ -88,7 +89,11 @@ remmina_applet_menu_add_group(GtkWidget *menu, const gchar *group, gint position GtkWidget *image; GtkWidget *submenu; +#if GTK_VERSION == 3 widget = gtk_menu_item_new_with_label(group); +#else + widget = gtk_image_menu_item_new_with_label(group); +#endif gtk_widget_show(widget); image = @@ -96,6 +101,10 @@ remmina_applet_menu_add_group(GtkWidget *menu, const gchar *group, gint position (menuitem->item_type == REMMINA_APPLET_MENU_ITEM_DISCOVERED ? "folder-remote" : "folder"), GTK_ICON_SIZE_MENU); gtk_widget_show(image); +#if GTK_VERSION == 2 + gtk_image_menu_item_set_image(GTK_IMAGE_MENU_ITEM(widget), image); + gtk_image_menu_item_set_always_show_image(GTK_IMAGE_MENU_ITEM(widget), TRUE); +#endif g_object_set_data_full(G_OBJECT(widget), "group", g_strdup(group), g_free); g_object_set_data(G_OBJECT(widget), "count", GINT_TO_POINTER(0)); diff --git a/remmina/src/remmina_applet_menu_item.c b/remmina/src/remmina_applet_menu_item.c index abfeec186..c84f6e152 100644 --- a/remmina/src/remmina_applet_menu_item.c +++ b/remmina/src/remmina_applet_menu_item.c @@ -32,6 +32,7 @@ * */ +#include "config.h" #include <gtk/gtk.h> #include <glib/gi18n.h> #include <string.h> @@ -154,10 +155,21 @@ GtkWidget* remmina_applet_menu_item_new(RemminaAppletMenuItemType item_type, ... } else { +#if GTK_VERSION == 3 widget = gtk_image_new_from_icon_name("go-jump", GTK_ICON_SIZE_MENU); +#else + // This is weird I must use the deprecated function call for the jump to + // icon keep it working with MATE, Tango and GNOME themes + // Everywhere else can use the forward compatible function + widget = gtk_image_new_from_stock(GTK_STOCK_JUMP_TO, GTK_ICON_SIZE_MENU); +#endif } gtk_widget_show(widget); +#if GTK_VERSION == 2 + gtk_image_menu_item_set_image(GTK_IMAGE_MENU_ITEM(item), widget); + gtk_image_menu_item_set_always_show_image(GTK_IMAGE_MENU_ITEM(item), TRUE); +#endif if (item->server) { diff --git a/remmina/src/remmina_chain_button.c b/remmina/src/remmina_chain_button.c index d65dab8ec..7275caa2f 100644 --- a/remmina/src/remmina_chain_button.c +++ b/remmina/src/remmina_chain_button.c @@ -35,7 +35,11 @@ #include <gtk/gtk.h> #include "remmina_chain_button.h" +#if GTK_VERSION == 3 G_DEFINE_TYPE (RemminaChainButton, remmina_chain_button, GTK_TYPE_GRID) +#elif GTK_VERSION == 2 +G_DEFINE_TYPE (RemminaChainButton, remmina_chain_button, GTK_TYPE_TABLE) +#endif static const gchar* line_up_xpm[] = { @@ -189,16 +193,28 @@ static void remmina_chain_button_init(RemminaChainButton* cb) GtkWidget* image; GdkPixbuf* pixbuf; +#if GTK_VERSION == 2 + gtk_table_resize(GTK_TABLE(cb), 3, 1); +#endif + pixbuf = gdk_pixbuf_new_from_xpm_data(line_up_xpm); image = gtk_image_new_from_pixbuf(pixbuf); g_object_unref(pixbuf); gtk_widget_show(image); +#if GTK_VERSION == 3 gtk_grid_attach(GTK_GRID(cb), image, 0, 0, 1, 1); +#elif GTK_VERSION == 2 + gtk_table_attach_defaults(GTK_TABLE(cb), image, 0, 1, 0, 1); +#endif widget = gtk_button_new(); gtk_widget_show(widget); gtk_button_set_relief(GTK_BUTTON(widget), GTK_RELIEF_NONE); +#if GTK_VERSION == 3 gtk_grid_attach(GTK_GRID(cb), widget, 0, 1, 1, 1); +#elif GTK_VERSION == 2 + gtk_table_attach_defaults(GTK_TABLE(cb), widget, 0, 1, 1, 2); +#endif g_signal_connect(G_OBJECT(widget), "clicked", G_CALLBACK(remmina_chain_button_on_clicked), cb); image = gtk_image_new(); @@ -210,7 +226,11 @@ static void remmina_chain_button_init(RemminaChainButton* cb) image = gtk_image_new_from_pixbuf(pixbuf); g_object_unref(pixbuf); gtk_widget_show(image); +#if GTK_VERSION == 3 gtk_grid_attach(GTK_GRID(cb), image, 0, 2, 1, 1); +#elif GTK_VERSION == 2 + gtk_table_attach_defaults(GTK_TABLE(cb), image, 0, 1, 2, 3); +#endif cb->chained = FALSE; } diff --git a/remmina/src/remmina_chain_button.h b/remmina/src/remmina_chain_button.h index e022a1d57..359f07998 100644 --- a/remmina/src/remmina_chain_button.h +++ b/remmina/src/remmina_chain_button.h @@ -36,6 +36,8 @@ #ifndef __REMMINACHAINBUTTON_H__ #define __REMMINACHAINBUTTON_H__ +#include "config.h" + G_BEGIN_DECLS #define REMMINA_TYPE_CHAIN_BUTTON (remmina_chain_button_get_type ()) @@ -47,7 +49,11 @@ G_BEGIN_DECLS typedef struct _RemminaChainButton { +#if GTK_VERSION == 3 GtkGrid table; +#elif GTK_VERSION == 2 + GtkTable table; +#endif gboolean chained; GtkWidget* chain_image; @@ -55,7 +61,11 @@ typedef struct _RemminaChainButton typedef struct _RemminaChainButtonClass { +#if GTK_VERSION == 3 GtkGridClass parent_class; +#elif GTK_VERSION == 2 + GtkTableClass parent_class; +#endif void (* chain_toggled) (RemminaChainButton* cb); } RemminaChainButtonClass; diff --git a/remmina/src/remmina_chat_window.c b/remmina/src/remmina_chat_window.c index 66207db5c..91ba9ba17 100644 --- a/remmina/src/remmina_chat_window.c +++ b/remmina/src/remmina_chat_window.c @@ -161,7 +161,7 @@ remmina_chat_window_new(GtkWindow* parent, const gchar* chat_with) { RemminaChatWindow* window; gchar buf[100]; - GtkWidget* grid; + GtkWidget* table; GtkWidget* scrolledwindow; GtkWidget* widget; GtkWidget* image; @@ -180,18 +180,29 @@ remmina_chat_window_new(GtkWindow* parent, const gchar* chat_with) gtk_window_set_default_size(GTK_WINDOW(window), 450, 300); /* Main container */ - grid = gtk_grid_new(); - gtk_widget_show(grid); - gtk_grid_set_row_spacing(GTK_GRID(grid), 4); - gtk_grid_set_column_spacing(GTK_GRID(grid), 4); - gtk_container_set_border_width(GTK_CONTAINER(grid), 8); - gtk_container_add(GTK_CONTAINER(window), grid); +#if GTK_VERSION == 3 + table = gtk_grid_new(); + gtk_widget_show(table); + gtk_grid_set_row_spacing(GTK_GRID(table), 4); + gtk_grid_set_column_spacing(GTK_GRID(table), 4); +#else + table = gtk_table_new(3, 2, FALSE); + gtk_widget_show(table); + gtk_table_set_row_spacings(GTK_TABLE(table), 4); + gtk_table_set_col_spacings(GTK_TABLE(table), 4); +#endif + gtk_container_set_border_width(GTK_CONTAINER(table), 8); + gtk_container_add(GTK_CONTAINER(window), table); /* Chat history */ scrolledwindow = gtk_scrolled_window_new(NULL, NULL); gtk_widget_show(scrolledwindow); gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(scrolledwindow), GTK_POLICY_NEVER, GTK_POLICY_ALWAYS); - gtk_grid_attach(GTK_GRID(grid), scrolledwindow, 0, 0, 2, 1); +#if GTK_VERSION == 3 + gtk_grid_attach(GTK_GRID(table), scrolledwindow, 0, 0, 2, 1); +#elif GTK_VERSION == 2 + gtk_table_attach_defaults(GTK_TABLE(table), scrolledwindow, 0, 2, 0, 1); +#endif widget = gtk_text_view_new(); gtk_widget_show(widget); @@ -209,7 +220,11 @@ remmina_chat_window_new(GtkWindow* parent, const gchar* chat_with) scrolledwindow = gtk_scrolled_window_new(NULL, NULL); gtk_widget_show(scrolledwindow); gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(scrolledwindow), GTK_POLICY_NEVER, GTK_POLICY_ALWAYS); - gtk_grid_attach(GTK_GRID(grid), scrolledwindow, 0, 1, 1, 3); +#if GTK_VERSION == 3 + gtk_grid_attach(GTK_GRID(table), scrolledwindow, 0, 1, 1, 3); +#elif GTK_VERSION == 2 + gtk_table_attach(GTK_TABLE(table), scrolledwindow, 0, 1, 1, 3, GTK_EXPAND | GTK_FILL, GTK_FILL, 0, 0); +#endif widget = gtk_text_view_new(); gtk_widget_show(widget); @@ -226,7 +241,11 @@ remmina_chat_window_new(GtkWindow* parent, const gchar* chat_with) widget = gtk_button_new_with_mnemonic(_("_Send")); gtk_widget_show(widget); gtk_button_set_image(GTK_BUTTON(widget), image); - gtk_grid_attach(GTK_GRID(grid), widget, 1, 1, 2, 1); +#if GTK_VERSION == 3 + gtk_grid_attach(GTK_GRID(table), widget, 1, 1, 2, 1); +#elif GTK_VERSION == 2 + gtk_table_attach(GTK_TABLE(table), widget, 1, 2, 1, 2, 0, 0, 0, 0); +#endif g_signal_connect(G_OBJECT(widget), "clicked", G_CALLBACK(remmina_chat_window_send), window); /* Clear button */ @@ -236,7 +255,11 @@ remmina_chat_window_new(GtkWindow* parent, const gchar* chat_with) widget = gtk_button_new_with_mnemonic(_("_Clear")); gtk_widget_show(widget); gtk_button_set_image(GTK_BUTTON(widget), image); - gtk_grid_attach(GTK_GRID(grid), widget, 1, 2, 2, 1); +#if GTK_VERSION == 3 + gtk_grid_attach(GTK_GRID(table), widget, 1, 2, 2, 1); +#elif GTK_VERSION == 2 + gtk_table_attach(GTK_TABLE(table), widget, 1, 2, 2, 3, 0, 0, 0, 0); +#endif g_signal_connect(G_OBJECT(widget), "clicked", G_CALLBACK(remmina_chat_window_clear_send_text), window); gtk_widget_grab_focus(window->send_text); diff --git a/remmina/src/remmina_connection_window.c b/remmina/src/remmina_connection_window.c index d6d55db0e..83e387b02 100644 --- a/remmina/src/remmina_connection_window.c +++ b/remmina/src/remmina_connection_window.c @@ -779,12 +779,19 @@ static void remmina_connection_holder_toolbar_switch_page(GtkWidget* widget, Rem break; cnnobj = (RemminaConnectionObject*) g_object_get_data(G_OBJECT(page), "cnnobj"); +#if GTK_VERSION == 3 menuitem = gtk_menu_item_new_with_label(remmina_file_get_string(cnnobj->remmina_file, "name")); +#else + menuitem = gtk_image_menu_item_new_with_label(remmina_file_get_string(cnnobj->remmina_file, "name")); +#endif gtk_widget_show(menuitem); gtk_menu_shell_append(GTK_MENU_SHELL(menu), menuitem); image = gtk_image_new_from_icon_name(remmina_file_get_icon_name(cnnobj->remmina_file), GTK_ICON_SIZE_MENU); gtk_widget_show(image); +#if GTK_VERSION == 2 + gtk_image_menu_item_set_image(GTK_IMAGE_MENU_ITEM(menuitem), image); +#endif g_object_set_data(G_OBJECT(menuitem), "new-page-num", GINT_TO_POINTER(i)); g_signal_connect(G_OBJECT(menuitem), "activate", G_CALLBACK(remmina_connection_holder_switch_page_activate), @@ -1179,11 +1186,18 @@ static void remmina_connection_holder_toolbar_tools(GtkWidget* widget, RemminaCo if (feature->opt1) { +#if GTK_VERSION == 3 menuitem = gtk_menu_item_new_with_label(g_dgettext(domain, (const gchar*) feature->opt1)); +#else + menuitem = gtk_image_menu_item_new_with_label(g_dgettext(domain, (const gchar*) feature->opt1)); +#endif if (feature->opt2) { image = gtk_image_new_from_icon_name((const gchar*) feature->opt2, GTK_ICON_SIZE_MENU); gtk_widget_show(image); +#if GTK_VERSION == 2 + gtk_image_menu_item_set_image(GTK_IMAGE_MENU_ITEM(menuitem), image); +#endif } } else @@ -2240,9 +2254,14 @@ static void remmina_connection_holder_create_fullscreen(RemminaConnectionHolder* if (view_mode == VIEWPORT_FULLSCREEN_MODE) { - //gdk_color_parse("black", &color); +#if GTK_VERSION == 2 + GdkColor color; + gdk_color_parse("black", &color); + gtk_widget_modify_bg(window, GTK_STATE_NORMAL, &color); +#elif GTK_VERSION == 3 GdkRGBA color = {.0, .0, .0, 1.0}; gtk_widget_override_background_color(window, GTK_STATE_NORMAL, &color); +#endif } notebook = remmina_connection_holder_create_notebook(cnnhld); @@ -2642,7 +2661,12 @@ GtkWidget* remmina_connection_window_open_from_file_full(RemminaFile* remminafile, GCallback disconnect_cb, gpointer data, guint* handler) { RemminaConnectionObject* cnnobj; - //GdkRGBA color; +#if GTK_VERSION == 3 + GdkRGBA color = {.0, .0, .0, 1.0}; +#elif GTK_VERSION == 2 + GdkColor color; + gdk_color_parse("black", &color); +#endif remmina_file_update_screen_resolution(remminafile); @@ -2680,9 +2704,11 @@ remmina_connection_window_open_from_file_full(RemminaFile* remminafile, GCallbac /* Create the viewport to make the RemminaProtocolWidget scrollable */ cnnobj->viewport = gtk_viewport_new(NULL, NULL); gtk_widget_show(cnnobj->viewport); - //gdk_color_parse("black", &color); - GdkRGBA color = {.0, .0, .0, 1.0}; +#if GTK_VERSION == 3 gtk_widget_override_background_color(cnnobj->viewport, GTK_STATE_NORMAL, &color); +#elif GTK_VERSION == 2 + gtk_widget_modify_bg(cnnobj->viewport, GTK_STATE_NORMAL, &color); +#endif gtk_container_set_border_width(GTK_CONTAINER(cnnobj->viewport), 0); gtk_viewport_set_shadow_type(GTK_VIEWPORT(cnnobj->viewport), GTK_SHADOW_NONE); gtk_container_add(GTK_CONTAINER(cnnobj->viewport), cnnobj->alignment); diff --git a/remmina/src/remmina_external_tools.c b/remmina/src/remmina_external_tools.c index 87cefe199..7abe38f60 100644 --- a/remmina/src/remmina_external_tools.c +++ b/remmina/src/remmina_external_tools.c @@ -30,6 +30,8 @@ gboolean remmina_external_tools_from_filename(RemminaMain *remminamain,gchar* re gchar filename[MAX_PATH_LEN]; GDir* dir; const gchar* name; + size_t noprefixlen; + gchar* unprefixed; GNode* root; root = g_node_new(NULL); @@ -48,12 +50,12 @@ gboolean remmina_external_tools_from_filename(RemminaMain *remminamain,gchar* re ret = (RemminaExternalTools *)malloc(sizeof(RemminaExternalTools)); strcpy(ret->remminafilename,remminafilename); strcpy(ret->scriptfilename,filename); - menuitem = gtk_menu_item_new_with_label(strndup(name + 8, strlen(name) -8)); + noprefixlen = strlen(name) - 8; + unprefixed = malloc(noprefixlen + 1); + strncpy(unprefixed, name + 8, noprefixlen); + menuitem = gtk_menu_item_new_with_label(unprefixed); g_signal_connect(menuitem, "activate", (GCallback) view_popup_menu_onDoSomething, ret); - //g_signal_connect(menuitem, "activate", - // (GCallback) view_popup_menu_onDoSomething, treeview); - gtk_menu_shell_append(GTK_MENU_SHELL(menu), menuitem); } g_dir_close(dir); diff --git a/remmina/src/remmina_file_editor.c b/remmina/src/remmina_file_editor.c index 6b419b651..b68947716 100644 --- a/remmina/src/remmina_file_editor.c +++ b/remmina/src/remmina_file_editor.c @@ -236,10 +236,19 @@ static GtkWidget* remmina_file_editor_create_notebook_tab(RemminaFileEditor* gfe gtk_widget_show(tabbody); gtk_notebook_append_page(GTK_NOTEBOOK(gfe->priv->config_container), tabbody, tablabel); +#if GTK_VERSION == 3 table = gtk_grid_new(); +#elif GTK_VERSION == 2 + table = gtk_table_new(rows, cols, FALSE); +#endif gtk_widget_show(table); +#if GTK_VERSION == 3 gtk_grid_set_row_spacing(GTK_GRID(table), 8); gtk_grid_set_column_spacing(GTK_GRID(table), 8); +#elif GTK_VERSION == 2 + gtk_table_set_row_spacings(GTK_TABLE(table), 8); + gtk_table_set_col_spacings(GTK_TABLE(table), 8); +#endif gtk_container_set_border_width(GTK_CONTAINER(table), 15); gtk_box_pack_start(GTK_BOX(tabbody), table, FALSE, FALSE, 0); @@ -315,7 +324,11 @@ static void remmina_file_editor_create_ssh_privatekey(RemminaFileEditor* gfe, Gt G_CALLBACK(remmina_file_editor_ssh_auth_publickey_radio_on_toggled), gfe); priv->ssh_auth_publickey_radio = widget; gtk_widget_show(widget); +#if GTK_VERSION == 3 gtk_grid_attach(GTK_GRID(table), widget, 0, row + 15, 1, 1); +#elif GTK_VERSION == 2 + gtk_table_attach(GTK_TABLE(table), widget, column, column + 1, row, row + 1, GTK_FILL, 0, 0, 0); +#endif dialog = gtk_file_chooser_dialog_new (_("Identity file"), GTK_WINDOW(gfe), GTK_FILE_CHOOSER_ACTION_OPEN, _("_Cancel"), GTK_RESPONSE_CANCEL, @@ -330,7 +343,11 @@ static void remmina_file_editor_create_ssh_privatekey(RemminaFileEditor* gfe, Gt } g_free(s); gtk_widget_show(widget); +#if GTK_VERSION == 3 gtk_grid_attach (GTK_GRID(table), widget, column + 1, row + 15, 1, 1); +#elif GTK_VERSION == 2 + gtk_table_attach_defaults (GTK_TABLE(table), widget, column + 1, column + 2, row, row + 1); +#endif priv->ssh_privatekey_chooser = widget; ssh_privatekey = remmina_file_get_string (priv->remmina_file, "ssh_privatekey"); @@ -360,7 +377,11 @@ static void remmina_file_editor_create_server(RemminaFileEditor* gfe, const Remm widget = gtk_label_new(_("Server")); gtk_widget_show(widget); gtk_misc_set_alignment(GTK_MISC(widget), 0.0, 0.5); +#if GTK_VERSION == 3 gtk_grid_attach(GTK_GRID(table), widget, 0, row, 1, row + 1); +#elif GTK_VERSION == 2 + gtk_table_attach(GTK_TABLE(table), widget, 0, 1, row, row + 1, GTK_FILL, 0, 0, 0); +#endif s = remmina_pref_get_recent(plugin->name); widget = remmina_public_create_combo_entry(s, remmina_file_get_string(gfe->priv->remmina_file, "server"), TRUE); @@ -387,12 +408,20 @@ static void remmina_file_editor_create_server(RemminaFileEditor* gfe, const Remm gtk_box_pack_start (GTK_BOX (hbox), widget, FALSE, FALSE, 0); g_signal_connect(G_OBJECT(widget), "clicked", G_CALLBACK(remmina_file_editor_browse_avahi), gfe); +#if GTK_VERSION == 3 gtk_grid_attach (GTK_GRID(table), hbox, 1, row , 1, 1); +#elif GTK_VERSION == 2 + gtk_table_attach_defaults (GTK_TABLE(table), hbox, 1, 2, row, row + 1); +#endif } else #endif { +#if GTK_VERSION == 3 gtk_grid_attach(GTK_GRID(table), widget, 1, row, 1, 1); +#elif GTK_VERSION == 2 + gtk_table_attach_defaults(GTK_TABLE(table), widget, 1, 2, row, row + 1); +#endif } } @@ -404,11 +433,19 @@ static void remmina_file_editor_create_password(RemminaFileEditor* gfe, GtkWidge widget = gtk_label_new(_("Password")); gtk_widget_show(widget); gtk_misc_set_alignment(GTK_MISC(widget), 0.0, 0.5); +#if GTK_VERSION == 3 gtk_grid_attach(GTK_GRID(table), widget, 0, row, 1, 1); +#elif GTK_VERSION == 2 + gtk_table_attach(GTK_TABLE(table), widget, 0, 1, row, row + 1, GTK_FILL, 0, 0, 0); +#endif widget = gtk_entry_new(); gtk_widget_show(widget); +#if GTK_VERSION == 3 gtk_grid_attach(GTK_GRID(table), widget, 1, row, 1, 1); +#elif GTK_VERSION == 2 + gtk_table_attach_defaults(GTK_TABLE(table), widget, 1, 2, row, row + 1); +#endif gtk_entry_set_max_length(GTK_ENTRY(widget), 100); gtk_entry_set_visibility(GTK_ENTRY(widget), FALSE); gfe->priv->password_entry = widget; @@ -447,11 +484,19 @@ static void remmina_file_editor_create_resolution(RemminaFileEditor* gfe, const widget = gtk_label_new(_("Resolution")); gtk_widget_show(widget); gtk_misc_set_alignment(GTK_MISC(widget), 0.0, 0.5); +#if GTK_VERSION == 3 gtk_grid_attach(GTK_GRID(table), widget, 0, row, 1, 1); +#elif GTK_VERSION == 2 + gtk_table_attach(GTK_TABLE(table), widget, 0, 1, row, row + 1, GTK_FILL, 0, 0, 0); +#endif widget = gtk_radio_button_new_with_label(NULL, setting->opt1 ? _("Use window size") : _("Use client resolution")); gtk_widget_show(widget); +#if GTK_VERSION == 3 gtk_grid_attach(GTK_GRID(table), widget, 1, row, 1, 1); +#elif GTK_VERSION == 2 + gtk_table_attach_defaults(GTK_TABLE(table), widget, 1, 2, row, row + 1); +#endif gfe->priv->resolution_auto_radio = widget; #if GTK_VERSION == 3 @@ -460,7 +505,11 @@ static void remmina_file_editor_create_resolution(RemminaFileEditor* gfe, const hbox = gtk_hbox_new (FALSE, 0); #endif gtk_widget_show(hbox); +#if GTK_VERSION == 3 gtk_grid_attach(GTK_GRID(table), hbox, 1, row + 1, 1, 1); +#elif GTK_VERSION == 2 + gtk_table_attach_defaults(GTK_TABLE(table), hbox, 1, 2, row + 1, row + 2); +#endif widget = gtk_radio_button_new_with_label_from_widget(GTK_RADIO_BUTTON(gfe->priv->resolution_auto_radio), _("Custom")); gtk_widget_show(widget); @@ -500,17 +549,25 @@ static GtkWidget* remmina_file_editor_create_text(RemminaFileEditor* gfe, GtkWid widget = gtk_label_new(label); gtk_widget_show(widget); + gtk_misc_set_alignment(GTK_MISC(widget), 0.0, 0.5); +#if GTK_VERSION == 3 #if GTK_CHECK_VERSION(3, 12, 0) gtk_widget_set_margin_end (widget, 40); #else gtk_widget_set_margin_right (widget, 40); #endif - gtk_misc_set_alignment(GTK_MISC(widget), 0.0, 0.5); gtk_grid_attach(GTK_GRID(table), widget, 0, row, 1, 1); +#elif GTK_VERSION == 2 + gtk_table_attach(GTK_TABLE(table), widget, col, col + 1, row, row + 1, GTK_FILL, 0, 0, 0); +#endif widget = gtk_entry_new(); gtk_widget_show(widget); +#if GTK_VERSION == 3 gtk_grid_attach(GTK_GRID(table), widget, 1, row, 1, 1); +#elif GTK_VERSION == 2 + gtk_table_attach(GTK_TABLE(table), widget, col, col + 1, row, row + 1, GTK_FILL, 0, 0, 0); +#endif gtk_entry_set_max_length(GTK_ENTRY(widget), 300); if (value) @@ -527,11 +584,19 @@ static GtkWidget* remmina_file_editor_create_select(RemminaFileEditor* gfe, GtkW widget = gtk_label_new(label); gtk_widget_show(widget); gtk_misc_set_alignment(GTK_MISC(widget), 0.0, 0.5); +#if GTK_VERSION == 3 gtk_grid_attach(GTK_GRID(table), widget, 0, row, 1, 1); +#elif GTK_VERSION == 2 + gtk_table_attach(GTK_TABLE(table), widget, col, col + 1, row, row + 1, GTK_FILL, 0, 0, 0); +#endif widget = remmina_public_create_combo_map(list, value, FALSE, gfe->priv->plugin->domain); gtk_widget_show(widget); +#if GTK_VERSION == 3 gtk_grid_attach(GTK_GRID(table), widget, 1, row, 1, 1); +#elif GTK_VERSION == 2 + gtk_table_attach_defaults(GTK_TABLE(table), widget, col + 1, col + 2, row, row + 1); +#endif return widget; } @@ -544,24 +609,43 @@ static GtkWidget* remmina_file_editor_create_combo(RemminaFileEditor* gfe, GtkWi widget = gtk_label_new(label); gtk_widget_show(widget); gtk_misc_set_alignment(GTK_MISC(widget), 0.0, 0.5); +#if GTK_VERSION == 3 gtk_grid_attach(GTK_GRID(table), widget, 0, row , 1, 1); +#elif GTK_VERSION == 2 + gtk_table_attach(GTK_TABLE(table), widget, col, col + 1, row, row + 1, GTK_FILL, 0, 0, 0); +#endif widget = remmina_public_create_combo_entry(list, value, FALSE); gtk_widget_show(widget); +#if GTK_VERSION == 3 gtk_widget_set_hexpand(widget, TRUE); gtk_grid_attach(GTK_GRID(table), widget, 1, row, 1, 1); +#elif GTK_VERSION == 2 + gtk_table_attach_defaults(GTK_TABLE(table), widget, col + 1, col + 2, row, row + 1); +#endif return widget; } static GtkWidget* remmina_file_editor_create_check(RemminaFileEditor* gfe, GtkWidget* table, - gint row, gint top, const gchar* label, gboolean value) + gint row, gint col, const gchar* label, gboolean value) { GtkWidget* widget; widget = gtk_check_button_new_with_label(label); gtk_widget_show(widget); + +#if GTK_VERSION == 3 gtk_grid_set_row_spacing(GTK_GRID(table), 1); - gtk_grid_attach(GTK_GRID(table), widget, top, row , 1, 1); + gtk_grid_attach(GTK_GRID(table), widget, col, row , 1, 1); +#elif GTK_VERSION == 2 + if (row >= 0) + gtk_table_attach_defaults(GTK_TABLE(table), widget, col, col + 2, row, row + 1); + else + gtk_box_pack_start(GTK_BOX(table), widget, TRUE, TRUE, 10); +#endif + + if (value) + gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(widget), TRUE); if (value) gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(widget), TRUE); @@ -580,7 +664,11 @@ remmina_file_editor_create_chooser(RemminaFileEditor* gfe, GtkWidget* table, gin widget = gtk_label_new(label); gtk_widget_show(widget); gtk_misc_set_alignment(GTK_MISC(widget), 0.0, 0.5); +#if GTK_VERSION == 3 gtk_grid_attach(GTK_GRID(table), widget, 0, row, 1, 1); +#elif GTK_VERSION == 2 + gtk_table_attach(GTK_TABLE(table), widget, col, col + 1, row, row + 1, GTK_FILL, 0, 0, 0); +#endif #if GTK_VERSION == 3 hbox = gtk_box_new(GTK_ORIENTATION_HORIZONTAL, 0); @@ -588,7 +676,11 @@ remmina_file_editor_create_chooser(RemminaFileEditor* gfe, GtkWidget* table, gin hbox = gtk_hbox_new(FALSE, 0); #endif gtk_widget_show(hbox); +#if GTK_VERSION == 3 gtk_grid_attach(GTK_GRID(table), hbox, 1, row, 1, 1); +#elif GTK_VERSION == 2 + gtk_table_attach_defaults(GTK_TABLE(table), hbox, col + 1, col + 2, row, row + 1); +#endif check = gtk_check_button_new(); gtk_widget_show(check); @@ -622,9 +714,6 @@ static void remmina_file_editor_create_settings(RemminaFileEditor* gfe, GtkWidge while (settings->type != REMMINA_PROTOCOL_SETTING_TYPE_END) { - if (settings->compact) - { - } switch (settings->type) { case REMMINA_PROTOCOL_SETTING_TYPE_SERVER: @@ -632,8 +721,12 @@ static void remmina_file_editor_create_settings(RemminaFileEditor* gfe, GtkWidge break; case REMMINA_PROTOCOL_SETTING_TYPE_PASSWORD: +#if GTK_VERSION == 3 remmina_file_editor_create_password(gfe, table, row); row++; +#elif GTK_VERSION == 2 + remmina_file_editor_create_password(gfe, table, row); +#endif break; case REMMINA_PROTOCOL_SETTING_TYPE_RESOLUTION: @@ -643,7 +736,11 @@ static void remmina_file_editor_create_settings(RemminaFileEditor* gfe, GtkWidge case REMMINA_PROTOCOL_SETTING_TYPE_KEYMAP: strarr = remmina_pref_keymap_groups(); +#if GTK_VERSION == 3 + priv->keymap_combo = remmina_file_editor_create_select(gfe, table, row + 1, 0, +#elif GTK_VERSION == 2 priv->keymap_combo = remmina_file_editor_create_select(gfe, table, row + 1, 0, +#endif _("Keyboard mapping"), (const gpointer*) strarr, remmina_file_get_string(priv->remmina_file, "keymap")); g_strfreev(strarr); @@ -654,26 +751,39 @@ static void remmina_file_editor_create_settings(RemminaFileEditor* gfe, GtkWidge widget = gtk_label_new(_("Horizontal scale")); gtk_widget_show(widget); gtk_misc_set_alignment(GTK_MISC(widget), 0.0, 0.5); +#if GTK_VERSION == 3 #if GTK_CHECK_VERSION(3, 12, 0) gtk_widget_set_margin_end (widget, 40); #else gtk_widget_set_margin_right (widget, 40); #endif gtk_grid_attach(GTK_GRID(table), widget, 0, row, 1, row + 1); +#elif GTK_VERSION == 2 + gtk_table_attach(GTK_TABLE(table), widget, 0, 1, row, row + 1, GTK_FILL, 0, 0, 0); +#endif widget = gtk_label_new(_("Vertical scale")); gtk_widget_show(widget); gtk_misc_set_alignment(GTK_MISC(widget), 0.0, 0.5); +#if GTK_VERSION == 3 #if GTK_CHECK_VERSION(3, 12, 0) gtk_widget_set_margin_end (widget, 40); #else gtk_widget_set_margin_right (widget, 40); #endif gtk_grid_attach(GTK_GRID(table), widget, 0, row + 1, 1, row + 2); +#elif GTK_VERSION == 2 + gtk_table_attach(GTK_TABLE(table), widget, 0, 1, row + 1, row + 2, GTK_FILL, 0, 0, 0); +#endif widget = remmina_scaler_new(); gtk_widget_show(widget); +#if GTK_VERSION == 3 gtk_grid_attach(GTK_GRID(table), widget, 1, row, 2, row + 2); +#elif GTK_VERSION == 2 + gtk_table_attach_defaults(GTK_TABLE(table), widget, 1, 2, row, row + 2); +#endif + remmina_scaler_set(REMMINA_SCALER(widget), remmina_file_get_int(priv->remmina_file, "hscale", 0), remmina_file_get_int(priv->remmina_file, "vscale", 0), @@ -684,14 +794,22 @@ static void remmina_file_editor_create_settings(RemminaFileEditor* gfe, GtkWidge break; case REMMINA_PROTOCOL_SETTING_TYPE_TEXT: +#if GTK_VERSION == 3 widget = remmina_file_editor_create_text(gfe, table, row, 0, +#elif GTK_VERSION == 2 + widget = remmina_file_editor_create_text(gfe, table, row + 1, 0, +#endif g_dgettext(priv->plugin->domain, settings->label), remmina_file_get_string(priv->remmina_file, settings->name)); g_hash_table_insert(priv->setting_widgets, (gchar*) settings->name, widget); break; case REMMINA_PROTOCOL_SETTING_TYPE_SELECT: +#if GTK_VERSION == 3 + widget = remmina_file_editor_create_select(gfe, table, row, 0, +#elif GTK_VERSION == 2 widget = remmina_file_editor_create_select(gfe, table, row, 0, +#endif g_dgettext(priv->plugin->domain, settings->label), (const gpointer*) settings->opt1, remmina_file_get_string(priv->remmina_file, settings->name)); @@ -699,7 +817,11 @@ static void remmina_file_editor_create_settings(RemminaFileEditor* gfe, GtkWidge break; case REMMINA_PROTOCOL_SETTING_TYPE_COMBO: +#if GTK_VERSION == 3 + widget = remmina_file_editor_create_combo(gfe, table, row, 0, +#elif GTK_VERSION == 2 widget = remmina_file_editor_create_combo(gfe, table, row, 0, +#endif g_dgettext(priv->plugin->domain, settings->label), (const gchar*) settings->opt1, remmina_file_get_string(priv->remmina_file, settings->name)); @@ -725,7 +847,11 @@ static void remmina_file_editor_create_settings(RemminaFileEditor* gfe, GtkWidge break; case REMMINA_PROTOCOL_SETTING_TYPE_FILE: +#if GTK_VERSION == 3 widget = remmina_file_editor_create_chooser (gfe, table, row, 0, +#elif GTK_VERSION == 2 + widget = remmina_file_editor_create_chooser (gfe, table, row, 0, +#endif g_dgettext (priv->plugin->domain, settings->label), remmina_file_get_string (priv->remmina_file, settings->name), GTK_FILE_CHOOSER_ACTION_OPEN); @@ -733,7 +859,11 @@ static void remmina_file_editor_create_settings(RemminaFileEditor* gfe, GtkWidge break; case REMMINA_PROTOCOL_SETTING_TYPE_FOLDER: +#if GTK_VERSION == 3 + widget = remmina_file_editor_create_chooser (gfe, table, row, 0, +#elif GTK_VERSION == 2 widget = remmina_file_editor_create_chooser (gfe, table, row, 0, +#endif g_dgettext (priv->plugin->domain, settings->label), remmina_file_get_string (priv->remmina_file, settings->name), GTK_FILE_CHOOSER_ACTION_SELECT_FOLDER); @@ -753,6 +883,9 @@ static void remmina_file_editor_create_settings(RemminaFileEditor* gfe, GtkWidge settings++; } +#if GTK_VERSION == 2 + gtk_table_resize(GTK_TABLE(table), row, 2); +#endif } static void remmina_file_editor_create_ssh_tab(RemminaFileEditor* gfe, RemminaProtocolSSHSetting ssh_setting) @@ -788,7 +921,11 @@ static void remmina_file_editor_create_ssh_tab(RemminaFileEditor* gfe, RemminaPr hbox = gtk_hbox_new(FALSE, 0); #endif gtk_widget_show(hbox); +#if GTK_VERSION == 3 gtk_grid_attach (GTK_GRID(table), hbox, 0, 0, 3, 1); +#elif GTK_VERSION == 2 + gtk_table_attach_defaults (GTK_TABLE(table), hbox, 0, 3, 0, 1); +#endif row++; widget = gtk_check_button_new_with_label (_("Enable SSH tunnel")); @@ -814,14 +951,22 @@ static void remmina_file_editor_create_ssh_tab(RemminaFileEditor* gfe, RemminaPr widget = gtk_radio_button_new_with_label (NULL, s); g_free(s); gtk_widget_show(widget); +#if GTK_VERSION == 3 gtk_grid_attach (GTK_GRID(table), widget, 0, row, 3, 1); +#elif GTK_VERSION == 2 + gtk_table_attach_defaults (GTK_TABLE(table), hbox, 0, 3, 0, 1); +#endif priv->ssh_server_default_radio = widget; row++; widget = gtk_radio_button_new_with_label_from_widget ( GTK_RADIO_BUTTON(priv->ssh_server_default_radio), _("Custom")); gtk_widget_show(widget); +#if GTK_VERSION == 3 gtk_grid_attach (GTK_GRID(table), widget, 0, row, 1, 1); +#elif GTK_VERSION == 2 + gtk_table_attach (GTK_TABLE(table), widget, 1, 2, row, row + 1, GTK_FILL, 0, 0, 0); +#endif g_signal_connect(G_OBJECT(widget), "toggled", G_CALLBACK(remmina_file_editor_ssh_server_custom_radio_on_toggled), gfe); priv->ssh_server_custom_radio = widget; @@ -830,7 +975,11 @@ static void remmina_file_editor_create_ssh_tab(RemminaFileEditor* gfe, RemminaPr gtk_widget_show(widget); gtk_entry_set_max_length (GTK_ENTRY(widget), 100); gtk_widget_set_tooltip_markup (widget, _(server_tips2)); +#if GTK_VERSION == 3 gtk_grid_attach (GTK_GRID(table), widget, 1, row, 2, 1); +#elif GTK_VERSION == 2 + gtk_table_attach_defaults (GTK_TABLE(table), widget, 2, 3, row, row + 1); +#endif priv->ssh_server_entry = widget; row++; break; @@ -839,7 +988,11 @@ static void remmina_file_editor_create_ssh_tab(RemminaFileEditor* gfe, RemminaPr priv->ssh_server_default_radio = NULL; priv->ssh_server_custom_radio = NULL; +#if GTK_VERSION == 3 priv->ssh_server_entry = remmina_file_editor_create_text (gfe, table, 1, 0, +#elif GTK_VERSION == 2 + priv->ssh_server_entry = remmina_file_editor_create_text (gfe, table, row, 1, +#endif _("Server"), NULL); gtk_widget_set_tooltip_markup (priv->ssh_server_entry, _(server_tips)); row++; @@ -852,7 +1005,11 @@ static void remmina_file_editor_create_ssh_tab(RemminaFileEditor* gfe, RemminaPr priv->ssh_server_entry = NULL; s = remmina_pref_get_recent ("SFTP"); +#if GTK_VERSION == 3 priv->server_combo = remmina_file_editor_create_combo (gfe, table, row + 1, 1, +#elif GTK_VERSION == 2 + priv->server_combo = remmina_file_editor_create_combo (gfe, table, row, 1, +#endif _("Server"), s, remmina_file_get_string (priv->remmina_file, "server")); gtk_widget_set_tooltip_markup (priv->server_combo, _(server_tips)); gtk_entry_set_activates_default (GTK_ENTRY(gtk_bin_get_child (GTK_BIN (priv->server_combo))), TRUE); @@ -864,13 +1021,21 @@ static void remmina_file_editor_create_ssh_tab(RemminaFileEditor* gfe, RemminaPr break; } +#if GTK_VERSION == 3 priv->ssh_charset_combo = remmina_file_editor_create_combo (gfe, table, row + 3, 0, +#elif GTK_VERSION == 2 + priv->ssh_charset_combo = remmina_file_editor_create_combo (gfe, table, row, 1, +#endif _("Character set"), charset_list, remmina_file_get_string (priv->remmina_file, "ssh_charset")); row++; if (ssh_setting == REMMINA_PROTOCOL_SSH_SETTING_SSH) { +#if GTK_VERSION == 3 widget = remmina_file_editor_create_text (gfe, table, row + 7, 1, +#elif GTK_VERSION == 2 + widget = remmina_file_editor_create_text (gfe, table, row, 1, +#endif _("Startup program"), NULL); cs = remmina_file_get_string (priv->remmina_file, "exec"); gtk_entry_set_text(GTK_ENTRY(widget), cs ? cs : ""); @@ -879,7 +1044,11 @@ static void remmina_file_editor_create_ssh_tab(RemminaFileEditor* gfe, RemminaPr } else if (ssh_setting == REMMINA_PROTOCOL_SSH_SETTING_SFTP) { +#if GTK_VERSION == 3 widget = remmina_file_editor_create_text (gfe, table, row + 8, 1, +#elif GTK_VERSION == 2 + widget = remmina_file_editor_create_text (gfe, table, row, 1, +#endif _("Startup path"), NULL); cs = remmina_file_get_string (priv->remmina_file, "execpath"); gtk_entry_set_text(GTK_ENTRY(widget), cs ? cs : ""); @@ -888,27 +1057,47 @@ static void remmina_file_editor_create_ssh_tab(RemminaFileEditor* gfe, RemminaPr } /* SSH Authentication frame */ +#if GTK_VERSION == 3 remmina_public_create_group (GTK_GRID(table), _("SSH Authentication"), row + 8, 5, 1); +#elif GTK_VERSION == 2 + remmina_public_create_group (GTK_TABLE(table), _("SSH Authentication"), row, 5, 3); +#endif row++; - + +#if GTK_VERSION == 3 priv->ssh_username_entry = remmina_file_editor_create_text (gfe, table, row + 10, 0, +#elif GTK_VERSION == 2 + priv->ssh_username_entry = remmina_file_editor_create_text (gfe, table, row, 1, +#endif _("User name"), NULL); row++; widget = gtk_radio_button_new_with_label (NULL, _("Password")); gtk_widget_show(widget); - gtk_grid_attach (GTK_GRID(table), widget, 0, row + 19, 1, 1); +#if GTK_VERSION == 3 + gtk_grid_attach (GTK_GRID(table), widget, 1, row + 19, 1, 1); +#elif GTK_VERSION == 2 + gtk_table_attach_defaults (GTK_TABLE(table), widget, 1, 3, row, row + 1); +#endif priv->ssh_auth_password_radio = widget; row++; widget = gtk_radio_button_new_with_label_from_widget ( GTK_RADIO_BUTTON(priv->ssh_auth_password_radio), _("Public key (automatic)")); gtk_widget_show(widget); +#if GTK_VERSION == 3 gtk_grid_attach (GTK_GRID(table), widget, 0, row + 20, 1, 1); +#elif GTK_VERSION == 2 + gtk_table_attach_defaults (GTK_TABLE(table), widget, 1, 3, row, row + 1); +#endif priv->ssh_auth_auto_publickey_radio = widget; row++; +#if GTK_VERSION == 3 remmina_file_editor_create_ssh_privatekey (gfe, table, row + 1, 0); +#elif GTK_VERSION == 2 + remmina_file_editor_create_ssh_privatekey (gfe, table, row, 1); +#endif row++; /* Set the values */ @@ -1314,12 +1503,7 @@ GtkWidget* remmina_file_editor_new_from_file(RemminaFile* remminafile) { RemminaFileEditor* gfe; RemminaFileEditorPriv* priv; - /* antenore - 2014/09 - * IMPORTANT - The code has been migrated from GtkTable to GtkGrid - * but I didn't rename row, column and table to top, left and grid. - * This is indeed an important step and it should be done soon or later to - * avoid confusion. - */ + GtkWidget* table; GtkWidget* widget; gchar* groups; @@ -1336,26 +1520,47 @@ GtkWidget* remmina_file_editor_new_from_file(RemminaFile* remminafile) } /* Create the Profile group on the top (for name and protocol) */ +#if GTK_VERSION == 3 table = gtk_grid_new(); +#elif GTK_VERSION == 2 + table = gtk_table_new(4, 3, FALSE); +#endif gtk_widget_show(table); +#if GTK_VERSION == 3 gtk_grid_set_row_spacing(GTK_GRID(table), 4); gtk_grid_set_column_spacing(GTK_GRID(table), 8); gtk_grid_set_column_homogeneous (GTK_GRID(table), TRUE); +#elif GTK_VERSION == 2 + gtk_table_set_row_spacings(GTK_TABLE(table), 4); + gtk_table_set_col_spacings(GTK_TABLE(table), 8); +#endif gtk_container_set_border_width(GTK_CONTAINER(table), 8); gtk_box_pack_start(GTK_BOX(gtk_dialog_get_content_area(GTK_DIALOG(gfe))), table, FALSE, FALSE, 2); +#if GTK_VERSION == 3 remmina_public_create_group(GTK_GRID(table), _("Profile"), 0, 4, 3); +#elif GTK_VERSION == 2 + remmina_public_create_group(GTK_CONTAINER(table), _("Profile"), 0, 4, 3); +#endif /* Profile: Name */ widget = gtk_label_new(_("Name")); gtk_widget_show(widget); gtk_misc_set_alignment(GTK_MISC(widget), 0.0, 0.5); +#if GTK_VERSION == 3 gtk_grid_attach(GTK_GRID(table), widget, 0, 3, 2, 1); - gtk_grid_set_column_spacing (GTK_GRID(table), 10); + gtk_grid_set_column_spacing (GTK_GRID(table), 10); +#elif GTK_VERSION == 2 + gtk_table_attach(GTK_TABLE(table), widget, 1, 2, 1, 2, GTK_FILL, 0, 0, 0); +#endif widget = gtk_entry_new(); gtk_widget_show(widget); +#if GTK_VERSION == 3 gtk_grid_attach(GTK_GRID(table), widget, 1, 3, 3, 1); +#elif GTK_VERSION == 2 + gtk_table_attach_defaults(GTK_TABLE(table), widget, 2, 3, 1, 2); +#endif gtk_entry_set_max_length(GTK_ENTRY(widget), 100); priv->name_entry = widget; @@ -1374,13 +1579,21 @@ GtkWidget* remmina_file_editor_new_from_file(RemminaFile* remminafile) widget = gtk_label_new(_("Group")); gtk_widget_show(widget); gtk_misc_set_alignment(GTK_MISC(widget), 0.0, 0.5); +#if GTK_VERSION == 3 gtk_grid_attach(GTK_GRID(table), widget, 0, 6, 2, 1); +#elif GTK_VERSION == 2 + gtk_table_attach(GTK_TABLE(table), widget, 1, 2, 2, 3, GTK_FILL, 0, 0, 0); +#endif groups = remmina_file_manager_get_groups(); priv->group_combo = remmina_public_create_combo_entry(groups, remmina_file_get_string(remminafile, "group"), FALSE); g_free(groups); gtk_widget_show(priv->group_combo); +#if GTK_VERSION == 3 gtk_grid_attach(GTK_GRID(table), priv->group_combo, 1, 6, 3, 1); +#elif GTK_VERSION == 2 + gtk_table_attach_defaults(GTK_TABLE(table), priv->group_combo, 2, 3, 2, 3); +#endif gtk_widget_set_sensitive(priv->group_combo, FALSE); s = g_strdup_printf(_("Use '%s' as subgroup delimiter"), "/"); @@ -1391,11 +1604,19 @@ GtkWidget* remmina_file_editor_new_from_file(RemminaFile* remminafile) widget = gtk_label_new(_("Protocol")); gtk_widget_show(widget); gtk_misc_set_alignment(GTK_MISC(widget), 0.0, 0.5); +#if GTK_VERSION == 3 gtk_grid_attach(GTK_GRID(table), widget, 0, 9, 2, 1); +#elif GTK_VERSION == 2 + gtk_table_attach(GTK_TABLE(table), widget, 1, 2, 3, 4, GTK_FILL, 0, 0, 0); +#endif widget = remmina_public_create_combo(TRUE); gtk_widget_show(widget); +#if GTK_VERSION == 3 gtk_grid_attach(GTK_GRID(table), widget, 1, 9, 3, 1); +#elif GTK_VERSION == 2 + gtk_table_attach_defaults(GTK_TABLE(table), widget, 2, 3, 3, 4); +#endif priv->protocol_combo = widget; remmina_plugin_manager_for_each_plugin(REMMINA_PLUGIN_TYPE_PROTOCOL, remmina_file_editor_iterate_protocol, gfe); g_signal_connect(G_OBJECT(widget), "changed", G_CALLBACK(remmina_file_editor_protocol_combo_on_changed), gfe); @@ -1472,4 +1693,3 @@ GtkWidget* remmina_file_editor_new_from_filename(const gchar* filename) return NULL; } } -// vim:noet:ci:pi:sts=0:sw=4:ts=4 diff --git a/remmina/src/remmina_ftp_client.c b/remmina/src/remmina_ftp_client.c index 48c2e8542..b5c014b6d 100644 --- a/remmina/src/remmina_ftp_client.c +++ b/remmina/src/remmina_ftp_client.c @@ -665,21 +665,39 @@ static void remmina_ftp_client_popup_menu(RemminaFTPClient *client, GdkEventButt menu = gtk_menu_new(); +#if GTK_VERSION == 3 menuitem = gtk_menu_item_new_with_label(_("Download")); +#else + menuitem = gtk_image_menu_item_new_with_label(_("Download")); +#endif gtk_widget_show(menuitem); image = gtk_image_new_from_icon_name("document-save", GTK_ICON_SIZE_MENU); gtk_widget_show(image); +#if GTK_VERSION == 2 + gtk_image_menu_item_set_image(GTK_IMAGE_MENU_ITEM(menuitem), image); +#endif gtk_menu_shell_append(GTK_MENU_SHELL(menu), menuitem); g_signal_connect(G_OBJECT(menuitem), "activate", G_CALLBACK(remmina_ftp_client_action_download), client); +#if GTK_VERSION == 3 menuitem = gtk_menu_item_new_with_label(_("Upload")); +#else + menuitem = gtk_image_menu_item_new_with_label(_("Upload")); +#endif gtk_widget_show(menuitem); image = gtk_image_new_from_icon_name("document-send", GTK_ICON_SIZE_MENU); gtk_widget_show(image); +#if GTK_VERSION == 2 + gtk_image_menu_item_set_image(GTK_IMAGE_MENU_ITEM(menuitem), image); +#endif gtk_menu_shell_append(GTK_MENU_SHELL(menu), menuitem); g_signal_connect(G_OBJECT(menuitem), "activate", G_CALLBACK(remmina_ftp_client_action_upload), client); +#if GTK_VERSION == 2 + menuitem = gtk_image_menu_item_new_from_stock(GTK_STOCK_DELETE, NULL); +#else menuitem = gtk_menu_item_new_with_mnemonic(_("_Delete")); +#endif gtk_widget_show(menuitem); gtk_menu_shell_append(GTK_MENU_SHELL(menu), menuitem); g_signal_connect(G_OBJECT(menuitem), "activate", G_CALLBACK(remmina_ftp_client_action_delete), client); diff --git a/remmina/src/remmina_icon.c b/remmina/src/remmina_icon.c index c8ebf0ea8..f3a03ea8a 100644 --- a/remmina/src/remmina_icon.c +++ b/remmina/src/remmina_icon.c @@ -124,17 +124,33 @@ static void remmina_icon_populate_additional_menu_item(GtkWidget *menu) { GtkWidget *menuitem; +#if GTK_VERSION == 3 menuitem = gtk_menu_item_new_with_label(_("Open Main Window")); +#else + menuitem = gtk_image_menu_item_new_with_label(_("Open Main Window")); +#endif gtk_widget_show(menuitem); +#if GTK_VERSION == 2 + gtk_image_menu_item_set_image(GTK_IMAGE_MENU_ITEM(menuitem), + gtk_image_new_from_icon_name("remmina", GTK_ICON_SIZE_MENU)); +#endif gtk_menu_shell_append(GTK_MENU_SHELL(menu), menuitem); g_signal_connect(G_OBJECT(menuitem), "activate", G_CALLBACK(remmina_icon_main), NULL); +#if GTK_VERSION == 2 + menuitem = gtk_image_menu_item_new_from_stock(GTK_STOCK_PREFERENCES, NULL); +#else menuitem = gtk_menu_item_new_with_mnemonic(_("_Preferences")); +#endif gtk_widget_show(menuitem); gtk_menu_shell_append(GTK_MENU_SHELL(menu), menuitem); g_signal_connect(G_OBJECT(menuitem), "activate", G_CALLBACK(remmina_icon_preferences), NULL); +#if GTK_VERSION == 2 + menuitem = gtk_image_menu_item_new_from_stock(GTK_STOCK_ABOUT, NULL); +#else menuitem = gtk_menu_item_new_with_mnemonic(_("_About")); +#endif gtk_widget_show(menuitem); gtk_menu_shell_append(GTK_MENU_SHELL(menu), menuitem); g_signal_connect(G_OBJECT(menuitem), "activate", G_CALLBACK(remmina_icon_about), NULL); @@ -158,7 +174,11 @@ static void remmina_icon_populate_additional_menu_item(GtkWidget *menu) gtk_menu_shell_append(GTK_MENU_SHELL(menu), menuitem); #endif +#if GTK_VERSION == 2 + menuitem = gtk_image_menu_item_new_from_stock(GTK_STOCK_QUIT, NULL); +#else menuitem = gtk_menu_item_new_with_mnemonic(_("_Quit")); +#endif gtk_widget_show(menuitem); gtk_menu_shell_append(GTK_MENU_SHELL(menu), menuitem); g_signal_connect(G_OBJECT(menuitem), "activate", G_CALLBACK(remmina_icon_destroy), NULL); @@ -242,7 +262,9 @@ static void remmina_icon_populate_extra_menu_item(GtkWidget *menu) gboolean new_ontop; GHashTableIter iter; gchar *tmp; +#ifdef ENABLE_MINIMIZE_TO_TRAY gint n; +#endif new_ontop = remmina_pref.applet_new_ontop; diff --git a/remmina/src/remmina_init_dialog.c b/remmina/src/remmina_init_dialog.c index b5c5ccc9c..e74e017a9 100644 --- a/remmina/src/remmina_init_dialog.c +++ b/remmina/src/remmina_init_dialog.c @@ -184,9 +184,37 @@ void remmina_init_dialog_set_status_temp(RemminaInitDialog *dialog, const gchar } } +static GtkWidget* remmina_init_dialog_container_new(guint table_rows, guint table_columns, gboolean homogeneous) +{ + GtkWidget *table; +#if GTK_VERSION == 3 + table = gtk_grid_new(); + gtk_widget_show(table); + gtk_grid_set_row_spacing(GTK_GRID(table), 8); + gtk_grid_set_column_spacing(GTK_GRID(table), 8); + gtk_grid_set_column_homogeneous (GTK_GRID(table), homogeneous); +#elif GTK_VERSION == 2 + table = gtk_table_new(table_rows, table_columns, homogeneous); + gtk_widget_show(table); + gtk_table_set_row_spacings(GTK_TABLE(table), 8); + gtk_table_set_col_spacings(GTK_TABLE(table), 8); +#endif + return table; +} + +static void remmina_init_dialog_attach(GtkWidget *table, GtkWidget *widget, gint left, gint top, gint width, gint height) +{ +#if GTK_VERSION == 3 + gtk_grid_attach(GTK_GRID(table), widget, left, top, width, height); +#elif GTK_VERSION == 2 + // guint left_attach, guint right_attach, guint top_attach,guint bottom_attach + gtk_table_attach_defaults(GTK_TABLE(table), widget, left, left+width, top, top+height); +#endif +} + gint remmina_init_dialog_authpwd(RemminaInitDialog *dialog, const gchar *label, gboolean allow_save) { - GtkGrid *table; + GtkWidget *table; GtkWidget *password_entry; GtkWidget *save_password_check; GtkWidget *widget; @@ -195,11 +223,8 @@ gint remmina_init_dialog_authpwd(RemminaInitDialog *dialog, const gchar *label, gtk_label_set_text(GTK_LABEL(dialog->status_label), (dialog->status ? dialog->status : dialog->title)); - /* Create grid (was a table) */ - table = gtk_grid_new(); - gtk_widget_show(table); - gtk_grid_set_row_spacing(GTK_GRID(table), 8); - gtk_grid_set_column_spacing(GTK_GRID(table), 8); + /* Create grid or table */ + table = remmina_init_dialog_container_new(2, 2, FALSE); /* Icon */ gtk_image_set_from_stock(GTK_IMAGE(dialog->image), GTK_STOCK_DIALOG_AUTHENTICATION, GTK_ICON_SIZE_DIALOG); @@ -208,11 +233,11 @@ gint remmina_init_dialog_authpwd(RemminaInitDialog *dialog, const gchar *label, widget = gtk_label_new(label); gtk_misc_set_alignment(GTK_MISC(widget), 0.0, 0.5); gtk_widget_show(widget); - gtk_grid_attach(GTK_GRID(table), widget, 0, 0, 1, 1); + remmina_init_dialog_attach(table, widget, 0, 0, 1, 1); password_entry = gtk_entry_new(); gtk_widget_show(password_entry); - gtk_grid_attach(GTK_GRID(table), password_entry, 1, 0, 2, 1); + remmina_init_dialog_attach(table, password_entry, 1, 0, 2, 1); gtk_entry_set_max_length(GTK_ENTRY(password_entry), 100); gtk_entry_set_visibility(GTK_ENTRY(password_entry), FALSE); gtk_entry_set_activates_default(GTK_ENTRY(password_entry), TRUE); @@ -221,7 +246,7 @@ gint remmina_init_dialog_authpwd(RemminaInitDialog *dialog, const gchar *label, save_password_check = gtk_check_button_new_with_label(s); g_free(s); gtk_widget_show(save_password_check); - gtk_grid_attach(GTK_GRID(table), save_password_check, 0, 1, 2, 1); + remmina_init_dialog_attach(table, save_password_check, 0, 1, 2, 1); if (allow_save) { if (dialog->save_password) @@ -260,7 +285,7 @@ gint remmina_init_dialog_authpwd(RemminaInitDialog *dialog, const gchar *label, gint remmina_init_dialog_authuserpwd(RemminaInitDialog *dialog, gboolean want_domain, const gchar *default_username, const gchar *default_domain, gboolean allow_save) { - GtkGrid *table; + GtkWidget *table; GtkWidget *username_entry; GtkWidget *password_entry; GtkWidget *domain_entry = NULL; @@ -271,11 +296,7 @@ gint remmina_init_dialog_authuserpwd(RemminaInitDialog *dialog, gboolean want_do gtk_label_set_text(GTK_LABEL(dialog->status_label), (dialog->status ? dialog->status : dialog->title)); /* Create table */ - table = gtk_grid_new(); - gtk_widget_show(table); - gtk_grid_set_row_spacing(GTK_GRID(table), 8); - gtk_grid_set_column_spacing(GTK_GRID(table), 8); - gtk_grid_set_column_homogeneous (GTK_GRID(table), TRUE); + table = remmina_init_dialog_container_new(4, 2, TRUE); /* Icon */ gtk_image_set_from_stock(GTK_IMAGE(dialog->image), GTK_STOCK_DIALOG_AUTHENTICATION, GTK_ICON_SIZE_DIALOG); @@ -284,11 +305,11 @@ gint remmina_init_dialog_authuserpwd(RemminaInitDialog *dialog, gboolean want_do widget = gtk_label_new(_("User name")); gtk_misc_set_alignment(GTK_MISC(widget), 0.0, 0.5); gtk_widget_show(widget); - gtk_grid_attach(GTK_GRID(table), widget, 0, 0, 1, 1); + remmina_init_dialog_attach(table, widget, 0, 0, 1, 1); username_entry = gtk_entry_new(); gtk_widget_show(username_entry); - gtk_grid_attach(GTK_GRID(table), username_entry, 1, 0, 2, 1); + remmina_init_dialog_attach(table, username_entry, 1, 0, 2, 1); gtk_entry_set_max_length(GTK_ENTRY(username_entry), 100); if (default_username && default_username[0] != '\0') { @@ -298,26 +319,25 @@ gint remmina_init_dialog_authuserpwd(RemminaInitDialog *dialog, gboolean want_do widget = gtk_label_new(_("Password")); gtk_misc_set_alignment(GTK_MISC(widget), 0.0, 0.5); gtk_widget_show(widget); - gtk_grid_attach(GTK_GRID(table), widget, 0, 2, 1, 1); + remmina_init_dialog_attach(table, widget, 0, 2, 1, 1); password_entry = gtk_entry_new(); gtk_widget_show(password_entry); - gtk_grid_attach(GTK_GRID(table), password_entry, 1, 2, 2, 1); + remmina_init_dialog_attach(table, password_entry, 1, 2, 2, 1); gtk_entry_set_max_length(GTK_ENTRY(password_entry), 100); gtk_entry_set_visibility(GTK_ENTRY(password_entry), FALSE); gtk_entry_set_activates_default(GTK_ENTRY(password_entry), TRUE); - if (want_domain) { widget = gtk_label_new(_("Domain")); gtk_misc_set_alignment(GTK_MISC(widget), 0.0, 0.5); gtk_widget_show(widget); - gtk_grid_attach(GTK_GRID(table), widget, 0, 3, 1, 1); + remmina_init_dialog_attach(table, widget, 0, 3, 1, 1); domain_entry = gtk_entry_new(); gtk_widget_show(domain_entry); - gtk_grid_attach(GTK_GRID(table), domain_entry, 1, 3, 2, 1); + remmina_init_dialog_attach(table, domain_entry, 1, 3, 2, 1); gtk_entry_set_max_length(GTK_ENTRY(domain_entry), 100); if (default_domain && default_domain[0] != '\0') { @@ -327,7 +347,7 @@ gint remmina_init_dialog_authuserpwd(RemminaInitDialog *dialog, gboolean want_do save_password_check = gtk_check_button_new_with_label(_("Save password")); gtk_widget_show(save_password_check); - gtk_grid_attach(GTK_GRID(table), save_password_check, 0, 4, 2, 3); + remmina_init_dialog_attach(table, save_password_check, 0, 4, 2, 3); if (allow_save) { if (dialog->save_password) @@ -383,11 +403,7 @@ gint remmina_init_dialog_certificate(RemminaInitDialog* dialog, const gchar* sub gtk_label_set_text(GTK_LABEL(dialog->status_label), _("Certificate Details:")); /* Create table */ - table = gtk_grid_new(); - gtk_widget_show(table); - gtk_grid_set_row_spacing(GTK_GRID(table), 8); - gtk_grid_set_column_spacing(GTK_GRID(table), 8); - //gtk_grid_set_column_homogeneous (GTK_GRID(table), TRUE); + table = remmina_init_dialog_container_new(5, 2, FALSE); /* Icon */ gtk_image_set_from_stock(GTK_IMAGE(dialog->image), GTK_STOCK_DIALOG_AUTHENTICATION, GTK_ICON_SIZE_DIALOG); @@ -396,32 +412,32 @@ gint remmina_init_dialog_certificate(RemminaInitDialog* dialog, const gchar* sub widget = gtk_label_new(_("Subject:")); gtk_misc_set_alignment(GTK_MISC(widget), 0.0, 0.5); gtk_widget_show(widget); - gtk_grid_attach(GTK_GRID(table), widget, 0, 0, 1, 1); + remmina_init_dialog_attach(table, widget, 0, 0, 1, 1); widget = gtk_label_new(subject); gtk_misc_set_alignment(GTK_MISC(widget), 0.0, 0.5); gtk_widget_show(widget); - gtk_grid_attach(GTK_GRID(table), widget, 1, 0, 2, 1); + remmina_init_dialog_attach(table, widget, 1, 0, 2, 1); widget = gtk_label_new(_("Issuer:")); gtk_misc_set_alignment(GTK_MISC(widget), 0.0, 0.5); gtk_widget_show(widget); - gtk_grid_attach(GTK_GRID(table), widget, 0, 1, 1, 1); + remmina_init_dialog_attach(table, widget, 0, 1, 1, 1); widget = gtk_label_new(issuer); gtk_misc_set_alignment(GTK_MISC(widget), 0.0, 0.5); gtk_widget_show(widget); - gtk_grid_attach(GTK_GRID(table), widget, 1, 1, 2, 1); + remmina_init_dialog_attach(table, widget, 1, 1, 2, 1); widget = gtk_label_new(_("Fingerprint:")); gtk_misc_set_alignment(GTK_MISC(widget), 0.0, 0.5); gtk_widget_show(widget); - gtk_grid_attach(GTK_GRID(table), widget, 0, 2, 1, 1); + remmina_init_dialog_attach(table, widget, 0, 2, 1, 1); widget = gtk_label_new(fingerprint); gtk_misc_set_alignment(GTK_MISC(widget), 0.0, 0.5); gtk_widget_show(widget); - gtk_grid_attach(GTK_GRID(table), widget, 1, 2, 2, 1); + remmina_init_dialog_attach(table, widget, 1, 2, 2, 1); widget = gtk_label_new (NULL); s = g_strdup_printf("<span size=\"large\"><b>%s</b></span>", _("Accept Certificate?")); @@ -429,7 +445,7 @@ gint remmina_init_dialog_certificate(RemminaInitDialog* dialog, const gchar* sub g_free(s); gtk_misc_set_alignment(GTK_MISC(widget), 0.5, 0.5); gtk_widget_show(widget); - gtk_grid_attach(GTK_GRID(table), widget, 0, 3, 3, 1); + remmina_init_dialog_attach(table, widget, 0, 3, 3, 1); /* Pack it into the dialog */ gtk_box_pack_start(GTK_BOX(dialog->content_vbox), table, TRUE, TRUE, 4); @@ -450,6 +466,7 @@ gint remmina_init_dialog_certificate(RemminaInitDialog* dialog, const gchar* sub return status; } + gint remmina_init_dialog_certificate_changed(RemminaInitDialog* dialog, const gchar* subject, const gchar* issuer, const gchar* new_fingerprint, const gchar* old_fingerprint) { gint status; @@ -460,10 +477,7 @@ gint remmina_init_dialog_certificate_changed(RemminaInitDialog* dialog, const gc gtk_label_set_text(GTK_LABEL(dialog->status_label), _("Certificate Changed! Details:")); /* Create table */ - table = gtk_grid_new(); - gtk_widget_show(table); - gtk_grid_set_row_spacing(GTK_GRID(table), 8); - gtk_grid_set_column_spacing(GTK_GRID(table), 8); + table = remmina_init_dialog_container_new(6, 2, FALSE); /* Icon */ gtk_image_set_from_stock(GTK_IMAGE(dialog->image), GTK_STOCK_DIALOG_AUTHENTICATION, GTK_ICON_SIZE_DIALOG); @@ -473,43 +487,43 @@ gint remmina_init_dialog_certificate_changed(RemminaInitDialog* dialog, const gc widget = gtk_label_new(_("Subject:")); gtk_misc_set_alignment(GTK_MISC(widget), 0.0, 0.5); gtk_widget_show(widget); - gtk_grid_attach(GTK_GRID(table), widget, 0, 0, 1, 1); + remmina_init_dialog_attach(table, widget, 0, 0, 1, 1); widget = gtk_label_new(subject); gtk_misc_set_alignment(GTK_MISC(widget), 0.0, 0.5); gtk_widget_show(widget); - gtk_grid_attach(GTK_GRID(table), widget, 1, 0, 2, 1); + remmina_init_dialog_attach(table, widget, 1, 0, 2, 1); widget = gtk_label_new(_("Issuer:")); gtk_misc_set_alignment(GTK_MISC(widget), 0.0, 0.5); gtk_widget_show(widget); - gtk_grid_attach(GTK_GRID(table), widget, 0, 1, 1, 1); + remmina_init_dialog_attach(table, widget, 0, 1, 1, 1); widget = gtk_label_new(issuer); gtk_misc_set_alignment(GTK_MISC(widget), 0.0, 0.5); gtk_widget_show(widget); - gtk_grid_attach(GTK_GRID(table), widget, 1, 1, 2, 1); + remmina_init_dialog_attach(table, widget, 1, 1, 2, 1); widget = gtk_label_new(_("Old Fingerprint:")); gtk_misc_set_alignment(GTK_MISC(widget), 0.0, 0.5); gtk_widget_show(widget); - gtk_grid_attach(GTK_GRID(table), widget, 0, 2, 1, 1); + remmina_init_dialog_attach(table, widget, 0, 2, 1, 1); widget = gtk_label_new(old_fingerprint); gtk_misc_set_alignment(GTK_MISC(widget), 0.0, 0.5); gtk_widget_show(widget); - gtk_grid_attach(GTK_GRID(table), widget, 1, 2, 2, 1); + remmina_init_dialog_attach(table, widget, 1, 2, 2, 1); widget = gtk_label_new(_("New Fingerprint:")); gtk_misc_set_alignment(GTK_MISC(widget), 0.0, 0.5); gtk_widget_show(widget); - gtk_grid_attach(GTK_GRID(table), widget, 0, 3, 1, 1); + remmina_init_dialog_attach(table, widget, 0, 3, 1, 1); widget = gtk_label_new(new_fingerprint); gtk_misc_set_alignment(GTK_MISC(widget), 0.0, 0.5); gtk_widget_show(widget); - gtk_grid_attach(GTK_GRID(table), widget, 1, 3, 2, 1); + remmina_init_dialog_attach(table, widget, 1, 3, 2, 1); widget = gtk_label_new (NULL); s = g_strdup_printf("<span size=\"large\"><b>%s</b></span>", _("Accept Changed Certificate?")); @@ -517,7 +531,7 @@ gint remmina_init_dialog_certificate_changed(RemminaInitDialog* dialog, const gc g_free(s); gtk_misc_set_alignment(GTK_MISC(widget), 0.5, 0.5); gtk_widget_show(widget); - gtk_grid_attach(GTK_GRID(table), widget, 0, 4, 3, 1); + remmina_init_dialog_attach(table, widget, 0, 4, 3, 1); /* Pack it into the dialog */ gtk_box_pack_start(GTK_BOX(dialog->content_vbox), table, TRUE, TRUE, 4); @@ -539,8 +553,7 @@ gint remmina_init_dialog_certificate_changed(RemminaInitDialog* dialog, const gc return status; } -/* NOT TESTED */ -static GtkWidget* remmina_init_dialog_create_file_button(GtkTable *table, const gchar *label, gint row, const gchar *filename) +static GtkWidget* remmina_init_dialog_create_file_button(GtkWidget *table, const gchar *label, gint row, const gchar *filename) { GtkWidget *widget; gchar *pkidir; @@ -548,12 +561,12 @@ static GtkWidget* remmina_init_dialog_create_file_button(GtkTable *table, const widget = gtk_label_new(label); gtk_misc_set_alignment(GTK_MISC(widget), 0.0, 0.5); gtk_widget_show(widget); - gtk_grid_attach(table, widget, 0, row, 1, row + 1); + remmina_init_dialog_attach(table, widget, 0, row, 1, row + 1); widget = gtk_file_chooser_button_new(label, GTK_FILE_CHOOSER_ACTION_OPEN); gtk_file_chooser_button_set_width_chars(GTK_FILE_CHOOSER_BUTTON(widget), 25); gtk_widget_show(widget); - gtk_grid_attach(table, widget, 1, row, 2, row + 1); + remmina_init_dialog_attach(table, widget, 1, row, 2, row + 1); if (filename && filename[0] != '\0') { gtk_file_chooser_set_filename(GTK_FILE_CHOOSER(widget), filename); @@ -574,7 +587,7 @@ static GtkWidget* remmina_init_dialog_create_file_button(GtkTable *table, const gint remmina_init_dialog_authx509(RemminaInitDialog *dialog, const gchar *cacert, const gchar *cacrl, const gchar *clientcert, const gchar *clientkey) { - GtkGrid *table; + GtkWidget *table; GtkWidget *cacert_button; GtkWidget *cacrl_button; GtkWidget *clientcert_button; @@ -584,19 +597,16 @@ gint remmina_init_dialog_authx509(RemminaInitDialog *dialog, const gchar *cacert gtk_label_set_text(GTK_LABEL(dialog->status_label), (dialog->status ? dialog->status : dialog->title)); /* Create table */ - table = gtk_grid_new(); - gtk_widget_show(table); - gtk_grid_set_row_spacing(GTK_GRID(table), 8); - gtk_grid_set_column_spacing(GTK_GRID(table), 8); + table = remmina_init_dialog_container_new(4, 2, FALSE); /* Icon */ gtk_image_set_from_stock(GTK_IMAGE(dialog->image), GTK_STOCK_DIALOG_AUTHENTICATION, GTK_ICON_SIZE_DIALOG); /* Buttons for choosing the certificates */ - cacert_button = remmina_init_dialog_create_file_button(GTK_GRID(table), _("CA certificate"), 0, cacert); - cacrl_button = remmina_init_dialog_create_file_button(GTK_GRID(table), _("CA CRL"), 1, cacrl); - clientcert_button = remmina_init_dialog_create_file_button(GTK_GRID(table), _("Client certificate"), 2, clientcert); - clientkey_button = remmina_init_dialog_create_file_button(GTK_GRID(table), _("Client key"), 3, clientkey); + cacert_button = remmina_init_dialog_create_file_button(table, _("CA certificate"), 0, cacert); + cacrl_button = remmina_init_dialog_create_file_button(table, _("CA CRL"), 1, cacrl); + clientcert_button = remmina_init_dialog_create_file_button(table, _("Client certificate"), 2, clientcert); + clientkey_button = remmina_init_dialog_create_file_button(table, _("Client key"), 3, clientkey); /* Pack it into the dialog */ gtk_box_pack_start(GTK_BOX(dialog->content_vbox), table, TRUE, TRUE, 4); @@ -684,4 +694,3 @@ gint remmina_init_dialog_serverkey_changed(RemminaInitDialog *dialog, const gcha _("WARNING: The server has changed its public key. This means either you are under attack,\n" "or the administrator has changed the key. The new public key fingerprint is:")); } - diff --git a/remmina/src/remmina_main.c b/remmina/src/remmina_main.c index 92e23c835..e4ae7af48 100644 --- a/remmina/src/remmina_main.c +++ b/remmina/src/remmina_main.c @@ -767,7 +767,7 @@ static void remmina_main_action_tools_addition(GtkAction *action, RemminaMain *r { RemminaToolPlugin *plugin; - plugin = (RemminaToolPlugin *) remmina_plugin_manager_get_plugin(REMMINA_PLUGIN_TYPE_TOOL, g_action_get_name(action)); + plugin = (RemminaToolPlugin *) remmina_plugin_manager_get_plugin(REMMINA_PLUGIN_TYPE_TOOL, gtk_action_get_name(action)); if (plugin) { plugin->exec_func(); @@ -1122,8 +1122,8 @@ static gboolean remmina_main_on_window_state_event(GtkWidget *widget, GdkEventWi gtk_widget_hide(widget); return TRUE; } - return FALSE; #endif + return FALSE; } diff --git a/remmina/src/remmina_pref_dialog.c b/remmina/src/remmina_pref_dialog.c index d0d75ad92..4d82c0e94 100644 --- a/remmina/src/remmina_pref_dialog.c +++ b/remmina/src/remmina_pref_dialog.c @@ -312,6 +312,33 @@ static void remmina_pref_dialog_disable_tray_icon_on_toggled(GtkWidget *widget, #endif } +static GtkWidget* remmina_pref_dialog_container_new(guint table_rows, guint table_columns) +{ + GtkWidget *table; +#if GTK_VERSION == 3 + table = gtk_grid_new(); + gtk_widget_show(table); + gtk_grid_set_row_spacing(GTK_GRID(table), 4); + gtk_grid_set_column_spacing(GTK_GRID(table), 4); +#elif GTK_VERSION == 2 + table = gtk_table_new(table_rows, table_columns, FALSE); + gtk_widget_show(table); + gtk_table_set_row_spacings(GTK_TABLE(table), 4); + gtk_table_set_col_spacings(GTK_TABLE(table), 4); +#endif + return table; +} + +static void remmina_pref_dialog_attach(GtkWidget *table, GtkWidget *widget, gint left, gint top, gint width, gint height) +{ +#if GTK_VERSION == 3 + remmina_pref_dialog_attach(table, widget, left, top, width, height); +#elif GTK_VERSION == 2 + // guint left_attach, guint right_attach, guint top_attach,guint bottom_attach + gtk_table_attach_defaults(GTK_TABLE(table), widget, left, left+width, top, top+height); +#endif +} + static void remmina_pref_dialog_init(RemminaPrefDialog *dialog) { RemminaPrefDialogPriv *priv; @@ -319,7 +346,7 @@ static void remmina_pref_dialog_init(RemminaPrefDialog *dialog) GtkWidget *tablabel; GtkWidget *vbox; GtkWidget *hbox; - GtkGrid *table; + GtkWidget *table; GtkWidget *widget; gchar buf[100]; @@ -355,28 +382,25 @@ static void remmina_pref_dialog_init(RemminaPrefDialog *dialog) gtk_widget_show(vbox); gtk_notebook_append_page(GTK_NOTEBOOK(notebook), vbox, tablabel); - table = gtk_grid_new(); - gtk_widget_show(table); - gtk_grid_set_row_spacing(GTK_GRID(table), 4); - gtk_grid_set_column_spacing(GTK_GRID(table), 4); + table = remmina_pref_dialog_container_new(12, 2); gtk_container_set_border_width(GTK_CONTAINER(table), 8); gtk_box_pack_start(GTK_BOX(vbox), table, FALSE, FALSE, 0); widget = gtk_check_button_new_with_label(_("Remember last view mode for each connection")); gtk_widget_show(widget); - gtk_grid_attach(GTK_GRID(table), widget, 0, 0, 2, 1); + remmina_pref_dialog_attach(table, widget, 0, 0, 2, 1); gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(widget), remmina_pref.save_view_mode); priv->save_view_mode_check = widget; widget = gtk_check_button_new_with_label(_("Save settings when starting the connection")); gtk_widget_show(widget); - gtk_grid_attach(GTK_GRID(table), widget, 0, 1, 2, 1); + remmina_pref_dialog_attach(table, widget, 0, 1, 2, 1); gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(widget), remmina_pref.save_when_connect); priv->save_when_connect_check = widget; widget = gtk_check_button_new_with_label(_("Invisible toolbar in fullscreen mode")); gtk_widget_show(widget); - gtk_grid_attach(GTK_GRID(table), widget, 0, 2, 2, 1); + remmina_pref_dialog_attach(table, widget, 0, 2, 2, 1); if (gtk_widget_is_composited(GTK_WIDGET(dialog))) { gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(widget), remmina_pref.invisible_toolbar); @@ -389,64 +413,64 @@ static void remmina_pref_dialog_init(RemminaPrefDialog *dialog) widget = gtk_check_button_new_with_label(_("Always show tabs")); gtk_widget_show(widget); - gtk_grid_attach(GTK_GRID(table), widget, 0, 3, 2, 1); + remmina_pref_dialog_attach(table, widget, 0, 3, 2, 1); gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(widget), remmina_pref.always_show_tab); priv->always_show_tab_check = widget; widget = gtk_check_button_new_with_label(_("Hide toolbar in tabbed interface")); gtk_widget_show(widget); - gtk_grid_attach(GTK_GRID(table), widget, 0, 4, 2, 1); + remmina_pref_dialog_attach(table, widget, 0, 4, 2, 1); gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(widget), remmina_pref.hide_connection_toolbar); priv->hide_connection_toolbar_check = widget; widget = gtk_label_new(_("Double-click action")); gtk_widget_show(widget); gtk_misc_set_alignment(GTK_MISC(widget), 0.0, 0.5); - gtk_grid_attach(GTK_GRID(table), widget, 0, 5, 1, 1); + remmina_pref_dialog_attach(table, widget, 0, 5, 1, 1); widget = remmina_public_create_combo_mapint(default_action_list, remmina_pref.default_action, FALSE, NULL); gtk_widget_show(widget); - gtk_grid_attach(GTK_GRID(table), widget, 1, 5, 2, 1); + remmina_pref_dialog_attach(table, widget, 1, 5, 2, 1); priv->default_action_combo = widget; widget = gtk_label_new(_("Default view mode")); gtk_widget_show(widget); gtk_misc_set_alignment(GTK_MISC(widget), 0.0, 0.5); - gtk_grid_attach(GTK_GRID(table), widget, 0, 6, 1, 1); + remmina_pref_dialog_attach(table, widget, 0, 6, 1, 1); widget = remmina_public_create_combo_mapint(default_mode_list, remmina_pref.default_mode, FALSE, NULL); gtk_widget_show(widget); - gtk_grid_attach(GTK_GRID(table), widget, 1, 6, 2, 1); + remmina_pref_dialog_attach(table, widget, 1, 6, 2, 1); priv->default_mode_combo = widget; widget = gtk_label_new(_("Tab interface")); gtk_widget_show(widget); gtk_misc_set_alignment(GTK_MISC(widget), 0.0, 0.5); - gtk_grid_attach(GTK_GRID(table), widget, 0, 7, 1, 1); + remmina_pref_dialog_attach(table, widget, 0, 7, 1, 1); widget = remmina_public_create_combo_mapint(tab_mode_list, remmina_pref.tab_mode, FALSE, NULL); gtk_widget_show(widget); - gtk_grid_attach(GTK_GRID(table), widget, 1, 7, 2, 1); + remmina_pref_dialog_attach(table, widget, 1, 7, 2, 1); priv->tab_mode_combo = widget; widget = gtk_label_new(_("Scale quality")); gtk_widget_show(widget); gtk_misc_set_alignment(GTK_MISC(widget), 0.0, 0.5); - gtk_grid_attach(GTK_GRID(table), widget, 0, 8, 1, 1); + remmina_pref_dialog_attach(table, widget, 0, 8, 1, 1); widget = remmina_public_create_combo_mapint(scale_quality_list, remmina_pref.scale_quality, FALSE, NULL); gtk_widget_show(widget); - gtk_grid_attach(GTK_GRID(table), widget, 1, 8, 2, 1); + remmina_pref_dialog_attach(table, widget, 1, 8, 2, 1); priv->scale_quality_combo = widget; widget = gtk_label_new(_("SSH tunnel local port")); gtk_widget_show(widget); gtk_misc_set_alignment(GTK_MISC(widget), 0.0, 0.5); - gtk_grid_attach(GTK_GRID(table), widget, 0, 9, 1, 1); + remmina_pref_dialog_attach(table, widget, 0, 9, 1, 1); widget = gtk_entry_new(); gtk_widget_show(widget); - gtk_grid_attach(GTK_GRID(table), widget, 1, 9, 2, 1); + remmina_pref_dialog_attach(table, widget, 1, 9, 2, 1); gtk_entry_set_max_length(GTK_ENTRY(widget), 5); g_snprintf(buf, sizeof(buf), "%i", remmina_pref.sshtunnel_port); gtk_entry_set_text(GTK_ENTRY(widget), buf); @@ -455,11 +479,11 @@ static void remmina_pref_dialog_init(RemminaPrefDialog *dialog) widget = gtk_label_new(_("Auto scroll step size")); gtk_widget_show(widget); gtk_misc_set_alignment(GTK_MISC(widget), 0.0, 0.5); - gtk_grid_attach(GTK_GRID(table), widget, 0, 10, 1, 1); + remmina_pref_dialog_attach(table, widget, 0, 10, 1, 1); widget = gtk_entry_new(); gtk_widget_show(widget); - gtk_grid_attach(GTK_GRID(table), widget, 1, 10, 2, 1); + remmina_pref_dialog_attach(table, widget, 1, 10, 2, 1); gtk_entry_set_max_length(GTK_ENTRY(widget), 3); g_snprintf(buf, sizeof(buf), "%i", remmina_pref.auto_scroll_step); gtk_entry_set_text(GTK_ENTRY(widget), buf); @@ -468,7 +492,7 @@ static void remmina_pref_dialog_init(RemminaPrefDialog *dialog) widget = gtk_label_new(_("Maximum recent items")); gtk_widget_show(widget); gtk_misc_set_alignment(GTK_MISC(widget), 0.0, 0.5); - gtk_grid_attach(GTK_GRID(table), widget, 0, 11, 1, 1); + remmina_pref_dialog_attach(table, widget, 0, 11, 1, 1); #if GTK_VERSION == 3 hbox = gtk_box_new(GTK_ORIENTATION_HORIZONTAL, 2); @@ -476,7 +500,7 @@ static void remmina_pref_dialog_init(RemminaPrefDialog *dialog) hbox = gtk_hbox_new(FALSE, 2); #endif gtk_widget_show(hbox); - gtk_grid_attach(GTK_GRID(table), hbox, 1, 11, 2, 1); + remmina_pref_dialog_attach(table, hbox, 1, 11, 2, 1); widget = gtk_entry_new(); gtk_widget_show(widget); @@ -527,34 +551,31 @@ static void remmina_pref_dialog_init(RemminaPrefDialog *dialog) gtk_widget_show(vbox); gtk_notebook_append_page(GTK_NOTEBOOK(notebook), vbox, tablabel); - table = gtk_grid_new(); - gtk_widget_show(table); - gtk_grid_set_row_spacing(GTK_GRID(table), 4); - gtk_grid_set_column_spacing(GTK_GRID(table), 4); + table = remmina_pref_dialog_container_new(5, 2); gtk_container_set_border_width(GTK_CONTAINER(table), 8); gtk_box_pack_start(GTK_BOX(vbox), table, FALSE, FALSE, 0); widget = gtk_check_button_new_with_label(_("Show new connection on top of the menu")); gtk_widget_show(widget); - gtk_grid_attach(GTK_GRID(table), widget, 0, 0, 2, 1); + remmina_pref_dialog_attach(table, widget, 0, 0, 2, 1); gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(widget), remmina_pref.applet_new_ontop); priv->applet_new_ontop_check = widget; widget = gtk_check_button_new_with_label(_("Hide total count in group menu")); gtk_widget_show(widget); - gtk_grid_attach(GTK_GRID(table), widget, 0, 1, 2, 1); + remmina_pref_dialog_attach(table, widget, 0, 1, 2, 1); gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(widget), remmina_pref.applet_hide_count); priv->applet_hide_count_check = widget; widget = gtk_check_button_new_with_label(_("Disable tray icon")); gtk_widget_show(widget); - gtk_grid_attach(GTK_GRID(table), widget, 0, 2, 2, 1); + remmina_pref_dialog_attach(table, widget, 0, 2, 2, 1); gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(widget), remmina_pref.disable_tray_icon); priv->disable_tray_icon_check = widget; widget = gtk_check_button_new_with_label(_("Start Remmina in tray icon at user logon")); gtk_widget_show(widget); - gtk_grid_attach(GTK_GRID(table), widget, 0, 3, 2, 1); + remmina_pref_dialog_attach(table, widget, 0, 3, 2, 1); gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(widget), remmina_icon_is_autostart()); gtk_widget_set_sensitive(widget, !remmina_pref.disable_tray_icon); priv->autostart_tray_icon_check = widget; @@ -562,7 +583,7 @@ static void remmina_pref_dialog_init(RemminaPrefDialog *dialog) #ifdef ENABLE_MINIMIZE_TO_TRAY widget = gtk_check_button_new_with_label(_("Minimize windows to tray")); gtk_widget_show(widget); - gtk_grid_attach(GTK_GRID(table), widget, 0, 4, 2, 1); + remmina_pref_dialog_attach(table, widget, 0, 4, 2, 1); gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(widget), remmina_pref.minimize_to_tray); gtk_widget_set_sensitive(widget, !remmina_pref.disable_tray_icon); priv->minimize_to_tray_check = widget; @@ -585,71 +606,79 @@ static void remmina_pref_dialog_init(RemminaPrefDialog *dialog) gtk_widget_show(vbox); gtk_notebook_append_page(GTK_NOTEBOOK(notebook), vbox, tablabel); - table = gtk_grid_new(); - gtk_widget_show(table); - gtk_grid_set_row_spacing(GTK_GRID(table), 4); - gtk_grid_set_column_spacing(GTK_GRID(table), 4); + table = remmina_pref_dialog_container_new(9, 2); gtk_container_set_border_width(GTK_CONTAINER(table), 8); gtk_box_pack_start(GTK_BOX(vbox), table, FALSE, FALSE, 0); widget = gtk_label_new(_("Host key")); gtk_widget_show(widget); gtk_misc_set_alignment(GTK_MISC(widget), 0.0, 0.5); +#if GTK_VERSION == 3 gtk_widget_set_hexpand(widget, TRUE); #if GTK_CHECK_VERSION(3, 12, 0) gtk_widget_set_margin_end (GTK_MISC(widget), 40); #else gtk_widget_set_margin_right (GTK_MISC(widget), 40); #endif - gtk_grid_attach(GTK_GRID(table), widget, 0, 0, 1, 1); +#endif + remmina_pref_dialog_attach(table, widget, 0, 0, 1, 1); widget = remmina_key_chooser_new(remmina_pref.hostkey); gtk_widget_show(widget); - gtk_grid_attach(GTK_GRID(table), widget, 1, 0, 2, 1); + remmina_pref_dialog_attach(table, widget, 1, 0, 2, 1); priv->hostkey_chooser = widget; widget = gtk_label_new(_("Toggle fullscreen mode")); gtk_widget_show(widget); gtk_misc_set_alignment(GTK_MISC(widget), 0.0, 0.5); +#if GTK_VERSION == 3 gtk_widget_set_hexpand(widget, TRUE); #if GTK_CHECK_VERSION(3, 12, 0) gtk_widget_set_margin_end (GTK_MISC(widget), 40); #else gtk_widget_set_margin_right (GTK_MISC(widget), 40); #endif - gtk_grid_attach(GTK_GRID(table), widget, 0, 1, 1, 1); +#endif + remmina_pref_dialog_attach(table, widget, 0, 1, 1, 1); widget = remmina_key_chooser_new(remmina_pref.shortcutkey_fullscreen); gtk_widget_show(widget); - gtk_grid_attach(GTK_GRID(table), widget, 1, 1, 2, 1); + remmina_pref_dialog_attach(table, widget, 1, 1, 2, 1); priv->shortcutkey_fullscreen_chooser = widget; widget = gtk_label_new(_("Auto-fit window")); gtk_widget_show(widget); gtk_misc_set_alignment(GTK_MISC(widget), 0.0, 0.5); +#if GTK_VERSION == 3 gtk_widget_set_hexpand(widget, TRUE); #if GTK_CHECK_VERSION(3, 12, 0) gtk_widget_set_margin_end (GTK_MISC(widget), 40); #else gtk_widget_set_margin_right (GTK_MISC(widget), 40); #endif - gtk_grid_attach(GTK_GRID(table), widget, 0, 2, 1, 1); +#endif + remmina_pref_dialog_attach(table, widget, 0, 2, 1, 1); widget = remmina_key_chooser_new(remmina_pref.shortcutkey_autofit); gtk_widget_show(widget); - gtk_grid_attach(GTK_GRID(table), widget, 1, 2, 2, 1); +#if GTK_VERSION == 3 + gtk_widget_set_hexpand(widget, TRUE); +#endif + remmina_pref_dialog_attach(table, widget, 1, 2, 2, 1); priv->shortcutkey_autofit_chooser = widget; widget = gtk_label_new(_("Switch tab pages")); gtk_widget_show(widget); gtk_misc_set_alignment(GTK_MISC(widget), 0.0, 0.5); +#if GTK_VERSION == 3 gtk_widget_set_hexpand(widget, TRUE); #if GTK_CHECK_VERSION(3, 12, 0) gtk_widget_set_margin_end (GTK_MISC(widget), 40); #else gtk_widget_set_margin_right (GTK_MISC(widget), 40); #endif - gtk_grid_attach(GTK_GRID(table), widget, 0, 3, 1, 1); +#endif + remmina_pref_dialog_attach(table, widget, 0, 3, 1, 1); #if GTK_VERSION == 3 hbox = gtk_box_new(GTK_ORIENTATION_HORIZONTAL, 2); @@ -657,7 +686,7 @@ static void remmina_pref_dialog_init(RemminaPrefDialog *dialog) hbox = gtk_hbox_new(TRUE, 2); #endif gtk_widget_show(hbox); - gtk_grid_attach(GTK_GRID(table), hbox, 1, 3, 2, 1); + remmina_pref_dialog_attach(table, hbox, 1, 3, 2, 1); widget = remmina_key_chooser_new(remmina_pref.shortcutkey_prevtab); gtk_widget_show(widget); @@ -672,81 +701,91 @@ static void remmina_pref_dialog_init(RemminaPrefDialog *dialog) widget = gtk_label_new(_("Toggle scaled mode")); gtk_widget_show(widget); gtk_misc_set_alignment(GTK_MISC(widget), 0.0, 0.5); +#if GTK_VERSION == 3 gtk_widget_set_hexpand(widget, TRUE); #if GTK_CHECK_VERSION(3, 12, 0) gtk_widget_set_margin_end (GTK_MISC(widget), 40); #else gtk_widget_set_margin_right (GTK_MISC(widget), 40); #endif - gtk_grid_attach(GTK_GRID(table), widget, 0, 4, 1, 1); +#endif + remmina_pref_dialog_attach(table, widget, 0, 4, 1, 1); widget = remmina_key_chooser_new(remmina_pref.shortcutkey_scale); gtk_widget_show(widget); - gtk_grid_attach(GTK_GRID(table), widget, 1, 4, 2, 1); + remmina_pref_dialog_attach(table, widget, 1, 4, 2, 1); priv->shortcutkey_scale_chooser = widget; widget = gtk_label_new(_("Grab keyboard")); gtk_widget_show(widget); gtk_misc_set_alignment(GTK_MISC(widget), 0.0, 0.5); +#if GTK_VERSION == 3 gtk_widget_set_hexpand(widget, TRUE); #if GTK_CHECK_VERSION(3, 12, 0) gtk_widget_set_margin_end (GTK_MISC(widget), 40); #else gtk_widget_set_margin_right (GTK_MISC(widget), 40); #endif - gtk_grid_attach(GTK_GRID(table), widget, 0, 5, 1, 1); +#endif + remmina_pref_dialog_attach(table, widget, 0, 5, 1, 1); widget = remmina_key_chooser_new(remmina_pref.shortcutkey_grab); gtk_widget_show(widget); - gtk_grid_attach(GTK_GRID(table), widget, 1, 5, 2, 1); + remmina_pref_dialog_attach(table, widget, 1, 5, 2, 1); priv->shortcutkey_grab_chooser = widget; widget = gtk_label_new(_("Minimize window")); gtk_widget_show(widget); gtk_misc_set_alignment(GTK_MISC(widget), 0.0, 0.5); +#if GTK_VERSION == 3 gtk_widget_set_hexpand(widget, TRUE); #if GTK_CHECK_VERSION(3, 12, 0) gtk_widget_set_margin_end (GTK_MISC(widget), 40); #else gtk_widget_set_margin_right (GTK_MISC(widget), 40); #endif - gtk_grid_attach(GTK_GRID(table), widget, 0, 6, 1, 1); +#endif + remmina_pref_dialog_attach(table, widget, 0, 6, 1, 1); widget = remmina_key_chooser_new(remmina_pref.shortcutkey_minimize); gtk_widget_show(widget); - gtk_grid_attach(GTK_GRID(table), widget, 1, 6, 2, 1); + remmina_pref_dialog_attach(table, widget, 1, 6, 2, 1); priv->shortcutkey_minimize_chooser = widget; widget = gtk_label_new(_("Disconnect")); gtk_widget_show(widget); gtk_misc_set_alignment(GTK_MISC(widget), 0.0, 0.5); +#if GTK_VERSION == 3 gtk_widget_set_hexpand(widget, TRUE); #if GTK_CHECK_VERSION(3, 12, 0) gtk_widget_set_margin_end (GTK_MISC(widget), 40); #else gtk_widget_set_margin_right (GTK_MISC(widget), 40); #endif - gtk_grid_attach(GTK_GRID(table), widget, 0, 7, 1, 1); +#endif + remmina_pref_dialog_attach(table, widget, 0, 7, 1, 1); widget = remmina_key_chooser_new(remmina_pref.shortcutkey_disconnect); gtk_widget_show(widget); - gtk_grid_attach(GTK_GRID(table), widget, 1, 7, 2, 1); + remmina_pref_dialog_attach(table, widget, 1, 7, 2, 1); priv->shortcutkey_disconnect_chooser = widget; widget = gtk_label_new(_("Show / hide toolbar")); gtk_widget_show(widget); gtk_misc_set_alignment(GTK_MISC(widget), 0.0, 0.5); +#if GTK_VERSION == 3 gtk_widget_set_hexpand(widget, TRUE); #if GTK_CHECK_VERSION(3, 12, 0) gtk_widget_set_margin_end (GTK_MISC(widget), 40); #else gtk_widget_set_margin_right (GTK_MISC(widget), 40); #endif - gtk_grid_attach(GTK_GRID(table), widget, 0, 8, 1, 1); +#endif + remmina_pref_dialog_attach(table, widget, 0, 8, 1, 1); widget = remmina_key_chooser_new(remmina_pref.shortcutkey_toolbar); gtk_widget_show(widget); - gtk_grid_attach(GTK_GRID(table), widget, 1, 8, 2, 1); + remmina_pref_dialog_attach(table, widget, 1, 8, 2, 1); priv->shortcutkey_toolbar_chooser = widget; /* Terminal tab */ @@ -762,28 +801,29 @@ static void remmina_pref_dialog_init(RemminaPrefDialog *dialog) gtk_widget_show(vbox); gtk_notebook_append_page(GTK_NOTEBOOK(notebook), vbox, tablabel); - table = gtk_grid_new(); - gtk_widget_show(table); - gtk_grid_set_row_spacing(GTK_GRID(table), 4); - gtk_grid_set_column_spacing(GTK_GRID(table), 4); + table = remmina_pref_dialog_container_new(6, 2); gtk_container_set_border_width(GTK_CONTAINER(table), 8); gtk_box_pack_start(GTK_BOX(vbox), table, FALSE, FALSE, 0); widget = gtk_label_new(_("Font")); gtk_widget_show(widget); gtk_misc_set_alignment(GTK_MISC(widget), 0.0, 0.5); +#if GTK_VERSION == 3 #if GTK_CHECK_VERSION(3, 12, 0) gtk_widget_set_margin_end (GTK_MISC(widget), 40); #else gtk_widget_set_margin_right (GTK_MISC(widget), 40); #endif - gtk_grid_attach(GTK_GRID(table), widget, 0, 0, 1, 1); +#endif + remmina_pref_dialog_attach(table, widget, 0, 0, 1, 1); widget = gtk_check_button_new_with_label(_("Use system default font")); gtk_widget_show(widget); +#if GTK_VERSION == 3 gtk_widget_set_hexpand(widget, TRUE); gtk_widget_set_margin_right (GTK_CHECK_BUTTON(widget), 40); - gtk_grid_attach(GTK_GRID(table), widget, 1, 0, 2, 1); +#endif + remmina_pref_dialog_attach(table, widget, 1, 0, 2, 1); priv->vte_font_check = widget; if (!(remmina_pref.vte_font && remmina_pref.vte_font[0])) { @@ -792,13 +832,15 @@ static void remmina_pref_dialog_init(RemminaPrefDialog *dialog) widget = gtk_font_button_new(); gtk_widget_show(widget); +#if GTK_VERSION == 3 gtk_widget_set_hexpand(widget, TRUE); #if GTK_CHECK_VERSION(3, 12, 0) gtk_widget_set_margin_end (GTK_FONT_BUTTON(widget), 40); #else gtk_widget_set_margin_right (GTK_FONT_BUTTON(widget), 40); #endif - gtk_grid_attach(GTK_GRID(table), widget, 1, 1, 2, 1); +#endif + remmina_pref_dialog_attach(table, widget, 1, 1, 2, 1); priv->vte_font_button = widget; if (remmina_pref.vte_font && remmina_pref.vte_font[0]) { @@ -814,35 +856,41 @@ static void remmina_pref_dialog_init(RemminaPrefDialog *dialog) widget = gtk_check_button_new_with_label(_("Allow bold text")); gtk_widget_show(widget); +#if GTK_VERSION == 3 gtk_widget_set_hexpand(widget, TRUE); #if GTK_CHECK_VERSION(3, 12, 0) gtk_widget_set_margin_end (GTK_CHECK_BUTTON(widget), 40); #else gtk_widget_set_margin_right (GTK_CHECK_BUTTON(widget), 40); #endif - gtk_grid_attach(GTK_GRID(table), widget, 1, 2, 2, 1); +#endif + remmina_pref_dialog_attach(table, widget, 1, 2, 2, 1); gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(widget), remmina_pref.vte_allow_bold_text); priv->vte_allow_bold_text_check = widget; widget = gtk_label_new(_("Scrollback lines")); gtk_widget_show(widget); +#if GTK_VERSION == 3 #if GTK_CHECK_VERSION(3, 12, 0) gtk_widget_set_margin_end (GTK_MISC(widget), 40); #else gtk_widget_set_margin_right (GTK_MISC(widget), 40); #endif +#endif gtk_misc_set_alignment(GTK_MISC(widget), 0.0, 0.5); - gtk_grid_attach(GTK_GRID(table), widget, 0, 3, 1, 1); + remmina_pref_dialog_attach(table, widget, 0, 3, 1, 1); widget = gtk_entry_new(); gtk_widget_show(widget); +#if GTK_VERSION == 3 gtk_widget_set_hexpand(widget, TRUE); #if GTK_CHECK_VERSION(3, 12, 0) gtk_widget_set_margin_end (GTK_ENTRY(widget), 40); #else gtk_widget_set_margin_right (GTK_ENTRY(widget), 40); #endif - gtk_grid_attach(GTK_GRID(table), widget, 1, 3, 2, 1); +#endif + remmina_pref_dialog_attach(table, widget, 1, 3, 2, 1); gtk_entry_set_max_length(GTK_ENTRY(widget), 5); g_snprintf(buf, sizeof(buf), "%i", remmina_pref.vte_lines); gtk_entry_set_text(GTK_ENTRY(widget), buf); @@ -851,12 +899,14 @@ static void remmina_pref_dialog_init(RemminaPrefDialog *dialog) widget = gtk_label_new(_("Keyboard")); gtk_widget_show(widget); gtk_misc_set_alignment(GTK_MISC(widget), 0.0, 0.5); +#if GTK_VERSION == 3 #if GTK_CHECK_VERSION(3, 12, 0) gtk_widget_set_margin_end (GTK_MISC(widget), 40); #else gtk_widget_set_margin_right (GTK_MISC(widget), 40); #endif - gtk_grid_attach(GTK_GRID(table), widget, 0, 4, 1, 1); +#endif + remmina_pref_dialog_attach(table, widget, 0, 4, 1, 1); #if GTK_VERSION == 3 hbox = gtk_box_new(GTK_ORIENTATION_HORIZONTAL, 2); @@ -864,7 +914,7 @@ static void remmina_pref_dialog_init(RemminaPrefDialog *dialog) hbox = gtk_hbox_new(FALSE, 2); #endif gtk_widget_show(hbox); - gtk_grid_attach(GTK_GRID(table), hbox, 1, 4, 2, 1); + remmina_pref_dialog_attach(table, hbox, 1, 4, 2, 1); widget = gtk_label_new(_("Copy")); gtk_widget_show(widget); @@ -880,11 +930,13 @@ static void remmina_pref_dialog_init(RemminaPrefDialog *dialog) widget = remmina_key_chooser_new(remmina_pref.vte_shortcutkey_copy); gtk_widget_show(widget); +#if GTK_VERSION == 3 #if GTK_CHECK_VERSION(3, 12, 0) gtk_widget_set_margin_end (REMMINA_KEY_CHOOSER(widget), 40); #else gtk_widget_set_margin_right (REMMINA_KEY_CHOOSER(widget), 40); #endif +#endif gtk_box_pack_start(GTK_BOX(hbox), widget, TRUE, TRUE, 0); priv->vte_shortcutkey_copy_chooser = widget; @@ -894,7 +946,7 @@ static void remmina_pref_dialog_init(RemminaPrefDialog *dialog) hbox = gtk_hbox_new(FALSE, 2); #endif gtk_widget_show(hbox); - gtk_grid_attach(GTK_GRID(table), hbox, 1, 5, 2, 1); + remmina_pref_dialog_attach(table, hbox, 1, 5, 2, 1); widget = gtk_label_new(_("Paste")); gtk_widget_show(widget); @@ -909,11 +961,13 @@ static void remmina_pref_dialog_init(RemminaPrefDialog *dialog) widget = remmina_key_chooser_new(remmina_pref.vte_shortcutkey_paste); gtk_widget_show(widget); +#if GTK_VERSION == 3 #if GTK_CHECK_VERSION(3, 12, 0) gtk_widget_set_margin_end (REMMINA_KEY_CHOOSER(widget), 40); #else gtk_widget_set_margin_right (REMMINA_KEY_CHOOSER(widget), 40); #endif +#endif gtk_box_pack_start(GTK_BOX(hbox), widget, TRUE, TRUE, 0); priv->vte_shortcutkey_paste_chooser = widget; diff --git a/remmina/src/remmina_public.c b/remmina/src/remmina_public.c index 08716ca70..d242ee51a 100644 --- a/remmina/src/remmina_public.c +++ b/remmina/src/remmina_public.c @@ -192,7 +192,9 @@ remmina_public_create_combo(gboolean use_icon) store = gtk_list_store_new(2, G_TYPE_STRING, G_TYPE_STRING); } combo = gtk_combo_box_new_with_model(GTK_TREE_MODEL(store)); +#if GTK_VERSION == 3 gtk_widget_set_hexpand(combo, TRUE); +#endif if (use_icon) { @@ -251,7 +253,7 @@ remmina_public_create_combo_mapint(const gpointer *key_value_list, gint def, gbo return remmina_public_create_combo_map(key_value_list, buf, use_icon, domain); } -void remmina_public_create_group(GtkGrid *table, const gchar *group, gint row, gint rows, gint cols) +void remmina_public_create_group(GtkContainer* table, const gchar *group, gint row, gint rows, gint cols) { GtkWidget *widget; gchar *str; @@ -262,11 +264,19 @@ void remmina_public_create_group(GtkGrid *table, const gchar *group, gint row, g str = g_markup_printf_escaped("<b>%s</b>", group); gtk_label_set_markup(GTK_LABEL(widget), str); g_free(str); +#if GTK_VERSION == 3 gtk_grid_attach(GTK_GRID(table), widget, 0, row, 1, 2); +#elif GTK_VERSION == 2 + gtk_table_attach_defaults(GTK_TABLE(table), widget, 0, cols, row, row + 1); +#endif widget = gtk_label_new(NULL); gtk_widget_show(widget); +#if GTK_VERSION == 3 gtk_grid_attach(GTK_GRID(table), widget, 0, row + 1, 1, 1); +#elif GTK_VERSION == 2 + gtk_table_attach(GTK_TABLE(table), widget, 0, 1, row + 1, row + rows, 0, 0, 0, 0); +#endif } gchar* diff --git a/remmina/src/remmina_public.h b/remmina/src/remmina_public.h index 0c05bfa94..4948f9951 100644 --- a/remmina/src/remmina_public.h +++ b/remmina/src/remmina_public.h @@ -72,7 +72,7 @@ GtkWidget* remmina_public_create_combo_map(const gpointer *key_value_list, const const gchar *domain); GtkWidget* remmina_public_create_combo_mapint(const gpointer *key_value_list, gint def, gboolean use_icon, const gchar *domain); -void remmina_public_create_group(GtkGrid *table, const gchar *group, gint row, gint rows, gint cols); +void remmina_public_create_group(GtkContainer* table, const gchar *group, gint row, gint rows, gint cols); gchar* remmina_public_combo_get_active_text(GtkComboBox *combo); diff --git a/remmina/src/remmina_string_list.c b/remmina/src/remmina_string_list.c index 671aee2d0..6661c1691 100644 --- a/remmina/src/remmina_string_list.c +++ b/remmina/src/remmina_string_list.c @@ -38,7 +38,11 @@ #include "remmina_public.h" #include "remmina_string_list.h" +#if GTK_VERSION == 3 G_DEFINE_TYPE( RemminaStringList, remmina_string_list, GTK_TYPE_GRID) +#elif GTK_VERSION == 2 +G_DEFINE_TYPE( RemminaStringList, remmina_string_list, GTK_TYPE_TABLE) +#endif #define ERROR_COLOR "red" @@ -199,11 +203,14 @@ static void remmina_string_list_init(RemminaStringList *gsl) GtkTreeViewColumn *column; GtkWidget *frame; - //gtk_table_resize(GTK_TABLE(gsl), 3, 2); +#if GTK_VERSION == 2 + gtk_table_resize(GTK_TABLE(gsl), 3, 2); +#endif /* Create the frame and add a new scrolled window, followed by the group list */ frame = gtk_frame_new(NULL); gtk_widget_show(frame); +#if GTK_VERSION == 3 gtk_widget_set_hexpand(frame, TRUE); gtk_widget_set_vexpand(frame, TRUE); #if GTK_CHECK_VERSION(3, 12, 0) @@ -212,6 +219,9 @@ static void remmina_string_list_init(RemminaStringList *gsl) gtk_widget_set_margin_right (frame, 80); #endif gtk_grid_attach(GTK_GRID(gsl), frame, 0, 0, 1, 1); +#elif GTK_VERSION == 2 + gtk_table_attach_defaults(GTK_TABLE(gsl), frame, 0, 1, 0, 1); +#endif scrolled_window = gtk_scrolled_window_new(NULL, NULL); gtk_widget_show(scrolled_window); @@ -238,7 +248,11 @@ static void remmina_string_list_init(RemminaStringList *gsl) vbox = gtk_vbox_new(FALSE, 0); #endif gtk_widget_show(vbox); +#if GTK_VERSION == 3 gtk_grid_attach(GTK_GRID(gsl), vbox, 1, 0, 2, 1); +#elif GTK_VERSION == 2 + gtk_table_attach(GTK_TABLE(gsl), vbox, 1, 2, 0, 3, 0, GTK_EXPAND | GTK_FILL, 0, 0); +#endif image = gtk_image_new_from_icon_name("list-add", GTK_ICON_SIZE_MENU); gtk_widget_show(image); @@ -278,8 +292,12 @@ static void remmina_string_list_init(RemminaStringList *gsl) gsl->status_label = gtk_label_new(NULL); gtk_widget_show(gsl->status_label); gtk_misc_set_alignment(GTK_MISC(gsl->status_label), 0.0, 0.5); +#if GTK_VERSION == 3 gtk_widget_set_hexpand(gsl->status_label, TRUE); gtk_grid_attach(GTK_GRID(gsl), gsl->status_label, 0, 2, 2, 1); +#elif GTK_VERSION == 2 + gtk_table_attach(GTK_TABLE(gsl), gsl->status_label, 0, 2, 2, 3, GTK_EXPAND | GTK_FILL, 0, 0, 0); +#endif gsl->hints = NULL; gsl->validation_func = NULL; diff --git a/remmina/src/remmina_string_list.h b/remmina/src/remmina_string_list.h index 925039fd7..00c31545e 100644 --- a/remmina/src/remmina_string_list.h +++ b/remmina/src/remmina_string_list.h @@ -48,7 +48,11 @@ typedef gboolean (*RemminaStringListValidationFunc)(const gchar *new_str, gchar typedef struct _RemminaStringList { +#if GTK_VERSION == 3 GtkGrid table; +#elif GTK_VERSION == 2 + GtkTable table; +#endif GtkListStore *store; GtkWidget *list; @@ -63,7 +67,11 @@ typedef struct _RemminaStringList typedef struct _RemminaStringListClass { +#if GTK_VERSION == 3 GtkGridClass parent_class; +#elif GTK_VERSION == 2 + GtkTableClass parent_class; +#endif } RemminaStringListClass; GType remmina_string_list_get_type(void) |