OLD | NEW |
1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2011 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/ui/gtk/bookmarks/bookmark_editor_gtk.h" | 5 #include "chrome/browser/ui/gtk/bookmarks/bookmark_editor_gtk.h" |
6 | 6 |
7 #include <gtk/gtk.h> | 7 #include <gtk/gtk.h> |
8 #include <set> | 8 #include <set> |
9 | 9 |
10 #include "base/basictypes.h" | 10 #include "base/basictypes.h" |
(...skipping 86 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
97 : public ui::SimpleMenuModel::Delegate { | 97 : public ui::SimpleMenuModel::Delegate { |
98 public: | 98 public: |
99 explicit ContextMenuController(BookmarkEditorGtk* editor) | 99 explicit ContextMenuController(BookmarkEditorGtk* editor) |
100 : editor_(editor), | 100 : editor_(editor), |
101 running_menu_for_root_(false) { | 101 running_menu_for_root_(false) { |
102 menu_model_.reset(new ui::SimpleMenuModel(this)); | 102 menu_model_.reset(new ui::SimpleMenuModel(this)); |
103 menu_model_->AddItemWithStringId(COMMAND_EDIT, IDS_EDIT); | 103 menu_model_->AddItemWithStringId(COMMAND_EDIT, IDS_EDIT); |
104 menu_model_->AddItemWithStringId(COMMAND_DELETE, IDS_DELETE); | 104 menu_model_->AddItemWithStringId(COMMAND_DELETE, IDS_DELETE); |
105 menu_model_->AddItemWithStringId( | 105 menu_model_->AddItemWithStringId( |
106 COMMAND_NEW_FOLDER, | 106 COMMAND_NEW_FOLDER, |
107 IDS_BOOMARK_EDITOR_NEW_FOLDER_MENU_ITEM); | 107 IDS_BOOKMARK_EDITOR_NEW_FOLDER_MENU_ITEM); |
108 #if defined(TOOLKIT_VIEWS) | 108 #if defined(TOOLKIT_VIEWS) |
109 menu_.reset(new views::Menu2(menu_model_.get())); | 109 menu_.reset(new views::Menu2(menu_model_.get())); |
110 #else | 110 #else |
111 menu_.reset(new MenuGtk(NULL, menu_model_.get())); | 111 menu_.reset(new MenuGtk(NULL, menu_model_.get())); |
112 #endif | 112 #endif |
113 } | 113 } |
114 virtual ~ContextMenuController() {} | 114 virtual ~ContextMenuController() {} |
115 | 115 |
116 void RunMenu(const gfx::Point& point, guint32 event_time) { | 116 void RunMenu(const gfx::Point& point, guint32 event_time) { |
117 const BookmarkNode* selected_node = GetSelectedNode(); | 117 const BookmarkNode* selected_node = GetSelectedNode(); |
(...skipping 173 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
291 | 291 |
292 bb_model_->RemoveObserver(this); | 292 bb_model_->RemoveObserver(this); |
293 } | 293 } |
294 | 294 |
295 void BookmarkEditorGtk::Init(GtkWindow* parent_window) { | 295 void BookmarkEditorGtk::Init(GtkWindow* parent_window) { |
296 bb_model_ = profile_->GetBookmarkModel(); | 296 bb_model_ = profile_->GetBookmarkModel(); |
297 DCHECK(bb_model_); | 297 DCHECK(bb_model_); |
298 bb_model_->AddObserver(this); | 298 bb_model_->AddObserver(this); |
299 | 299 |
300 dialog_ = gtk_dialog_new_with_buttons( | 300 dialog_ = gtk_dialog_new_with_buttons( |
301 l10n_util::GetStringUTF8(IDS_BOOMARK_EDITOR_TITLE).c_str(), | 301 l10n_util::GetStringUTF8(IDS_BOOKMARK_EDITOR_TITLE).c_str(), |
302 parent_window, | 302 parent_window, |
303 GTK_DIALOG_MODAL, | 303 GTK_DIALOG_MODAL, |
304 GTK_STOCK_CANCEL, GTK_RESPONSE_REJECT, | 304 GTK_STOCK_CANCEL, GTK_RESPONSE_REJECT, |
305 GTK_STOCK_OK, GTK_RESPONSE_ACCEPT, | 305 GTK_STOCK_OK, GTK_RESPONSE_ACCEPT, |
306 NULL); | 306 NULL); |
307 gtk_dialog_set_has_separator(GTK_DIALOG(dialog_), FALSE); | 307 gtk_dialog_set_has_separator(GTK_DIALOG(dialog_), FALSE); |
308 | 308 |
309 if (show_tree_) { | 309 if (show_tree_) { |
310 GtkWidget* action_area = GTK_DIALOG(dialog_)->action_area; | 310 GtkWidget* action_area = GTK_DIALOG(dialog_)->action_area; |
311 new_folder_button_ = gtk_button_new_with_label( | 311 new_folder_button_ = gtk_button_new_with_label( |
312 l10n_util::GetStringUTF8(IDS_BOOMARK_EDITOR_NEW_FOLDER_BUTTON).c_str()); | 312 l10n_util::GetStringUTF8( |
| 313 IDS_BOOKMARK_EDITOR_NEW_FOLDER_BUTTON).c_str()); |
313 g_signal_connect(new_folder_button_, "clicked", | 314 g_signal_connect(new_folder_button_, "clicked", |
314 G_CALLBACK(OnNewFolderClickedThunk), this); | 315 G_CALLBACK(OnNewFolderClickedThunk), this); |
315 gtk_container_add(GTK_CONTAINER(action_area), new_folder_button_); | 316 gtk_container_add(GTK_CONTAINER(action_area), new_folder_button_); |
316 gtk_button_box_set_child_secondary(GTK_BUTTON_BOX(action_area), | 317 gtk_button_box_set_child_secondary(GTK_BUTTON_BOX(action_area), |
317 new_folder_button_, TRUE); | 318 new_folder_button_, TRUE); |
318 } | 319 } |
319 | 320 |
320 gtk_dialog_set_default_response(GTK_DIALOG(dialog_), GTK_RESPONSE_ACCEPT); | 321 gtk_dialog_set_default_response(GTK_DIALOG(dialog_), GTK_RESPONSE_ACCEPT); |
321 | 322 |
322 // The GTK dialog content area layout (overview) | 323 // The GTK dialog content area layout (overview) |
(...skipping 25 matching lines...) Expand all Loading... |
348 | 349 |
349 GtkWidget* vbox = gtk_vbox_new(FALSE, 12); | 350 GtkWidget* vbox = gtk_vbox_new(FALSE, 12); |
350 | 351 |
351 name_entry_ = gtk_entry_new(); | 352 name_entry_ = gtk_entry_new(); |
352 std::string title; | 353 std::string title; |
353 GURL url; | 354 GURL url; |
354 if (details_.type == EditDetails::EXISTING_NODE) { | 355 if (details_.type == EditDetails::EXISTING_NODE) { |
355 title = UTF16ToUTF8(details_.existing_node->GetTitle()); | 356 title = UTF16ToUTF8(details_.existing_node->GetTitle()); |
356 url = details_.existing_node->url(); | 357 url = details_.existing_node->url(); |
357 } else if (details_.type == EditDetails::NEW_FOLDER) { | 358 } else if (details_.type == EditDetails::NEW_FOLDER) { |
358 title = l10n_util::GetStringUTF8(IDS_BOOMARK_EDITOR_NEW_FOLDER_NAME); | 359 title = l10n_util::GetStringUTF8(IDS_BOOKMARK_EDITOR_NEW_FOLDER_NAME); |
359 } else if (details_.type == EditDetails::NEW_URL) { | 360 } else if (details_.type == EditDetails::NEW_URL) { |
360 string16 title16; | 361 string16 title16; |
361 bookmark_utils::GetURLAndTitleToBookmarkFromCurrentTab(profile_, | 362 bookmark_utils::GetURLAndTitleToBookmarkFromCurrentTab(profile_, |
362 &url, &title16); | 363 &url, &title16); |
363 title = UTF16ToUTF8(title16); | 364 title = UTF16ToUTF8(title16); |
364 } | 365 } |
365 gtk_entry_set_text(GTK_ENTRY(name_entry_), title.c_str()); | 366 gtk_entry_set_text(GTK_ENTRY(name_entry_), title.c_str()); |
366 g_signal_connect(name_entry_, "changed", | 367 g_signal_connect(name_entry_, "changed", |
367 G_CALLBACK(OnEntryChangedThunk), this); | 368 G_CALLBACK(OnEntryChangedThunk), this); |
368 gtk_entry_set_activates_default(GTK_ENTRY(name_entry_), TRUE); | 369 gtk_entry_set_activates_default(GTK_ENTRY(name_entry_), TRUE); |
369 | 370 |
370 GtkWidget* table; | 371 GtkWidget* table; |
371 if (details_.type != EditDetails::NEW_FOLDER) { | 372 if (details_.type != EditDetails::NEW_FOLDER) { |
372 url_entry_ = gtk_entry_new(); | 373 url_entry_ = gtk_entry_new(); |
373 gtk_entry_set_text(GTK_ENTRY(url_entry_), url.spec().c_str()); | 374 gtk_entry_set_text(GTK_ENTRY(url_entry_), url.spec().c_str()); |
374 g_signal_connect(url_entry_, "changed", | 375 g_signal_connect(url_entry_, "changed", |
375 G_CALLBACK(OnEntryChangedThunk), this); | 376 G_CALLBACK(OnEntryChangedThunk), this); |
376 gtk_entry_set_activates_default(GTK_ENTRY(url_entry_), TRUE); | 377 gtk_entry_set_activates_default(GTK_ENTRY(url_entry_), TRUE); |
377 table = gtk_util::CreateLabeledControlsGroup(NULL, | 378 table = gtk_util::CreateLabeledControlsGroup(NULL, |
378 l10n_util::GetStringUTF8(IDS_BOOMARK_EDITOR_NAME_LABEL).c_str(), | 379 l10n_util::GetStringUTF8(IDS_BOOKMARK_EDITOR_NAME_LABEL).c_str(), |
379 name_entry_, | 380 name_entry_, |
380 l10n_util::GetStringUTF8(IDS_BOOMARK_EDITOR_URL_LABEL).c_str(), | 381 l10n_util::GetStringUTF8(IDS_BOOKMARK_EDITOR_URL_LABEL).c_str(), |
381 url_entry_, | 382 url_entry_, |
382 NULL); | 383 NULL); |
383 | 384 |
384 } else { | 385 } else { |
385 url_entry_ = NULL; | 386 url_entry_ = NULL; |
386 table = gtk_util::CreateLabeledControlsGroup(NULL, | 387 table = gtk_util::CreateLabeledControlsGroup(NULL, |
387 l10n_util::GetStringUTF8(IDS_BOOMARK_EDITOR_NAME_LABEL).c_str(), | 388 l10n_util::GetStringUTF8(IDS_BOOKMARK_EDITOR_NAME_LABEL).c_str(), |
388 name_entry_, | 389 name_entry_, |
389 NULL); | 390 NULL); |
390 } | 391 } |
391 | 392 |
392 gtk_box_pack_start(GTK_BOX(vbox), table, FALSE, FALSE, 0); | 393 gtk_box_pack_start(GTK_BOX(vbox), table, FALSE, FALSE, 0); |
393 | 394 |
394 if (show_tree_) { | 395 if (show_tree_) { |
395 GtkTreeIter selected_iter; | 396 GtkTreeIter selected_iter; |
396 int64 selected_id = 0; | 397 int64 selected_id = 0; |
397 if (details_.type == EditDetails::EXISTING_NODE) | 398 if (details_.type == EditDetails::EXISTING_NODE) |
(...skipping 183 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
581 // other changes have been committed. | 582 // other changes have been committed. |
582 bookmark_utils::DeleteBookmarkFolders(bb_model_, deletes_); | 583 bookmark_utils::DeleteBookmarkFolders(bb_model_, deletes_); |
583 } | 584 } |
584 | 585 |
585 void BookmarkEditorGtk::AddNewFolder(GtkTreeIter* parent, GtkTreeIter* child) { | 586 void BookmarkEditorGtk::AddNewFolder(GtkTreeIter* parent, GtkTreeIter* child) { |
586 gtk_tree_store_append(tree_store_, child, parent); | 587 gtk_tree_store_append(tree_store_, child, parent); |
587 gtk_tree_store_set( | 588 gtk_tree_store_set( |
588 tree_store_, child, | 589 tree_store_, child, |
589 bookmark_utils::FOLDER_ICON, GtkThemeService::GetFolderIcon(true), | 590 bookmark_utils::FOLDER_ICON, GtkThemeService::GetFolderIcon(true), |
590 bookmark_utils::FOLDER_NAME, | 591 bookmark_utils::FOLDER_NAME, |
591 l10n_util::GetStringUTF8(IDS_BOOMARK_EDITOR_NEW_FOLDER_NAME).c_str(), | 592 l10n_util::GetStringUTF8(IDS_BOOKMARK_EDITOR_NEW_FOLDER_NAME).c_str(), |
592 bookmark_utils::ITEM_ID, static_cast<int64>(0), | 593 bookmark_utils::ITEM_ID, static_cast<int64>(0), |
593 bookmark_utils::IS_EDITABLE, TRUE, | 594 bookmark_utils::IS_EDITABLE, TRUE, |
594 -1); | 595 -1); |
595 } | 596 } |
596 | 597 |
597 void BookmarkEditorGtk::OnSelectionChanged(GtkWidget* selection) { | 598 void BookmarkEditorGtk::OnSelectionChanged(GtkWidget* selection) { |
598 if (!gtk_tree_selection_get_selected(tree_selection_, NULL, NULL)) | 599 if (!gtk_tree_selection_get_selected(tree_selection_, NULL, NULL)) |
599 gtk_widget_set_sensitive(new_folder_button_, FALSE); | 600 gtk_widget_set_sensitive(new_folder_button_, FALSE); |
600 else | 601 else |
601 gtk_widget_set_sensitive(new_folder_button_, TRUE); | 602 gtk_widget_set_sensitive(new_folder_button_, TRUE); |
(...skipping 77 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
679 GTK_TREE_MODEL(tree_store_), &new_item_iter); | 680 GTK_TREE_MODEL(tree_store_), &new_item_iter); |
680 gtk_tree_view_expand_to_path(GTK_TREE_VIEW(tree_view_), path); | 681 gtk_tree_view_expand_to_path(GTK_TREE_VIEW(tree_view_), path); |
681 | 682 |
682 // Make the folder name editable. | 683 // Make the folder name editable. |
683 gtk_tree_view_set_cursor(GTK_TREE_VIEW(tree_view_), path, | 684 gtk_tree_view_set_cursor(GTK_TREE_VIEW(tree_view_), path, |
684 gtk_tree_view_get_column(GTK_TREE_VIEW(tree_view_), 0), | 685 gtk_tree_view_get_column(GTK_TREE_VIEW(tree_view_), 0), |
685 TRUE); | 686 TRUE); |
686 | 687 |
687 gtk_tree_path_free(path); | 688 gtk_tree_path_free(path); |
688 } | 689 } |
OLD | NEW |