static void terminal_create (TerminalPlugin *term_plugin) { GtkWidget *frame; g_return_if_fail(term_plugin != NULL); term_plugin->child_pid = 0; /* Create the terminals. */ term_plugin->shell = create_terminal (term_plugin); term_plugin->shell_box = create_box (term_plugin->shell); term_plugin->term = create_terminal (term_plugin); term_plugin->term_box = create_box (term_plugin->term); /* key-press handler for ctrl-d "kill" */ g_signal_connect (G_OBJECT (term_plugin->term), "key-press-event", G_CALLBACK (terminal_keypress_cb), term_plugin); frame = gtk_frame_new (NULL); gtk_widget_show (frame); gtk_frame_set_shadow_type (GTK_FRAME (frame), GTK_SHADOW_IN); gtk_container_add (GTK_CONTAINER (frame), term_plugin->shell_box); gtk_widget_show_all (frame); term_plugin->frame = frame; g_signal_connect (vte_reaper_get(), "child-exited", G_CALLBACK (terminal_child_exited_cb), term_plugin); init_shell (term_plugin, NULL); }
static gboolean deactivate_plugin (AnjutaPlugin *plugin) { TerminalPlugin *term_plugin; AnjutaUI *ui; term_plugin = ANJUTA_PLUGIN_TERMINAL (plugin); ui = anjuta_shell_get_ui (plugin->shell, NULL); anjuta_ui_unmerge (ui, term_plugin->uiid); if (term_plugin->action_group) { anjuta_ui_remove_action_group (ui, term_plugin->action_group); term_plugin->action_group = NULL; } /* terminal plugin widgets are destroyed as soon as it is removed */ anjuta_shell_remove_widget (plugin->shell, term_plugin->frame, NULL); g_object_unref (term_plugin->shell_box); g_object_unref (term_plugin->term_box); g_signal_handlers_disconnect_by_func (vte_reaper_get (), terminal_child_exited_cb, term_plugin); /* remove watch */ anjuta_plugin_remove_watch (plugin, term_plugin->root_watch_id, FALSE); term_plugin->child_pid = 0; #if OLD_VTE == 1 g_signal_handlers_disconnect_by_func (G_OBJECT (term_plugin->term), G_CALLBACK (terminal_unrealize_cb), term_plugin); term_plugin->first_time_realization = TRUE; #endif return TRUE; }
/** * main routine, parses args and reads from console */ int main(int argc, char *argv[]) { GtkWidget *menubar, *menu, *menuitem, *vbox; GtkWidget *dummMenu, *guestMenu, *switchMenu; enumerator_t *enumerator; guest_t *guest; library_init(NULL); gtk_init(&argc, &argv); pages = linked_list_create(); dumm = dumm_create(NULL); /* setup window */ window = gtk_window_new(GTK_WINDOW_TOPLEVEL); g_signal_connect(G_OBJECT(window), "destroy", G_CALLBACK(quit), NULL); gtk_window_set_title(GTK_WINDOW (window), "Dumm"); gtk_window_set_default_size(GTK_WINDOW (window), 1000, 500); g_signal_connect(G_OBJECT(vte_reaper_get()), "child-exited", G_CALLBACK(child_exited), NULL); /* add vbox with menubar, notebook */ vbox = gtk_vbox_new(FALSE, 0); gtk_container_add(GTK_CONTAINER(window), vbox); menubar = gtk_menu_bar_new(); gtk_box_pack_start(GTK_BOX(vbox), menubar, FALSE, TRUE, 0); notebook = gtk_notebook_new(); g_object_set(G_OBJECT(notebook), "homogeneous", TRUE, NULL); gtk_notebook_set_tab_pos(GTK_NOTEBOOK(notebook), GTK_POS_BOTTOM); gtk_container_add(GTK_CONTAINER(vbox), notebook); /* Dumm menu */ menu = gtk_menu_new(); dummMenu = gtk_menu_item_new_with_mnemonic("_Dumm"); gtk_menu_bar_append(GTK_MENU_BAR(menubar), dummMenu); gtk_widget_show(dummMenu); gtk_menu_item_set_submenu(GTK_MENU_ITEM(dummMenu), menu); /* Dumm -> exit */ menuitem = gtk_image_menu_item_new_from_stock(GTK_STOCK_QUIT, NULL); g_signal_connect(G_OBJECT(menuitem), "activate", G_CALLBACK(quit), NULL); gtk_menu_append(GTK_MENU(menu), menuitem); gtk_widget_show(menuitem); /* Guest menu */ menu = gtk_menu_new(); guestMenu = gtk_menu_item_new_with_mnemonic("_Guest"); gtk_menu_bar_append(GTK_MENU_BAR(menubar), guestMenu); gtk_widget_show(guestMenu); gtk_menu_item_set_submenu(GTK_MENU_ITEM(guestMenu), menu); /* Guest -> new */ menuitem = gtk_image_menu_item_new_from_stock(GTK_STOCK_NEW, NULL); g_signal_connect(G_OBJECT(menuitem), "activate", G_CALLBACK(create_guest), NULL); gtk_menu_append(GTK_MENU(menu), menuitem); gtk_widget_show(menuitem); /* Guest -> delete */ menuitem = gtk_image_menu_item_new_from_stock(GTK_STOCK_DELETE, NULL); g_signal_connect(G_OBJECT(menuitem), "activate", G_CALLBACK(delete_guest), NULL); gtk_menu_append(GTK_MENU(menu), menuitem); gtk_widget_show(menuitem); menuitem = gtk_separator_menu_item_new(); gtk_menu_append(GTK_MENU(menu), menuitem); gtk_widget_show(menuitem); /* Guest -> start */ menuitem = gtk_menu_item_new_with_mnemonic("_Start"); g_signal_connect(G_OBJECT(menuitem), "activate", G_CALLBACK(start_guest), NULL); gtk_menu_append(GTK_MENU(menu), menuitem); gtk_widget_show(menuitem); /* Guest -> startall */ menuitem = gtk_menu_item_new_with_mnemonic("Start _all"); g_signal_connect(G_OBJECT(menuitem), "activate", G_CALLBACK(start_all_guests), NULL); gtk_menu_append(GTK_MENU(menu), menuitem); gtk_widget_show(menuitem); /* Guest -> stop */ menuitem = gtk_image_menu_item_new_from_stock(GTK_STOCK_STOP, NULL); g_signal_connect(G_OBJECT(menuitem), "activate", G_CALLBACK(stop_guest), NULL); gtk_menu_append(GTK_MENU(menu), menuitem); gtk_widget_show(menuitem); menuitem = gtk_separator_menu_item_new(); gtk_menu_append(GTK_MENU(menu), menuitem); gtk_widget_show(menuitem); /* Guest -> connect */ menuitem = gtk_image_menu_item_new_from_stock(GTK_STOCK_CONNECT, NULL); g_signal_connect(G_OBJECT(menuitem), "activate", G_CALLBACK(connect_guest), NULL); gtk_menu_append(GTK_MENU(menu), menuitem); gtk_widget_show(menuitem); /* Guest -> disconnect */ menuitem = gtk_image_menu_item_new_from_stock(GTK_STOCK_DISCONNECT, NULL); g_signal_connect(G_OBJECT(menuitem), "activate", G_CALLBACK(disconnect_guest), NULL); gtk_menu_append(GTK_MENU(menu), menuitem); gtk_widget_set_sensitive(menuitem, FALSE); gtk_widget_show(menuitem); /* Switch menu */ menu = gtk_menu_new(); switchMenu = gtk_menu_item_new_with_mnemonic("_Switch"); gtk_menu_bar_append(GTK_MENU_BAR(menubar), switchMenu); gtk_widget_show(switchMenu); gtk_menu_item_set_submenu(GTK_MENU_ITEM(switchMenu), menu); /* Switch -> new */ menuitem = gtk_image_menu_item_new_from_stock(GTK_STOCK_NEW, NULL); g_signal_connect(G_OBJECT(menuitem), "activate", G_CALLBACK(create_switch), NULL); gtk_menu_append(GTK_MENU(menu), menuitem); gtk_widget_show(menuitem); /* Switch -> delete */ menuitem = gtk_image_menu_item_new_from_stock(GTK_STOCK_DELETE, NULL); g_signal_connect(G_OBJECT(menuitem), "activate", G_CALLBACK(delete_switch), NULL); gtk_menu_append(GTK_MENU(menu), menuitem); gtk_widget_set_sensitive(menuitem, FALSE); gtk_widget_show(menuitem); /* show widgets */ gtk_widget_show(menubar); gtk_widget_show(notebook); gtk_widget_show(vbox); gtk_widget_show(window); /* fill notebook with guests */ enumerator = dumm->create_guest_enumerator(dumm); while (enumerator->enumerate(enumerator, (void**)&guest)) { create_page(guest); } enumerator->destroy(enumerator); gtk_main(); dumm->destroy(dumm); pages->destroy_function(pages, g_free); library_deinit(); return 0; }
static VALUE rg_s_get(G_GNUC_UNUSED VALUE self) { return GOBJ2RVAL(vte_reaper_get()); }