Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(94)

Side by Side Diff: chrome/browser/ui/gtk/first_run_bubble.cc

Issue 231733005: Delete the GTK+ port of Chrome. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Remerge to ToT Created 6 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
(Empty)
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4
5 #include "chrome/browser/ui/gtk/first_run_bubble.h"
6
7 #include <gtk/gtk.h>
8
9 #include "base/i18n/rtl.h"
10 #include "base/strings/utf_string_conversions.h"
11 #include "chrome/browser/first_run/first_run.h"
12 #include "chrome/browser/search_engines/util.h"
13 #include "chrome/browser/ui/browser.h"
14 #include "chrome/browser/ui/browser_finder.h"
15 #include "chrome/browser/ui/chrome_pages.h"
16 #include "chrome/browser/ui/gtk/gtk_theme_service.h"
17 #include "grit/generated_resources.h"
18 #include "ui/base/gtk/gtk_hig_constants.h"
19 #include "ui/base/l10n/l10n_util.h"
20
21 namespace {
22
23 // Markup for the text of the Omnibox search label
24 const char kSearchLabelMarkup[] = "<big><b>%s</b></big>";
25
26 } // namespace
27
28 // static
29 void FirstRunBubble::Show(Browser* browser,
30 GtkWidget* anchor,
31 const gfx::Rect& rect) {
32 first_run::LogFirstRunMetric(first_run::FIRST_RUN_BUBBLE_SHOWN);
33
34 new FirstRunBubble(browser, anchor, rect);
35 }
36
37 void FirstRunBubble::BubbleClosing(BubbleGtk* bubble, bool closed_by_escape) {
38 // TODO(port): Enable parent window
39 }
40
41 FirstRunBubble::FirstRunBubble(Browser* browser,
42 GtkWidget* anchor,
43 const gfx::Rect& rect)
44 : browser_(browser),
45 bubble_(NULL) {
46 GtkThemeService* theme_service = GtkThemeService::GetFrom(browser->profile());
47 GtkWidget* title = theme_service->BuildLabel(std::string(), ui::kGdkBlack);
48 char* markup = g_markup_printf_escaped(
49 kSearchLabelMarkup,
50 l10n_util::GetStringFUTF8(IDS_FR_BUBBLE_TITLE,
51 GetDefaultSearchEngineName(browser->profile()))
52 .c_str());
53 gtk_label_set_markup(GTK_LABEL(title), markup);
54 g_free(markup);
55
56 GtkWidget* change = theme_service->BuildChromeLinkButton(
57 l10n_util::GetStringUTF8(IDS_FR_BUBBLE_CHANGE));
58 g_signal_connect(change, "clicked", G_CALLBACK(&HandleChangeLinkThunk), this);
59
60 GtkWidget* subtext = theme_service->BuildLabel(
61 l10n_util::GetStringUTF8(IDS_FR_BUBBLE_SUBTEXT), ui::kGdkBlack);
62
63 GtkWidget* top_line = gtk_hbox_new(FALSE, ui::kControlSpacing);
64 gtk_box_pack_start(GTK_BOX(top_line), title, FALSE, FALSE, 0);
65 gtk_box_pack_start(GTK_BOX(top_line), change, FALSE, FALSE, 0);
66
67 GtkWidget* content = gtk_vbox_new(FALSE, ui::kControlSpacing);
68 gtk_container_set_border_width(GTK_CONTAINER(content),
69 ui::kContentAreaBorder);
70 g_signal_connect(content, "destroy", G_CALLBACK(&HandleDestroyThunk), this);
71 gtk_box_pack_start(GTK_BOX(content), top_line, FALSE, FALSE, 0);
72 gtk_box_pack_start(GTK_BOX(content), subtext, FALSE, FALSE, 0);
73
74 bubble_ = BubbleGtk::Show(anchor,
75 &rect,
76 content,
77 BubbleGtk::ANCHOR_TOP_LEFT,
78 BubbleGtk::MATCH_SYSTEM_THEME |
79 BubbleGtk::POPUP_WINDOW |
80 BubbleGtk::GRAB_INPUT,
81 theme_service,
82 this);
83 DCHECK(bubble_);
84 }
85
86 FirstRunBubble::~FirstRunBubble() {
87 }
88
89 void FirstRunBubble::HandleDestroy(GtkWidget* sender) {
90 delete this;
91 }
92
93 void FirstRunBubble::HandleChangeLink(GtkWidget* sender) {
94 first_run::LogFirstRunMetric(first_run::FIRST_RUN_BUBBLE_CHANGE_INVOKED);
95
96 // Cache browser_ before closing the bubble, which deletes |this|.
97 Browser* browser = browser_;
98 bubble_->Close();
99 if (browser)
100 chrome::ShowSearchEngineSettings(browser);
101 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698