/* Trigger destruction of object in case the mainloop at level main_level is quit. */ int clip_GTK_QUITADDDESTROY(ClipMachine * cm) { guint main_level = INT_OPTION(cm,1,gtk_main_level()); C_widget *cwid = _fetch_cwidget(cm,_clip_spar(cm,2)); C_object *cobj; CHECKOPT(1,NUMERIC_t); CHECKARG2(2,MAP_t,NUMERIC_t); if (cwid->objtype == GTK_OBJ_WIDGET) { CHECKCWID(cwid, GTK_IS_OBJECT); gtk_quit_add_destroy(main_level, GTK_OBJECT(cwid->widget)); } if (cwid->objtype == GTK_OBJ_OBJECT) { cobj = (C_object*)cwid; CHECKCOBJ(cobj, GTK_IS_OBJECT(cobj->object)); gtk_quit_add_destroy(main_level, GTK_OBJECT(cobj->object)); } return 0; err: return 1; }
int main (int argc, char **argv) { GtkWidget *window, *glarea; int attrlist[] = { GDK_GL_RGBA, GDK_GL_RED_SIZE, 1, GDK_GL_GREEN_SIZE, 1, GDK_GL_BLUE_SIZE, 1, GDK_GL_DOUBLEBUFFER, GDK_GL_NONE }; gtk_init (&argc, &argv); if (gdk_gl_query () == FALSE) return 0; window = gtk_window_new (GTK_WINDOW_TOPLEVEL); gtk_window_set_title (GTK_WINDOW(window), "Nuke Version 1.0"); gtk_container_set_border_width (GTK_CONTAINER(window), 15); g_signal_connect (window, "delete_event", G_CALLBACK (gtk_main_quit), NULL); /* You should always delete gtk_gl_area widgets before exit or else GLX contexts are left undeleted, this may cause problems (=core dump) in some systems. Destroy method of objects is not automatically called on exit. You need to manually enable this feature. Do gtk_quit_add_destroy() for all your top level windows unless you are certain that they get destroy signal by other means. */ gtk_quit_add_destroy (1, GTK_OBJECT(window)); glarea = GTK_WIDGET(gtk_gl_area_new (attrlist)); gtk_widget_set_size_request (GTK_WIDGET(glarea), 1000, 800); gtk_widget_set_events (GTK_WIDGET(glarea), GDK_EXPOSURE_MASK | GDK_BUTTON_PRESS_MASK); g_signal_connect (glarea, "expose_event", G_CALLBACK(draw), NULL); g_signal_connect (glarea, "configure_event", G_CALLBACK(reshape), NULL); g_signal_connect (glarea, "realize", G_CALLBACK(init), NULL); gtk_container_add (GTK_CONTAINER(window), GTK_WIDGET(glarea)); gtk_widget_show (GTK_WIDGET(glarea)); gtk_widget_show (GTK_WIDGET(window)); gtk_main (); return 0; }
//A foprogram int main(int argc, char **argv) { GtkWidget *window, *glarea; int attrlist[] = { GDK_GL_RGBA, GDK_GL_RED_SIZE, 1, GDK_GL_GREEN_SIZE, 1, GDK_GL_BLUE_SIZE, 1, GDK_GL_DOUBLEBUFFER, GDK_GL_NONE }; //Meghivjuk az init fuggvenyt gtk_init(&argc, &argv); if (gdk_gl_query() == FALSE) return 0; //Letrehozunk egy uj ablakot window = gtk_window_new(GTK_WINDOW_TOPLEVEL); //Megadjuk az ablak cimet gtk_window_set_title(GTK_WINDOW(window), "Gtk+Opengl"); //Beallitjuk a szelek vastagsagat gtk_container_set_border_width(GTK_CONTAINER(window), 10); //Kilepeskor meghivja a delete_event-t g_signal_connect(window, "delete_event", G_CALLBACK (gtk_main_quit), NULL); gtk_quit_add_destroy(1, GTK_OBJECT(window) ); //Letrehozom az OpenGl rajzfeluletet glarea = GTK_WIDGET(gtk_gl_area_new (attrlist)); gtk_widget_set_size_request(GTK_WIDGET(glarea), 100, 100); //Az ablakra vontakozo esemenyek eseten a `glarea`-t is ujrarajzoljuk gtk_widget_set_events(GTK_WIDGET(glarea), GDK_EXPOSURE_MASK | GDK_BUTTON_PRESS_MASK); g_signal_connect(glarea, "expose_event", G_CALLBACK(draw), NULL); g_signal_connect(glarea, "configure_event", G_CALLBACK(reshape), NULL); g_signal_connect(glarea, "realize", G_CALLBACK(init), NULL); //Az ablakhoz hozzaadok egy tarolot, majd ehhez a tarolohoz egy rajzfeluletet gtk_container_add(GTK_CONTAINER(window), GTK_WIDGET(glarea) ); gtk_widget_show(GTK_WIDGET(glarea) ); gtk_widget_show(GTK_WIDGET(window) ); gtk_main(); return 0; }
static void startGTK(GtkWidget *dialog){ gtk_init_add( (GSourceFunc) closeGTK, NULL ); gtk_quit_add_destroy(1,GTK_OBJECT(dialog)); //g_timeout_add(10, (GSourceFunc) destroyWidgetGTK, (gpointer) dialog); gtk_main(); }
int main(int argc, char **argv) { GtkWidget *window,*vbox,*logo,*glarea; /* Attribute list for gtkglarea widget. Specifies a list of Boolean attributes and enum/integer attribute/value pairs. The last attribute must be GDK_GL_NONE. See glXChooseVisual manpage for further explanation. */ int attrlist[] = { GDK_GL_RGBA, GDK_GL_RED_SIZE,1, GDK_GL_GREEN_SIZE,1, GDK_GL_BLUE_SIZE,1, GDK_GL_DOUBLEBUFFER, GDK_GL_NONE }; #ifdef FULLSCREEN_MESA_3DFX setenv("MESA_GLX_FX", "", 1); setenv("FX_GLIDE_NO_SPLASH", "", 1); #endif /* initialize gtk */ gtk_init(&argc, &argv); /* Check if OpenGL (GLX extension) is supported. */ if (gdk_gl_query() == FALSE) { g_print("OpenGL not supported\n"); return 0; } /* Create new top level window. */ window = gtk_window_new( GTK_WINDOW_TOPLEVEL); gtk_window_set_title(GTK_WINDOW(window), "Zktor"); /* Quit form main if got delete event */ gtk_signal_connect(GTK_OBJECT(window), "delete_event", GTK_SIGNAL_FUNC(gtk_main_quit), NULL); /* You should always delete gtk_gl_area widgets before exit or else GLX contexts are left undeleted, this may cause problems (=core dump) in some systems. Destroy method of objects is not automatically called on exit. You need to manually enable this feature. Do gtk_quit_add_destroy() for all your top level windows unless you are certain that they get destroy signal by other means. */ gtk_quit_add_destroy(1, GTK_OBJECT(window)); vbox = GTK_WIDGET(gtk_vbox_new(FALSE, 0)); gtk_container_set_border_width(GTK_CONTAINER(vbox), 10); logo = gtk_label_new("Zktor"); /* Create new OpenGL widget. */ glarea = GTK_WIDGET(gtk_gl_area_new(attrlist)); /* Events for widget must be set before X Window is created */ gtk_widget_set_events(GTK_WIDGET(glarea), GDK_EXPOSURE_MASK| GDK_KEY_PRESS_MASK| GDK_KEY_RELEASE_MASK); /* set minimum size */ /* gtk_widget_set_usize(GTK_WIDGET(glarea), 200,200); */ /* set default size */ gtk_gl_area_size(GTK_GL_AREA(glarea), 640,400); /* Connect signal handlers */ /* Redraw image when exposed. */ gtk_signal_connect(GTK_OBJECT(glarea), "expose_event", GTK_SIGNAL_FUNC(draw), NULL); /* When window is resized viewport needs to be resized also. */ gtk_signal_connect(GTK_OBJECT(glarea), "configure_event", GTK_SIGNAL_FUNC(reshape), NULL); /* Do initialization when widget has been realized. */ gtk_signal_connect(GTK_OBJECT(glarea), "realize", GTK_SIGNAL_FUNC(init), NULL); /* Capture keypress events */ gtk_signal_connect(GTK_OBJECT(glarea), "key_press_event", GTK_SIGNAL_FUNC(key_press_event), NULL); gtk_signal_connect(GTK_OBJECT(glarea), "key_release_event", GTK_SIGNAL_FUNC(key_release_event), NULL); /* construct widget hierarchy */ gtk_container_add(GTK_CONTAINER(window),GTK_WIDGET(vbox)); gtk_box_pack_start(GTK_BOX(vbox), logo, FALSE, FALSE, 0); gtk_box_pack_start(GTK_BOX(vbox), glarea, TRUE, TRUE, 0); /* show all widgets */ gtk_widget_show(GTK_WIDGET(glarea)); gtk_widget_show(GTK_WIDGET(logo)); gtk_widget_show(GTK_WIDGET(vbox)); gtk_widget_show(window); /* set focus to glarea widget */ GTK_WIDGET_SET_FLAGS(glarea, GTK_CAN_FOCUS); gtk_widget_grab_focus(GTK_WIDGET(glarea)); /* animating */ gtk_idle_add((GtkFunction)animate, glarea); game_init(); gtk_main(); return 0; }
gboolean NewGLArea(GtkWidget* vboxwin) { GtkWidget* frame; /* gchar *info_str; */ GtkWidget* table; GtkWidget* hboxtoolbar; GtkWidget* vbox; #define DIMAL 13 int k = 0; GdkGLConfig *glconfig; k = 0; /* if(openGLOptions.alphaSize!=0) { attrlist[k++] = GDK_GL_ALPHA_SIZE; attrlist[k++] = 1; } if(openGLOptions.depthSize!=0) { attrlist[k++] = GDK_GL_DEPTH_SIZE; attrlist[k++] = 1; } if(openGLOptions.doubleBuffer!=0) attrlist[k++] = GDK_GL_DOUBLEBUFFER; */ set_show_symbols(FALSE); set_show_distances(FALSE); trackball(Quat , 0.0, 0.0, 0.0, 0.0); frame = gtk_frame_new (NULL); gtk_container_set_border_width (GTK_CONTAINER (frame), 0); gtk_frame_set_shadow_type( GTK_FRAME(frame),GTK_SHADOW_ETCHED_OUT); gtk_box_pack_start (GTK_BOX (vboxwin), frame, TRUE, TRUE, 0); gtk_widget_show (frame); table = gtk_table_new(2,2,FALSE); gtk_container_add(GTK_CONTAINER(frame),table); gtk_widget_show(GTK_WIDGET(table)); /* hboxtoolbar = gtk_hbox_new (FALSE, 0); gtk_widget_show (hboxtoolbar); gtk_table_attach(GTK_TABLE(table), hboxtoolbar,0,1,0,1, (GtkAttachOptions)(GTK_FILL | GTK_SHRINK ), (GtkAttachOptions)(GTK_FILL | GTK_EXPAND ), 0,0); */ vbox = gtk_vbox_new (FALSE, 0); gtk_table_attach(GTK_TABLE(table), vbox, 0,1, 0,1, GTK_FILL , GTK_FILL, 0, 0); gtk_widget_show(vbox); add_menu_button(PrincipalWindow, vbox); hboxtoolbar = gtk_hbox_new (FALSE, 0); gtk_box_pack_start (GTK_BOX (vbox), hboxtoolbar, TRUE, TRUE, 0); gtk_widget_show(hboxtoolbar); gtk_quit_add_destroy(1, GTK_OBJECT(PrincipalWindow)); /* Create new OpenGL widget. */ /* pthread_mutex_init (&theRender_mutex, NULL);*/ GLArea = gtk_drawing_area_new (); gtk_drawing_area_size(GTK_DRAWING_AREA(GLArea),(gint)(ScreenHeight*0.2),(gint)(ScreenHeight*0.2)); gtk_table_attach(GTK_TABLE(table),GLArea,1,2,0,1, (GtkAttachOptions)(GTK_FILL | GTK_EXPAND ), (GtkAttachOptions)(GTK_FILL | GTK_EXPAND ), 0,0); gtk_widget_show(GTK_WIDGET(GLArea)); /* Events for widget must be set before X Window is created */ gtk_widget_set_events(GLArea, GDK_EXPOSURE_MASK| GDK_BUTTON_PRESS_MASK| GDK_BUTTON_RELEASE_MASK| GDK_POINTER_MOTION_MASK| GDK_POINTER_MOTION_HINT_MASK | GDK_SCROLL_MASK ); /* prepare GL */ glconfig = configure_gl(); if (!glconfig) { g_assert_not_reached (); } if (!gtk_widget_set_gl_capability (GLArea, glconfig, NULL, TRUE, GDK_GL_RGBA_TYPE)) { g_assert_not_reached (); } g_signal_connect(G_OBJECT(GLArea), "realize", G_CALLBACK(init), NULL); g_signal_connect(G_OBJECT(GLArea), "configure_event", G_CALLBACK(reshape), NULL); g_signal_connect(G_OBJECT(GLArea), "expose_event", G_CALLBACK(draw), NULL); /*gtk_widget_set_size_request(GTK_WIDGET(GLArea ),(gint)(ScreenHeight*0.2),(gint)(ScreenHeight*0.2));*/ gtk_widget_realize(GTK_WIDGET(PrincipalWindow)); /* info_str = gdk_gl_get_info(); Debug("%s\n",info_str); g_free(info_str); */ g_signal_connect (G_OBJECT(GLArea), "button_press_event", G_CALLBACK(glarea_button_press), NULL); g_signal_connect_after(G_OBJECT(GLArea), "button_press_event", G_CALLBACK(event_dispatcher), NULL); g_signal_connect_after(G_OBJECT(GLArea), "motion_notify_event", G_CALLBACK(glarea_motion_notify), NULL); g_signal_connect (G_OBJECT(GLArea), "button_release_event", G_CALLBACK(glarea_button_release), NULL); create_toolbar_and_popup_menu_GL(hboxtoolbar); g_signal_connect(G_OBJECT (PrincipalWindow), "key_press_event", (GCallback) set_key_press, GLArea); g_signal_connect(G_OBJECT (PrincipalWindow), "key_release_event", (GCallback) set_key_release, NULL); return TRUE; }
/* Constructs the main program window. The specified mode will be the one * initially selected in the Vis menu */ void window_init( FsvMode fsv_mode ) { GtkWidget *main_window_w; GtkWidget *main_vbox_w; GtkWidget *menu_bar_w; GtkWidget *menu_w; GtkWidget *menu_item_w; GtkWidget *hpaned_w; GtkWidget *vpaned_w; GtkWidget *left_vbox_w; GtkWidget *right_vbox_w; GtkWidget *hbox_w; GtkWidget *button_w; GtkWidget *frame_w; GtkWidget *dir_ctree_w; GtkWidget *file_clist_w; GtkWidget *gl_area_w; GtkWidget *x_scrollbar_w; GtkWidget *y_scrollbar_w; int window_width, window_height; /* Main window widget */ main_window_w = gtk_window_new( GTK_WINDOW_TOPLEVEL ); gtk_window_set_title( GTK_WINDOW(main_window_w), "fsv" ); gtk_window_set_wmclass( GTK_WINDOW(main_window_w), "main", "fsv" ); gtk_window_set_policy( GTK_WINDOW(main_window_w), TRUE, TRUE, TRUE ); window_width = 3 * gdk_screen_width( ) / 4; window_height = 2584 * window_width / 4181; gtk_widget_set_usize( main_window_w, window_width, window_height ); gtk_signal_connect( GTK_OBJECT(main_window_w), "delete_event", GTK_SIGNAL_FUNC(gtk_main_quit), NULL ); gtk_quit_add_destroy( 1, GTK_OBJECT(main_window_w) ); /* Main vertical box widget */ main_vbox_w = gui_vbox_add( main_window_w, 0 ); /* Build menu bar */ /* Menu bar widget */ menu_bar_w = gtk_menu_bar_new( ); gtk_box_pack_start( GTK_BOX(main_vbox_w), menu_bar_w, FALSE, FALSE, 0 ); gtk_widget_show( menu_bar_w ); /* File menu */ menu_w = gui_menu_add( menu_bar_w, _("File") ); /* File menu items */ menu_item_w = gui_menu_item_add( menu_w, _("Change root..."), on_file_change_root_activate, NULL ); gui_keybind( menu_item_w, _("^N") ); G_LIST_APPEND(sw_widget_list, menu_item_w); #if 0 gui_menu_item_add( menu_w, _("Save settings"), on_file_save_settings_activate, NULL ); #endif gui_separator_add( menu_w ); menu_item_w = gui_menu_item_add( menu_w, _("Exit"), on_file_exit_activate, NULL ); gui_keybind( menu_item_w, _("^Q") ); /* Vis menu */ menu_w = gui_menu_add( menu_bar_w, _("Vis") ); /* Vis menu items */ gui_radio_menu_begin( fsv_mode -1 ); #if 0 /* DiscV mode needs more work */ gui_radio_menu_item_add( menu_w, _("DiscV"), on_vis_discv_activate, NULL ); /* Note: don't forget to remove the "-1" three lines up */ #endif gui_radio_menu_item_add( menu_w, _("MapV"), on_vis_mapv_activate, NULL ); gui_radio_menu_item_add( menu_w, _("TreeV"), on_vis_treev_activate, NULL ); /* Color menu */ menu_w = gui_menu_add( menu_bar_w, _("Colors") ); /* Color menu items */ gui_radio_menu_begin( 0 ); menu_item_w = gui_radio_menu_item_add( menu_w, _("By node type"), on_color_by_nodetype_activate, NULL ); G_LIST_APPEND(sw_widget_list, menu_item_w); color_by_nodetype_rmenu_item_w = menu_item_w; menu_item_w = gui_radio_menu_item_add( menu_w, _("By timestamp"), on_color_by_timestamp_activate, NULL ); G_LIST_APPEND(sw_widget_list, menu_item_w); color_by_timestamp_rmenu_item_w = menu_item_w; menu_item_w = gui_radio_menu_item_add( menu_w, _("By wildcards"), on_color_by_wildcards_activate, NULL ); G_LIST_APPEND(sw_widget_list, menu_item_w); color_by_wpattern_rmenu_item_w = menu_item_w; gui_separator_add( menu_w ); gui_menu_item_add( menu_w, _("Setup..."), on_color_setup_activate, NULL ); #ifdef DEBUG /* Debug menu */ menu_w = gui_menu_add( menu_bar_w, "Debug" ); /* Debug menu items */ gui_menu_item_add( menu_w, "Memory totals", debug_show_mem_totals, NULL ); gui_menu_item_add( menu_w, "Memory summary", debug_show_mem_summary, NULL ); gui_menu_item_add( menu_w, "Memory stats", debug_show_mem_stats, NULL ); gui_separator_add( menu_w ); gui_menu_item_add( menu_w, "GLib memory profile", g_mem_profile, NULL ); gui_menu_item_add( menu_w, "GMemChunk info", g_mem_chunk_info, NULL ); #endif /* Help menu (right-justified) */ menu_w = gui_menu_add( menu_bar_w, _("Help") ); gtk_menu_item_right_justify( GTK_MENU_ITEM(GTK_MENU(menu_w)->parent_menu_item) ); /* Help menu items */ gui_menu_item_add( menu_w, _("Contents..."), on_help_contents_activate, NULL ); gui_separator_add( menu_w ); gui_menu_item_add( menu_w, _("About fsv..."), on_help_about_fsv_activate, NULL ); /* Done with the menu bar */ /* Main horizontal paned widget */ hpaned_w = gui_hpaned_add( main_vbox_w, window_width / 5 ); /* Vertical box for everything in the left pane */ left_vbox_w = gtk_vbox_new( FALSE, 0 ); gtk_paned_add1( GTK_PANED(hpaned_w), left_vbox_w ); gtk_widget_show( left_vbox_w ); /* Horizontal box for toolbar buttons */ hbox_w = gui_hbox_add( left_vbox_w, 2 ); /* "back" button */ button_w = gui_button_add( hbox_w, NULL, on_back_button_clicked, NULL ); gui_pixmap_xpm_add( button_w, back_xpm ); G_LIST_APPEND(sw_widget_list, button_w); /* "cd /" button */ button_w = gui_button_add( hbox_w, NULL, on_cd_root_button_clicked, NULL ); gui_pixmap_xpm_add( button_w, cd_root_xpm ); G_LIST_APPEND(sw_widget_list, button_w); /* "cd .." button */ button_w = gui_button_add( hbox_w, NULL, on_cd_up_button_clicked, NULL ); gui_pixmap_xpm_add( button_w, cd_up_xpm ); G_LIST_APPEND(sw_widget_list, button_w); /* "bird's-eye view" toggle button */ button_w = gui_toggle_button_add( hbox_w, NULL, FALSE, on_birdseye_view_togglebutton_toggled, NULL ); gui_pixmap_xpm_add( button_w, birdseye_view_xpm ); G_LIST_APPEND(sw_widget_list, button_w); birdseye_view_tbutton_w = button_w; /* Frame to encase the directory tree / file list */ frame_w = gui_frame_add( left_vbox_w, NULL ); /* Vertical paned widget for directory tree / file list */ vpaned_w = gui_vpaned_add( frame_w, window_height / 3 ); /* Directory tree goes in top pane */ dir_ctree_w = gui_ctree_add( NULL ); gtk_paned_add1( GTK_PANED(vpaned_w), dir_ctree_w->parent ); gtk_widget_show( dir_ctree_w->parent ); /* File list goes in bottom pane */ file_clist_w = gui_clist_add( NULL, 3, NULL ); gtk_paned_add2( GTK_PANED(vpaned_w), file_clist_w->parent ); gtk_widget_show( file_clist_w->parent ); /* Left statusbar */ left_statusbar_w = gui_statusbar_add( left_vbox_w ); /* Vertical box for everything in the right pane */ right_vbox_w = gtk_vbox_new( FALSE, 0 ); gtk_paned_add2( GTK_PANED(hpaned_w), right_vbox_w ); gtk_widget_show( right_vbox_w ); /* Horizontal box for viewport and y-scrollbar */ hbox_w = gui_hbox_add( right_vbox_w, 0 ); gui_widget_packing( hbox_w, EXPAND, FILL, AT_START ); /* Main viewport (OpenGL area widget) */ gl_area_w = gui_gl_area_add( hbox_w ); gtk_signal_connect( GTK_OBJECT(gl_area_w), "event", GTK_SIGNAL_FUNC(viewport_cb), NULL ); /* y-scrollbar */ y_scrollbar_w = gui_vscrollbar_add( hbox_w, NULL ); G_LIST_APPEND(sw_widget_list, y_scrollbar_w); /* x-scrollbar */ x_scrollbar_w = gui_hscrollbar_add( right_vbox_w, NULL ); G_LIST_APPEND(sw_widget_list, x_scrollbar_w); /* Right statusbar */ right_statusbar_w = gui_statusbar_add( right_vbox_w ); /* Bind program icon to main window */ gui_window_icon_xpm( main_window_w, fsv_icon_xpm ); /* Attach keybindings */ gui_keybind( main_window_w, NULL ); /* Send out the widgets to their respective modules */ dialog_pass_main_window_widget( main_window_w ); dirtree_pass_widget( dir_ctree_w ); filelist_pass_widget( file_clist_w ); camera_pass_scrollbar_widgets( x_scrollbar_w, y_scrollbar_w ); /* Showtime! */ gtk_widget_show( main_window_w ); }
int main(int argc, char **argv) { GtkWidget *win; GtkWidget *twin; // toolbar window GtkWidget *swin; const char *filename = NULL; //g_thread_init(NULL); //gdk_threads_init(); gdk_threads_enter(); gtk_init(&argc, &argv); printf("%s\n", S52_version()); //printf("float: %.02f \n", 3.1416); // 3.14 //printf("float: %.2f \n", 3.1416); // 3.14 //printf("float: %.02f \n", 3.1); // 3.10 //printf("float: %.2f \n", 3.1); // 3.10 //printf("float: %.2f \n", 3.665); // 3.67 //printf("float: %.2f \n", 3.664); // 3.66 //return 1; filename = _option(argc, argv); _dumpSetUp(); VecView = gv_view_area_new(); if (NULL == VecView){ printf("main.c:ERROR: VecView == NULL!! no OpenGL .. exit!\n"); exit(0); } win = gtk_window_new(GTK_WINDOW_TOPLEVEL); gtk_signal_connect(GTK_OBJECT(win), "destroy", GTK_SIGNAL_FUNC(_destroy), NULL); toolbox = GV_TOOLBOX(gv_toolbox_new()); gv_toolbox_add_tool(toolbox, "select", gv_selection_tool_new()); gv_toolbox_add_tool(toolbox, "zoompan", gv_zoompan_tool_new()); gv_toolbox_add_tool(toolbox, "point", gv_point_tool_new()); gv_toolbox_add_tool(toolbox, "line", gv_line_tool_new()); gv_toolbox_add_tool(toolbox, "area", gv_area_tool_new()); gv_toolbox_add_tool(toolbox, "node", gv_node_tool_new()); gv_toolbox_add_tool(toolbox, "roi", gv_roi_tool_new()); link = GV_VIEW_LINK(gv_view_link_new()); gtk_window_set_default_size( GTK_WINDOW(win), 800, 600 ); // 2D gv_view_area_set_mode(GV_VIEW_AREA(VecView), 0); gtk_drawing_area_size(GTK_DRAWING_AREA(VecView), 800, 600); swin = gtk_scrolled_window_new(NULL, NULL); gtk_container_add(GTK_CONTAINER(win), swin); gtk_container_add(GTK_CONTAINER(swin), VecView); //gv_view_area_add_layer(GV_VIEW_AREA(view), gv_shapes_layer_new(shapes)); gtk_signal_connect_object(GTK_OBJECT(VecView), "key-press-event", GTK_SIGNAL_FUNC(_key_press_cb), GTK_OBJECT(VecView)); gtk_widget_show(VecView); gtk_widget_show(swin); gtk_widget_show(win); gtk_widget_grab_focus(VecView); gtk_signal_connect(GTK_OBJECT(win), "delete-event", GTK_SIGNAL_FUNC(gtk_main_quit), NULL); gtk_quit_add_destroy(1, GTK_OBJECT(win)); gv_tool_activate(GV_TOOL(toolbox), GV_VIEW_AREA(VecView)); gv_toolbox_activate_tool(toolbox, "zoompan" ); twin = _create_toolbar(); _loadCell(filename); gtk_main(); gdk_threads_leave(); // FIXME: do we ever get here! // put back env. var. as it was /* if (NULL != genv){ setenv("OGR_S57_OPTIONS", genv->str, 1); g_string_free(genv, TRUE); } */ printf("exit main()\n"); return 0; }
int main(int argc, char **argv) { GtkWidget *window,*glarea; gtk_init(&argc, &argv); if (argc == 1) { fontname = "-adobe-helvetica-medium-r-normal--*-120-*-*-*-*-*-*"; } else if (argc == 2) { fontname = argv[1]; } else if (argc > 2) { g_print("Usage: gdkfont [font]\n"); return 0; } /* Check if OpenGL (GLX extension) is supported. */ if (gdk_gl_query() == FALSE) { g_print("OpenGL not supported\n"); return 0; } /* Create new top level window. */ window = gtk_window_new( GTK_WINDOW_TOPLEVEL); gtk_window_set_title(GTK_WINDOW(window), "gdkfont"); gtk_container_set_border_width(GTK_CONTAINER(window), 10); /* Quit form main if got delete event */ gtk_signal_connect(GTK_OBJECT(window), "delete_event", GTK_SIGNAL_FUNC(gtk_main_quit), NULL); /* Delete widget before exit */ gtk_quit_add_destroy(1, GTK_OBJECT(window)); /* Create new OpenGL widget. */ glarea = GTK_WIDGET(gtk_gl_area_new_vargs(NULL, GDK_GL_RGBA, GDK_GL_RED_SIZE,1, GDK_GL_GREEN_SIZE,1, GDK_GL_BLUE_SIZE,1, GDK_GL_DEPTH_SIZE,1, GDK_GL_NONE)); gtk_widget_set_events(GTK_WIDGET(glarea), GDK_EXPOSURE_MASK| GDK_BUTTON_PRESS_MASK); /* Connect signal handlers */ gtk_signal_connect(GTK_OBJECT(glarea), "expose_event", GTK_SIGNAL_FUNC(draw), NULL); gtk_signal_connect(GTK_OBJECT(glarea), "configure_event", GTK_SIGNAL_FUNC(reshape), NULL); gtk_signal_connect(GTK_OBJECT(glarea), "realize", GTK_SIGNAL_FUNC(init), NULL); gtk_widget_set_usize(GTK_WIDGET(glarea), 450,100); /* put glarea into window and show it all */ gtk_container_add(GTK_CONTAINER(window),GTK_WIDGET(glarea)); gtk_widget_show(GTK_WIDGET(glarea)); gtk_widget_show(GTK_WIDGET(window)); gtk_main(); return 0; }
int main (int argc, char *argv[]) { gint major, minor; GtkWidget *window; GtkWidget *vbox; GtkWidget *drawing_area; GtkWidget *button; /* * Init GTK. */ gtk_init (&argc, &argv); /* * Init GdkGLExt. */ gdk_gl_init (&argc, &argv); /* * Query OpenGL extension version. */ gdk_gl_query_version (&major, &minor); g_print ("\nOpenGL extension version - %d.%d\n", major, minor); /* * Configure OpenGL-capable visual. */ /* Try double-buffered visual */ glconfig = gdk_gl_config_new (&config_attributes[0]); if (glconfig == NULL) { g_print ("*** Cannot find the double-buffered visual.\n"); g_print ("*** Trying single-buffered visual.\n"); /* Try single-buffered visual */ glconfig = gdk_gl_config_new (&config_attributes[1]); if (glconfig == NULL) { g_print ("*** No appropriate OpenGL-capable visual found.\n"); exit (1); } } examine_gl_config_attrib (glconfig); /* * Top-level window. */ window = gtk_window_new (GTK_WINDOW_TOPLEVEL); gtk_window_set_title (GTK_WINDOW (window), "low-level"); /* * If window manager doesn't watch the WM_COLORMAP_WINDOWS property on * the top-level window, we have to set OpenGL window's colormap to the * top-level window. */ gtk_widget_set_colormap (window, gdk_gl_config_get_colormap (glconfig)); /* Get automatically redrawn if any of their children changed allocation. */ gtk_container_set_reallocate_redraws (GTK_CONTAINER (window), TRUE); g_signal_connect (G_OBJECT (window), "delete_event", G_CALLBACK (gtk_main_quit), NULL); /* * VBox. */ vbox = gtk_vbox_new (FALSE, 0); gtk_container_add (GTK_CONTAINER (window), vbox); gtk_widget_show (vbox); /* * Drawing area for drawing OpenGL scene. */ drawing_area = gtk_drawing_area_new (); gtk_widget_set_size_request (drawing_area, 200, 200); /* Set OpenGL-capable colormap. */ gtk_widget_set_colormap (drawing_area, gdk_gl_config_get_colormap (glconfig)); /* Disable backing store feature of the widget. */ gtk_widget_set_double_buffered (drawing_area, FALSE); g_signal_connect_after (G_OBJECT (drawing_area), "realize", G_CALLBACK (realize), NULL); g_signal_connect (G_OBJECT (drawing_area), "size_allocate", G_CALLBACK (size_allocate), NULL); g_signal_connect (G_OBJECT (drawing_area), "configure_event", G_CALLBACK (configure_event), NULL); g_signal_connect (G_OBJECT (drawing_area), "expose_event", G_CALLBACK (expose_event), NULL); g_signal_connect (G_OBJECT (drawing_area), "unrealize", G_CALLBACK (unrealize), NULL); gtk_box_pack_start (GTK_BOX (vbox), drawing_area, TRUE, TRUE, 0); gtk_widget_show (drawing_area); /* * Simple quit button. */ button = gtk_button_new_with_label ("Quit"); g_signal_connect (G_OBJECT (button), "clicked", G_CALLBACK (gtk_main_quit), NULL); gtk_box_pack_start (GTK_BOX (vbox), button, FALSE, FALSE, 0); gtk_widget_show (button); /* * Show window. */ gtk_widget_show (window); /* * Main loop. */ /* Destroy the GLX context explicitly when application is terminated. */ gtk_quit_add_destroy (gtk_main_level () + 1, GTK_OBJECT (drawing_area)); gtk_main (); return 0; }
static void script_fu_browse_callback (GtkWidget *widget, gpointer data) { gtk_quit_add_destroy (1, (GtkObject*) gimp_db_browser (apply_callback)); }