15821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Copyright (c) 2012 The Chromium Authors. All rights reserved.
25821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be
35821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// found in the LICENSE file.
45821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
55821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chrome/browser/ui/libgtk2ui/chrome_gtk_frame.h"
65821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
75821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)G_BEGIN_DECLS
85821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
95821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// MetaFrames declaration
105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)G_DEFINE_TYPE(MetaFrames, meta_frames, GTK_TYPE_WINDOW)
115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)static void meta_frames_class_init(MetaFramesClass* frames_class) {
135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Noop since we don't declare anything.
145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)static void meta_frames_init(MetaFrames* button) {
175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// ChromeGtkFrame declaration
215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)G_DEFINE_TYPE(ChromeGtkFrame, chrome_gtk_frame, meta_frames_get_type())
225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)static void chrome_gtk_frame_class_init(ChromeGtkFrameClass* frame_class) {
245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  GtkWidgetClass* widget_class = reinterpret_cast<GtkWidgetClass*>(frame_class);
255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Frame tints:
275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  gtk_widget_class_install_style_property(
285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      widget_class,
295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      g_param_spec_boxed(
305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)          "frame-color",
315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)          "Frame Color",
325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)          "The color that the chrome frame will be. (If unspecified, "
335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)            " Chrome will take ChromeGtkFrame::bg[SELECTED] and slightly darken"
345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)            " it.)",
355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)          GDK_TYPE_COLOR,
365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)          G_PARAM_READABLE));
375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  gtk_widget_class_install_style_property(
385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      widget_class,
395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      g_param_spec_boxed(
405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)          "inactive-frame-color",
415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)          "Inactive Frame Color",
425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)          "The color that the inactive chrome frame will be. (If"
435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)            " unspecified, Chrome will take ChromeGtkFrame::bg[INSENSITIVE]"
445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)            " and slightly darken it.)",
455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)          GDK_TYPE_COLOR,
465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)          G_PARAM_READABLE));
475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  gtk_widget_class_install_style_property(
485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      widget_class,
495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      g_param_spec_boxed(
505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)          "incognito-frame-color",
515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)          "Incognito Frame Color",
525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)          "The color that the incognito frame will be. (If unspecified,"
535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)            " Chrome will take the frame color and tint it by Chrome's default"
545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)            " incognito tint.)",
555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)          GDK_TYPE_COLOR,
565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)          G_PARAM_READABLE));
575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  gtk_widget_class_install_style_property(
585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      widget_class,
595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      g_param_spec_boxed(
605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)          "incognito-inactive-frame-color",
615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)          "Incognito Inactive Frame Color",
625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)          "The color that the inactive incognito frame will be. (If"
635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)            " unspecified, Chrome will take the frame color and tint it by"
645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)            " Chrome's default incognito tint.)",
655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)          GDK_TYPE_COLOR,
665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)          G_PARAM_READABLE));
675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Frame gradient control:
695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  gtk_widget_class_install_style_property(
705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      widget_class,
715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      g_param_spec_int(
725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)          "frame-gradient-size",
735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)          "Chrome Frame Gradient Size",
745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)          "The size of the gradient on top of the frame image. Specify 0 to"
755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)            " make the frame a solid color.",
765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)          0,      // 0 disables the gradient
775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)          128,    // The frame image is only up to 128 pixels tall.
785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)          16,     // By default, gradients are 16 pixels high.
795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)          G_PARAM_READABLE));
805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  gtk_widget_class_install_style_property(
815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      widget_class,
825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      g_param_spec_boxed(
835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)          "frame-gradient-color",
845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)          "Frame Gradient Color",
855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)          "The top color of the chrome frame gradient. (If unspecified,"
865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)            " chrome will create a lighter tint of frame-color",
875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)          GDK_TYPE_COLOR,
885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)          G_PARAM_READABLE));
895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  gtk_widget_class_install_style_property(
905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      widget_class,
915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      g_param_spec_boxed(
925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)          "inactive-frame-gradient-color",
935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)          "Inactive Frame Gradient Color",
945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)          "The top color of the inactive chrome frame gradient. (If"
955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)            " unspecified, chrome will create a lighter tint of frame-color",
965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)          GDK_TYPE_COLOR,
975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)          G_PARAM_READABLE));
985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  gtk_widget_class_install_style_property(
995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      widget_class,
1005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      g_param_spec_boxed(
1015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)          "incognito-frame-gradient-color",
1025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)          "Incognito Frame Gradient Color",
1035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)          "The top color of the incognito chrome frame gradient. (If"
1045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)            " unspecified, chrome will create a lighter tint of frame-color",
1055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)          GDK_TYPE_COLOR,
1065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)          G_PARAM_READABLE));
1075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  gtk_widget_class_install_style_property(
1085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      widget_class,
1095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      g_param_spec_boxed(
1105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)          "incognito-inactive-frame-gradient-color",
1115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)          "Incognito Inactive Frame Gradient Color",
1125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)          "The top color of the incognito inactive chrome frame gradient. (If"
1135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)            " unspecified, chrome will create a lighter tint of frame-color",
1145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)          GDK_TYPE_COLOR,
1155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)          G_PARAM_READABLE));
1165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Scrollbar color properties:
1185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  gtk_widget_class_install_style_property(
1195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      widget_class,
1205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      g_param_spec_boxed(
1215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)          "scrollbar-slider-prelight-color",
1225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)          "Scrollbar Slider Prelight Color",
1235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)          "The color applied to the mouse is above the tab",
1245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)          GDK_TYPE_COLOR,
1255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)          G_PARAM_READABLE));
1265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  gtk_widget_class_install_style_property(
1275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      widget_class,
1285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      g_param_spec_boxed(
1295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)          "scrollbar-slider-normal-color",
1305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)          "Scrollbar Slider Normal Color",
1315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)          "The color applied to the slider normally",
1325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)          GDK_TYPE_COLOR,
1335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)          G_PARAM_READABLE));
1345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  gtk_widget_class_install_style_property(
1355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      widget_class,
1365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      g_param_spec_boxed(
1375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)          "scrollbar-trough-color",
1385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)          "Scrollbar Trough Color",
1395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)          "The background color of the slider track",
1405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)          GDK_TYPE_COLOR,
1415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)          G_PARAM_READABLE));
1425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
1435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)static void chrome_gtk_frame_init(ChromeGtkFrame* frame) {
1455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
1465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)GtkWidget* chrome_gtk_frame_new(void) {
1485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  return GTK_WIDGET(g_object_new(chrome_gtk_frame_get_type(),
1495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                 "type", GTK_WINDOW_TOPLEVEL,
1505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                 NULL));
1515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
1525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)G_END_DECLS
154