Mercurial > gftp.yaz
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 |