Commit b6c6f0ef31df868cf2c30b2174b3bf5ff191011d

Authored by perry.werneck@gmail.com
1 parent d991edf9

Iniciando implementação do suporte a MACOS pelo gtk3

@@ -314,6 +314,10 @@ AC_SUBST(LIBSSL_LIBS) @@ -314,6 +314,10 @@ AC_SUBST(LIBSSL_LIBS)
314 AC_SUBST(LIBSSL_CFLAGS) 314 AC_SUBST(LIBSSL_CFLAGS)
315 315
316 #--[ Libraries ]---------------------------------------------------------------------------------------------------------------------------------------------- 316 #--[ Libraries ]----------------------------------------------------------------------------------------------------------------------------------------------
  317 +PKG_CHECK_MODULES( [GTKMAC], [gtk-mac-integration], AC_DEFINE(HAVE_GTKMAC), AC_MSG_NOTICE([macosx integration not present.]) )
  318 +AC_SUBST(GTKMAC_LIBS)
  319 +AC_SUBST(GTKMAC_CFLAGS)
  320 +
317 AC_SEARCH_LIBS( [sin], [m], AC_DEFINE(HAVE_LIBM), AC_MSG_NOTICE([libm not present.])) 321 AC_SEARCH_LIBS( [sin], [m], AC_DEFINE(HAVE_LIBM), AC_MSG_NOTICE([libm not present.]))
318 322
319 AC_SUBST(SOCKET_LIBS) 323 AC_SUBST(SOCKET_LIBS)
pw3270.xcodeproj/project.pbxproj
@@ -8,6 +8,7 @@ @@ -8,6 +8,7 @@
8 8
9 /* Begin PBXFileReference section */ 9 /* Begin PBXFileReference section */
10 C21BB73815D940960093E2FA /* Makefile.in */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = Makefile.in; sourceTree = "<group>"; }; 10 C21BB73815D940960093E2FA /* Makefile.in */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = Makefile.in; sourceTree = "<group>"; };
  11 + C23EFD5315D99E2D00673C59 /* updateChangeLog.sh */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.script.sh; path = updateChangeLog.sh; sourceTree = "<group>"; };
11 C272066315D7F88300CCCD22 /* configure.ac */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = configure.ac; sourceTree = "<group>"; }; 12 C272066315D7F88300CCCD22 /* configure.ac */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = configure.ac; sourceTree = "<group>"; };
12 C272066715D7FBF700CCCD22 /* action_table.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = action_table.h; sourceTree = "<group>"; }; 13 C272066715D7FBF700CCCD22 /* action_table.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = action_table.h; sourceTree = "<group>"; };
13 C272066815D7FBF700CCCD22 /* actions.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = actions.h; sourceTree = "<group>"; }; 14 C272066815D7FBF700CCCD22 /* actions.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = actions.h; sourceTree = "<group>"; };
@@ -263,6 +264,7 @@ @@ -263,6 +264,7 @@
263 C232305B15D7F01F00E76E83 = { 264 C232305B15D7F01F00E76E83 = {
264 isa = PBXGroup; 265 isa = PBXGroup;
265 children = ( 266 children = (
  267 + C23EFD5315D99E2D00673C59 /* updateChangeLog.sh */,
266 C21BB73815D940960093E2FA /* Makefile.in */, 268 C21BB73815D940960093E2FA /* Makefile.in */,
267 C2C4DAD815D8282600E8C6A0 /* autogen.sh */, 269 C2C4DAD815D8282600E8C6A0 /* autogen.sh */,
268 C272066315D7F88300CCCD22 /* configure.ac */, 270 C272066315D7F88300CCCD22 /* configure.ac */,
src/include/lib3270/config.h.in
@@ -44,6 +44,8 @@ @@ -44,6 +44,8 @@
44 44
45 #undef HAVE_GNOME 45 #undef HAVE_GNOME
46 46
  47 + #undef HAVE_GTKMAC
  48 +
