diff --git a/Makefile.in b/Makefile.in index 44f1868..fa3f59d 100644 --- a/Makefile.in +++ b/Makefile.in @@ -33,6 +33,7 @@ INSTALL_PACKAGES=@INSTALL_PACKAGES@ SOURCES= \ $(wildcard src/objects/actions/*.c) \ $(wildcard src/objects/actions/lib3270/*.c) \ + $(wildcard src/objects/actions/v3270/*.c) \ $(wildcard src/objects/application/*.c) \ $(wildcard src/objects/application/actions/*.c) \ $(wildcard src/objects/window/*.c) \ diff --git a/pw3270.cbp b/pw3270.cbp index 8316f71..d311e6b 100644 --- a/pw3270.cbp +++ b/pw3270.cbp @@ -82,6 +82,9 @@ + + diff --git a/src/include/pw3270/actions.h b/src/include/pw3270/actions.h index be8b593..241f1d5 100644 --- a/src/include/pw3270/actions.h +++ b/src/include/pw3270/actions.h @@ -183,6 +183,34 @@ pw3270SimpleAction * pw3270_dialog_action_new(GtkWidget * (*factory)(GtkWidget *)); + // + // V3270 Property Action + // + #define V3270_TYPE_PROPERTY_ACTION (v3270PropertyAction_get_type()) + #define V3270_PROPERTY_ACTION(inst) (G_TYPE_CHECK_INSTANCE_CAST ((inst), V3270_TYPE_PROPERTY_ACTION, v3270PropertyAction)) + #define V3270_PROPERTY_ACTION_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), V3270_TYPE_PROPERTY_ACTION, v3270PropertyActionClass)) + #define V3270_IS_PROPERTY_ACTION(inst) (G_TYPE_CHECK_INSTANCE_TYPE ((inst), V3270_TYPE_PROPERTY_ACTION)) + #define V3270_IS_PROPERTY_ACTION_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), V3270_TYPE_PROPERTY_ACTION)) + #define V3270_PROPERTY_ACTION_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), V3270_TYPE_PROPERTY_ACTION, v3270PropertyActionClass)) + + typedef struct _v3270PropertyAction { + + pw3270Action parent; + + GParamSpec *pspec; + + } v3270PropertyAction; + + typedef struct _v3270PropertyActionClass { + + pw3270ActionClass parent_class; + + } v3270PropertyActionClass; + + GType v3270PropertyAction_get_type(void) G_GNUC_CONST; + + v3270PropertyAction * v3270_property_action_new(GtkWidget *widget, const gchar *property_name); + G_END_DECLS #endif // PW3270_ACTIONS_H_INCLUDED diff --git a/src/objects/actions/v3270/property.c b/src/objects/actions/v3270/property.c new file mode 100644 index 0000000..8906e8a --- /dev/null +++ b/src/objects/actions/v3270/property.c @@ -0,0 +1,74 @@ +/* + * "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) + * + */ + + /** + * @brief Implement GAction "wrapper" for v3270 properties. + * + * Reference: + * + * + * + */ + + #include "../private.h" + #include + #include + + static void v3270PropertyAction_class_init(v3270PropertyActionClass *klass); + static void v3270PropertyAction_init(v3270PropertyAction *action); + + G_DEFINE_TYPE(v3270PropertyAction, v3270PropertyAction, PW3270_TYPE_ACTION); + + void v3270PropertyAction_class_init(v3270PropertyActionClass *klass) { + + } + + static void v3270PropertyAction_init(v3270PropertyAction *action) { + + } + + v3270PropertyAction * v3270_property_action_new(GtkWidget *widget, const gchar *property_name) { + + v3270PropertyAction * action = (v3270PropertyAction *) g_object_new(V3270_TYPE_PROPERTY_ACTION, NULL); + + action->pspec = g_object_class_find_property(G_OBJECT_GET_CLASS(widget), property_name); + + if(~action->pspec->flags & G_PARAM_READABLE || ~action->pspec->flags & G_PARAM_WRITABLE || action->pspec->flags & G_PARAM_CONSTRUCT_ONLY) { + + g_critical( + "Property '%s::%s' must be readable, writable, and not construct-only", + G_OBJECT_TYPE_NAME(G_OBJECT(widget)), + property_name + ); + + return NULL; + } + + return action; + } -- libgit2 0.21.2