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/create_application_shortcuts_dialog_gtk.h" | 5 #include "chrome/browser/gtk/create_application_shortcuts_dialog_gtk.h" |
6 | 6 |
7 #include "app/l10n_util.h" | 7 #include "app/l10n_util.h" |
8 #include "chrome/browser/shell_integration.h" | 8 #include "chrome/browser/shell_integration.h" |
9 #include "chrome/common/gtk_util.h" | 9 #include "chrome/common/gtk_util.h" |
10 #include "grit/generated_resources.h" | 10 #include "grit/generated_resources.h" |
| 11 #include "grit/locale_settings.h" |
11 | 12 |
12 // static | 13 // static |
13 void CreateApplicationShortcutsDialogGtk::Show(GtkWindow* parent, | 14 void CreateApplicationShortcutsDialogGtk::Show(GtkWindow* parent, |
14 const GURL& url, | 15 const GURL& url, |
15 const string16& title, | 16 const string16& title, |
16 const SkBitmap& favicon) { | 17 const SkBitmap& favicon) { |
17 new CreateApplicationShortcutsDialogGtk(parent, url, title, favicon); | 18 new CreateApplicationShortcutsDialogGtk(parent, url, title, favicon); |
18 } | 19 } |
19 | 20 |
20 CreateApplicationShortcutsDialogGtk::CreateApplicationShortcutsDialogGtk( | 21 CreateApplicationShortcutsDialogGtk::CreateApplicationShortcutsDialogGtk( |
21 GtkWindow* parent, | 22 GtkWindow* parent, |
22 const GURL& url, | 23 const GURL& url, |
23 const string16& title, | 24 const string16& title, |
24 const SkBitmap& favicon) | 25 const SkBitmap& favicon) |
25 : url_(url), | 26 : url_(url), |
26 title_(title), | 27 title_(title), |
27 favicon_(favicon) { | 28 favicon_(favicon) { |
28 // Build the dialog. | 29 // Build the dialog. |
29 GtkWidget* dialog = gtk_dialog_new_with_buttons( | 30 GtkWidget* dialog = gtk_dialog_new_with_buttons( |
30 l10n_util::GetStringUTF8(IDS_CREATE_SHORTCUTS_TITLE).c_str(), | 31 l10n_util::GetStringUTF8(IDS_CREATE_SHORTCUTS_TITLE).c_str(), |
31 parent, | 32 parent, |
32 (GtkDialogFlags) (GTK_DIALOG_MODAL | GTK_DIALOG_NO_SEPARATOR), | 33 (GtkDialogFlags) (GTK_DIALOG_MODAL | GTK_DIALOG_NO_SEPARATOR), |
33 GTK_STOCK_CANCEL, | 34 GTK_STOCK_CANCEL, |
34 GTK_RESPONSE_REJECT, | 35 GTK_RESPONSE_REJECT, |
35 NULL); | 36 NULL); |
| 37 gtk_widget_realize(dialog); |
| 38 gtk_util::SetWindowWidthFromResources(GTK_WINDOW(dialog), |
| 39 IDS_CREATE_SHORTCUTS_DIALOG_WIDTH_CHARS, |
| 40 /* resizable */ false); |
36 gtk_util::AddButtonToDialog(dialog, | 41 gtk_util::AddButtonToDialog(dialog, |
37 l10n_util::GetStringUTF8(IDS_CREATE_SHORTCUTS_COMMIT).c_str(), | 42 l10n_util::GetStringUTF8(IDS_CREATE_SHORTCUTS_COMMIT).c_str(), |
38 GTK_STOCK_APPLY, GTK_RESPONSE_ACCEPT); | 43 GTK_STOCK_APPLY, GTK_RESPONSE_ACCEPT); |
39 | 44 |
40 GtkWidget* content_area = GTK_DIALOG(dialog)->vbox; | 45 GtkWidget* content_area = GTK_DIALOG(dialog)->vbox; |
41 gtk_box_set_spacing(GTK_BOX(content_area), gtk_util::kContentAreaSpacing); | 46 gtk_box_set_spacing(GTK_BOX(content_area), gtk_util::kContentAreaSpacing); |
42 | 47 |
43 GtkWidget* vbox = gtk_vbox_new(FALSE, gtk_util::kControlSpacing); | 48 GtkWidget* vbox = gtk_vbox_new(FALSE, gtk_util::kControlSpacing); |
44 gtk_container_add(GTK_CONTAINER(content_area), vbox); | 49 gtk_container_add(GTK_CONTAINER(content_area), vbox); |
45 | 50 |
(...skipping 10 matching lines...) Expand all Loading... |
56 gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(desktop_checkbox_), true); | 61 gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(desktop_checkbox_), true); |
57 | 62 |
58 // Menu checkbox. | 63 // Menu checkbox. |
59 menu_checkbox_ = gtk_check_button_new_with_label( | 64 menu_checkbox_ = gtk_check_button_new_with_label( |
60 l10n_util::GetStringUTF8(IDS_CREATE_SHORTCUTS_MENU_CHKBOX).c_str()); | 65 l10n_util::GetStringUTF8(IDS_CREATE_SHORTCUTS_MENU_CHKBOX).c_str()); |
61 gtk_box_pack_start(GTK_BOX(vbox), menu_checkbox_, FALSE, FALSE, 0); | 66 gtk_box_pack_start(GTK_BOX(vbox), menu_checkbox_, FALSE, FALSE, 0); |
62 gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(menu_checkbox_), false); | 67 gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(menu_checkbox_), false); |
63 | 68 |
64 g_signal_connect(dialog, "response", | 69 g_signal_connect(dialog, "response", |
65 G_CALLBACK(HandleOnResponseDialog), this); | 70 G_CALLBACK(HandleOnResponseDialog), this); |
66 gtk_window_set_resizable(GTK_WINDOW(dialog), FALSE); | |
67 gtk_widget_show_all(dialog); | 71 gtk_widget_show_all(dialog); |
68 } | 72 } |
69 | 73 |
70 void CreateApplicationShortcutsDialogGtk::OnDialogResponse(GtkWidget* widget, | 74 void CreateApplicationShortcutsDialogGtk::OnDialogResponse(GtkWidget* widget, |
71 int response) { | 75 int response) { |
72 if (response == GTK_RESPONSE_ACCEPT) { | 76 if (response == GTK_RESPONSE_ACCEPT) { |
73 ShellIntegration::ShortcutInfo shortcut_info; | 77 ShellIntegration::ShortcutInfo shortcut_info; |
74 shortcut_info.url = url_; | 78 shortcut_info.url = url_; |
75 shortcut_info.title = title_; | 79 shortcut_info.title = title_; |
76 shortcut_info.favicon = favicon_; | 80 shortcut_info.favicon = favicon_; |
77 shortcut_info.create_on_desktop = | 81 shortcut_info.create_on_desktop = |
78 gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(desktop_checkbox_)); | 82 gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(desktop_checkbox_)); |
79 shortcut_info.create_in_applications_menu = | 83 shortcut_info.create_in_applications_menu = |
80 gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(menu_checkbox_)); | 84 gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(menu_checkbox_)); |
81 ShellIntegration::CreateDesktopShortcut(shortcut_info); | 85 ShellIntegration::CreateDesktopShortcut(shortcut_info); |
82 } | 86 } |
83 | 87 |
84 delete this; | 88 delete this; |
85 gtk_widget_destroy(GTK_WIDGET(widget)); | 89 gtk_widget_destroy(GTK_WIDGET(widget)); |
86 } | 90 } |
87 | 91 |
OLD | NEW |