5 #define YUILogComponent "gtk"
6 #include <yui/Libyui_config.h>
13 #define CHILD_INDENTATION 8
19 GtkWidget *m_containee;
24 GTK_TYPE_FRAME,
"shadow-type", GTK_SHADOW_NONE, NULL)
26 m_containee = gtk_widget_new (GTK_TYPE_FRAME, NULL);
30 gtk_widget_set_margin_top (m_containee, 0);
31 gtk_widget_set_margin_bottom (m_containee, 0);
32 gtk_widget_set_margin_start (m_containee, CHILD_INDENTATION);
33 gtk_widget_set_margin_end (m_containee, 0);
35 gtk_widget_show (m_containee);
36 gtk_container_add (GTK_CONTAINER (getWidget()), m_containee);
39 virtual GtkWidget *getContainer()
40 {
return m_containee; }
45 static GtkWidget *findFirstFocusable (GtkContainer *container)
47 g_return_val_if_fail (container != NULL, NULL);
49 for (GList *l = gtk_container_get_children (container);
51 if (gtk_widget_get_can_focus (GTK_WIDGET(l->data)))
52 return GTK_WIDGET (l->data);
53 else if (GTK_IS_CONTAINER (l->data)) {
54 GtkWidget *ret = findFirstFocusable (GTK_CONTAINER (l->data));
64 frame_label_mnemonic_activate (GtkWidget *widget,
65 gboolean group_cycling,
66 GtkContainer *frame_container)
68 GtkWidget *focusable = findFirstFocusable (frame_container);
69 if (focusable == NULL) {
70 g_warning (
"no focusable widgets for mnemonic");
73 return gtk_widget_mnemonic_activate (focusable, group_cycling);
80 YGFrame (YWidget *parent,
const std::string &label)
81 : YFrame (NULL, label),
84 GtkWidget *label_widget = gtk_label_new_with_mnemonic (
"");
85 g_signal_connect (G_OBJECT (label_widget),
"mnemonic_activate",
86 G_CALLBACK (frame_label_mnemonic_activate),
88 YGUtils::setWidgetFont (GTK_WIDGET (label_widget), PANGO_STYLE_NORMAL,
89 PANGO_WEIGHT_BOLD, PANGO_SCALE_MEDIUM);
90 gtk_widget_show (label_widget);
91 gtk_frame_set_label_widget (GTK_FRAME (getWidget()), label_widget);
96 virtual void setLabel (
const std::string &_str)
98 GtkWidget *label = gtk_frame_get_label_widget (GTK_FRAME (getWidget()));
99 std::string str (YGUtils::mapKBAccel (_str));
100 gtk_label_set_text_with_mnemonic (GTK_LABEL (label), str.c_str());
101 YFrame::setLabel (_str);
104 YGWIDGET_IMPL_CONTAINER (YFrame)
107 virtual std::string getDebugLabel()
const
112 YFrame *YGWidgetFactory::createFrame (YWidget *parent,
const std::string &label)
113 {
return new YGFrame (parent, label); }
115 #include "YCheckBoxFrame.h"
120 YGCheckBoxFrame (YWidget *parent,
const std::string &label,
bool checked)
121 : YCheckBoxFrame (NULL, label, checked),
124 GtkWidget *button = gtk_check_button_new_with_mnemonic(
"");
125 YGUtils::setWidgetFont (gtk_bin_get_child (GTK_BIN (button)), PANGO_STYLE_NORMAL,
126 PANGO_WEIGHT_BOLD, PANGO_SCALE_MEDIUM);
127 gtk_widget_show_all (button);
128 gtk_frame_set_label_widget (GTK_FRAME (getWidget()), button);
132 connect (button,
"toggled", G_CALLBACK (toggled_cb),
this);
136 virtual void setLabel (
const std::string &_str)
138 GtkWidget *button = gtk_frame_get_label_widget (GTK_FRAME (getWidget()));
139 GtkLabel *label = GTK_LABEL (gtk_bin_get_child(GTK_BIN (button)));
141 std::string str (YGUtils::mapKBAccel (_str));
142 gtk_label_set_text_with_mnemonic (label, str.c_str());
143 YCheckBoxFrame::setLabel (_str);
148 GtkWidget *button = gtk_frame_get_label_widget (GTK_FRAME (getWidget()));
149 return gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (button));
152 void setValue (
bool value)
155 GtkWidget *button = gtk_frame_get_label_widget (GTK_FRAME (getWidget()));
156 gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (button), value);
160 virtual void doSetEnabled (
bool enabled)
162 GtkWidget *frame = getWidget();
164 gtk_widget_set_sensitive (frame, TRUE);
165 handleChildrenEnablement (value());
168 gtk_widget_set_sensitive (frame, FALSE);
169 YWidget::setChildrenEnabled (
false);
171 YWidget::setEnabled (enabled);
174 YGWIDGET_IMPL_CONTAINER (YCheckBoxFrame)
179 pThis->setEnabled (
true);
181 YGUI::ui()->sendEvent (
new YWidgetEvent (pThis, YEvent::ValueChanged));
185 YCheckBoxFrame *YGWidgetFactory::createCheckBoxFrame (
186 YWidget *parent,
const std::string &label,
bool checked)