void fe_serverlist_open (session *sess) { servlist_sess = sess; /* fix: don't allow multiple serverlist editors, causes issues (crash at worst) */ if (serverlist_win) { fe_message (_("Server Editor is already open."), FE_MSG_ERROR); return; } serverlist_win = servlist_open_networks (); gtkutil_set_icon (serverlist_win); servlist_networks_populate (networks_tree, network_list); g_signal_connect (G_OBJECT (serverlist_win), "delete_event", G_CALLBACK (servlist_delete_cb), 0); g_signal_connect (G_OBJECT (serverlist_win), "configure_event", G_CALLBACK (servlist_configure_cb), 0); g_signal_connect (G_OBJECT (gtk_tree_view_get_selection (GTK_TREE_VIEW (networks_tree))), "changed", G_CALLBACK (servlist_network_row_cb), NULL); g_signal_connect (G_OBJECT (networks_tree), "key_press_event", G_CALLBACK (servlist_net_keypress_cb), networks_tree); gtk_widget_show_all (serverlist_win); }
static void servlist_edit_cb (GtkWidget *but, gpointer none) { if (!servlist_has_selection (GTK_TREE_VIEW (networks_tree))) return; if (edit_win) { /* Disallow multiple. */ fe_message (_("You may only edit one network at a time."), FE_MSG_ERROR); return; } edit_win = servlist_open_edit (serverlist_win, selected_net); gtkutil_set_icon (edit_win); servlist_servers_populate (selected_net, edit_tree); g_signal_connect (G_OBJECT (gtk_tree_view_get_selection (GTK_TREE_VIEW (edit_tree))), "changed", G_CALLBACK (servlist_server_row_cb), NULL); g_signal_connect (G_OBJECT (edit_tree), "key_press_event", G_CALLBACK (servlist_serv_keypress_cb), 0); gtk_widget_show (edit_win); }
GtkWidget * gtkutil_window_new (char *title, char *role, int width, int height, int flags) { GtkWidget *win; win = gtk_window_new (GTK_WINDOW_TOPLEVEL); gtkutil_set_icon (win); #ifdef WIN32 gtk_window_set_wmclass (GTK_WINDOW (win), "XChat", "xchat"); #endif gtk_window_set_title (GTK_WINDOW (win), title); gtk_window_set_default_size (GTK_WINDOW (win), width, height); gtk_window_set_role (GTK_WINDOW (win), role); if (flags & 1) gtk_window_set_position (GTK_WINDOW (win), GTK_WIN_POS_MOUSE); if ((flags & 2) && parent_window) { gtk_window_set_type_hint (GTK_WINDOW (win), GDK_WINDOW_TYPE_HINT_DIALOG); gtk_window_set_transient_for (GTK_WINDOW (win), GTK_WINDOW (parent_window)); } return win; }