OLD | NEW |
1 // Copyright (c) 2009 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2009 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "chrome/browser/gtk/bookmark_manager_gtk.h" | 5 #include "chrome/browser/gtk/bookmark_manager_gtk.h" |
6 | 6 |
7 #include <gdk/gdkkeysyms.h> | 7 #include <gdk/gdkkeysyms.h> |
8 #include <vector> | 8 #include <vector> |
9 | 9 |
10 #include "app/gtk_dnd_util.h" | 10 #include "app/gtk_dnd_util.h" |
(...skipping 428 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
439 G_CALLBACK(OnLeftTreeViewRowCollapsed), this); | 439 G_CALLBACK(OnLeftTreeViewRowCollapsed), this); |
440 g_signal_connect(left_tree_view_, "focus-in-event", | 440 g_signal_connect(left_tree_view_, "focus-in-event", |
441 G_CALLBACK(OnLeftTreeViewFocusIn), this); | 441 G_CALLBACK(OnLeftTreeViewFocusIn), this); |
442 g_signal_connect(left_tree_view_, "button-press-event", | 442 g_signal_connect(left_tree_view_, "button-press-event", |
443 G_CALLBACK(OnTreeViewButtonPress), this); | 443 G_CALLBACK(OnTreeViewButtonPress), this); |
444 g_signal_connect(left_tree_view_, "button-release-event", | 444 g_signal_connect(left_tree_view_, "button-release-event", |
445 G_CALLBACK(OnTreeViewButtonRelease), this); | 445 G_CALLBACK(OnTreeViewButtonRelease), this); |
446 g_signal_connect(left_tree_view_, "key-press-event", | 446 g_signal_connect(left_tree_view_, "key-press-event", |
447 G_CALLBACK(OnTreeViewKeyPress), this); | 447 G_CALLBACK(OnTreeViewKeyPress), this); |
448 | 448 |
| 449 GtkCellRenderer* cell_renderer_text = bookmark_utils::GetCellRendererText( |
| 450 GTK_TREE_VIEW(left_tree_view_)); |
| 451 g_signal_connect(cell_renderer_text, "edited", |
| 452 G_CALLBACK(OnFolderNameEdited), this); |
| 453 |
449 // The left side is only a drag destination (not a source). | 454 // The left side is only a drag destination (not a source). |
450 gtk_drag_dest_set(left_tree_view_, GTK_DEST_DEFAULT_DROP, | 455 gtk_drag_dest_set(left_tree_view_, GTK_DEST_DEFAULT_DROP, |
451 NULL, 0, GDK_ACTION_MOVE); | 456 NULL, 0, GDK_ACTION_MOVE); |
452 GtkDndUtil::SetDestTargetList(left_tree_view_, kDestTargetList); | 457 GtkDndUtil::SetDestTargetList(left_tree_view_, kDestTargetList); |
453 | 458 |
454 g_signal_connect(left_tree_view_, "drag-data-received", | 459 g_signal_connect(left_tree_view_, "drag-data-received", |
455 G_CALLBACK(&OnLeftTreeViewDragReceived), this); | 460 G_CALLBACK(&OnLeftTreeViewDragReceived), this); |
456 g_signal_connect(left_tree_view_, "drag-motion", | 461 g_signal_connect(left_tree_view_, "drag-motion", |
457 G_CALLBACK(&OnLeftTreeViewDragMotion), this); | 462 G_CALLBACK(&OnLeftTreeViewDragMotion), this); |
458 | 463 |
(...skipping 161 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
620 // TODO(estade): is there a decent stock icon we can use here? | 625 // TODO(estade): is there a decent stock icon we can use here? |
621 ResourceBundle& rb = ResourceBundle::GetSharedInstance(); | 626 ResourceBundle& rb = ResourceBundle::GetSharedInstance(); |
622 gtk_tree_store_append(left_store_, &select_iter, NULL); | 627 gtk_tree_store_append(left_store_, &select_iter, NULL); |
623 gtk_tree_store_set(left_store_, &select_iter, | 628 gtk_tree_store_set(left_store_, &select_iter, |
624 bookmark_utils::FOLDER_ICON, | 629 bookmark_utils::FOLDER_ICON, |
625 rb.GetPixbufNamed(IDR_BOOKMARK_MANAGER_RECENT_ICON), | 630 rb.GetPixbufNamed(IDR_BOOKMARK_MANAGER_RECENT_ICON), |
626 bookmark_utils::FOLDER_NAME, | 631 bookmark_utils::FOLDER_NAME, |
627 l10n_util::GetStringUTF8( | 632 l10n_util::GetStringUTF8( |
628 IDS_BOOKMARK_TREE_RECENTLY_BOOKMARKED_NODE_TITLE).c_str(), | 633 IDS_BOOKMARK_TREE_RECENTLY_BOOKMARKED_NODE_TITLE).c_str(), |
629 bookmark_utils::ITEM_ID, kRecentID, | 634 bookmark_utils::ITEM_ID, kRecentID, |
| 635 bookmark_utils::IS_EDITABLE, FALSE, |
630 -1); | 636 -1); |
631 | 637 |
632 GdkPixbuf* search_icon = gtk_widget_render_icon( | 638 GdkPixbuf* search_icon = gtk_widget_render_icon( |
633 window_, GTK_STOCK_FIND, GTK_ICON_SIZE_MENU, NULL); | 639 window_, GTK_STOCK_FIND, GTK_ICON_SIZE_MENU, NULL); |
634 gtk_tree_store_append(left_store_, &select_iter, NULL); | 640 gtk_tree_store_append(left_store_, &select_iter, NULL); |
635 gtk_tree_store_set(left_store_, &select_iter, | 641 gtk_tree_store_set(left_store_, &select_iter, |
636 bookmark_utils::FOLDER_ICON, | 642 bookmark_utils::FOLDER_ICON, |
637 search_icon, | 643 search_icon, |
638 bookmark_utils::FOLDER_NAME, | 644 bookmark_utils::FOLDER_NAME, |
639 l10n_util::GetStringUTF8( | 645 l10n_util::GetStringUTF8( |
640 IDS_BOOKMARK_TREE_SEARCH_NODE_TITLE).c_str(), | 646 IDS_BOOKMARK_TREE_SEARCH_NODE_TITLE).c_str(), |
641 bookmark_utils::ITEM_ID, kSearchID, | 647 bookmark_utils::ITEM_ID, kSearchID, |
| 648 bookmark_utils::IS_EDITABLE, FALSE, |
642 -1); | 649 -1); |
643 g_object_unref(search_icon); | 650 g_object_unref(search_icon); |
644 } | 651 } |
645 | 652 |
646 void BookmarkManagerGtk::BuildRightStore() { | 653 void BookmarkManagerGtk::BuildRightStore() { |
647 right_tree_adapter_->OnModelChanged(); | 654 right_tree_adapter_->OnModelChanged(); |
648 } | 655 } |
649 | 656 |
650 void BookmarkManagerGtk::ResetRightStoreModel() { | 657 void BookmarkManagerGtk::ResetRightStoreModel() { |
651 const BookmarkNode* node = GetFolder(); | 658 const BookmarkNode* node = GetFolder(); |
(...skipping 649 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1301 if (bm->organize_menu_.get() && | 1308 if (bm->organize_menu_.get() && |
1302 bm->organize_menu_->IsCommandEnabled(command)) { | 1309 bm->organize_menu_->IsCommandEnabled(command)) { |
1303 bm->organize_menu_->ExecuteCommand(command); | 1310 bm->organize_menu_->ExecuteCommand(command); |
1304 return TRUE; | 1311 return TRUE; |
1305 } | 1312 } |
1306 | 1313 |
1307 return FALSE; | 1314 return FALSE; |
1308 } | 1315 } |
1309 | 1316 |
1310 // static | 1317 // static |
| 1318 void BookmarkManagerGtk::OnFolderNameEdited(GtkCellRendererText* render, |
| 1319 gchar* path, gchar* new_folder_name, BookmarkManagerGtk* bm) { |
| 1320 // A folder named was edited in place. Sync the change to the bookmark |
| 1321 // model. |
| 1322 GtkTreeIter iter; |
| 1323 GtkTreePath* tree_path = gtk_tree_path_new_from_string(path); |
| 1324 gboolean rv = gtk_tree_model_get_iter(GTK_TREE_MODEL(bm->left_store_), |
| 1325 &iter, tree_path); |
| 1326 DCHECK(rv); |
| 1327 bm->model_->SetTitle(bm->GetNodeAt(GTK_TREE_MODEL(bm->left_store_), &iter), |
| 1328 UTF8ToWide(new_folder_name)); |
| 1329 } |
| 1330 |
| 1331 // static |
1311 void BookmarkManagerGtk::OnImportItemActivated( | 1332 void BookmarkManagerGtk::OnImportItemActivated( |
1312 GtkMenuItem* menuitem, BookmarkManagerGtk* bm) { | 1333 GtkMenuItem* menuitem, BookmarkManagerGtk* bm) { |
1313 SelectFileDialog::FileTypeInfo file_type_info; | 1334 SelectFileDialog::FileTypeInfo file_type_info; |
1314 file_type_info.extensions.resize(1); | 1335 file_type_info.extensions.resize(1); |
1315 file_type_info.extensions[0].push_back(FILE_PATH_LITERAL("html")); | 1336 file_type_info.extensions[0].push_back(FILE_PATH_LITERAL("html")); |
1316 file_type_info.extensions[0].push_back(FILE_PATH_LITERAL("htm")); | 1337 file_type_info.extensions[0].push_back(FILE_PATH_LITERAL("htm")); |
1317 file_type_info.include_all_files = true; | 1338 file_type_info.include_all_files = true; |
1318 bm->select_file_dialog_->SelectFile( | 1339 bm->select_file_dialog_->SelectFile( |
1319 SelectFileDialog::SELECT_OPEN_FILE, string16(), | 1340 SelectFileDialog::SELECT_OPEN_FILE, string16(), |
1320 FilePath(""), &file_type_info, 0, | 1341 FilePath(""), &file_type_info, 0, |
(...skipping 97 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1418 modifier & gtk_accelerator_get_default_mod_mask()); | 1439 modifier & gtk_accelerator_get_default_mod_mask()); |
1419 // The only accelerator we have registered is ctrl+w, so any other value is a | 1440 // The only accelerator we have registered is ctrl+w, so any other value is a |
1420 // non-fatal error. | 1441 // non-fatal error. |
1421 DCHECK_EQ(keyval, static_cast<guint>(GDK_w)); | 1442 DCHECK_EQ(keyval, static_cast<guint>(GDK_w)); |
1422 DCHECK_EQ(modifier, GDK_CONTROL_MASK); | 1443 DCHECK_EQ(modifier, GDK_CONTROL_MASK); |
1423 | 1444 |
1424 gtk_widget_destroy(bookmark_manager->window_); | 1445 gtk_widget_destroy(bookmark_manager->window_); |
1425 | 1446 |
1426 return TRUE; | 1447 return TRUE; |
1427 } | 1448 } |
OLD | NEW |