47 /* Optional parts. */ 49 /* Optional parts. */
48 #undef X3270_DBCS 50 #undef X3270_DBCS
49 #undef X3270_SCRIPT 51 #undef X3270_SCRIPT
src/pw3270/Makefile.in
@@ -68,8 +68,8 @@ DEPENDS=*.h common/*.h uiparser/*.h v3270/*.h $(GLOBAL_DEPS) @@ -68,8 +68,8 @@ DEPENDS=*.h common/*.h uiparser/*.h v3270/*.h $(GLOBAL_DEPS)
68 68
69 VALGRIND=@VALGRIND@ 69 VALGRIND=@VALGRIND@
70 70
71 -CFLAGS=@CFLAGS@ @DLL_CFLAGS@ @GTK_CFLAGS@ -DDATAROOTDIR=\"$(datarootdir)\" -I../../src/include  
72 -LIBS=@LIBS@ @GTK_LIBS@ 71 +CFLAGS=@CFLAGS@ @DLL_CFLAGS@ @GTK_CFLAGS@ @GTKMAC_CFLAGS@ -DDATAROOTDIR=\"$(datarootdir)\" -I../../src/include
  72 +LIBS=@LIBS@ @GTK_LIBS@ @GTKMAC_LIBS@
73 73
74 #---[ Rules ]------------------------------------------------------------------ 74 #---[ Rules ]------------------------------------------------------------------
75 75
src/pw3270/main.c
@@ -36,10 +36,18 @@ @@ -36,10 +36,18 @@
36 #include "v3270/accessible.h" 36 #include "v3270/accessible.h"
37 #include <stdlib.h> 37 #include <stdlib.h>
38 38
  39 +#ifdef HAVE_GTKMAC
  40 + #include <gtkmacintegration/gtkosxapplication.h>
  41 +#endif // HAVE_GTKMAC
  42 +
39 /*--[ Statics ]--------------------------------------------------------------------------------------*/ 43 /*--[ Statics ]--------------------------------------------------------------------------------------*/
40 44
41 static GtkWidget *toplevel = NULL; 45 static GtkWidget *toplevel = NULL;
42 46
  47 +#ifdef HAVE_GTKMAC
  48 + static GtkOSXApplication * osxapp = NULL;
  49 +#endif // HAVE_GTKMAC
  50 +
43 /*--[ Implement ]------------------------------------------------------------------------------------*/ 51 /*--[ Implement ]------------------------------------------------------------------------------------*/
44 52
45 static int initialize(void) 53 static int initialize(void)
@@ -116,6 +124,12 @@ int main(int argc, char *argv[]) @@ -116,6 +124,12 @@ int main(int argc, char *argv[])
116 static const gchar * host = NULL; 124 static const gchar * host = NULL;
117 int rc = 0; 125 int rc = 0;
118 126
  127 +#if ! GLIB_CHECK_VERSION(2,32,0)
  128 + g_thread_init(NULL);
  129 +#endif // !GLIB(2,32)
  130 +
  131 + gtk_init(&argc, &argv);
  132 +
119 // Setup locale 133 // Setup locale
120 #ifdef LC_ALL 134 #ifdef LC_ALL
121 setlocale( LC_ALL, "" ); 135 setlocale( LC_ALL, "" );
@@ -133,6 +147,21 @@ int main(int argc, char *argv[]) @@ -133,6 +147,21 @@ int main(int argc, char *argv[])
133 g_free(appdir); 147 g_free(appdir);
134 148
135 } 149 }
  150 +#elif defined(HAVE_GTKMAC)
  151 + {
  152 + osxapp = GTK_OSX_APPLICATION(g_object_new(GTK_TYPE_OSX_APPLICATION,NULL));
  153 +
  154 +
  155 + gchar * appdir = g_build_filename(DATAROOTDIR,PACKAGE_NAME,NULL);
  156 + gchar * locdir = g_build_filename(DATAROOTDIR,"locale",NULL);
  157 +
  158 + g_chdir(appdir);
  159 + bindtextdomain( PACKAGE_NAME, locdir);
  160 +
  161 + g_free(locdir);
  162 + g_free(appdir);
  163 +
  164 + }
