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

Side by Side Diff: chrome/browser/gtk/about_chrome_dialog.cc

Issue 113539: linux: unify all the dialog layout code for visual consistency. (Closed)
Patch Set: last second Created 11 years, 7 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
« no previous file with comments | « chrome/browser/browser_main.cc ('k') | chrome/browser/gtk/bookmark_editor_gtk.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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/about_chrome_dialog.h" 5 #include "chrome/browser/gtk/about_chrome_dialog.h"
6 6
7 #include <gtk/gtk.h> 7 #include <gtk/gtk.h>
8 #include <wchar.h> 8 #include <wchar.h>
9 9
10 #include "app/l10n_util.h" 10 #include "app/l10n_util.h"
(...skipping 78 matching lines...) Expand 10 before | Expand all | Expand 10 after
89 current_version += L")"; 89 current_version += L")";
90 #endif 90 #endif
91 91
92 // Build the dialog. 92 // Build the dialog.
93 GtkWidget* dialog = gtk_dialog_new_with_buttons( 93 GtkWidget* dialog = gtk_dialog_new_with_buttons(
94 l10n_util::GetStringUTF8(IDS_ABOUT_CHROME_TITLE).c_str(), 94 l10n_util::GetStringUTF8(IDS_ABOUT_CHROME_TITLE).c_str(),
95 parent, 95 parent,
96 GTK_DIALOG_MODAL, 96 GTK_DIALOG_MODAL,
97 GTK_STOCK_OK, GTK_RESPONSE_ACCEPT, 97 GTK_STOCK_OK, GTK_RESPONSE_ACCEPT,
98 NULL); 98 NULL);
99 // Pick up the style set in gtk_util.cc:InitRCStyles().
100 // The layout of this dialog is special because the logo should be flush
101 // with the edges of the window.
102 gtk_widget_set_name(dialog, "about-dialog");
103 gtk_dialog_set_has_separator(GTK_DIALOG(dialog), FALSE);
99 104
100 GtkWidget* content_area = GTK_DIALOG(dialog)->vbox; 105 GtkWidget* content_area = GTK_DIALOG(dialog)->vbox;
101 106
102 // Use an event box to get the background painting correctly 107 // Use an event box to get the background painting correctly
103 GtkWidget* ebox = gtk_event_box_new(); 108 GtkWidget* ebox = gtk_event_box_new();
104 gtk_widget_modify_bg(ebox, GTK_STATE_NORMAL, &gfx::kGdkWhite); 109 gtk_widget_modify_bg(ebox, GTK_STATE_NORMAL, &gfx::kGdkWhite);
105 110
106 GtkWidget* hbox = gtk_hbox_new(FALSE, 0); 111 GtkWidget* hbox = gtk_hbox_new(FALSE, 0);
107 112
108 GtkWidget* text_alignment = gtk_alignment_new(0.0, 0.0, 1.0, 1.0); 113 GtkWidget* text_alignment = gtk_alignment_new(0.0, 0.0, 1.0, 1.0);
(...skipping 19 matching lines...) Expand all
128 133
129 GtkWidget* image_vbox = gtk_vbox_new(FALSE, 0); 134 GtkWidget* image_vbox = gtk_vbox_new(FALSE, 0);
130 gtk_box_pack_end(GTK_BOX(image_vbox), 135 gtk_box_pack_end(GTK_BOX(image_vbox),
131 gtk_image_new_from_pixbuf(background), 136 gtk_image_new_from_pixbuf(background),
132 FALSE, FALSE, 0); 137 FALSE, FALSE, 0);
133 138
134 gtk_box_pack_start(GTK_BOX(hbox), image_vbox, FALSE, FALSE, 0); 139 gtk_box_pack_start(GTK_BOX(hbox), image_vbox, FALSE, FALSE, 0);
135 gtk_container_add(GTK_CONTAINER(ebox), hbox); 140 gtk_container_add(GTK_CONTAINER(ebox), hbox);
136 gtk_box_pack_start(GTK_BOX(content_area), ebox, TRUE, TRUE, 0); 141 gtk_box_pack_start(GTK_BOX(content_area), ebox, TRUE, TRUE, 0);
137 142
143 // We use a separate box for the licensing etc. text. See the comment near
144 // the top of this function about using a special layout for this dialog.
145 GtkWidget* vbox = gtk_vbox_new(FALSE, 6);
146 gtk_container_set_border_width(GTK_CONTAINER(vbox), 12);
147
138 GtkWidget* copyright_label = MakeMarkupLabel( 148 GtkWidget* copyright_label = MakeMarkupLabel(
139 "<span size=\"smaller\">%s</span>", 149 "<span size=\"smaller\">%s</span>",
140 l10n_util::GetString(IDS_ABOUT_VERSION_COPYRIGHT)); 150 l10n_util::GetString(IDS_ABOUT_VERSION_COPYRIGHT));
141 gtk_box_pack_start(GTK_BOX(content_area), copyright_label, TRUE, TRUE, 5); 151 gtk_box_pack_start(GTK_BOX(vbox), copyright_label, TRUE, TRUE, 5);
142 152
143 // TODO(erg): Figure out how to really insert links. We could just depend on 153 // TODO(erg): Figure out how to really insert links. We could just depend on
144 // (or include the source of) libsexy's SexyUrlLabel gtk widget... 154 // (or include the source of) libsexy's SexyUrlLabel gtk widget...
145 std::wstring license = l10n_util::GetString(IDS_ABOUT_VERSION_LICENSE); 155 std::wstring license = l10n_util::GetString(IDS_ABOUT_VERSION_LICENSE);
146 RemoveText(&license, kBeginLinkChr); 156 RemoveText(&license, kBeginLinkChr);
147 RemoveText(&license, kBeginLinkOss); 157 RemoveText(&license, kBeginLinkOss);
148 RemoveText(&license, kBeginLink); 158 RemoveText(&license, kBeginLink);
149 RemoveText(&license, kEndLinkChr); 159 RemoveText(&license, kEndLinkChr);
150 RemoveText(&license, kEndLinkOss); 160 RemoveText(&license, kEndLinkOss);
151 RemoveText(&license, kEndLink); 161 RemoveText(&license, kEndLink);
152 162
153 GtkWidget* license_label = MakeMarkupLabel( 163 GtkWidget* license_label = MakeMarkupLabel(
154 "<span size=\"smaller\">%s</span>", license); 164 "<span size=\"smaller\">%s</span>", license);
155 165
156 gtk_label_set_line_wrap(GTK_LABEL(license_label), TRUE); 166 gtk_label_set_line_wrap(GTK_LABEL(license_label), TRUE);
157 gtk_misc_set_alignment(GTK_MISC(license_label), 0, 0); 167 gtk_misc_set_alignment(GTK_MISC(license_label), 0, 0);
158 gtk_box_pack_start(GTK_BOX(content_area), license_label, TRUE, TRUE, 0); 168 gtk_box_pack_start(GTK_BOX(vbox), license_label, TRUE, TRUE, 0);
159 169
160 // Hack around Gtk's not-so-good label wrapping, as described here: 170 // Hack around Gtk's not-so-good label wrapping, as described here:
161 // http://blog.16software.com/dynamic-label-wrapping-in-gtk 171 // http://blog.16software.com/dynamic-label-wrapping-in-gtk
162 g_signal_connect(G_OBJECT(license_label), "size-allocate", 172 g_signal_connect(G_OBJECT(license_label), "size-allocate",
163 G_CALLBACK(FixLabelWrappingCallback), NULL); 173 G_CALLBACK(FixLabelWrappingCallback), NULL);
164 174
175 gtk_box_pack_start(GTK_BOX(content_area), vbox, TRUE, TRUE, 0);
176
165 g_signal_connect(dialog, "response", G_CALLBACK(OnDialogResponse), NULL); 177 g_signal_connect(dialog, "response", G_CALLBACK(OnDialogResponse), NULL);
166 gtk_window_set_resizable(GTK_WINDOW(dialog), FALSE); 178 gtk_window_set_resizable(GTK_WINDOW(dialog), FALSE);
167 gtk_widget_show_all(dialog); 179 gtk_widget_show_all(dialog);
168 } 180 }
OLDNEW
« no previous file with comments | « chrome/browser/browser_main.cc ('k') | chrome/browser/gtk/bookmark_editor_gtk.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698