From 10e28095e63fe5cc60e1f538c91aebe55de1c211 Mon Sep 17 00:00:00 2001 From: Perry Werneck Date: Sun, 8 Sep 2019 06:20:57 -0300 Subject: [PATCH] Starting implementation of abstract class for settings/preferences dialogs. --- src/dialogs/settings.c | 77 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ src/include/v3270/settings.h | 70 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ v3270.cbp | 7 ++++--- 3 files changed, 151 insertions(+), 3 deletions(-) create mode 100644 src/dialogs/settings.c create mode 100644 src/include/v3270/settings.h diff --git a/src/dialogs/settings.c b/src/dialogs/settings.c new file mode 100644 index 0000000..0202615 --- /dev/null +++ b/src/dialogs/settings.c @@ -0,0 +1,77 @@ +/* + * "Software pw3270, desenvolvido com base nos códigos fontes do WC3270 e X3270 + * (Paul Mattes Paul.Mattes@usa.net), de emulação de terminal 3270 para acesso a + * aplicativos mainframe. Registro no INPI sob o nome G3270. + * + * Copyright (C) <2008> + * + * Este programa é software livre. Você pode redistribuí-lo e/ou modificá-lo sob + * os termos da GPL v.2 - Licença Pública Geral GNU, conforme publicado pela + * Free Software Foundation. + * + * Este programa é distribuído na expectativa de ser útil, mas SEM QUALQUER + * GARANTIA; sem mesmo a garantia implícita de COMERCIALIZAÇÃO ou de ADEQUAÇÃO + * A QUALQUER PROPÓSITO EM PARTICULAR. Consulte a Licença Pública Geral GNU para + * obter mais detalhes. + * + * Você deve ter recebido uma cópia da Licença Pública Geral GNU junto com este + * programa; se não, escreva para a Free Software Foundation, Inc., 51 Franklin + * St, Fifth Floor, Boston, MA 02110-1301 USA + * + * Este programa está nomeado como - e possui - linhas de código. + * + * Contatos: + * + * perry.werneck@gmail.com (Alexandre Perry de Souza Werneck) + * erico.mendonca@gmail.com (Erico Mascarenhas Mendonça) + * + */ + + #include "private.h" + #include + #include + + G_DEFINE_TYPE(V3270Settings, V3270Settings, GTK_TYPE_GRID); + +/*--[ Implement ]------------------------------------------------------------------------------------*/ + +static void apply(GtkWidget *widget, GtkWidget *terminal) +{ + +} + +static void revert(GtkWidget *widget, GtkWidget *terminal) +{ + +} + +static void V3270Settings_class_init(V3270SettingsClass *klass) +{ + klass->apply = apply; + klass->revert = revert; +} + +static void V3270Settings_init(V3270Settings *widget) +{ + widget->terminal = NULL; +} + +LIB3270_EXPORT void v3270_settings_set_terminal_widget(GtkWidget *widget, GtkWidget *terminal) +{ + g_return_if_fail(GTK_IS_V3270(terminal)); + g_return_if_fail(GTK_IS_V3270_SETTINGS(widget)); + + GTK_V3270_SETTINGS(widget)->terminal = terminal; +} + + LIB3270_EXPORT void v3270_settings_apply(GtkWidget *widget) + { + g_return_if_fail(GTK_IS_V3270_SETTINGS(widget)); + GTK_V3270_SETTINGS_GET_CLASS(widget)->apply(widget,GTK_V3270_SETTINGS(widget)->terminal); + } + + LIB3270_EXPORT void v3270_settings_revert(GtkWidget *widget) + { + g_return_if_fail(GTK_IS_V3270_SETTINGS(widget)); + GTK_V3270_SETTINGS_GET_CLASS(widget)->revert(widget,GTK_V3270_SETTINGS(widget)->terminal); + } diff --git a/src/include/v3270/settings.h b/src/include/v3270/settings.h new file mode 100644 index 0000000..81fddbb --- /dev/null +++ b/src/include/v3270/settings.h @@ -0,0 +1,70 @@ +/* + * "Software pw3270, desenvolvido com base nos códigos fontes do WC3270 e X3270 + * (Paul Mattes Paul.Mattes@usa.net), de emulação de terminal 3270 para acesso a + * aplicativos mainframe. Registro no INPI sob o nome G3270. + * + * Copyright (C) <2008> + * + * Este programa é software livre. Você pode redistribuí-lo e/ou modificá-lo sob + * os termos da GPL v.2 - Licença Pública Geral GNU, conforme publicado pela + * Free Software Foundation. + * + * Este programa é distribuído na expectativa de ser útil, mas SEM QUALQUER + * GARANTIA; sem mesmo a garantia implícita de COMERCIALIZAÇÃO ou de ADEQUAÇÃO + * A QUALQUER PROPÓSITO EM PARTICULAR. Consulte a Licença Pública Geral GNU para + * obter mais detalhes. + * + * Você deve ter recebido uma cópia da Licença Pública Geral GNU junto com este + * programa; se não, escreva para a Free Software Foundation, Inc., 51 Franklin + * St, Fifth Floor, Boston, MA 02110-1301 USA + * + * Este programa está nomeado como - e possui - linhas de código. + * + * Contatos: + * + * perry.werneck@gmail.com (Alexandre Perry de Souza Werneck) + * erico.mendonca@gmail.com (Erico Mascarenhas Mendonça) + * + */ + +#ifndef V3270SETTINGS_H_INCLUDED + + #define V3270SETTINGS_H_INCLUDED 1 + + #include + + G_BEGIN_DECLS + +/*--[ Progress widget ]------------------------------------------------------------------------------*/ + + #define GTK_TYPE_V3270_SETTINGS (V3270Settings_get_type ()) + #define GTK_V3270_SETTINGS(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GTK_TYPE_V3270_SETTINGS, V3270Settings)) + #define GTK_V3270_SETTINGS_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GTK_TYPE_V3270_SETTINGS, V3270SettingsClass)) + #define GTK_IS_V3270_SETTINGS(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GTK_TYPE_V3270_SETTINGS)) + #define GTK_IS_V3270_SETTINGS_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GTK_TYPE_V3270_SETTINGS)) + #define GTK_V3270_SETTINGS_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GTK_TYPE_V3270_SETTINGS, V3270SettingsClass)) + + typedef struct _V3270Settings { + GtkGrid parent; + GtkWidget * terminal; + } V3270Settings; + + typedef struct _V3270SettingsClass { + GtkGridClass parent_class; + + void (*apply)(GtkWidget *widget, GtkWidget *terminal); + void (*revert)(GtkWidget *widget, GtkWidget *terminal); + + } V3270SettingsClass; + +/*--[ Prototypes ]-----------------------------------------------------------------------------------*/ + + LIB3270_EXPORT void v3270_settings_set_terminal_widget(GtkWidget *widget, GtkWidget *terminal); + LIB3270_EXPORT void v3270_settings_apply(GtkWidget *widget); + LIB3270_EXPORT void v3270_settings_revert(GtkWidget *widget); + + LIB3270_EXPORT void v3270_settings_dialog_run(GtkWidget *widget, GtkWidget *terminal); + + G_END_DECLS + +#endif // V3270SETTINGS_H_INCLUDED diff --git a/v3270.cbp b/v3270.cbp index a3a7819..56f7dab 100644 --- a/v3270.cbp +++ b/v3270.cbp @@ -60,9 +60,6 @@ - - @@ -93,6 +90,9 @@ + + @@ -167,6 +167,7 @@ +