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 3 // found in the LICENSE file. 4 5 #ifndef CHROME_BROWSER_UI_GTK_EDIT_SEARCH_ENGINE_DIALOG_H_ 6 #define CHROME_BROWSER_UI_GTK_EDIT_SEARCH_ENGINE_DIALOG_H_ 7 #pragma once 8 9 #include <gtk/gtk.h> 10 #include <string> 11 12 #include "base/basictypes.h" 13 #include "base/memory/scoped_ptr.h" 14 #include "base/string16.h" 15 #include "ui/base/gtk/gtk_signal.h" 16 17 class EditSearchEngineController; 18 class EditSearchEngineControllerDelegate; 19 class Profile; 20 class TemplateURL; 21 22 class EditSearchEngineDialog { 23 public: 24 EditSearchEngineDialog(GtkWindow* parent_window, 25 const TemplateURL* template_url, 26 EditSearchEngineControllerDelegate* delegate, 27 Profile* profile); 28 virtual ~EditSearchEngineDialog(); 29 30 private: 31 // Create and show the window. 32 void Init(GtkWindow* parent_window, Profile* profile); 33 34 // Retrieve the user input in the various fields. 35 string16 GetTitleInput() const; 36 string16 GetKeywordInput() const; 37 std::string GetURLInput() const; 38 39 // Set sensitivity of buttons based on entry state. 40 void EnableControls(); 41 42 // Updates the tooltip and image of the image view based on is_valid. If 43 // is_valid is false the tooltip of the image view is set to the message with 44 // id invalid_message_id, otherwise the tooltip is set to the empty text. 45 void UpdateImage(GtkWidget* image, bool is_valid, int invalid_message_id); 46 47 // Callback for entry changes. 48 CHROMEG_CALLBACK_0(EditSearchEngineDialog, void, OnEntryChanged, 49 GtkEditable*); 50 51 // Callback for dialog buttons. 52 CHROMEGTK_CALLBACK_1(EditSearchEngineDialog, void, OnResponse, int); 53 54 // Callback for window destruction. 55 CHROMEGTK_CALLBACK_0(EditSearchEngineDialog, void, OnWindowDestroy); 56 57 // The dialog window. 58 GtkWidget* dialog_; 59 60 // Text entries for each field. 61 GtkWidget* title_entry_; 62 GtkWidget* keyword_entry_; 63 GtkWidget* url_entry_; 64 65 // Images showing whether each entry is okay or has errors. 66 GtkWidget* title_image_; 67 GtkWidget* keyword_image_; 68 GtkWidget* url_image_; 69 70 // The ok button (we need a reference to it so we can de-activate it when the 71 // entries are not all filled in.) 72 GtkWidget* ok_button_; 73 74 scoped_ptr<EditSearchEngineController> controller_; 75 76 DISALLOW_COPY_AND_ASSIGN(EditSearchEngineDialog); 77 }; 78 79 #endif // CHROME_BROWSER_UI_GTK_EDIT_SEARCH_ENGINE_DIALOG_H_ 80