[yast-commit] r54323 - in /trunk/gtk: ./ src/

Author: rpmcruz Date: Mon Dec 22 03:52:04 2008 New Revision: 54323 URL: http://svn.opensuse.org/viewcvs/yast?rev=54323&view=rev Log: * src/YGWidget.h/cc, touching most code: some small cleanups on macros and connections. Modified: trunk/gtk/ChangeLog trunk/gtk/src/YGBarGraph.cc trunk/gtk/src/YGComboBox.cc trunk/gtk/src/YGDialog.cc trunk/gtk/src/YGDialog.h trunk/gtk/src/YGDumbTab.cc trunk/gtk/src/YGFrame.cc trunk/gtk/src/YGImage.cc trunk/gtk/src/YGInputField.cc trunk/gtk/src/YGIntField.cc trunk/gtk/src/YGLabel.cc trunk/gtk/src/YGLayout.cc trunk/gtk/src/YGMenuButton.cc trunk/gtk/src/YGPackageSelector.cc trunk/gtk/src/YGProgressBar.cc trunk/gtk/src/YGPushButton.cc trunk/gtk/src/YGRadioButton.cc trunk/gtk/src/YGSelectionModel.cc trunk/gtk/src/YGSelectionModel.h trunk/gtk/src/YGTable.cc trunk/gtk/src/YGText.cc trunk/gtk/src/YGWidget.cc trunk/gtk/src/YGWidget.h trunk/gtk/src/YGWizard.cc trunk/gtk/src/ygtkfixed.c Modified: trunk/gtk/ChangeLog URL: http://svn.opensuse.org/viewcvs/yast/trunk/gtk/ChangeLog?rev=54323&r1=54322&... ============================================================================== --- trunk/gtk/ChangeLog (original) +++ trunk/gtk/ChangeLog Mon Dec 22 03:52:04 2008 @@ -1,3 +1,8 @@ +2008-12-22 Ricardo Cruz <rpmcruz@alunos.dcc.fc.up.pt> + + * src/YGWidget.h/cc, touching most code: some small cleanups on + macros and connections. + 2008-12-20 Ricardo Cruz <rpmcruz@alunos.dcc.fc.up.pt> * src/YGWidget.h, src/YGLayoutBox.cc, src/YGDialog.h, src/YGFrame.cc, Modified: trunk/gtk/src/YGBarGraph.cc URL: http://svn.opensuse.org/viewcvs/yast/trunk/gtk/src/YGBarGraph.cc?rev=54323&r... ============================================================================== --- trunk/gtk/src/YGBarGraph.cc (original) +++ trunk/gtk/src/YGBarGraph.cc Mon Dec 22 03:52:04 2008 @@ -42,12 +42,10 @@ return color; } - YGWIDGET_IMPL_COMMON - virtual unsigned int getMinSize (YUIDimension dim) - { - return dim == YD_HORIZ ? 80 : 30; - } + { return dim == YD_HORIZ ? 80 : 30; } + + YGWIDGET_IMPL_COMMON (YBarGraph) }; YBarGraph *YGOptionalWidgetFactory::createBarGraph (YWidget *parent) @@ -101,12 +99,9 @@ gtk_box_pack_start (GTK_BOX (slider_box), m_scale, TRUE, TRUE, 0); gtk_box_pack_start (GTK_BOX (slider_box), m_new_spin, FALSE, FALSE, 0); - connect (m_scale, "value-changed", - G_CALLBACK (scale_changed_cb), this); - connect (m_free_spin, "value-changed", - G_CALLBACK (free_spin_changed_cb), this); - connect (m_new_spin, "value-changed", - G_CALLBACK (new_spin_changed_cb), this); + connect (m_scale, "value-changed", G_CALLBACK (scale_changed_cb), this); + connect (m_free_spin, "value-changed", G_CALLBACK (free_spin_changed_cb), this); + connect (m_new_spin, "value-changed", G_CALLBACK (new_spin_changed_cb), this); /* Main layout */ gtk_box_pack_start (GTK_BOX (getWidget()), graph, TRUE, TRUE, 6); @@ -161,7 +156,7 @@ pThis->emitEvent (YEvent::ValueChanged); } - YGWIDGET_IMPL_COMMON + YGWIDGET_IMPL_COMMON (YPartitionSplitter) }; YPartitionSplitter *YGOptionalWidgetFactory::createPartitionSplitter (YWidget *parent, Modified: trunk/gtk/src/YGComboBox.cc URL: http://svn.opensuse.org/viewcvs/yast/trunk/gtk/src/YGComboBox.cc?rev=54323&r... ============================================================================== --- trunk/gtk/src/YGComboBox.cc (original) +++ trunk/gtk/src/YGComboBox.cc Mon Dec 22 03:52:04 2008 @@ -35,8 +35,7 @@ gtk_cell_layout_set_attributes (GTK_CELL_LAYOUT (getWidget()), cell, "pixbuf", YGSelectionModel::ICON_COLUMN, NULL); - connect (getWidget(), "changed", - G_CALLBACK (selected_changed_cb), this); + connect (getWidget(), "changed", G_CALLBACK (selected_changed_cb), this); // realize doesn't seem reliable -- expose then disconnect g_signal_connect (G_OBJECT (getWidget()), "expose-event", G_CALLBACK (realize_cb), this); @@ -87,13 +86,13 @@ BlockEvents block (this); GtkTreeIter iter; if (findByText (value, &iter)) - setFocusItem (&iter); + doSelectItem (&iter); else gtk_entry_set_text (getEntry(), value.c_str()); } // YGSelectionModel - virtual void setFocusItem (GtkTreeIter *iter) + virtual void doSelectItem (GtkTreeIter *iter) { BlockEvents block (this); if (iter) @@ -102,7 +101,7 @@ gtk_combo_box_set_active (getComboBox(), -1); } - virtual YItem *focusItem() + virtual YItem *doSelectedItem() { GtkTreeIter iter; if (gtk_combo_box_get_active_iter (getComboBox(), &iter)) @@ -127,9 +126,10 @@ static void selected_changed_cb (GtkComboBox *widget, YGComboBox *pThis) { pThis->emitEvent (YEvent::ValueChanged); } - YGWIDGET_IMPL_COMMON - YGLABEL_WIDGET_IMPL_SET_LABEL_CHAIN (YComboBox) - YGSELECTION_WIDGET_IMPL_ALL (YComboBox) + YGLABEL_WIDGET_IMPL (YComboBox) + YGSELECTION_WIDGET_IMPL (YComboBox) + + // callbacks static gboolean realize_cb (GtkWidget *widget, GdkEventExpose *event, YGComboBox *pThis) Modified: trunk/gtk/src/YGDialog.cc URL: http://svn.opensuse.org/viewcvs/yast/trunk/gtk/src/YGDialog.cc?rev=54323&r1=... ============================================================================== --- trunk/gtk/src/YGDialog.cc (original) +++ trunk/gtk/src/YGDialog.cc Mon Dec 22 03:52:04 2008 @@ -98,9 +98,6 @@ } gtk_window_set_role (window, "yast2-gtk"); - if (!YGUI::ui()->hasWM()) - g_signal_connect (G_OBJECT (m_widget), "expose-event", - G_CALLBACK (draw_border_cb), this); } if (_main_window) @@ -263,23 +260,6 @@ return FALSE; } - static gboolean draw_border_cb (GtkWidget *widget, GdkEventExpose *event, - YGWindow *pThis) - { - IMPL - // to avoid background from overlapping, we emit the expose to the containee - // ourselves - gtk_container_propagate_expose (GTK_CONTAINER (widget), - gtk_bin_get_child (GTK_BIN (widget)), - event); - - GtkAllocation *alloc = &widget->allocation; - gtk_draw_shadow (gtk_widget_get_style (widget), widget->window, - GTK_STATE_NORMAL, GTK_SHADOW_ETCHED_OUT, - alloc->x, alloc->y, alloc->width, alloc->height); - return TRUE; - } - static void realize_cb (GtkWidget *widget, YGWindow *pThis) { pThis->busyCursor(); } @@ -408,13 +388,7 @@ // YWidget -void YGDialog::setEnabled (bool enabled) -{ - doSetEnabled (enabled); - YWidget::setEnabled (enabled); -} - -void YGDialog::setSize (int width, int height) +void YGDialog::doSetSize (int width, int height) { // libyui calls YDialog::setSize() to force a geometry recalculation as a // result of changed layout properties Modified: trunk/gtk/src/YGDialog.h URL: http://svn.opensuse.org/viewcvs/yast/trunk/gtk/src/YGDialog.h?rev=54323&r1=5... ============================================================================== --- trunk/gtk/src/YGDialog.h (original) +++ trunk/gtk/src/YGDialog.h Mon Dec 22 03:52:04 2008 @@ -18,6 +18,8 @@ YGDialog (YDialogType dialogType, YDialogColorMode colorMode); virtual ~YGDialog(); + virtual GtkWidget *getContainer() { return m_containee; } + void setCloseCallback (YGWindowCloseFn closeCallback, void *closeData); void unsetCloseCallback(); @@ -28,9 +30,8 @@ static YGDialog *currentDialog(); static GtkWindow *currentWindow(); - virtual void setSize (int width, int height); + virtual void doSetSize (int width, int height); void setMinSize (int width, int height); // used internally by YGPackageSelector.cc - virtual void setEnabled (bool enabled); virtual void openInternal(); virtual void activate(); @@ -44,8 +45,7 @@ void setTitle (const std::string &title, bool sticky = false); void setIcon (const std::string &icon); - YGWIDGET_IMPL_CHILD_ADDED (YDialog, m_containee) - YGWIDGET_IMPL_CHILD_REMOVED (YDialog, m_containee) + YGWIDGET_IMPL_CONTAINER (YDialog) }; #endif // YGDIALOG_H Modified: trunk/gtk/src/YGDumbTab.cc URL: http://svn.opensuse.org/viewcvs/yast/trunk/gtk/src/YGDumbTab.cc?rev=54323&r1... ============================================================================== --- trunk/gtk/src/YGDumbTab.cc (original) +++ trunk/gtk/src/YGDumbTab.cc Mon Dec 22 03:52:04 2008 @@ -31,8 +31,7 @@ // the notebook reduce its size. ygtk_adj_size_set_only_expand (YGTK_ADJ_SIZE (m_adj_size), TRUE); - connect_after (getWidget(), "switch-page", - G_CALLBACK (changed_tab_cb), this); + connect (getWidget(), "switch-page", G_CALLBACK (changed_tab_cb), this); } ~YGDumbTab() @@ -42,6 +41,9 @@ g_object_unref (G_OBJECT (m_containee)); } + virtual GtkWidget *getContainer() + { return m_containee; } + virtual void addItem (YItem *item) { BlockEvents block (this); @@ -152,9 +154,7 @@ pThis->syncTabPage(); } - YGWIDGET_IMPL_COMMON - YGWIDGET_IMPL_CHILD_ADDED (YDumbTab, m_containee) - YGWIDGET_IMPL_CHILD_REMOVED (YDumbTab, m_containee) + YGWIDGET_IMPL_CONTAINER (YDumbTab) }; YDumbTab *YGOptionalWidgetFactory::createDumbTab (YWidget *parent) Modified: trunk/gtk/src/YGFrame.cc URL: http://svn.opensuse.org/viewcvs/yast/trunk/gtk/src/YGFrame.cc?rev=54323&r1=5... ============================================================================== --- trunk/gtk/src/YGFrame.cc (original) +++ trunk/gtk/src/YGFrame.cc Mon Dec 22 03:52:04 2008 @@ -29,7 +29,9 @@ gtk_widget_show (m_containee); gtk_container_add (GTK_CONTAINER (getWidget()), m_containee); } - virtual ~YGBaseFrame() {} + + virtual GtkWidget *getContainer() + { return m_containee; } }; #include "YFrame.h" @@ -84,9 +86,8 @@ setLabel (label); } - virtual ~YGFrame() {} - // YFrame + virtual void setLabel (const string &_str) { IMPL @@ -96,13 +97,12 @@ YFrame::setLabel (_str); } - // Debug + YGWIDGET_IMPL_CONTAINER (YFrame) + + // YGWidget + virtual string getDebugLabel() const { return label(); } - - YGWIDGET_IMPL_COMMON - YGWIDGET_IMPL_CHILD_ADDED (YFrame, m_containee) - YGWIDGET_IMPL_CHILD_REMOVED (YFrame, m_containee) }; @@ -130,12 +130,11 @@ setLabel (label); setValue (checked); - g_signal_connect (G_OBJECT (button), "toggled", - G_CALLBACK (toggled_cb), this); + connect (button, "toggled", G_CALLBACK (toggled_cb), this); } - virtual ~YGCheckBoxFrame() {} // YCheckBoxFrame + virtual void setLabel (const string &_str) { GtkWidget *button = gtk_frame_get_label_widget (GTK_FRAME (getWidget())); @@ -154,10 +153,13 @@ void setValue (bool value) { + BlockEvents (this); GtkWidget *button = gtk_frame_get_label_widget (GTK_FRAME (getWidget())); gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (button), value); } + // YGWidget + virtual void doSetEnabled (bool enabled) { GtkWidget *frame = getWidget(); @@ -172,9 +174,7 @@ YWidget::setEnabled (enabled); } - YGWIDGET_IMPL_COMMON - YGWIDGET_IMPL_CHILD_ADDED (YCheckBoxFrame, m_containee) - YGWIDGET_IMPL_CHILD_REMOVED (YCheckBoxFrame, m_containee) + YGWIDGET_IMPL_CONTAINER (YCheckBoxFrame) private: static void toggled_cb (GtkWidget *widget, YGCheckBoxFrame *pThis) Modified: trunk/gtk/src/YGImage.cc URL: http://svn.opensuse.org/viewcvs/yast/trunk/gtk/src/YGImage.cc?rev=54323&r1=5... ============================================================================== --- trunk/gtk/src/YGImage.cc (original) +++ trunk/gtk/src/YGImage.cc Mon Dec 22 03:52:04 2008 @@ -51,7 +51,7 @@ ygtk_image_set_props (YGTK_IMAGE (getWidget()), align, NULL); } - YGWIDGET_IMPL_COMMON + YGWIDGET_IMPL_COMMON (YImage) }; YImage *YGWidgetFactory::createImage (YWidget *parent, const string &filename, bool animated) Modified: trunk/gtk/src/YGInputField.cc URL: http://svn.opensuse.org/viewcvs/yast/trunk/gtk/src/YGInputField.cc?rev=54323... ============================================================================== --- trunk/gtk/src/YGInputField.cc (original) +++ trunk/gtk/src/YGInputField.cc Mon Dec 22 03:52:04 2008 @@ -27,8 +27,7 @@ if (passwordMode) gtk_entry_set_visibility (entry, FALSE); - connect (getWidget(), "field-entry-changed", - G_CALLBACK (value_changed_cb), this); + connect (getWidget(), "field-entry-changed", G_CALLBACK (value_changed_cb), this); } // YInputField @@ -63,22 +62,21 @@ updateProps(); } + // callbacks static void value_changed_cb (YGtkFieldEntry *entry, gint field_nb, YGInputField *pThis) { pThis->emitEvent (YEvent::ValueChanged); } + // YGWidget virtual bool doSetKeyboardFocus() { YGtkFieldEntry *field = YGTK_FIELD_ENTRY (getWidget()); return ygtk_field_entry_set_focus (field); } - YGWIDGET_IMPL_COMMON - YGLABEL_WIDGET_IMPL_SET_LABEL_CHAIN (YInputField) - virtual unsigned int getMinSize (YUIDimension dim) - { - return dim == YD_HORIZ ? (shrinkable() ? 30 : 200) : 0; - } + { return dim == YD_HORIZ ? (shrinkable() ? 30 : 200) : 0; } + + YGLABEL_WIDGET_IMPL (YInputField) }; YInputField *YGWidgetFactory::createInputField (YWidget *parent, const string &label, @@ -104,8 +102,7 @@ ygtk_field_entry_setup_field (field, 0, 2, "0123456789"); ygtk_field_entry_setup_field (field, 1, 2, "0123456789"); - connect (getWidget(), "field-entry-changed", - G_CALLBACK (value_changed_cb), this); + connect (getWidget(), "field-entry-changed", G_CALLBACK (value_changed_cb), this); } // YTimeField @@ -140,8 +137,7 @@ YGTimeField *pThis) { pThis->emitEvent (YEvent::ValueChanged); } - YGWIDGET_IMPL_COMMON - YGLABEL_WIDGET_IMPL_SET_LABEL_CHAIN (YTimeField) + YGLABEL_WIDGET_IMPL (YTimeField) }; YTimeField *YGOptionalWidgetFactory::createTimeField (YWidget *parent, const string &label) @@ -179,12 +175,10 @@ gtk_widget_show (menu_button); gtk_box_pack_start (GTK_BOX (getWidget()), menu_button, FALSE, TRUE, 6); - connect (getWidget(), "field-entry-changed", - G_CALLBACK (value_changed_cb), this); - connect (m_calendar, "day-selected", - G_CALLBACK (calendar_changed_cb), this); - connect (m_calendar, "day-selected-double-click", - G_CALLBACK (double_click_cb), popup); + connect (getWidget(), "field-entry-changed", G_CALLBACK (value_changed_cb), this); + connect (m_calendar, "day-selected", G_CALLBACK (calendar_changed_cb), this); + g_signal_connect (G_OBJECT (m_calendar), "day-selected-double-click", + G_CALLBACK (double_click_cb), popup); } inline GtkCalendar *getCalendar() @@ -282,8 +276,7 @@ gtk_widget_hide (GTK_WIDGET (popup)); } - YGWIDGET_IMPL_COMMON - YGLABEL_WIDGET_IMPL_SET_LABEL_CHAIN (YDateField) + YGLABEL_WIDGET_IMPL (YDateField) }; YDateField *YGOptionalWidgetFactory::createDateField (YWidget *parent, const string &label) @@ -309,8 +302,7 @@ ygtk_time_zone_picker_set_map (YGTK_TIME_ZONE_PICKER (getWidget()), pixmap.c_str(), convert_code_to_name, (gpointer) &timezones); - connect (getWidget(), "zone-clicked", - G_CALLBACK (zone_clicked_cb), this); + connect (getWidget(), "zone-clicked", G_CALLBACK (zone_clicked_cb), this); } // YTimezoneSelector @@ -348,7 +340,7 @@ YGTimezoneSelector *pThis) { pThis->emitEvent (YEvent::ValueChanged); } - YGWIDGET_IMPL_COMMON + YGWIDGET_IMPL_COMMON (YTimezoneSelector) }; YTimezoneSelector *YGOptionalWidgetFactory::createTimezoneSelector (YWidget *parent, Modified: trunk/gtk/src/YGIntField.cc URL: http://svn.opensuse.org/viewcvs/yast/trunk/gtk/src/YGIntField.cc?rev=54323&r... ============================================================================== --- trunk/gtk/src/YGIntField.cc (original) +++ trunk/gtk/src/YGIntField.cc Mon Dec 22 03:52:04 2008 @@ -41,11 +41,9 @@ gtk_widget_show (m_spiner); doSetValue (initialValue); - connect (m_spiner, "value-changed", - G_CALLBACK (spiner_changed_cb), this); + connect (m_spiner, "value-changed", G_CALLBACK (spiner_changed_cb), this); if (m_slider) - connect (m_slider, "value-changed", - G_CALLBACK (slider_changed_cb), this); + connect (m_slider, "value-changed", G_CALLBACK (slider_changed_cb), this); } GtkSpinButton *getSpiner() @@ -88,7 +86,7 @@ } }; -#define YGSPIN_BOX_IMPL_SET_VALUE_CHAIN(ParentClass) \ +#define YGSPIN_BOX_IMPL(ParentClass) \ virtual void reportValue (int value) { \ ParentClass::setValue (value); \ } \ @@ -110,9 +108,8 @@ , YGSpinBox (this, parent, label, minValue, maxValue, initialValue, false) {} - YGWIDGET_IMPL_COMMON - YGLABEL_WIDGET_IMPL_SET_LABEL_CHAIN (YIntField) - YGSPIN_BOX_IMPL_SET_VALUE_CHAIN (YIntField) + YGLABEL_WIDGET_IMPL (YIntField) + YGSPIN_BOX_IMPL (YIntField) }; YIntField *YGWidgetFactory::createIntField (YWidget *parent, const string &label, @@ -132,12 +129,11 @@ , YGSpinBox (this, parent, label, minValue, maxValue, initialValue, true) {} - YGWIDGET_IMPL_COMMON - YGLABEL_WIDGET_IMPL_SET_LABEL_CHAIN (YSlider) - YGSPIN_BOX_IMPL_SET_VALUE_CHAIN (YIntField) - virtual unsigned int getMinSize (YUIDimension dim) { return dim == YD_HORIZ ? 200 : 0; } + + YGLABEL_WIDGET_IMPL (YSlider) + YGSPIN_BOX_IMPL (YSlider) }; YSlider *YGOptionalWidgetFactory::createSlider (YWidget *parent, const string &label, Modified: trunk/gtk/src/YGLabel.cc URL: http://svn.opensuse.org/viewcvs/yast/trunk/gtk/src/YGLabel.cc?rev=54323&r1=5... ============================================================================== --- trunk/gtk/src/YGLabel.cc (original) +++ trunk/gtk/src/YGLabel.cc Mon Dec 22 03:52:04 2008 @@ -47,7 +47,7 @@ } } - YGWIDGET_IMPL_COMMON + YGWIDGET_IMPL_COMMON (YLabel) YGWIDGET_IMPL_USE_BOLD (YLabel) }; Modified: trunk/gtk/src/YGLayout.cc URL: http://svn.opensuse.org/viewcvs/yast/trunk/gtk/src/YGLayout.cc?rev=54323&r1=... ============================================================================== --- trunk/gtk/src/YGLayout.cc (original) +++ trunk/gtk/src/YGLayout.cc Mon Dec 22 03:52:04 2008 @@ -3,7 +3,6 @@ ********************************************************************/ #include <config.h> -#include "YGUI.h" #include "YGWidget.h" #include "YGUtils.h" @@ -33,16 +32,11 @@ gpointer pThis) { \ ((ParentClass *) pThis)->ParentClass::setSize (width, height); \ } \ - virtual void setSize (int width, int height) { doSetSize (width, height); } \ virtual void moveChild (YWidget *ychild, int x, int y) \ { doMoveChild (getWidget(), ychild, x, y); } \ - virtual void setEnabled (bool enabled) { \ - ParentClass::setEnabled (enabled); \ - doSetEnabled (enabled); \ - } -#include "YPushButton.h" -#include "YMenuButton.h" +#include <YPushButton.h> +#include <YMenuButton.h> class ButtonHeightGroup { @@ -65,7 +59,7 @@ } }; -#include "YLayoutBox.h" +#include <YLayoutBox.h> class YGLayoutBox : public YLayoutBox, public YGWidget { @@ -81,14 +75,14 @@ YGLAYOUT_INIT } - virtual void addChild (YWidget *ychild) + virtual void doAddChild (YWidget *ychild, GtkWidget *container) { - YLayoutBox::addChild (ychild); - doAddChild (ychild, getWidget()); + YGWidget::doAddChild (ychild, container); if (primary() == YD_HORIZ) group.addWidget (ychild); } - YGWIDGET_IMPL_CHILD_REMOVED (YLayoutBox, getWidget()) + + YGWIDGET_IMPL_CONTAINER (YLayoutBox) YGLAYOUT_PREFERRED_SIZE_IMPL (YLayoutBox) YGLAYOUT_SET_SIZE_IMPL (YLayoutBox) }; @@ -100,7 +94,7 @@ } #if YAST2_VERSION >= 2017006 -#include "YButtonBox.h" +#include <YButtonBox.h> class YGButtonBox : public YButtonBox, public YGWidget { @@ -117,13 +111,13 @@ YGLAYOUT_INIT } - virtual void addChild (YWidget *ychild) + virtual void doAddChild (YWidget *ychild, GtkWidget *container) { - YButtonBox::addChild (ychild); - doAddChild (ychild, getWidget()); + YGWidget::doAddChild (ychild, container); group.addWidget (ychild); } - YGWIDGET_IMPL_CHILD_REMOVED (YButtonBox, getWidget()) + + YGWIDGET_IMPL_CONTAINER (YButtonBox) YGLAYOUT_PREFERRED_SIZE_IMPL (YButtonBox) YGLAYOUT_SET_SIZE_IMPL (YButtonBox) }; @@ -136,7 +130,7 @@ #endif -#include "YAlignment.h" +#include <YAlignment.h> class YGAlignment : public YAlignment, public YGWidget { @@ -158,8 +152,7 @@ g_object_unref (G_OBJECT (m_background_pixbuf)); } - YGWIDGET_IMPL_CHILD_ADDED (YAlignment, m_widget) - YGWIDGET_IMPL_CHILD_REMOVED (YAlignment, m_widget) + YGWIDGET_IMPL_CONTAINER (YAlignment) YGLAYOUT_PREFERRED_SIZE_IMPL (YAlignment) YGLAYOUT_SET_SIZE_IMPL (YAlignment) @@ -216,7 +209,7 @@ return new YGAlignment (parent, halign, valign); } -#include "YEmpty.h" +#include <YEmpty.h> // Just an empty space. class YGEmpty : public YEmpty, public YGWidget @@ -229,7 +222,7 @@ setBorder (0); } - YGWIDGET_IMPL_COMMON + YGWIDGET_IMPL_COMMON (YEmpty) }; YEmpty *YGWidgetFactory::createEmpty (YWidget *parent) @@ -238,7 +231,7 @@ return new YGEmpty (parent); } -#include "YSpacing.h" +#include <YSpacing.h> // Empty space, with a fixed size. class YGSpacing : public YSpacing, public YGWidget @@ -252,7 +245,7 @@ YGLAYOUT_INIT } - YGWIDGET_IMPL_COMMON + YGWIDGET_IMPL_COMMON (YSpacing) YGLAYOUT_PREFERRED_SIZE_IMPL (YSpacing) static void set_size_cb (YGtkFixed *fixed, gint width, gint height, gpointer pThis) {} @@ -264,7 +257,7 @@ return new YGSpacing (parent, dim, stretchable, size); } -#include "YReplacePoint.h" +#include <YReplacePoint.h> // an empty space that will get replaced class YGReplacePoint : public YReplacePoint, public YGWidget @@ -277,18 +270,15 @@ setBorder (0); } - YGWIDGET_IMPL_COMMON - YGWIDGET_IMPL_CHILD_ADDED (YReplacePoint, getWidget()) - YGWIDGET_IMPL_CHILD_REMOVED (YReplacePoint, getWidget()) + YGWIDGET_IMPL_CONTAINER (YReplacePoint) }; YReplacePoint *YGWidgetFactory::createReplacePoint (YWidget *parent) { - IMPL return new YGReplacePoint (parent); } -#include "YSquash.h" +#include <YSquash.h> // A-like YAlignment, YSquash messes around child settings. // In this case, it can remove the stretchable attribute. @@ -302,9 +292,7 @@ setBorder (0); } - YGWIDGET_IMPL_COMMON - YGWIDGET_IMPL_CHILD_ADDED (YSquash, getWidget()) - YGWIDGET_IMPL_CHILD_REMOVED (YSquash, getWidget()) + YGWIDGET_IMPL_CONTAINER (YSquash) }; YSquash *YGWidgetFactory::createSquash (YWidget *parent, bool hsquash, bool vsquash) Modified: trunk/gtk/src/YGMenuButton.cc URL: http://svn.opensuse.org/viewcvs/yast/trunk/gtk/src/YGMenuButton.cc?rev=54323... ============================================================================== --- trunk/gtk/src/YGMenuButton.cc (original) +++ trunk/gtk/src/YGMenuButton.cc Mon Dec 22 03:52:04 2008 @@ -69,7 +69,7 @@ YGUI::ui()->sendEvent (new YMenuEvent (item)); } - YGWIDGET_IMPL_COMMON + YGWIDGET_IMPL_COMMON (YMenuButton) }; YMenuButton *YGWidgetFactory::createMenuButton (YWidget *parent, const string &label) Modified: trunk/gtk/src/YGPackageSelector.cc URL: http://svn.opensuse.org/viewcvs/yast/trunk/gtk/src/YGPackageSelector.cc?rev=... ============================================================================== --- trunk/gtk/src/YGPackageSelector.cc (original) +++ trunk/gtk/src/YGPackageSelector.cc Mon Dec 22 03:52:04 2008 @@ -3036,7 +3036,7 @@ m_package_selector->packageModified (package); } - YGWIDGET_IMPL_COMMON + YGWIDGET_IMPL_COMMON (YPackageSelector) // Utilities void createToolsButton() @@ -3178,7 +3178,7 @@ YGWidget (this, parent, true, GTK_TYPE_EVENT_BOX, NULL) { } - YGWIDGET_IMPL_COMMON + YGWIDGET_IMPL_COMMON (YPackageSelector) }; #endif Modified: trunk/gtk/src/YGProgressBar.cc URL: http://svn.opensuse.org/viewcvs/yast/trunk/gtk/src/YGProgressBar.cc?rev=5432... ============================================================================== --- trunk/gtk/src/YGProgressBar.cc (original) +++ trunk/gtk/src/YGProgressBar.cc Mon Dec 22 03:52:04 2008 @@ -21,8 +21,7 @@ // NOTE: its label widget is positionated at the vertical, because its label // may change often and so will its size, which will look odd (we may want // to make the label widget to only grow). - , YGLabeledWidget (this, parent, label, YD_VERT, - GTK_TYPE_PROGRESS_BAR, NULL) + , YGLabeledWidget (this, parent, label, YD_VERT, GTK_TYPE_PROGRESS_BAR, NULL) {} // YProgressBar @@ -40,17 +39,15 @@ */ } - YGWIDGET_IMPL_COMMON - YGLABEL_WIDGET_IMPL_SET_LABEL_CHAIN (YProgressBar) - virtual unsigned int getMinSize (YUIDimension dim) { return dim == YD_HORIZ ? 200 : 0; } + + YGLABEL_WIDGET_IMPL (YProgressBar) }; YProgressBar *YGWidgetFactory::createProgressBar (YWidget *parent, const string &label, int maxValue) { - IMPL return new YGProgressBar (parent, label, maxValue); } @@ -64,8 +61,7 @@ YGDownloadProgress (YWidget *parent, const string &label, const string &filename, YFileSize_t expectedFileSize) : YDownloadProgress (NULL, label, filename, expectedFileSize) - , YGLabeledWidget (this, parent, label, YD_HORIZ, - GTK_TYPE_PROGRESS_BAR, NULL) + , YGLabeledWidget (this, parent, label, YD_HORIZ, GTK_TYPE_PROGRESS_BAR, NULL) { timeout_id = g_timeout_add (250, timeout_cb, this); } @@ -125,8 +121,7 @@ return TRUE; } - YGWIDGET_IMPL_COMMON - YGLABEL_WIDGET_IMPL_SET_LABEL_CHAIN (YDownloadProgress) + YGLABEL_WIDGET_IMPL (YDownloadProgress) }; YDownloadProgress *YGOptionalWidgetFactory::createDownloadProgress (YWidget *parent, @@ -192,11 +187,11 @@ return 1.0 - (((float) currentValue (n)) / maxValue (n)); } - YGWIDGET_IMPL_COMMON + YGWIDGET_IMPL_COMMON (YMultiProgressMeter) }; YMultiProgressMeter *YGOptionalWidgetFactory::createMultiProgressMeter (YWidget *parent, - YUIDimension dim, const vector<float> &maxValues) + YUIDimension dim, const vector <float> &maxValues) { return new YGMultiProgressMeter (parent, dim, maxValues); } @@ -264,8 +259,7 @@ return TRUE; } - YGWIDGET_IMPL_COMMON - YGLABEL_WIDGET_IMPL_SET_LABEL_CHAIN (YBusyIndicator) + YGLABEL_WIDGET_IMPL (YBusyIndicator) }; YBusyIndicator *YGWidgetFactory::createBusyIndicator (YWidget *parent, const string &label, int timeout) Modified: trunk/gtk/src/YGPushButton.cc URL: http://svn.opensuse.org/viewcvs/yast/trunk/gtk/src/YGPushButton.cc?rev=54323... ============================================================================== --- trunk/gtk/src/YGPushButton.cc (original) +++ trunk/gtk/src/YGPushButton.cc Mon Dec 22 03:52:04 2008 @@ -24,8 +24,6 @@ gtk_button_set_use_underline (GTK_BUTTON (getWidget()), TRUE); setLabel (label); connect (getWidget(), "clicked", G_CALLBACK (clicked_cb), this); - g_signal_connect (G_OBJECT (getWidget()), "expose-event", - G_CALLBACK (treat_icon_cb), this); } void setStockIcon (const std::string &label) @@ -150,7 +148,7 @@ } return true; } - +#if 0 static gboolean treat_icon_cb (GtkWidget *widget, GdkEventExpose *event, YGPushButton *pThis) { @@ -192,12 +190,13 @@ g_signal_handlers_disconnect_by_func (widget, (gpointer) treat_icon_cb, pThis); return FALSE; } +#endif - // Events + // callbacks static void clicked_cb (GtkButton *button, YGPushButton *pThis) { pThis->emitEvent (YEvent::Activated, IGNORE_NOTIFY_EVENT); } - YGWIDGET_IMPL_COMMON + YGWIDGET_IMPL_COMMON (YPushButton) }; YPushButton *YGWidgetFactory::createPushButton (YWidget *parent, const string &label) Modified: trunk/gtk/src/YGRadioButton.cc URL: http://svn.opensuse.org/viewcvs/yast/trunk/gtk/src/YGRadioButton.cc?rev=5432... ============================================================================== --- trunk/gtk/src/YGRadioButton.cc (original) +++ trunk/gtk/src/YGRadioButton.cc Mon Dec 22 03:52:04 2008 @@ -58,8 +58,7 @@ gtk_button_set_use_underline (GTK_BUTTON (getWidget()), TRUE); gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (getWidget()), FALSE); - connect_after (getWidget(), "toggled", - G_CALLBACK (toggled_cb), this); + connect (getWidget(), "toggled", G_CALLBACK (toggled_cb), this); } // YRadioButton @@ -91,7 +90,7 @@ } } - YGWIDGET_IMPL_COMMON + YGWIDGET_IMPL_COMMON (YRadioButton) YGWIDGET_IMPL_USE_BOLD (YRadioButton) // callbacks @@ -127,9 +126,7 @@ setBorder (0); } - YGWIDGET_IMPL_COMMON - YGWIDGET_IMPL_CHILD_ADDED (YRadioButtonGroup, m_widget) - YGWIDGET_IMPL_CHILD_REMOVED (YRadioButtonGroup, m_widget) + YGWIDGET_IMPL_CONTAINER (YRadioButtonGroup) }; YRadioButtonGroup *YGWidgetFactory::createRadioButtonGroup (YWidget *parent) @@ -155,8 +152,7 @@ gtk_button_set_use_underline (GTK_BUTTON (getWidget()), TRUE); gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (getWidget()), isChecked); - connect (getWidget (), "toggled", - G_CALLBACK (toggled_cb), this); + connect (getWidget(), "toggled", G_CALLBACK (toggled_cb), this); } // YCheckButton @@ -206,7 +202,7 @@ pThis->emitEvent (YEvent::ValueChanged); } - YGWIDGET_IMPL_COMMON + YGWIDGET_IMPL_COMMON (YCheckBox) YGWIDGET_IMPL_USE_BOLD (YCheckBox) }; Modified: trunk/gtk/src/YGSelectionModel.cc URL: http://svn.opensuse.org/viewcvs/yast/trunk/gtk/src/YGSelectionModel.cc?rev=5... ============================================================================== --- trunk/gtk/src/YGSelectionModel.cc (original) +++ trunk/gtk/src/YGSelectionModel.cc Mon Dec 22 03:52:04 2008 @@ -61,7 +61,7 @@ for (YItemIterator it = item->childrenBegin(); it != item->childrenEnd(); it++) doAddItem (*it); if (empty || item->selected()) - setFocusItem (&iter); + doSelectItem (&iter); YTreeItem *tree_item = dynamic_cast <YTreeItem *> (item); if (tree_item && tree_item->isOpen()) { @@ -132,11 +132,11 @@ return FALSE; } -void YGSelectionModel::implFocusItem (YItem *item) +void YGSelectionModel::implSelectItem (YItem *item) { GtkTreeIter iter; if (getIter (item, &iter)) - setFocusItem (&iter); + doSelectItem (&iter); } void YGSelectionModel::addRow (GtkTreeIter *iter, YItem *item, bool honor_select) @@ -169,7 +169,7 @@ } if (honor_select && item->selected()) - setFocusItem (iter); + doSelectItem (iter); } void YGSelectionModel::setCellLabel (GtkTreeIter *iter, int col, const string &label) Modified: trunk/gtk/src/YGSelectionModel.h URL: http://svn.opensuse.org/viewcvs/yast/trunk/gtk/src/YGSelectionModel.h?rev=54... ============================================================================== --- trunk/gtk/src/YGSelectionModel.h (original) +++ trunk/gtk/src/YGSelectionModel.h Mon Dec 22 03:52:04 2008 @@ -26,11 +26,10 @@ GtkTreeModel *getModel(); void createModel (const vector <GType> &types); - void doAddItem (YItem *item); - void doDeleteAllItems(); - - virtual YItem *focusItem() = 0; - virtual void setFocusItem (GtkTreeIter *iter) = 0; // NULL to unset + virtual void doAddItem (YItem *item); + virtual void doDeleteAllItems(); + virtual YItem *doSelectedItem() = 0; + virtual void doSelectItem (GtkTreeIter *iter) = 0; // NULL to unselect all YItemConstIterator itemsBegin() { return ywidget->itemsBegin(); } YItemConstIterator itemsEnd() { return ywidget->itemsEnd(); } @@ -53,7 +52,7 @@ int getMaxDepth (int *rows); // not cached protected: - void implFocusItem (YItem *item); + void implSelectItem (YItem *item); private: GtkTreeModel *m_model; bool isTree; @@ -64,36 +63,27 @@ gpointer dataIndex; }; -#define YGSELECTION_WIDGET_IMPL_ADD(ParentClass) \ - virtual void addItem(YItem *item) { \ - ParentClass::addItem (item); \ - doAddItem (item); \ - } - -#define YGSELECTION_WIDGET_IMPL_CLEAR(ParentClass) \ - virtual void deleteAllItems() { \ - ParentClass::deleteAllItems(); \ - doDeleteAllItems(); \ - } - -#define YGSELECTION_WIDGET_IMPL_SELECT(ParentClass) \ +#define YGSELECTION_WIDGET_IMPL(ParentClass) \ + virtual void addItem(YItem *item) { \ + ParentClass::addItem (item); \ + doAddItem (item); \ + } \ + virtual void deleteAllItems() { \ + ParentClass::deleteAllItems(); \ + doDeleteAllItems(); \ + } \ virtual void selectItem (YItem *item, bool select) { \ - ParentClass::selectItem (item, select); \ - if (select) \ - implFocusItem (item); \ - } \ - virtual void deselectAllItems() { \ - ParentClass::deselectAllItems(); \ - setFocusItem (NULL); \ - } \ - virtual YItem *selectedItem() { \ - return focusItem(); \ - } \ - -#define YGSELECTION_WIDGET_IMPL_ALL(ParentClass) \ - YGSELECTION_WIDGET_IMPL_ADD(ParentClass) \ - YGSELECTION_WIDGET_IMPL_CLEAR(ParentClass) \ - YGSELECTION_WIDGET_IMPL_SELECT(ParentClass) + ParentClass::selectItem (item, select); \ + if (select) \ + implSelectItem (item); \ + } \ + virtual void deselectAllItems() { \ + ParentClass::deselectAllItems(); \ + doSelectItem (NULL); \ + } \ + virtual YItem *selectedItem() { \ + return doSelectedItem(); \ + } #endif /*YGSELECTION_MODEL_H*/ Modified: trunk/gtk/src/YGTable.cc URL: http://svn.opensuse.org/viewcvs/yast/trunk/gtk/src/YGTable.cc?rev=54323&r1=5... ============================================================================== --- trunk/gtk/src/YGTable.cc (original) +++ trunk/gtk/src/YGTable.cc Mon Dec 22 03:52:04 2008 @@ -15,6 +15,7 @@ { protected: int m_colsNb; + bool m_blockSelected; // GtkTreeSelection signals act weird public: YGTableView (YWidget *ywidget, YWidget *parent, const string &label, @@ -24,6 +25,7 @@ , YGSelectionModel ((YSelectionWidget *) ywidget, ordinaryModel, isTree) { IMPL + m_blockSelected = false; if (ordinaryModel) { appendIconTextColumn ("", YAlignUnchanged, YGSelectionModel::ICON_COLUMN, YGSelectionModel::LABEL_COLUMN); @@ -107,27 +109,23 @@ virtual bool immediateEvent() { return true; } // YGSelectionModel - virtual void setFocusItem (GtkTreeIter *iter) + virtual void doSelectItem (GtkTreeIter *iter) { - BlockEvents block (this); + m_blockSelected = true; if (iter) { GtkTreePath *path = gtk_tree_model_get_path (getModel(), iter); gtk_tree_view_expand_to_path (getView(), path); - if (gtk_tree_selection_get_mode (getSelection()) == GTK_SELECTION_MULTIPLE) { - gtk_tree_selection_select_iter (getSelection(), iter); - } - else { - gtk_tree_view_set_cursor (getView(), path, NULL, FALSE); - gtk_tree_view_scroll_to_cell (getView(), path, NULL, TRUE, 0.5, 0.5); - } + gtk_tree_selection_select_iter (getSelection(), iter); + if (gtk_tree_selection_get_mode (getSelection()) != GTK_SELECTION_MULTIPLE) + gtk_tree_view_scroll_to_cell (getView(), path, NULL, FALSE, 0.5, 0); gtk_tree_path_free (path); } else gtk_tree_selection_unselect_all (getSelection()); } - virtual YItem *focusItem() + virtual YItem *doSelectedItem() { GtkTreeIter iter; if (gtk_tree_selection_get_selected (getSelection(), NULL, &iter)) @@ -167,8 +165,12 @@ emitEvent (YEvent::ValueChanged); } - static void selection_changed_cb (GtkTreeSelection *selection, YGTableView* pThis) + static void selection_changed_cb (GtkTreeSelection *selection, YGTableView *pThis) { + if (pThis->m_blockSelected) { + pThis->m_blockSelected = false; + return; + } if (!pThis->toggleMode()) { GtkTreeSelection *selection = pThis->getSelection(); for (YItemConstIterator it = pThis->itemsBegin(); it != pThis->itemsEnd(); it++) { @@ -238,10 +240,8 @@ setModel(); setKeepSorting (keepSorting()); - connect (getWidget(), "row-activated", - G_CALLBACK (activated_cb), (YGTableView*) this); - connect (G_OBJECT (getSelection()), "changed", - G_CALLBACK (selection_changed_cb), (YGTableView*) this); + connect (getWidget(), "row-activated", G_CALLBACK (activated_cb), (YGTableView *) this); + connect (getSelection(), "changed", G_CALLBACK (selection_changed_cb), (YGTableView *) this); } virtual void setKeepSorting (bool keepSorting) @@ -255,20 +255,6 @@ } } - virtual void addItem (YItem *_item) - { - YTable::addItem (_item); - YTableItem *item = dynamic_cast <YTableItem *> (_item); - if (item) { - GtkTreeIter iter; - addRow (&iter, _item, true); - for (int i = 0; i < columns(); i++) - setCell (&iter, item->cell (i)); - } - else - yuiError() << "Can only add YTableItems to a YTable.\n"; - } - virtual void cellChanged (const YTableCell *cell) { GtkTreeIter iter; @@ -312,19 +298,36 @@ virtual bool immediateEvent() { return immediateMode(); } - YGWIDGET_IMPL_COMMON - YGSELECTION_WIDGET_IMPL_CLEAR (YTable) - YGSELECTION_WIDGET_IMPL_SELECT (YTable) + // YGWidget virtual unsigned int getMinSize (YUIDimension dim) { return 30; } + + YGWIDGET_IMPL_COMMON (YTable) + + // YGSelectionModel + + virtual void doAddItem (YItem *_item) + { + YTableItem *item = dynamic_cast <YTableItem *> (_item); + if (item) { + GtkTreeIter iter; + addRow (&iter, _item, true); + for (int i = 0; i < columns(); i++) + setCell (&iter, item->cell (i)); + } + else + yuiError() << "Can only add YTableItems to a YTable.\n"; + } + + YGSELECTION_WIDGET_IMPL (YTable) }; #if YAST2_VERSION >= 2017005 YTable *YGWidgetFactory::createTable (YWidget *parent, YTableHeader *headers, bool multiSelection) { - return new YGTable (parent, headers, multiSelection); + return new YGTable (parent, headers, multiSelection); } #else YTable *YGWidgetFactory::createTable (YWidget *parent, YTableHeader *headers) @@ -342,16 +345,14 @@ : YSelectionBox (NULL, label), YGTableView (this, parent, label, true, false) { - connect (getWidget(), "row-activated", - G_CALLBACK (activated_cb), (YGTableView*) this); - connect (G_OBJECT (getSelection()), "changed", - G_CALLBACK (selection_changed_cb), (YGTableView*) this); + connect (getWidget(), "row-activated", G_CALLBACK (activated_cb), (YGTableView *) this); + connect (getSelection(), "changed", G_CALLBACK (selection_changed_cb), (YGTableView *) this); } virtual bool isShrinkable() { return shrinkable(); } - YGWIDGET_IMPL_COMMON - YGSELECTION_WIDGET_IMPL_ALL (YSelectionBox) + YGWIDGET_IMPL_COMMON (YSelectionBox) + YGSELECTION_WIDGET_IMPL (YSelectionBox) }; YSelectionBox *YGWidgetFactory::createSelectionBox (YWidget *parent, const string &label) @@ -378,48 +379,44 @@ appendIconTextColumn ("", YAlignUnchanged, 1, 2); setModel(); - connect (G_OBJECT (getSelection()), "changed", - G_CALLBACK (selection_changed_cb), (YGTableView*) this); + connect (getSelection(), "changed", G_CALLBACK (selection_changed_cb), (YGTableView *) this); // Let the user toggle, using space/enter or double click (not an event). - connect_after (getWidget(), "row-activated", - G_CALLBACK (multi_activated_cb), this); + connect (getWidget(), "row-activated", G_CALLBACK (multi_activated_cb), this); } // YMultiSelectionBox - virtual void addItem (YItem *item) + virtual void doAddItem (YItem *item) { GtkTreeIter iter; addRow (&iter, item, false); setCellToggle (&iter, 0, item->selected()); setCellIcon (&iter, 1, item->iconName()); setCellLabel (&iter, 2, item->label()); - YMultiSelectionBox::addItem (item); } - virtual void selectItem (YItem *item, bool select) + virtual void doSelectItem (YItem *item) { GtkTreeIter iter; if (getIter (item, &iter)) - setCellToggle (&iter, 0, select); - YMultiSelectionBox::selectItem (item); - } - - virtual void deselectAllItems() - { - GtkTreeIter iter; - if (gtk_tree_model_get_iter_first (getModel(), &iter)) { - do { - setCellToggle (&iter, 0, false); - } while (gtk_tree_model_iter_next (getModel(), &iter)); + setCellToggle (&iter, 0, item->selected()); + else { // unselect all + if (gtk_tree_model_get_iter_first (getModel(), &iter)) { + do { + setCellToggle (&iter, 0, false); + } while (gtk_tree_model_iter_next (getModel(), &iter)); + } } - YMultiSelectionBox::deselectAllItems(); } virtual YItem *currentItem() - { return focusItem(); } + { return doSelectedItem(); } virtual void setCurrentItem (YItem *item) - { implFocusItem (item); } + { + GtkTreeIter iter; + if (getIter (item, &iter)) + YGTableView::doSelectItem (&iter); + } // YGTableView virtual bool toggleMode() const @@ -435,8 +432,8 @@ virtual bool isShrinkable() { return shrinkable(); } - YGWIDGET_IMPL_COMMON - YGSELECTION_WIDGET_IMPL_CLEAR (YMultiSelectionBox) + YGWIDGET_IMPL_COMMON (YMultiSelectionBox) + YGSELECTION_WIDGET_IMPL (YMultiSelectionBox) }; YMultiSelectionBox *YGWidgetFactory::createMultiSelectionBox (YWidget *parent, @@ -456,14 +453,10 @@ : YTree (NULL, label) , YGTableView (this, parent, label, true, true) { - connect (getWidget(), "row-activated", - G_CALLBACK (activated_cb), (YGTableView*) this); - connect (getWidget(), "cursor-changed", - G_CALLBACK (row_selected_cb), this); - connect (getWidget(), "row-collapsed", - G_CALLBACK (row_collapsed_cb), this); - connect (getWidget(), "row-expanded", - G_CALLBACK (row_expanded_cb), this); + connect (getWidget(), "row-activated", G_CALLBACK (activated_cb), this); + connect (getWidget(), "cursor-changed", G_CALLBACK (row_selected_cb), this); + connect (getWidget(), "row-collapsed", G_CALLBACK (row_collapsed_cb), this); + connect (getWidget(), "row-expanded", G_CALLBACK (row_expanded_cb), this); } // YTree @@ -481,11 +474,11 @@ virtual const YTreeItem *getCurrentItem() const { YGTree *pThis = const_cast <YGTree *> (this); - return (YTreeItem *) pThis->focusItem(); + return (YTreeItem *) pThis->doSelectedItem(); } virtual void setCurrentItem (YTreeItem *item) - { implFocusItem ((YItem *) item); } + { implSelectItem ((YItem *) item); } // YGSelectionModel virtual void expand (GtkTreeIter *iter) @@ -535,13 +528,11 @@ YGTable::selection_changed_cb (selection, pThis); } - YGWIDGET_IMPL_COMMON - YGLABEL_WIDGET_IMPL_SET_LABEL_CHAIN (YTree) - YGSELECTION_WIDGET_IMPL_CLEAR (YTree) - YGSELECTION_WIDGET_IMPL_SELECT (YTree) - virtual unsigned int getMinSize (YUIDimension dim) { return 80; } + + YGLABEL_WIDGET_IMPL (YTree) + YGSELECTION_WIDGET_IMPL (YTree) }; YTree *YGWidgetFactory::createTree (YWidget *parent, const string &label) Modified: trunk/gtk/src/YGText.cc URL: http://svn.opensuse.org/viewcvs/yast/trunk/gtk/src/YGText.cc?rev=54323&r1=54... ============================================================================== --- trunk/gtk/src/YGText.cc (original) +++ trunk/gtk/src/YGText.cc Mon Dec 22 03:52:04 2008 @@ -22,8 +22,7 @@ IMPL setPolicy (GTK_POLICY_AUTOMATIC, GTK_POLICY_ALWAYS); maxChars = -1; - connect (G_OBJECT (getBuffer()), "changed", - G_CALLBACK (text_changed_cb), this); + connect (getBuffer(), "changed", G_CALLBACK (text_changed_cb), this); } GtkTextBuffer* getBuffer() @@ -110,8 +109,7 @@ YMultiLineEdit::setInputMaxLength (nb); } - YGWIDGET_IMPL_COMMON - YGLABEL_WIDGET_IMPL_SET_LABEL_CHAIN(YMultiLineEdit) + // YGWidget virtual unsigned int getMinSize (YUIDimension dim) { @@ -121,6 +119,8 @@ } return 30; } + + YGLABEL_WIDGET_IMPL (YMultiLineEdit) }; YMultiLineEdit *YGWidgetFactory::createMultiLineEdit (YWidget *parent, const string &label) @@ -139,14 +139,14 @@ {} // YLogView + virtual void displayLogText (const string &text) { setText (text); scrollToBottom(); } - YGWIDGET_IMPL_COMMON - YGLABEL_WIDGET_IMPL_SET_LABEL_CHAIN(YLogView) + // YGWidget virtual unsigned int getMinSize (YUIDimension dim) { @@ -156,6 +156,8 @@ } return 50; } + + YGLABEL_WIDGET_IMPL (YLogView) }; YLogView *YGWidgetFactory::createLogView (YWidget *parent, const string &label, @@ -225,16 +227,18 @@ setText (value(), plain_mode); } - // events + // callbacks static void link_clicked_cb (GtkWidget *widget, const char *url, YGRichText *pThis) { YGUI::ui()->sendEvent (new YMenuEvent (url)); } - YGWIDGET_IMPL_COMMON + // YGWidget virtual unsigned int getMinSize (YUIDimension dim) { return shrinkable() ? 10 : 100; } + + YGWIDGET_IMPL_COMMON (YRichText) }; Modified: trunk/gtk/src/YGWidget.cc URL: http://svn.opensuse.org/viewcvs/yast/trunk/gtk/src/YGWidget.cc?rev=54323&r1=... ============================================================================== --- trunk/gtk/src/YGWidget.cc (original) +++ trunk/gtk/src/YGWidget.cc Mon Dec 22 03:52:04 2008 @@ -18,14 +18,15 @@ { typedef std::pair <GObject *, gulong> Handler; std::list <Handler> m_handlers; - void connect (GObject *object, const char *name, - GCallback callback, gpointer data, bool after) + void connectSignal (GObject *object, const char *name, + GCallback callback, gpointer data, bool after) { gulong handler; if (after) handler = g_signal_connect_after (object, name, callback, data); else handler = g_signal_connect (object, name, callback, data); + Handler h (object, handler); m_handlers.push_back (h); } @@ -92,6 +93,7 @@ { IMPL delete m_signals; + m_signals = 0; if (YGUI::ui()->eventPendingFor (m_ywidget)) YGUI::ui()->m_event_handler.consumePendingEvent(); // remove children if container? @@ -151,7 +153,7 @@ } } -int YGWidget::getPreferredSize (YUIDimension dimension) +int YGWidget::doPreferredSize (YUIDimension dimension) { // We might want to do some caching here.. GtkRequisition req; @@ -191,30 +193,23 @@ } }; - if (flags & IGNORE_NOTIFY_EVENT || m_ywidget->notify()) - { + if (flags & IGNORE_NOTIFY_EVENT || m_ywidget->notify()) { + YWidgetEvent *event = new YWidgetEvent (m_ywidget, reason); if (flags & DELAY_EVENT) - g_timeout_add (250, inner::dispatchEvent, new YWidgetEvent (m_ywidget, reason)); + g_timeout_add (250, inner::dispatchEvent, event); else if (!(flags & IF_NOT_PENDING_EVENT) || !YGUI::ui()->eventPendingFor (m_ywidget)) - YGUI::ui()->sendEvent (new YWidgetEvent (m_ywidget, reason)); + YGUI::ui()->sendEvent (event); } } -void YGWidget::connectSignal (GObject *object, const char *name, - GCallback callback, gpointer data, bool after) +void YGWidget::connect (gpointer object, const char *name, GCallback callback, gpointer data, + bool after) { if (!m_signals) m_signals = new YGWidget::Signals(); - m_signals->connect (object, name, callback, data, after); + m_signals->connectSignal (G_OBJECT (object), name, callback, data, after); } -void YGWidget::connect (GObject *object, const char *name, - GCallback callback, gpointer data) -{ connectSignal (object, name, callback, data, false); } -void YGWidget::connect_after (GObject *object, const char *name, - GCallback callback, gpointer data) -{ connectSignal (object, name, callback, data, true); } - void YGWidget::blockSignals() { if (m_signals) m_signals->block(); } void YGWidget::unblockSignals() Modified: trunk/gtk/src/YGWidget.h URL: http://svn.opensuse.org/viewcvs/yast/trunk/gtk/src/YGWidget.h?rev=54323&r1=5... ============================================================================== --- trunk/gtk/src/YGWidget.h (original) +++ trunk/gtk/src/YGWidget.h Mon Dec 22 03:52:04 2008 @@ -17,61 +17,43 @@ GType type, const char *property_name, ...); virtual ~YGWidget(); - virtual GtkWidget *getWidget() { return m_widget; } - // containers should use this call rather than getWidget() - GtkWidget *getLayout() { return m_adj_size; } - - // Get the YGWidget associated with a YWidget + // get the YGWidget associated with a YWidget static YGWidget *get (YWidget *y_widget); - // debug - const char *getWidgetName() const { return m_ywidget->widgetClass(); } - virtual string getDebugLabel() const // let YWidget::debugLabel() be overloaded - { // container debug labels are worse than useless - if (m_ywidget->hasChildren()) return string(); - return m_ywidget->debugLabel(); } + virtual inline GtkWidget *getWidget() { return m_widget; } + GtkWidget *getLayout() { return m_adj_size; } // add this to a container + virtual GtkWidget *getContainer() { return m_widget; } // add children here - // for YWidget + // overload YWidget methods with these ones virtual bool doSetKeyboardFocus(); virtual void doSetEnabled (bool enabled); + virtual void doSetUseBoldFont (bool useBold); virtual void doAddChild (YWidget *child, GtkWidget *container); virtual void doRemoveChild (YWidget *child, GtkWidget *container); - void doSetUseBoldFont (bool useBold); - // Event handling - enum EventFlags { - DELAY_EVENT = 2, IGNORE_NOTIFY_EVENT = 4, IF_NOT_PENDING_EVENT = 8, - NORMAL_EVENT = 0 }; - void emitEvent (YEvent::EventReason reason, EventFlags flags = NORMAL_EVENT); - - // Signal registration (use "BlockEvents (this)" when to block these) - void connect (GObject *object, const char *name, - GCallback callback, gpointer data); - inline void connect (GtkWidget *widget, const char *name, - GCallback callback, gpointer data) - { connect (G_OBJECT (widget), name, callback, data); } - void connect_after (GObject *object, const char *name, - GCallback callback, gpointer data); - inline void connect_after (GtkWidget *widget, const char *name, - GCallback callback, gpointer data) - { connect_after (G_OBJECT (widget), name, callback, data); } + // layout + virtual int doPreferredSize (YUIDimension dimension); + virtual void doSetSize (int width, int height); + + // debug + const char *getWidgetName() const { return m_ywidget->widgetClass(); } + virtual string getDebugLabel() const // let YWidget::debugLabel() be overloaded + { if (m_ywidget->hasChildren()) return string(); return m_ywidget->debugLabel(); } - // Aesthetics + // aesthetics void setBorder (unsigned int border); // in pixels virtual unsigned int getMinSize (YUIDimension dim) { return 0; } protected: - // layout - virtual int getPreferredSize (YUIDimension dimension); - void doSetSize (int width, int height); - - GtkWidget *m_widget; // associated GtkWidget -- use getWidget() - GtkWidget *m_adj_size; // installed on m_widget, allows better size constrains - YWidget *m_ywidget; // associated YWidget + // event emission + enum EventFlags + { DELAY_EVENT = 2, IGNORE_NOTIFY_EVENT = 4, IF_NOT_PENDING_EVENT = 8 }; + void emitEvent (YEvent::EventReason reason, EventFlags flags = (EventFlags) 0); + // signal registration; use "BlockEvents (this)" to temp block all signals friend struct BlockEvents; - void connectSignal (GObject *object, const char *name, - GCallback callback, gpointer data, bool after); + void connect (gpointer object, const char *name, + GCallback callback, gpointer data, bool after = true); void blockSignals(); void unblockSignals(); struct Signals; @@ -80,17 +62,20 @@ void construct (YWidget *ywidget, YWidget *yparent, GType type, const char *property_name, va_list args); + + // data + GtkWidget *m_widget, *m_adj_size; // associated GtkWidget, and adjustment for borders + YWidget *m_ywidget; // associated YWidget }; struct BlockEvents { -BlockEvents (YGWidget *widget) - : m_widget (widget) + BlockEvents (YGWidget *widget) : m_widget (widget) { m_widget->blockSignals(); } -~BlockEvents() + ~BlockEvents() { m_widget->unblockSignals(); } -private: - YGWidget *m_widget; + + private: YGWidget *m_widget; }; /* @@ -98,15 +83,15 @@ * methods and the (multiply inherited) YGWidget base implementation * for GTK+. */ -#define YGWIDGET_IMPL_COMMON \ +#define YGWIDGET_IMPL_COMMON(ParentClass) \ virtual bool setKeyboardFocus() { \ return doSetKeyboardFocus(); } \ virtual void setEnabled (bool enabled) { \ - YWidget::setEnabled (enabled); \ + ParentClass::setEnabled (enabled); \ doSetEnabled (enabled); \ } \ - virtual int preferredWidth() { return getPreferredSize (YD_HORIZ); } \ - virtual int preferredHeight() { return getPreferredSize (YD_VERT); } \ + virtual int preferredWidth() { return doPreferredSize (YD_HORIZ); } \ + virtual int preferredHeight() { return doPreferredSize (YD_VERT); } \ virtual void setSize (int width, int height) { doSetSize (width, height); } #define YGWIDGET_IMPL_USE_BOLD(ParentClass) \ @@ -115,16 +100,15 @@ doSetUseBoldFont (useBold); \ } -// for containers -#define YGWIDGET_IMPL_CHILD_ADDED(ParentClass, container) \ +#define YGWIDGET_IMPL_CONTAINER(ParentClass) \ + YGWIDGET_IMPL_COMMON (ParentClass) \ virtual void addChild (YWidget *ychild) { \ ParentClass::addChild (ychild); \ - doAddChild (ychild, container); \ - } -#define YGWIDGET_IMPL_CHILD_REMOVED(ParentClass, container) \ + doAddChild (ychild, getContainer()); \ + } \ virtual void removeChild (YWidget *ychild) { \ ParentClass::removeChild (ychild); \ - doRemoveChild (ychild, container); \ + doRemoveChild (ychild, getContainer()); \ } /* This is a convenience class that allows for a label next to the @@ -138,7 +122,7 @@ GType type, const char *property_name, ...); virtual ~YGLabeledWidget () {} - virtual GtkWidget* getWidget() { return m_field; } + virtual inline GtkWidget* getWidget() { return m_field; } void setLabelVisible (bool show); void setBuddy (GtkWidget *widget); @@ -152,9 +136,9 @@ YUIDimension m_orientation; }; -#define YGLABEL_WIDGET_IMPL_SET_LABEL_CHAIN(ParentClass) \ +#define YGLABEL_WIDGET_IMPL(ParentClass) \ + YGWIDGET_IMPL_COMMON (ParentClass) \ virtual void setLabel (const std::string &label) { \ - IMPL \ ParentClass::setLabel (label); \ doSetLabel (label); \ } @@ -171,7 +155,7 @@ GType type, const char *property_name, ...); virtual ~YGScrolledWidget () {} - virtual GtkWidget *getWidget() { return m_widget; } + virtual inline GtkWidget *getWidget() { return m_widget; } // you should use this method, not gtk_scrolled_window_set... void setPolicy (GtkPolicyType hpolicy, GtkPolicyType vpolicy); Modified: trunk/gtk/src/YGWizard.cc URL: http://svn.opensuse.org/viewcvs/yast/trunk/gtk/src/YGWizard.cc?rev=54323&r1=... ============================================================================== --- trunk/gtk/src/YGWizard.cc (original) +++ trunk/gtk/src/YGWizard.cc Mon Dec 22 03:52:04 2008 @@ -292,9 +292,7 @@ ygtk_wizard_set_child (getWizard(), YGWidget::get (ychild)->getLayout()); } - YGWIDGET_IMPL_COMMON - YGWIDGET_IMPL_CHILD_ADDED (YWizard, getWidget()) - YGWIDGET_IMPL_CHILD_REMOVED (YWizard, getWidget()) + YGWIDGET_IMPL_CONTAINER (YWizard) }; YWizard *YGOptionalWidgetFactory::createWizard (YWidget *parent, Modified: trunk/gtk/src/ygtkfixed.c URL: http://svn.opensuse.org/viewcvs/yast/trunk/gtk/src/ygtkfixed.c?rev=54323&r1=... ============================================================================== --- trunk/gtk/src/ygtkfixed.c (original) +++ trunk/gtk/src/ygtkfixed.c Mon Dec 22 03:52:04 2008 @@ -33,6 +33,7 @@ if (child->widget == widget) return child; } + g_warning ("YGtkFixed: could not find child."); return NULL; } @@ -96,7 +97,6 @@ YGtkFixed *fixed = YGTK_FIXED (widget); fixed->preferred_size_cb (fixed, &requisition->width, &requisition->height, fixed->data); - GTK_WIDGET_CLASS (ygtk_fixed_parent_class)->size_request (widget, requisition); } -- To unsubscribe, e-mail: yast-commit+unsubscribe@opensuse.org For additional commands, e-mail: yast-commit+help@opensuse.org
participants (1)
-
rpmcruz@svn.opensuse.org