comparison src/gtk/bookmarks.c @ 452:037e904642e8

2004-3-28 Brian Masney <masneyb@gftp.org> * src/gtk/bookmarks.c - only allow one instance of the bookmarks editor
author masneyb
date Sun, 28 Mar 2004 23:58:13 +0000
parents 1d45758e5cf5
children e55d8b35d809
comparison
equal deleted inserted replaced
451:83cfffb2878a 452:037e904642e8
21 static const char cvsid[] = "$Id$"; 21 static const char cvsid[] = "$Id$";
22 22
23 static GtkWidget * bm_dialog = NULL, * bm_hostedit, * bm_portedit, 23 static GtkWidget * bm_dialog = NULL, * bm_hostedit, * bm_portedit,
24 * bm_localdiredit, * bm_remotediredit, * bm_useredit, 24 * bm_localdiredit, * bm_remotediredit, * bm_useredit,
25 * bm_passedit, * bm_acctedit, * anon_chk, * bm_pathedit, 25 * bm_passedit, * bm_acctedit, * anon_chk, * bm_pathedit,
26 * bm_protocol, * tree; 26 * bm_protocol, * tree, * edit_bookmarks_dialog;
27 static GHashTable * new_bookmarks_htable = NULL; 27 static GHashTable * new_bookmarks_htable = NULL;
28 static gftp_bookmarks_var * new_bookmarks = NULL; 28 static gftp_bookmarks_var * new_bookmarks = NULL;
29 static GtkItemFactory * edit_factory; 29 static GtkItemFactory * edit_factory;
30 30
31 31
374 { 374 {
375 gftp_bookmarks_destroy (new_bookmarks); 375 gftp_bookmarks_destroy (new_bookmarks);
376 new_bookmarks = NULL; 376 new_bookmarks = NULL;
377 } 377 }
378 378
379 gtk_widget_destroy (dialog); 379 gtk_widget_destroy (edit_bookmarks_dialog);
380 edit_bookmarks_dialog = NULL;
380 } 381 }
381 382
382 383
383 #if GTK_MAJOR_VERSION > 1 384 #if GTK_MAJOR_VERSION > 1
384 static void 385 static void
1204 1205
1205 1206
1206 void 1207 void
1207 edit_bookmarks (gpointer data) 1208 edit_bookmarks (gpointer data)
1208 { 1209 {
1209 GtkWidget * dialog, * scroll;
1210 GtkItemFactory * ifactory; 1210 GtkItemFactory * ifactory;
1211 GtkWidget * scroll;
1211 GtkItemFactoryEntry menu_items[] = { 1212 GtkItemFactoryEntry menu_items[] = {
1212 {N_("/_File"), NULL, 0, 0, "<Branch>"}, 1213 {N_("/_File"), NULL, 0, 0, "<Branch>"},
1213 {N_("/File/tearoff"), NULL, 0, 0, "<Tearoff>"}, 1214 {N_("/File/tearoff"), NULL, 0, 0, "<Tearoff>"},
1214 {N_("/File/New Folder..."), NULL, new_folder_entry, 0, MN_(NULL)}, 1215 {N_("/File/New Folder..."), NULL, new_folder_entry, 0, MN_(NULL)},
1215 {N_("/File/New Item..."), NULL, new_item_entry, 0, MS_(GTK_STOCK_NEW)}, 1216 {N_("/File/New Item..."), NULL, new_item_entry, 0, MS_(GTK_STOCK_NEW)},
1220 }; 1221 };
1221 #if GTK_MAJOR_VERSION == 1 1222 #if GTK_MAJOR_VERSION == 1
1222 GtkWidget * tempwid; 1223 GtkWidget * tempwid;
1223 #endif 1224 #endif
1224 1225
1226 if (edit_bookmarks_dialog != NULL)
1227 {
1228 gtk_widget_grab_focus (edit_bookmarks_dialog);
1229 return;
1230 }
1231
1225 new_bookmarks = copy_bookmarks (gftp_bookmarks); 1232 new_bookmarks = copy_bookmarks (gftp_bookmarks);
1226 new_bookmarks_htable = build_bookmarks_hash_table (new_bookmarks); 1233 new_bookmarks_htable = build_bookmarks_hash_table (new_bookmarks);
1227 1234
1228 #if GTK_MAJOR_VERSION == 1 1235 #if GTK_MAJOR_VERSION == 1
1229 dialog = gtk_dialog_new (); 1236 edit_bookmarks_dialog = gtk_dialog_new ();
1230 gtk_window_set_title (GTK_WINDOW (dialog), _("Edit Bookmarks")); 1237 gtk_window_set_title (GTK_WINDOW (edit_bookmarks_dialog),
1231 gtk_box_set_spacing (GTK_BOX (GTK_DIALOG (dialog)->action_area), 15); 1238 _("Edit Bookmarks"));
1239 gtk_box_set_spacing (GTK_BOX (GTK_DIALOG (edit_bookmarks_dialog)->action_area), 15);
1232 #else 1240 #else
1233 dialog = gtk_dialog_new_with_buttons (_("Edit Bookmarks"), NULL, 0, 1241 edit_bookmarks_dialog = gtk_dialog_new_with_buttons (_("Edit Bookmarks"),
1234 GTK_STOCK_SAVE, 1242 NULL, 0, GTK_STOCK_SAVE,
1235 GTK_RESPONSE_OK, 1243 GTK_RESPONSE_OK,
1236 GTK_STOCK_CANCEL, 1244 GTK_STOCK_CANCEL,
1237 GTK_RESPONSE_CANCEL, 1245 GTK_RESPONSE_CANCEL,
1238 NULL); 1246 NULL);
1239 #endif 1247 #endif
1240 gtk_window_set_wmclass (GTK_WINDOW(dialog), "Edit Bookmarks", "gFTP"); 1248 gtk_window_set_wmclass (GTK_WINDOW(edit_bookmarks_dialog), "Edit Bookmarks",
1241 gtk_window_set_position (GTK_WINDOW (dialog), GTK_WIN_POS_MOUSE); 1249 "gFTP");
1242 gtk_widget_realize (dialog); 1250 gtk_window_set_position (GTK_WINDOW (edit_bookmarks_dialog),
1251 GTK_WIN_POS_MOUSE);
1252 gtk_widget_realize (edit_bookmarks_dialog);
1243 1253
1244 if (gftp_icon != NULL) 1254 if (gftp_icon != NULL)
1245 { 1255 {
1246 gdk_window_set_icon (dialog->window, NULL, gftp_icon->pixmap, 1256 gdk_window_set_icon (edit_bookmarks_dialog->window, NULL,
1247 gftp_icon->bitmap); 1257 gftp_icon->pixmap, gftp_icon->bitmap);
1248 gdk_window_set_icon_name (dialog->window, gftp_version); 1258 gdk_window_set_icon_name (edit_bookmarks_dialog->window, gftp_version);
1249 } 1259 }
1250 1260
1251 ifactory = item_factory_new (GTK_TYPE_MENU_BAR, "<bookmarks>", NULL, NULL); 1261 ifactory = item_factory_new (GTK_TYPE_MENU_BAR, "<bookmarks>", NULL, NULL);
1252 create_item_factory (ifactory, 7, menu_items, NULL); 1262 create_item_factory (ifactory, 7, menu_items, NULL);
1253 create_item_factory (ifactory, 1, menu_items + 7, dialog); 1263 create_item_factory (ifactory, 1, menu_items + 7, edit_bookmarks_dialog);
1254 gtk_box_pack_start (GTK_BOX (GTK_DIALOG (dialog)->vbox), ifactory->widget, 1264 gtk_box_pack_start (GTK_BOX (GTK_DIALOG (edit_bookmarks_dialog)->vbox),
1255 FALSE, FALSE, 0); 1265 ifactory->widget, FALSE, FALSE, 0);
1256 gtk_widget_show (ifactory->widget); 1266 gtk_widget_show (ifactory->widget);
1257 1267
1258 scroll = gtk_scrolled_window_new (NULL, NULL); 1268 scroll = gtk_scrolled_window_new (NULL, NULL);
1259 gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (scroll), 1269 gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (scroll),
1260 GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC); 1270 GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC);
1261 gtk_widget_set_size_request (scroll, 150, 200); 1271 gtk_widget_set_size_request (scroll, 150, 200);
1262 1272
1263 gtk_box_pack_start (GTK_BOX (GTK_DIALOG (dialog)->vbox), scroll, TRUE, TRUE, 1273 gtk_box_pack_start (GTK_BOX (GTK_DIALOG (edit_bookmarks_dialog)->vbox),
1264 0); 1274 scroll, TRUE, TRUE, 0);
1265 gtk_container_border_width (GTK_CONTAINER (scroll), 3); 1275 gtk_container_border_width (GTK_CONTAINER (scroll), 3);
1266 gtk_widget_show (scroll); 1276 gtk_widget_show (scroll);
1267 1277
1268 edit_factory = item_factory_new (GTK_TYPE_MENU, "<edit_bookmark>", NULL, "/File"); 1278 edit_factory = item_factory_new (GTK_TYPE_MENU, "<edit_bookmark>", NULL, "/File");
1269 1279
1270 create_item_factory (edit_factory, 6, menu_items + 2, dialog); 1280 create_item_factory (edit_factory, 6, menu_items + 2, edit_bookmarks_dialog);
1271 1281
1272 tree = gtk_ctree_new (1, 0); 1282 tree = gtk_ctree_new (1, 0);
1273 gtk_clist_set_selection_mode (GTK_CLIST (tree), GTK_SELECTION_BROWSE); 1283 gtk_clist_set_selection_mode (GTK_CLIST (tree), GTK_SELECTION_BROWSE);
1274 gtk_clist_set_reorderable (GTK_CLIST (tree), 1); 1284 gtk_clist_set_reorderable (GTK_CLIST (tree), 1);
1275 gtk_scrolled_window_add_with_viewport (GTK_SCROLLED_WINDOW (scroll), tree); 1285 gtk_scrolled_window_add_with_viewport (GTK_SCROLLED_WINDOW (scroll), tree);
1282 gtk_ctree_set_drag_compare_func (GTK_CTREE(tree), &move_possible); 1292 gtk_ctree_set_drag_compare_func (GTK_CTREE(tree), &move_possible);
1283 gtk_widget_show (tree); 1293 gtk_widget_show (tree);
1284 1294
1285 #if GTK_MAJOR_VERSION == 1 1295 #if GTK_MAJOR_VERSION == 1
1286 tempwid = gtk_button_new_with_label (_("OK")); 1296 tempwid = gtk_button_new_with_label (_("OK"));
1287 gtk_box_pack_start (GTK_BOX (GTK_DIALOG (dialog)->action_area), tempwid, 1297 gtk_box_pack_start (GTK_BOX (GTK_DIALOG (edit_bookmarks_dialog)->action_area),
1288 TRUE, TRUE, 0); 1298 tempwid, TRUE, TRUE, 0);
1289 gtk_signal_connect (GTK_OBJECT (tempwid), "clicked", 1299 gtk_signal_connect (GTK_OBJECT (tempwid), "clicked",
1290 GTK_SIGNAL_FUNC (bm_apply_changes), NULL); 1300 GTK_SIGNAL_FUNC (bm_apply_changes), NULL);
1291 gtk_signal_connect (GTK_OBJECT (tempwid), "clicked", 1301 gtk_signal_connect (GTK_OBJECT (tempwid), "clicked",
1292 GTK_SIGNAL_FUNC (bm_close_dialog), (gpointer) dialog); 1302 GTK_SIGNAL_FUNC (bm_close_dialog),
1303 (gpointer) edit_bookmarks_dialog);
1293 GTK_WIDGET_SET_FLAGS (tempwid, GTK_CAN_DEFAULT); 1304 GTK_WIDGET_SET_FLAGS (tempwid, GTK_CAN_DEFAULT);
1294 gtk_widget_show (tempwid); 1305 gtk_widget_show (tempwid);
1295 1306
1296 tempwid = gtk_button_new_with_label (_(" Cancel ")); 1307 tempwid = gtk_button_new_with_label (_(" Cancel "));
1297 gtk_box_pack_start (GTK_BOX (GTK_DIALOG (dialog)->action_area), tempwid, 1308 gtk_box_pack_start (GTK_BOX (GTK_DIALOG (edit_bookmarks_dialog)->action_area),
1298 TRUE, TRUE, 0); 1309 tempwid, TRUE, TRUE, 0);
1299 gtk_signal_connect (GTK_OBJECT (tempwid), "clicked", 1310 gtk_signal_connect (GTK_OBJECT (tempwid), "clicked",
1300 GTK_SIGNAL_FUNC (bm_close_dialog), (gpointer) dialog); 1311 GTK_SIGNAL_FUNC (bm_close_dialog),
1312 (gpointer) edit_bookmarks_dialog);
1301 GTK_WIDGET_SET_FLAGS (tempwid, GTK_CAN_DEFAULT); 1313 GTK_WIDGET_SET_FLAGS (tempwid, GTK_CAN_DEFAULT);
1302 gtk_widget_grab_focus (tempwid); 1314 gtk_widget_grab_focus (tempwid);
1303 gtk_widget_show (tempwid); 1315 gtk_widget_show (tempwid);
1304 #else 1316 #else
1305 g_signal_connect (GTK_OBJECT (dialog), "response", 1317 g_signal_connect (GTK_OBJECT (edit_bookmarks_dialog), "response",
1306 G_CALLBACK (editbm_action), NULL); 1318 G_CALLBACK (editbm_action), NULL);
1307 #endif 1319 #endif
1308 1320
1309 gtk_widget_show (dialog); 1321 gtk_widget_show (edit_bookmarks_dialog);
1310 1322
1311 build_bookmarks_tree (); 1323 build_bookmarks_tree ();
1312 } 1324 }
1313 1325