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_alignment_new (0, 0, 1, 1);
27 gtk_alignment_set_padding (GTK_ALIGNMENT (m_containee),
28 0, 0, CHILD_INDENTATION, 0);
29 gtk_widget_show (m_containee);
30 gtk_container_add (GTK_CONTAINER (getWidget()), m_containee);
33 virtual GtkWidget *getContainer()
34 {
return m_containee; }
39 static GtkWidget *findFirstFocusable (GtkContainer *container)
41 g_return_val_if_fail (container != NULL, NULL);
43 for (GList *l = gtk_container_get_children (container);
45 if (gtk_widget_get_can_focus (GTK_WIDGET(l->data)))
46 return GTK_WIDGET (l->data);
47 else if (GTK_IS_CONTAINER (l->data)) {
48 GtkWidget *ret = findFirstFocusable (GTK_CONTAINER (l->data));
58 frame_label_mnemonic_activate (GtkWidget *widget,
59 gboolean group_cycling,
60 GtkContainer *frame_container)
62 GtkWidget *focusable = findFirstFocusable (frame_container);
63 if (focusable == NULL) {
64 g_warning (
"no focusable widgets for mnemonic");
67 return gtk_widget_mnemonic_activate (focusable, group_cycling);
74 YGFrame (YWidget *parent,
const std::string &label)
75 : YFrame (NULL, label),
78 GtkWidget *label_widget = gtk_label_new_with_mnemonic (
"");
79 g_signal_connect (G_OBJECT (label_widget),
"mnemonic_activate",
80 G_CALLBACK (frame_label_mnemonic_activate),
82 YGUtils::setWidgetFont (GTK_WIDGET (label_widget), PANGO_STYLE_NORMAL,
83 PANGO_WEIGHT_BOLD, PANGO_SCALE_MEDIUM);
84 gtk_widget_show (label_widget);
85 gtk_frame_set_label_widget (GTK_FRAME (getWidget()), label_widget);
90 virtual void setLabel (
const std::string &_str)
92 GtkWidget *label = gtk_frame_get_label_widget (GTK_FRAME (getWidget()));
93 std::string str (YGUtils::mapKBAccel (_str));
94 gtk_label_set_text_with_mnemonic (GTK_LABEL (label), str.c_str());
95 YFrame::setLabel (_str);
98 YGWIDGET_IMPL_CONTAINER (YFrame)
101 virtual std::string getDebugLabel()
const 106 YFrame *YGWidgetFactory::createFrame (YWidget *parent,
const std::string &label)
107 {
return new YGFrame (parent, label); }
109 #include "YCheckBoxFrame.h" 114 YGCheckBoxFrame (YWidget *parent,
const std::string &label,
bool checked)
115 : YCheckBoxFrame (NULL, label, checked),
118 GtkWidget *button = gtk_check_button_new_with_mnemonic(
"");
119 YGUtils::setWidgetFont (gtk_bin_get_child (GTK_BIN (button)), PANGO_STYLE_NORMAL,
120 PANGO_WEIGHT_BOLD, PANGO_SCALE_MEDIUM);
121 gtk_widget_show_all (button);
122 gtk_frame_set_label_widget (GTK_FRAME (getWidget()), button);
126 connect (button,
"toggled", G_CALLBACK (toggled_cb),
this);
130 virtual void setLabel (
const std::string &_str)
132 GtkWidget *button = gtk_frame_get_label_widget (GTK_FRAME (getWidget()));
133 GtkLabel *label = GTK_LABEL (gtk_bin_get_child(GTK_BIN (button)));
135 std::string str (YGUtils::mapKBAccel (_str));
136 gtk_label_set_text_with_mnemonic (label, str.c_str());
137 YCheckBoxFrame::setLabel (_str);
142 GtkWidget *button = gtk_frame_get_label_widget (GTK_FRAME (getWidget()));
143 return gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (button));
146 void setValue (
bool value)
149 GtkWidget *button = gtk_frame_get_label_widget (GTK_FRAME (getWidget()));
150 gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (button), value);
154 virtual void doSetEnabled (
bool enabled)
156 GtkWidget *frame = getWidget();
158 gtk_widget_set_sensitive (frame, TRUE);
159 handleChildrenEnablement (value());
162 gtk_widget_set_sensitive (frame, FALSE);
163 YWidget::setChildrenEnabled (
false);
165 YWidget::setEnabled (enabled);
168 YGWIDGET_IMPL_CONTAINER (YCheckBoxFrame)
173 pThis->setEnabled (
true);
175 YGUI::ui()->sendEvent (
new YWidgetEvent (pThis, YEvent::ValueChanged));
179 YCheckBoxFrame *YGWidgetFactory::createCheckBoxFrame (
180 YWidget *parent,
const std::string &label,
bool checked)