| // Copyright (c) 2012 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 UI_BASE_LINUX_UI_H_ |
| #define UI_BASE_LINUX_UI_H_ |
| |
| #include "ui/base/dialogs/select_file_dialog.h" |
| #include "ui/base/ui_export.h" |
| #include "third_party/skia/include/core/SkColor.h" |
| |
| // The main entrypoint into Linux toolkit specific code. GTK code should only |
| // be executed behind this interface. |
| |
| namespace gfx { |
| class Image; |
| } |
| |
| namespace ui { |
| class SelectFilePolicy; |
| |
| // Adapter class with targets to render like different toolkits. Set by any |
| // project that wants to do linux desktop native rendering. |
| // |
| // TODO(erg): We're hardcoding GTK2, when we'll need to have backends for (at |
| // minimum) GTK2 and GTK3. LinuxUI::instance() should actually be a very |
| // complex method that pokes around with dlopen against a libuigtk2.so, a |
| // liuigtk3.so, etc. |
| class UI_EXPORT LinuxUI { |
| public: |
| virtual ~LinuxUI() {} |
| |
| // Sets the dynamically loaded singleton that draws the desktop native UI. |
| static void SetInstance(LinuxUI* instance); |
| |
| // Returns a LinuxUI instance for the toolkit used in the user's desktop |
| // environment. |
| // |
| // Can return NULL, in case no toolkit has been set. (For example, if we're |
| // running with the "--ash" flag.) |
| static const LinuxUI* instance(); |
| |
| // Returns an themed image per theme_provider.h |
| virtual bool UseNativeTheme() const = 0; |
| virtual gfx::Image* GetThemeImageNamed(int id) const = 0; |
| virtual bool GetColor(int id, SkColor* color) const = 0; |
| |
| // Returns a native file selection dialog. |
| virtual SelectFileDialog* CreateSelectFileDialog( |
| SelectFileDialog::Listener* listener, |
| SelectFilePolicy* policy) const = 0; |
| }; |
| |
| } // namespace ui |
| |
| #endif // UI_BASE_LINUX_UI_H_ |