Welcome to mirror list, hosted at ThFree Co, Russian Federation.

gitlab.com/Remmina/Remmina.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAntenore Gatta <antenore@simbiosi.org>2014-12-08 00:29:52 +0300
committerAntenore Gatta <antenore@simbiosi.org>2014-12-08 00:29:52 +0300
commit716b56934bb9e16771de44409a1039f8daa1e6a7 (patch)
treeba091ca5e07d8c84c154ed441cc3c351a5dfa6bd
parenta2aee21b56a9f2908ba62363d800281891576efb (diff)
parentf0b1e1bf110d2fb189896e21c6d5b1176d0b8aab (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
-rw-r--r--.gitignore2
-rw-r--r--cmake/FindLibintl.cmake67
-rw-r--r--cmake/GETTEXT.cmake3
-rw-r--r--remmina-plugins/rdp/rdp_file.c4
-rw-r--r--remmina-plugins/rdp/rdp_plugin.c4
-rw-r--r--remmina-plugins/rdp/rdp_settings.c65
-rw-r--r--remmina/CMakeLists.txt5
-rw-r--r--remmina/src/remmina.c2
-rw-r--r--remmina/src/remmina_applet_menu.c9
-rw-r--r--remmina/src/remmina_applet_menu_item.c12
-rw-r--r--remmina/src/remmina_chain_button.c20
-rw-r--r--remmina/src/remmina_chain_button.h10
-rw-r--r--remmina/src/remmina_chat_window.c45
-rw-r--r--remmina/src/remmina_connection_window.c34
-rw-r--r--remmina/src/remmina_external_tools.c10
-rw-r--r--remmina/src/remmina_file_editor.c252
-rw-r--r--remmina/src/remmina_ftp_client.c18
-rw-r--r--remmina/src/remmina_icon.c22
-rw-r--r--remmina/src/remmina_init_dialog.c133
-rw-r--r--remmina/src/remmina_main.c4
-rw-r--r--remmina/src/remmina_pref_dialog.c190
-rw-r--r--remmina/src/remmina_public.c12
-rw-r--r--remmina/src/remmina_public.h2
-rw-r--r--remmina/src/remmina_string_list.c20
-rw-r--r--remmina/src/remmina_string_list.h8
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)