| Index: chrome/browser/ui/gtk/translate/translate_infobar_base_gtk.h
|
| diff --git a/chrome/browser/ui/gtk/translate/translate_infobar_base_gtk.h b/chrome/browser/ui/gtk/translate/translate_infobar_base_gtk.h
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..3cbdd0d3e634a08d55c928a74c0596f6e322d483
|
| --- /dev/null
|
| +++ b/chrome/browser/ui/gtk/translate/translate_infobar_base_gtk.h
|
| @@ -0,0 +1,89 @@
|
| +// Copyright (c) 2010 The Chromium Authors. All rights reserved.
|
| +// Use of this source code is governed by a BSD-style license that can be
|
| +// found in the LICENSE file.
|
| +
|
| +#ifndef CHROME_BROWSER_UI_GTK_TRANSLATE_TRANSLATE_INFOBAR_BASE_GTK_H_
|
| +#define CHROME_BROWSER_UI_GTK_TRANSLATE_TRANSLATE_INFOBAR_BASE_GTK_H_
|
| +#pragma once
|
| +
|
| +#include "chrome/browser/translate/translate_infobar_view.h"
|
| +#include "chrome/browser/gtk/infobar_gtk.h"
|
| +#include "ui/base/animation/animation_delegate.h"
|
| +
|
| +class MenuGtk;
|
| +class OptionsMenuModel;
|
| +class TranslateInfoBarDelegate;
|
| +
|
| +// This class contains some of the base functionality that translate infobars
|
| +// use.
|
| +class TranslateInfoBarBase : public TranslateInfoBarView,
|
| + public InfoBar,
|
| + public ui::AnimationDelegate {
|
| + public:
|
| + explicit TranslateInfoBarBase(TranslateInfoBarDelegate* delegate);
|
| + virtual ~TranslateInfoBarBase();
|
| +
|
| + // Initializes the infobar widgets. Should be called after the object has been
|
| + // created.
|
| + virtual void Init();
|
| +
|
| + // Overridden from InfoBar:
|
| + virtual void GetTopColor(InfoBarDelegate::Type type,
|
| + double* r, double* g, double *b);
|
| + virtual void GetBottomColor(InfoBarDelegate::Type type,
|
| + double* r, double* g, double *b);
|
| +
|
| + // Overridden from TranslateInfoBarView:
|
| + virtual void OriginalLanguageChanged() {}
|
| + virtual void TargetLanguageChanged() {}
|
| +
|
| + // Overridden from ui::AnimationDelegate:
|
| + virtual void AnimationProgressed(const ui::Animation* animation);
|
| +
|
| + protected:
|
| + // Sub-classes that want to have the options menu button showing sould
|
| + // override and return true.
|
| + virtual bool ShowOptionsMenuButton() const;
|
| +
|
| + // Creates a label with the appropriate font and color for the translate
|
| + // infobars.
|
| + GtkWidget* CreateLabel(const std::string& text);
|
| +
|
| + // Creates a combobox that displays the languages currently available.
|
| + // |selected_language| is the language index (as used in the
|
| + // TranslateInfoDelegate) that should be selected initially.
|
| + // |exclude_language| is the language index of the language that should not be
|
| + // included in the list (-1 means no language excluded).
|
| + GtkWidget* CreateLanguageCombobox(int selected_language,
|
| + int exclude_language);
|
| +
|
| + // Given an above-constructed combobox, returns the currently selected
|
| + // language id.
|
| + static int GetLanguageComboboxActiveId(GtkComboBox* combo);
|
| +
|
| + // Convenience to retrieve the TranslateInfoBarDelegate for this infobar.
|
| + TranslateInfoBarDelegate* GetDelegate() const;
|
| +
|
| + private:
|
| + // Builds a button with an arrow in it to emulate the menu-button style from
|
| + // the windows version.
|
| + static GtkWidget* BuildOptionsMenuButton();
|
| +
|
| + // The menu displayed when the Options button is pressed.
|
| + scoped_ptr<OptionsMenuModel> options_menu_model_;
|
| + scoped_ptr<MenuGtk> options_menu_menu_;
|
| +
|
| + CHROMEGTK_CALLBACK_0(TranslateInfoBarBase, void, OnOptionsClicked);
|
| +
|
| + // A percentage to average the normal page action background with the error
|
| + // background. When 0, the infobar background should be pure PAGE_ACTION_TYPE.
|
| + // When 1, the infobar background should be pure WARNING_TYPE.
|
| + double background_error_percent_;
|
| +
|
| + // Changes the color of the background from normal to error color and back.
|
| + scoped_ptr<ui::SlideAnimation> background_color_animation_;
|
| +
|
| + DISALLOW_COPY_AND_ASSIGN(TranslateInfoBarBase);
|
| +};
|
| +
|
| +#endif // CHROME_BROWSER_UI_GTK_TRANSLATE_TRANSLATE_INFOBAR_BASE_GTK_H_
|
|
|