136 #elif defined( DATAROOTDIR ) 165 #elif defined( DATAROOTDIR )
137 { 166 {
138 gchar * appdir = g_build_filename(DATAROOTDIR,PACKAGE_NAME,NULL); 167 gchar * appdir = g_build_filename(DATAROOTDIR,PACKAGE_NAME,NULL);
@@ -168,12 +197,6 @@ int main(int argc, char *argv[]) @@ -168,12 +197,6 @@ int main(int argc, char *argv[])
168 197
169 g_option_context_add_main_entries(options, app_options, NULL); 198 g_option_context_add_main_entries(options, app_options, NULL);
170 199
171 -#if ! GLIB_CHECK_VERSION(2,32,0)  
172 - g_thread_init(NULL);  
173 -#endif // !GLIB(2,32)  
174 -  
175 - gtk_init(&argc, &argv);  
176 -  
177 if(!g_option_context_parse( options, &argc, &argv, &error )) 200 if(!g_option_context_parse( options, &argc, &argv, &error ))
178 { 201 {
179 int f; 202 int f;
@@ -226,6 +249,10 @@ int main(int argc, char *argv[]) @@ -226,6 +249,10 @@ int main(int argc, char *argv[])
226 if(pw3270_get_toggle(toplevel,LIB3270_TOGGLE_FULL_SCREEN)) 249 if(pw3270_get_toggle(toplevel,LIB3270_TOGGLE_FULL_SCREEN))
227 gtk_window_fullscreen(GTK_WINDOW(toplevel)); 250 gtk_window_fullscreen(GTK_WINDOW(toplevel));
228 251
  252 +#ifdef HAVE_GTKMAC
  253 + gtk_osxapplication_ready(osxapp);
  254 +#endif // HAVE_GTKMAC
  255 +
229 gtk_main(); 256 gtk_main();
230 257
231 } 258 }
src/pw3270/uiparser/menubar.c
@@ -35,7 +35,9 @@ @@ -35,7 +35,9 @@
35 35
36 GObject * ui_create_menubar(GMarkupParseContext *context,GtkAction *action,struct parser *info,const gchar **names, const gchar **values, GError **error) 36 GObject * ui_create_menubar(GMarkupParseContext *context,GtkAction *action,struct parser *info,const gchar **names, const gchar **values, GError **error)
37 { 37 {
38 - if(info->element) 38 + GtkWidget *menu;
  39 +
  40 + if(info->element)
39 { 41 {
40 *error = g_error_new(ERROR_DOMAIN,EINVAL, _( "<%s> should be on toplevel"), "menubar"); 42 *error = g_error_new(ERROR_DOMAIN,EINVAL, _( "<%s> should be on toplevel"), "menubar");
41 return NULL; 43 return NULL;
@@ -47,7 +49,12 @@ @@ -47,7 +49,12 @@
47 return NULL; 49 return NULL;
48 } 50 }
49 51
50 - return ui_insert_element(info, action, UI_ELEMENT_MENUBAR, names, values, G_OBJECT(gtk_menu_bar_new()),error); 52 + menu = gtk_menu_bar_new();
  53 +
  54 + if(ui_get_bool_attribute("topmenu",names,values,info->topmenu == NULL))
  55 + info->topmenu = menu;
  56 +
  57 + return ui_insert_element(info, action, UI_ELEMENT_MENUBAR, names, values, G_OBJECT(menu),error);
51 } 58 }
52 59
53 void ui_end_menubar(GMarkupParseContext *context,GObject *widget,struct parser *info,GError **error) 60 void ui_end_menubar(GMarkupParseContext *context,GObject *widget,struct parser *info,GError **error)
src/pw3270/uiparser/menuitem.c
@@ -31,6 +31,11 @@ @@ -31,6 +31,11 @@
31 31
32 #include "private.h" 32 #include "private.h"
33 33
  34 + #ifdef HAVE_GTKMAC
  35 + #include <gtkmacintegration/gtk-mac-menu.h>
  36 + #endif // HAVE_GTKMAC
  37 +
  38 +
34 /*--[ Implement ]------------------------------------------------------------------------------------*/ 39 /*--[ Implement ]------------------------------------------------------------------------------------*/
35 40
36 GObject * ui_create_menuitem(GMarkupParseContext *context,GtkAction *action,struct parser *info,const gchar **names, const gchar **values, GError **error) 41 GObject * ui_create_menuitem(GMarkupParseContext *context,GtkAction *action,struct parser *info,const gchar **names, const gchar **values, GError **error)
src/pw3270/uiparser/parser.c
@@ -31,6 +31,11 @@ @@ -31,6 +31,11 @@
31 31
32 #include "private.h" 32 #include "private.h"
33 33
  34 + #ifdef HAVE_GTKMAC
  35 + #include <gtkmacintegration/gtk-mac-menu.h>
  36 + #endif // HAVE_GTKMAC
  37 +
  38 +
34 /*--[ Implement ]------------------------------------------------------------------------------------*/ 39 /*--[ Implement ]------------------------------------------------------------------------------------*/
35 40
36 void parser_init(struct parser *p) 41 void parser_init(struct parser *p)
@@ -216,6 +221,14 @@ void parser_build(struct parser *p, GtkWidget *widget) @@ -216,6 +221,14 @@ void parser_build(struct parser *p, GtkWidget *widget)
216 gtk_window_add_accel_group(GTK_WINDOW(p->toplevel),a_info.accel_group); 221 gtk_window_add_accel_group(GTK_WINDOW(p->toplevel),a_info.accel_group);
217 222
218 gtk_window_set_default(GTK_WINDOW(p->toplevel),widget); 223 gtk_window_set_default(GTK_WINDOW(p->toplevel),widget);
  224 +
  225 +#ifdef HAVE_GTKMAC
  226 + if(p->topmenu)
  227 + {
  228 + gtk_widget_set_visible(p->topmenu,FALSE);
  229 + gtk_mac_menu_set_menu_bar(GTK_MENU_SHELL(p->topmenu));
  230 + }
  231 +#endif // HAVE_GTKMAC
219 232
220 } 233 }
221 234
src/pw3270/uiparser/private.h
@@ -57,6 +57,7 @@ @@ -57,6 +57,7 @@
57 GtkWidget * toplevel; 57 GtkWidget * toplevel;
58 GObject * element; 58 GObject * element;
59 GtkAction * action; 59 GtkAction * action;
  60 + GtkWidget * topmenu;
60 GtkAction * script_action; 61 GtkAction * script_action;
61 GtkWidget * center_widget; 62 GtkWidget * center_widget;
62 GtkWidget ** popup; /**< Popup widgets */ 63 GtkWidget ** popup; /**< Popup widgets */
updateChangeLog.sh
@@ -30,7 +30,7 @@ @@ -30,7 +30,7 @@
30 touch ChangeLog 30 touch ChangeLog
31 31
32 REV_TO=${1:-"HEAD"} 32 REV_TO=${1:-"HEAD"}
33 -REV_LAST=`cat ChangeLog | head -3 - | tr -d '\r\n' | sed -e 's/.*svn\([0-9]*\).*//'` 33 +REV_LAST=`head -3 ChangeLog | tr -d '\r\n' | sed -e 's/.*svn\([0-9]*\).*//'`
34 34
35 svn update 35 svn update
36 36