int main(int argc, char* argv[]) { CefMainArgs main_args(argc, argv); CefRefPtr<ClientApp> app(new ClientApp); // Execute the secondary process, if any. int exit_code = CefExecuteProcess(main_args, app.get()); if (exit_code >= 0) return exit_code; if (!getcwd(szWorkingDir, sizeof (szWorkingDir))) return -1; GtkWidget* window; gtk_init(&argc, &argv); // Parse command line arguments. AppInitCommandLine(argc, argv); CefSettings settings; // Populate the settings based on command line arguments. AppGetSettings(settings); // Initialize CEF. CefInitialize(main_args, settings, app.get()); // Register the scheme handler. scheme_test::InitTest(); window = gtk_window_new(GTK_WINDOW_TOPLEVEL); gtk_window_set_default_size(GTK_WINDOW(window), 800, 600); g_signal_connect(window, "focus", G_CALLBACK(&HandleFocus), NULL); GtkWidget* vbox = gtk_vbox_new(FALSE, 0); GtkWidget* menu_bar = CreateMenuBar(); gtk_box_pack_start(GTK_BOX(vbox), menu_bar, FALSE, FALSE, 0); GtkWidget* toolbar = gtk_toolbar_new(); // Turn off the labels on the toolbar buttons. gtk_toolbar_set_style(GTK_TOOLBAR(toolbar), GTK_TOOLBAR_ICONS); GtkToolItem* back = gtk_tool_button_new_from_stock(GTK_STOCK_GO_BACK); g_signal_connect(back, "clicked", G_CALLBACK(BackButtonClicked), NULL); gtk_toolbar_insert(GTK_TOOLBAR(toolbar), back, -1 /* append */); GtkToolItem* forward = gtk_tool_button_new_from_stock(GTK_STOCK_GO_FORWARD); g_signal_connect(forward, "clicked", G_CALLBACK(ForwardButtonClicked), NULL); gtk_toolbar_insert(GTK_TOOLBAR(toolbar), forward, -1 /* append */); GtkToolItem* reload = gtk_tool_button_new_from_stock(GTK_STOCK_REFRESH); g_signal_connect(reload, "clicked", G_CALLBACK(ReloadButtonClicked), NULL); gtk_toolbar_insert(GTK_TOOLBAR(toolbar), reload, -1 /* append */); GtkToolItem* stop = gtk_tool_button_new_from_stock(GTK_STOCK_STOP); g_signal_connect(stop, "clicked", G_CALLBACK(StopButtonClicked), NULL); gtk_toolbar_insert(GTK_TOOLBAR(toolbar), stop, -1 /* append */); GtkWidget* m_editWnd = gtk_entry_new(); g_signal_connect(G_OBJECT(m_editWnd), "activate", G_CALLBACK(URLEntryActivate), NULL); GtkToolItem* tool_item = gtk_tool_item_new(); gtk_container_add(GTK_CONTAINER(tool_item), m_editWnd); gtk_tool_item_set_expand(tool_item, TRUE); gtk_toolbar_insert(GTK_TOOLBAR(toolbar), tool_item, -1); // append gtk_box_pack_start(GTK_BOX(vbox), toolbar, FALSE, FALSE, 0); g_signal_connect(G_OBJECT(window), "destroy", G_CALLBACK(destroy), NULL); g_signal_connect(G_OBJECT(window), "delete_event", G_CALLBACK(delete_event), window); // Create the handler. g_handler = new ClientHandler(); g_handler->SetMainHwnd(vbox); g_handler->SetEditHwnd(m_editWnd); g_handler->SetButtonHwnds(GTK_WIDGET(back), GTK_WIDGET(forward), GTK_WIDGET(reload), GTK_WIDGET(stop)); // Create the browser view. CefWindowInfo window_info; CefBrowserSettings browserSettings; window_info.SetAsChild(vbox); CefBrowserHost::CreateBrowserSync( window_info, g_handler.get(), g_handler->GetStartupURL(), browserSettings); gtk_container_add(GTK_CONTAINER(window), vbox); gtk_widget_show_all(GTK_WIDGET(window)); // Install an signal handler so we clean up after ourselves. signal(SIGINT, TerminationSignalHandler); signal(SIGTERM, TerminationSignalHandler); CefRunMessageLoop(); CefShutdown(); return 0; }
GtkWidget* create_lshw (void) { GtkWidget *lshw; GtkWidget *vbox1; GtkWidget *menu; GtkWidget *menuitem4; GtkWidget *menuitem4_menu; GtkWidget *save; GtkWidget *quit1; GtkWidget *menuitem6; GtkWidget *menuitem6_menu; GtkWidget *refresh1; GtkWidget *menuitem7; GtkWidget *menuitem7_menu; GtkWidget *about1; GtkWidget *toolbar1; GtkIconSize tmp_toolbar_icon_size; GtkWidget *upbutton; GtkWidget *refreshbutton; GtkWidget *savebutton; GtkWidget *quitbutton; GtkWidget *scrolledwindow1; GtkWidget *viewport2; GtkWidget *hbox1; GtkWidget *hpaned1; GtkWidget *hbox3; GtkWidget *scrolledwindow10; GtkWidget *treeview1; GtkWidget *scrolledwindow11; GtkWidget *treeview2; GtkWidget *scrolledwindow12; GtkWidget *treeview3; GtkWidget *vbox2; GtkWidget *scrolledwindow13; GtkWidget *viewport3; GtkWidget *scrolledwindow14; GtkWidget *description; GtkWidget *statusbar; GtkAccelGroup *accel_group; GtkTooltips *tooltips; tooltips = gtk_tooltips_new (); accel_group = gtk_accel_group_new (); lshw = gtk_window_new (GTK_WINDOW_TOPLEVEL); gtk_window_set_title (GTK_WINDOW (lshw), "lshw"); gtk_window_set_default_size (GTK_WINDOW (lshw), 700, 480); vbox1 = gtk_vbox_new (FALSE, 0); gtk_widget_show (vbox1); gtk_container_add (GTK_CONTAINER (lshw), vbox1); menu = gtk_menu_bar_new (); gtk_widget_show (menu); gtk_box_pack_start (GTK_BOX (vbox1), menu, FALSE, FALSE, 0); menuitem4 = gtk_menu_item_new_with_mnemonic ("_File"); gtk_widget_show (menuitem4); gtk_container_add (GTK_CONTAINER (menu), menuitem4); menuitem4_menu = gtk_menu_new (); gtk_menu_item_set_submenu (GTK_MENU_ITEM (menuitem4), menuitem4_menu); save = gtk_image_menu_item_new_from_stock ("gtk-save", accel_group); gtk_widget_show (save); gtk_container_add (GTK_CONTAINER (menuitem4_menu), save); gtk_widget_set_sensitive (save, FALSE); quit1 = gtk_image_menu_item_new_from_stock ("gtk-quit", accel_group); gtk_widget_show (quit1); gtk_container_add (GTK_CONTAINER (menuitem4_menu), quit1); menuitem6 = gtk_menu_item_new_with_mnemonic ("_View"); gtk_widget_show (menuitem6); gtk_container_add (GTK_CONTAINER (menu), menuitem6); menuitem6_menu = gtk_menu_new (); gtk_menu_item_set_submenu (GTK_MENU_ITEM (menuitem6), menuitem6_menu); refresh1 = gtk_image_menu_item_new_from_stock ("gtk-refresh", accel_group); gtk_widget_show (refresh1); gtk_container_add (GTK_CONTAINER (menuitem6_menu), refresh1); gtk_widget_add_accelerator (refresh1, "activate", accel_group, GDK_F5, (GdkModifierType) 0, GTK_ACCEL_VISIBLE); menuitem7 = gtk_menu_item_new_with_mnemonic ("_Help"); gtk_widget_show (menuitem7); gtk_container_add (GTK_CONTAINER (menu), menuitem7); menuitem7_menu = gtk_menu_new (); gtk_menu_item_set_submenu (GTK_MENU_ITEM (menuitem7), menuitem7_menu); about1 = gtk_menu_item_new_with_mnemonic ("_About"); gtk_widget_show (about1); gtk_container_add (GTK_CONTAINER (menuitem7_menu), about1); toolbar1 = gtk_toolbar_new (); gtk_widget_show (toolbar1); gtk_box_pack_start (GTK_BOX (vbox1), toolbar1, FALSE, FALSE, 0); gtk_toolbar_set_style (GTK_TOOLBAR (toolbar1), GTK_TOOLBAR_BOTH); tmp_toolbar_icon_size = gtk_toolbar_get_icon_size (GTK_TOOLBAR (toolbar1)); upbutton = (GtkWidget*) gtk_tool_button_new_from_stock ("gtk-go-up"); gtk_widget_show (upbutton); gtk_container_add (GTK_CONTAINER (toolbar1), upbutton); gtk_widget_set_sensitive (upbutton, FALSE); refreshbutton = (GtkWidget*) gtk_tool_button_new_from_stock ("gtk-refresh"); gtk_widget_show (refreshbutton); gtk_container_add (GTK_CONTAINER (toolbar1), refreshbutton); gtk_tool_item_set_tooltip (GTK_TOOL_ITEM (refreshbutton), tooltips, "Rescan the hardware", NULL); savebutton = (GtkWidget*) gtk_tool_button_new_from_stock ("gtk-save"); gtk_widget_show (savebutton); gtk_container_add (GTK_CONTAINER (toolbar1), savebutton); gtk_widget_set_sensitive (savebutton, FALSE); quitbutton = (GtkWidget*) gtk_tool_button_new_from_stock ("gtk-quit"); gtk_widget_show (quitbutton); gtk_container_add (GTK_CONTAINER (toolbar1), quitbutton); scrolledwindow1 = gtk_scrolled_window_new (NULL, NULL); gtk_widget_show (scrolledwindow1); gtk_box_pack_start (GTK_BOX (vbox1), scrolledwindow1, TRUE, TRUE, 0); gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (scrolledwindow1), GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC); viewport2 = gtk_viewport_new (NULL, NULL); gtk_widget_show (viewport2); gtk_container_add (GTK_CONTAINER (scrolledwindow1), viewport2); hbox1 = gtk_hbox_new (FALSE, 0); gtk_widget_show (hbox1); gtk_container_add (GTK_CONTAINER (viewport2), hbox1); hpaned1 = gtk_hpaned_new (); gtk_widget_show (hpaned1); gtk_box_pack_start (GTK_BOX (hbox1), hpaned1, TRUE, TRUE, 0); hbox3 = gtk_hbox_new (FALSE, 0); gtk_widget_show (hbox3); gtk_paned_pack1 (GTK_PANED (hpaned1), hbox3, FALSE, TRUE); scrolledwindow10 = gtk_scrolled_window_new (NULL, NULL); gtk_widget_show (scrolledwindow10); gtk_box_pack_start (GTK_BOX (hbox3), scrolledwindow10, TRUE, TRUE, 0); gtk_container_set_border_width (GTK_CONTAINER (scrolledwindow10), 2); gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (scrolledwindow10), GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC); gtk_scrolled_window_set_shadow_type (GTK_SCROLLED_WINDOW (scrolledwindow10), GTK_SHADOW_ETCHED_IN); treeview1 = gtk_tree_view_new (); gtk_widget_show (treeview1); gtk_container_add (GTK_CONTAINER (scrolledwindow10), treeview1); gtk_widget_set_size_request (treeview1, 128, -1); gtk_tree_view_set_headers_visible (GTK_TREE_VIEW (treeview1), FALSE); scrolledwindow11 = gtk_scrolled_window_new (NULL, NULL); gtk_widget_show (scrolledwindow11); gtk_box_pack_start (GTK_BOX (hbox3), scrolledwindow11, TRUE, TRUE, 0); gtk_container_set_border_width (GTK_CONTAINER (scrolledwindow11), 2); gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (scrolledwindow11), GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC); gtk_scrolled_window_set_shadow_type (GTK_SCROLLED_WINDOW (scrolledwindow11), GTK_SHADOW_ETCHED_IN); treeview2 = gtk_tree_view_new (); gtk_widget_show (treeview2); gtk_container_add (GTK_CONTAINER (scrolledwindow11), treeview2); gtk_widget_set_size_request (treeview2, 128, -1); gtk_tree_view_set_headers_visible (GTK_TREE_VIEW (treeview2), FALSE); scrolledwindow12 = gtk_scrolled_window_new (NULL, NULL); gtk_widget_show (scrolledwindow12); gtk_box_pack_start (GTK_BOX (hbox3), scrolledwindow12, TRUE, TRUE, 0); gtk_container_set_border_width (GTK_CONTAINER (scrolledwindow12), 2); gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (scrolledwindow12), GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC); gtk_scrolled_window_set_shadow_type (GTK_SCROLLED_WINDOW (scrolledwindow12), GTK_SHADOW_ETCHED_IN); treeview3 = gtk_tree_view_new (); gtk_widget_show (treeview3); gtk_container_add (GTK_CONTAINER (scrolledwindow12), treeview3); gtk_widget_set_size_request (treeview3, 128, -1); gtk_tree_view_set_headers_visible (GTK_TREE_VIEW (treeview3), FALSE); vbox2 = gtk_vbox_new (FALSE, 0); gtk_widget_show (vbox2); gtk_paned_pack2 (GTK_PANED (hpaned1), vbox2, TRUE, TRUE); scrolledwindow13 = gtk_scrolled_window_new (NULL, NULL); gtk_widget_show (scrolledwindow13); gtk_box_pack_start (GTK_BOX (vbox2), scrolledwindow13, TRUE, TRUE, 0); gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (scrolledwindow13), GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC); viewport3 = gtk_viewport_new (NULL, NULL); gtk_widget_show (viewport3); gtk_container_add (GTK_CONTAINER (scrolledwindow13), viewport3); gtk_viewport_set_shadow_type (GTK_VIEWPORT (viewport3), GTK_SHADOW_NONE); scrolledwindow14 = gtk_scrolled_window_new (NULL, NULL); gtk_widget_show (scrolledwindow14); gtk_container_add (GTK_CONTAINER (viewport3), scrolledwindow14); gtk_container_set_border_width (GTK_CONTAINER (scrolledwindow14), 2); gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (scrolledwindow14), GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC); gtk_scrolled_window_set_shadow_type (GTK_SCROLLED_WINDOW (scrolledwindow14), GTK_SHADOW_ETCHED_IN); description = gtk_text_view_new (); gtk_widget_show (description); gtk_container_add (GTK_CONTAINER (scrolledwindow14), description); GTK_WIDGET_UNSET_FLAGS (description, GTK_CAN_FOCUS); gtk_tooltips_set_tip (tooltips, description, "This pane displays detailed information about the selected hardware node", NULL); gtk_text_view_set_editable (GTK_TEXT_VIEW (description), FALSE); gtk_text_view_set_cursor_visible (GTK_TEXT_VIEW (description), FALSE); gtk_text_view_set_left_margin (GTK_TEXT_VIEW (description), 10); gtk_text_view_set_right_margin (GTK_TEXT_VIEW (description), 10); gtk_text_buffer_set_text (gtk_text_view_get_buffer (GTK_TEXT_VIEW (description)), "no information available.\n\nclick on Refresh to query hardware", -1); statusbar = gtk_statusbar_new (); gtk_widget_show (statusbar); gtk_box_pack_start (GTK_BOX (vbox1), statusbar, FALSE, FALSE, 0); gtk_statusbar_set_has_resize_grip (GTK_STATUSBAR (statusbar), FALSE); g_signal_connect ((gpointer) lshw, "delete_event", G_CALLBACK (gtk_main_quit), NULL); g_signal_connect_after ((gpointer) lshw, "map", G_CALLBACK (on_lshw_map), NULL); g_signal_connect ((gpointer) save, "activate", G_CALLBACK (on_save_activate), NULL); g_signal_connect ((gpointer) quit1, "activate", G_CALLBACK (gtk_main_quit), NULL); g_signal_connect ((gpointer) refresh1, "activate", G_CALLBACK (refresh_display), NULL); g_signal_connect ((gpointer) about1, "activate", G_CALLBACK (on_about1_activate), NULL); g_signal_connect ((gpointer) upbutton, "clicked", G_CALLBACK (go_up), NULL); g_signal_connect ((gpointer) refreshbutton, "clicked", G_CALLBACK (refresh_display), NULL); g_signal_connect ((gpointer) savebutton, "clicked", G_CALLBACK (on_savebutton_clicked), NULL); g_signal_connect ((gpointer) quitbutton, "clicked", G_CALLBACK (gtk_main_quit), NULL); g_signal_connect ((gpointer) treeview1, "row_activated", G_CALLBACK (on_treeview1_row_activated), NULL); g_signal_connect ((gpointer) treeview1, "cursor_changed", G_CALLBACK (on_treeview1_cursor_changed), NULL); g_signal_connect ((gpointer) treeview2, "row_activated", G_CALLBACK (on_treeview2_row_activated), NULL); g_signal_connect ((gpointer) treeview2, "cursor_changed", G_CALLBACK (on_treeview2_cursor_changed), NULL); g_signal_connect ((gpointer) treeview3, "row_activated", G_CALLBACK (on_treeview3_row_activated), NULL); g_signal_connect ((gpointer) treeview3, "cursor_changed", G_CALLBACK (on_treeview3_cursor_changed), NULL); /* Store pointers to all widgets, for use by lookup_widget(). */ GLADE_HOOKUP_OBJECT_NO_REF (lshw, lshw, "lshw"); GLADE_HOOKUP_OBJECT (lshw, vbox1, "vbox1"); GLADE_HOOKUP_OBJECT (lshw, menu, "menu"); GLADE_HOOKUP_OBJECT (lshw, menuitem4, "menuitem4"); GLADE_HOOKUP_OBJECT (lshw, menuitem4_menu, "menuitem4_menu"); GLADE_HOOKUP_OBJECT (lshw, save, "save"); GLADE_HOOKUP_OBJECT (lshw, quit1, "quit1"); GLADE_HOOKUP_OBJECT (lshw, menuitem6, "menuitem6"); GLADE_HOOKUP_OBJECT (lshw, menuitem6_menu, "menuitem6_menu"); GLADE_HOOKUP_OBJECT (lshw, refresh1, "refresh1"); GLADE_HOOKUP_OBJECT (lshw, menuitem7, "menuitem7"); GLADE_HOOKUP_OBJECT (lshw, menuitem7_menu, "menuitem7_menu"); GLADE_HOOKUP_OBJECT (lshw, about1, "about1"); GLADE_HOOKUP_OBJECT (lshw, toolbar1, "toolbar1"); GLADE_HOOKUP_OBJECT (lshw, upbutton, "upbutton"); GLADE_HOOKUP_OBJECT (lshw, refreshbutton, "refreshbutton"); GLADE_HOOKUP_OBJECT (lshw, savebutton, "savebutton"); GLADE_HOOKUP_OBJECT (lshw, quitbutton, "quitbutton"); GLADE_HOOKUP_OBJECT (lshw, scrolledwindow1, "scrolledwindow1"); GLADE_HOOKUP_OBJECT (lshw, viewport2, "viewport2"); GLADE_HOOKUP_OBJECT (lshw, hbox1, "hbox1"); GLADE_HOOKUP_OBJECT (lshw, hpaned1, "hpaned1"); GLADE_HOOKUP_OBJECT (lshw, hbox3, "hbox3"); GLADE_HOOKUP_OBJECT (lshw, scrolledwindow10, "scrolledwindow10"); GLADE_HOOKUP_OBJECT (lshw, treeview1, "treeview1"); GLADE_HOOKUP_OBJECT (lshw, scrolledwindow11, "scrolledwindow11"); GLADE_HOOKUP_OBJECT (lshw, treeview2, "treeview2"); GLADE_HOOKUP_OBJECT (lshw, scrolledwindow12, "scrolledwindow12"); GLADE_HOOKUP_OBJECT (lshw, treeview3, "treeview3"); GLADE_HOOKUP_OBJECT (lshw, vbox2, "vbox2"); GLADE_HOOKUP_OBJECT (lshw, scrolledwindow13, "scrolledwindow13"); GLADE_HOOKUP_OBJECT (lshw, viewport3, "viewport3"); GLADE_HOOKUP_OBJECT (lshw, scrolledwindow14, "scrolledwindow14"); GLADE_HOOKUP_OBJECT (lshw, description, "description"); GLADE_HOOKUP_OBJECT (lshw, statusbar, "statusbar"); GLADE_HOOKUP_OBJECT_NO_REF (lshw, tooltips, "tooltips"); gtk_window_add_accel_group (GTK_WINDOW (lshw), accel_group); return lshw; }
/* Add the Edit menu and the point content points to the menu bar */ gtk_menu_item_set_submenu(GTK_MENU_ITEM(edit), editmenu); gtk_menu_shell_append(GTK_MENU_SHELL(editmenu), pref_1); gtk_menu_shell_append(GTK_MENU_SHELL(menubar), edit); /* Add the View menu and the point content points to the menu bar */ gtk_menu_item_set_submenu(GTK_MENU_ITEM(view), viewmenu); gtk_menu_shell_append(GTK_MENU_SHELL(viewmenu), tog_stat); gtk_menu_shell_append(GTK_MENU_SHELL(viewmenu), tog_tool); gtk_menu_shell_append(GTK_MENU_SHELL(menubar), view); /* Add the Help menu and the point content points to the menu bar */ gtk_menu_item_set_submenu(GTK_MENU_ITEM(help), helpmenu); gtk_menu_shell_append(GTK_MENU_SHELL(helpmenu), help_Dialog); gtk_menu_shell_append(GTK_MENU_SHELL(helpmenu), about_Dialog); gtk_menu_shell_append(GTK_MENU_SHELL(menubar), help); /* ############################# Items for the Toolbar Bar################## */ test_item = gtk_tool_button_new_from_stock(GTK_STOCK_PREFERENCES); item_1 = gtk_tool_button_new_from_stock(GTK_STOCK_EXECUTE); item_2 = gtk_tool_button_new_from_stock(GTK_STOCK_MEDIA_PREVIOUS); item_3 = gtk_tool_button_new_from_stock(GTK_STOCK_MEDIA_NEXT); item_4 = gtk_tool_button_new_from_stock(GTK_STOCK_MEDIA_PAUSE); gtk_toolbar_insert(GTK_TOOLBAR(toolbar), test_item, -1); gtk_toolbar_insert(GTK_TOOLBAR(toolbar), item_1, -2); gtk_toolbar_insert(GTK_TOOLBAR(toolbar), item_2, -3); gtk_toolbar_insert(GTK_TOOLBAR(toolbar), item_3, -4); gtk_toolbar_insert(GTK_TOOLBAR(toolbar), item_4, -5); /* Add the whole menubar at the beginning of the vbox */ gtk_box_pack_start(GTK_BOX(vbox), menubar, FALSE, FALSE, 0); /* Add the whole toolbar at the beginning of the vbox after the menu bar */ gtk_box_pack_start(GTK_BOX(vbox), toolbar, FALSE, FALSE, 5); /* Add the whole drawing area at the beginning of the vbox after the toolbox bar */ gtk_container_add (GTK_CONTAINER (vbox), drawing_area);
/* camera_new */ Camera * camera_new(GtkWidget * window, GtkAccelGroup * group, char const * device) { Camera * camera; GtkWidget * vbox; GtkWidget * widget; GtkToolItem * toolitem; if((camera = object_new(sizeof(*camera))) == NULL) return NULL; camera->device = (device != NULL) ? string_new(device) : string_new("/dev/video0"); camera->hflip = FALSE; camera->vflip = FALSE; camera->ratio = TRUE; camera->interp = GDK_INTERP_BILINEAR; camera->snapshot_format = CSF_PNG; camera->snapshot_quality = 100; camera->source = 0; camera->fd = -1; memset(&camera->cap, 0, sizeof(camera->cap)); camera->channel = NULL; camera->buffers = NULL; camera->buffers_cnt = 0; camera->raw_buffer = NULL; camera->raw_buffer_cnt = 0; camera->rgb_buffer = NULL; camera->rgb_buffer_cnt = 0; camera->yuv_amp = 255; camera->overlays = NULL; camera->overlays_cnt = 0; camera->widget = NULL; camera->window = window; camera->bold = NULL; camera->gc = NULL; camera->pr_window = NULL; camera->pp_window = NULL; /* check for errors */ if(camera->device == NULL) { camera_delete(camera); return NULL; } /* create the window */ camera->bold = pango_font_description_new(); pango_font_description_set_weight(camera->bold, PANGO_WEIGHT_BOLD); camera->gc = gdk_gc_new(window->window); /* XXX */ #if GTK_CHECK_VERSION(3, 0, 0) camera->widget = gtk_box_new(GTK_ORIENTATION_VERTICAL, 0); #else camera->widget = gtk_vbox_new(FALSE, 0); #endif vbox = camera->widget; /* toolbar */ widget = desktop_toolbar_create(_camera_toolbar, camera, group); gtk_widget_set_sensitive(GTK_WIDGET(_camera_toolbar[0].widget), FALSE); gtk_widget_set_sensitive(GTK_WIDGET(_camera_toolbar[2].widget), FALSE); gtk_widget_set_sensitive(GTK_WIDGET(_camera_toolbar[4].widget), FALSE); toolitem = gtk_tool_button_new_from_stock(GTK_STOCK_FULLSCREEN); g_signal_connect_swapped(toolitem, "clicked", G_CALLBACK( _camera_on_fullscreen), camera); gtk_toolbar_insert(GTK_TOOLBAR(widget), toolitem, -1); gtk_box_pack_start(GTK_BOX(vbox), widget, FALSE, TRUE, 0); #if GTK_CHECK_VERSION(2, 18, 0) /* infobar */ camera->infobar = gtk_info_bar_new_with_buttons(GTK_STOCK_CLOSE, GTK_RESPONSE_CLOSE, NULL); gtk_info_bar_set_message_type(GTK_INFO_BAR(camera->infobar), GTK_MESSAGE_ERROR); g_signal_connect(camera->infobar, "close", G_CALLBACK(gtk_widget_hide), NULL); g_signal_connect(camera->infobar, "response", G_CALLBACK( gtk_widget_hide), NULL); widget = gtk_info_bar_get_content_area(GTK_INFO_BAR(camera->infobar)); camera->infobar_label = gtk_label_new(NULL); gtk_widget_show(camera->infobar_label); gtk_box_pack_start(GTK_BOX(widget), camera->infobar_label, TRUE, TRUE, 0); gtk_widget_set_no_show_all(camera->infobar, TRUE); gtk_box_pack_start(GTK_BOX(vbox), camera->infobar, FALSE, TRUE, 0); #endif camera->area = gtk_drawing_area_new(); camera->pixmap = NULL; g_signal_connect(camera->area, "configure-event", G_CALLBACK( _camera_on_drawing_area_configure), camera); g_signal_connect(camera->area, "expose-event", G_CALLBACK( _camera_on_drawing_area_expose), camera); gtk_box_pack_start(GTK_BOX(vbox), camera->area, TRUE, TRUE, 0); gtk_widget_show_all(vbox); camera_start(camera); return camera; }