Author: rpmcruz
Date: Thu Sep 10 04:09:42 2009
New Revision: 58607
URL: http://svn.opensuse.org/viewcvs/yast?rev=58607&view=rev
Log:
* src/ygtkcellrendererbutton.h/c: a push-button for lists.
* src/ygtkcellrenderertextpixbuf.h/c: added stock icon
options, and fixed x/ypadding.
* src/YGUI.h/cc & src/YGPackageSelector.cc: pass arguments for
PkgSelector so we can let people experiment with new looks at
run-time. Try:
/usr/lib/YaST2/bin/y2base sw_single gtk --find-pane --buttons
* src/ygtkzyppview.h/cc: added button column.
Added:
trunk/gtk/src/ygtkcellrendererbutton.c
trunk/gtk/src/ygtkcellrendererbutton.h
Modified:
trunk/gtk/ChangeLog
trunk/gtk/src/Makefile.am
trunk/gtk/src/YGPackageSelector.cc
trunk/gtk/src/YGUI.cc
trunk/gtk/src/YGUI.h
trunk/gtk/src/pkg-selector-help.h
trunk/gtk/src/ygtkcellrenderertextpixbuf.c
trunk/gtk/src/ygtkcellrenderertextpixbuf.h
trunk/gtk/src/ygtkzyppview.cc
trunk/gtk/src/ygtkzyppview.h
Modified: trunk/gtk/ChangeLog
URL: http://svn.opensuse.org/viewcvs/yast/trunk/gtk/ChangeLog?rev=58607&r1=58606&r2=58607&view=diff
==============================================================================
--- trunk/gtk/ChangeLog (original)
+++ trunk/gtk/ChangeLog Thu Sep 10 04:09:42 2009
@@ -1,3 +1,17 @@
+2009-09-10 Ricardo Cruz
+
+ * src/ygtkcellrendererbutton.h/c: a push-button for lists.
+
+ * src/ygtkcellrenderertextpixbuf.h/c: added stock icon
+ options, and fixed x/ypadding.
+
+ * src/YGUI.h/cc & src/YGPackageSelector.cc: pass arguments for
+ PkgSelector so we can let people experiment with new looks at
+ run-time. Try:
+ /usr/lib/YaST2/bin/y2base sw_single gtk --find-pane --buttons
+
+ * src/ygtkzyppview.h/cc: added button column.
+
2009-09-07 Ricardo Cruz
* src/ygtknotebook.cc: handle right-to-left text flow:
Modified: trunk/gtk/src/Makefile.am
URL: http://svn.opensuse.org/viewcvs/yast/trunk/gtk/src/Makefile.am?rev=58607&r1=58606&r2=58607&view=diff
==============================================================================
--- trunk/gtk/src/Makefile.am (original)
+++ trunk/gtk/src/Makefile.am Thu Sep 10 04:09:42 2009
@@ -69,6 +69,7 @@
ygtknotebook.c \
ygtktooltip.c \
ygtktreemodel.cc \
+ ygtkcellrendererbutton.c \
ygtkzyppview.cc \
yzyppwrapper.cc \
yzypptags.cc
Modified: trunk/gtk/src/YGPackageSelector.cc
URL: http://svn.opensuse.org/viewcvs/yast/trunk/gtk/src/YGPackageSelector.cc?rev=58607&r1=58606&r2=58607&view=diff
==============================================================================
--- trunk/gtk/src/YGPackageSelector.cc (original)
+++ trunk/gtk/src/YGPackageSelector.cc Thu Sep 10 04:09:42 2009
@@ -20,13 +20,19 @@
#include "ygtkrichtext.h"
#include "ygtktreeview.h"
#include "ygtkzyppview.h"
-
-// experimentations:
-//#define SHOW_FIND_PANE
-
-#ifndef SHOW_FIND_PANE
#include "ygtktooltip.h"
-#endif
+
+// experiments:
+static bool show_find_pane = false, use_buttons = false;
+bool YGUI::pkgSelectorParse (const char *arg)
+{
+ if (!strcmp (arg, "find-pane"))
+ show_find_pane = true;
+ else if (!strcmp (arg, "buttons"))
+ use_buttons = true;
+ else return false;
+ return true;
+}
//** UI components -- split up for re-usability, but mostly for readability
@@ -669,7 +675,6 @@
return "";
}
-#ifdef SHOW_FIND_PANE
class FindPane : public QueryWidget
{
GtkWidget *m_box, *m_name, *m_radio[5], *m_info_box, *m_info_label;
@@ -846,7 +851,6 @@
{ pThis->notify(); }
};
-#else
class FindEntry : public QueryWidget
{
GtkWidget *m_name;
@@ -974,7 +978,6 @@
pThis->notify();
}
};
-#endif
class FilterCombo : public QueryWidget
{
@@ -994,18 +997,17 @@
if (onlineUpdate)
gtk_combo_box_append_text (GTK_COMBO_BOX (m_combo), _("Severity"));
else {
- #ifdef SHOW_FIND_PANE
- gtk_combo_box_append_text (GTK_COMBO_BOX (m_combo), _("Search"));
- #endif
+ if (show_find_pane)
+ gtk_combo_box_append_text (GTK_COMBO_BOX (m_combo), _("Search"));
gtk_combo_box_append_text (GTK_COMBO_BOX (m_combo), _("Groups"));
gtk_combo_box_append_text (GTK_COMBO_BOX (m_combo), _("Patterns"));
gtk_combo_box_append_text (GTK_COMBO_BOX (m_combo), _("Languages"));
gtk_widget_set_tooltip_markup (m_combo,
_("Packages can be organized in:\n"
- #ifdef SHOW_FIND_PANE
+/*
"<b>Search:</b> find a given package by name, summary or some "
"other attribute.\n"
- #endif
+*/
"<b>Groups:</b> simple categorization of packages by purpose.\n"
"<b>Patterns:</b> assists in installing all packages necessary "
"for several working environments.\n"
@@ -1036,14 +1038,12 @@
virtual bool installedPackagesOnly()
{ return m_queryWidget->installedPackagesOnly(); }
- #ifdef SHOW_FIND_PANE
const char *searchName()
{
if (gtk_combo_box_get_active (GTK_COMBO_BOX (m_combo)) == 0)
return ((FindPane *) m_queryWidget)->searchName();
return NULL;
}
- #endif
void select (int nb)
{
@@ -1056,12 +1056,9 @@
}
}
else {
- #ifdef SHOW_FIND_PANE
+ if (!show_find_pane) nb++;
switch (nb) {
case 0: m_queryWidget = new FindPane (m_onlineUpdate); break;
- #else
- switch (nb+1) {
- #endif
case 1: m_queryWidget = new Categories (m_onlineUpdate); break;
case 2: m_queryWidget = new Collection (Ypp::Package::PATTERN_TYPE); break;
case 3: m_queryWidget = new Collection (Ypp::Package::LANGUAGE_TYPE); break;
@@ -1103,9 +1100,7 @@
bool m_disabledTab, m_highlightTab;
UndoView *m_undoView;
Ypp::PkgList m_packages, m_pool;
-#ifndef SHOW_FIND_PANE
FindEntry *m_find;
-#endif
public:
GtkWidget *getWidget() { return m_widget; }
@@ -1144,11 +1139,12 @@
gtk_widget_show_all (m_widget);
gtk_widget_hide (GTK_WIDGET (m_details));
- #ifndef SHOW_FIND_PANE
- m_find = new FindEntry (onlineUpdate, m_combo->getComboBox());
- ygtk_notebook_set_corner_widget (YGTK_NOTEBOOK (m_notebook), m_find->getWidget());
- m_find->setListener (this);
- #endif
+ m_find = NULL;
+ if (!show_find_pane) {
+ m_find = new FindEntry (onlineUpdate, m_combo->getComboBox());
+ ygtk_notebook_set_corner_widget (YGTK_NOTEBOOK (m_notebook), m_find->getWidget());
+ m_find->setListener (this);
+ }
Ypp::Package::Type type = Ypp::Package::PACKAGE_TYPE;
if (m_onlineUpdate)
@@ -1164,9 +1160,7 @@
delete m_undoView;
delete m_combo;
delete m_pane;
- #ifndef SHOW_FIND_PANE
delete m_find;
- #endif
}
void setUndoPage()
@@ -1217,9 +1211,8 @@
}
Ypp::PkgQuery::Query *query = new Ypp::PkgQuery::Query();
- #ifndef SHOW_FIND_PANE
- m_find->writeQuery (query);
- #endif
+ if (!show_find_pane)
+ m_find->writeQuery (query);
m_combo->writeQuery (query);
m_pool = Ypp::PkgQuery (m_packages, query);
@@ -1272,11 +1265,11 @@
highlightPage (i, false);
m_highlightTab = false;
}
- #ifdef SHOW_FIND_PANE
- const char *name = m_combo->searchName();
- #else
- const char *name = m_find->searchName();
- #endif
+ const char *name;
+ if (show_find_pane)
+ name = m_combo->searchName();
+ else
+ name = m_find->searchName();
if (name) {
Ypp::PkgQuery::Query *query = new Ypp::PkgQuery::Query();
query->addNames (name, 0, true, false, false, false, false, true, true);
@@ -1342,16 +1335,22 @@
case 2: col = ZyppModel::TO_REMOVE_COLUMN; break;
}
YGtkPackageView *view = ygtk_package_view_new (FALSE);
- if (!m_onlineUpdate || nb == 0)
- view->appendCheckColumn (col);
- int nameSize = (col == ZyppModel::TO_UPGRADE_COLUMN) ? -1 : 150;
- view->appendTextColumn (_("Name"), ZyppModel::NAME_COLUMN, nameSize);
- if (col == ZyppModel::TO_UPGRADE_COLUMN) {
- view->appendTextColumn (_("Installed"), ZyppModel::INSTALLED_VERSION_COLUMN, 150);
- view->appendTextColumn (_("Available"), ZyppModel::AVAILABLE_VERSION_COLUMN, 150);
+ if (use_buttons) {
+ view->appendTextColumn (NULL, ZyppModel::NAME_SUMMARY_COLUMN, 350);
+ view->appendButtonColumn (NULL, col);
+ }
+ else {
+ if (!m_onlineUpdate || nb == 0)
+ view->appendCheckColumn (col);
+ int nameSize = (col == ZyppModel::TO_UPGRADE_COLUMN) ? -1 : 150;
+ view->appendTextColumn (_("Name"), ZyppModel::NAME_COLUMN, nameSize);
+ if (col == ZyppModel::TO_UPGRADE_COLUMN) {
+ view->appendTextColumn (_("Installed"), ZyppModel::INSTALLED_VERSION_COLUMN, 150);
+ view->appendTextColumn (_("Available"), ZyppModel::AVAILABLE_VERSION_COLUMN, 150);
+ }
+ else
+ view->appendTextColumn (_("Summary"), ZyppModel::SUMMARY_COLUMN);
}
- else
- view->appendTextColumn (_("Summary"), ZyppModel::SUMMARY_COLUMN);
view->setListener (this);
page = GTK_WIDGET (view);
}
Modified: trunk/gtk/src/YGUI.cc
URL: http://svn.opensuse.org/viewcvs/yast/trunk/gtk/src/YGUI.cc?rev=58607&r1=58606&r2=58607&view=diff
==============================================================================
--- trunk/gtk/src/YGUI.cc (original)
+++ trunk/gtk/src/YGUI.cc Thu Sep 10 04:09:42 2009
@@ -133,6 +133,7 @@
);
exit (0);
}
+ else if (pkgSelectorParse (argp)) ;
/*
else
printf ("Warning: Unknown argument '--%s'\n", argp);
Modified: trunk/gtk/src/YGUI.h
URL: http://svn.opensuse.org/viewcvs/yast/trunk/gtk/src/YGUI.h?rev=58607&r1=58606&r2=58607&view=diff
==============================================================================
--- trunk/gtk/src/YGUI.h (original)
+++ trunk/gtk/src/YGUI.h Thu Sep 10 04:09:42 2009
@@ -78,6 +78,8 @@
// window-related arguments
bool m_have_wm, m_no_border, m_fullscreen;
+ bool pkgSelectorParse (const char *arg);
+
public:
// Helpers for internal use [ visibility hidden ]
bool setFullscreen() const { return m_fullscreen; }
Modified: trunk/gtk/src/pkg-selector-help.h
URL: http://svn.opensuse.org/viewcvs/yast/trunk/gtk/src/pkg-selector-help.h?rev=58607&r1=58606&r2=58607&view=diff
==============================================================================
--- trunk/gtk/src/pkg-selector-help.h (original)
+++ trunk/gtk/src/pkg-selector-help.h Thu Sep 10 04:09:42 2009
@@ -38,7 +38,7 @@
"AbiWord which carries the word 'office' in its description). You can also "
"choose to view software from a specific repository. Searching other attributes "
"is possible. For instance, you may perform a search on the installed package "
- "containing a given file.</p>"),
+ "containing a given file. Press the search icon for the filter menu.</p>"),
_("<h2>Groups, Patterns, Languages</h2>"
"<p>Software for &product; is indexed so that you can find software for a specific "
"task when you don't know the name of the software you are looking for. Browse "
Added: trunk/gtk/src/ygtkcellrendererbutton.c
URL: http://svn.opensuse.org/viewcvs/yast/trunk/gtk/src/ygtkcellrendererbutton.c?rev=58607&view=auto
==============================================================================
--- trunk/gtk/src/ygtkcellrendererbutton.c (added)
+++ trunk/gtk/src/ygtkcellrendererbutton.c Thu Sep 10 04:09:42 2009
@@ -0,0 +1,152 @@
+/********************************************************************
+ * YaST2-GTK - http://en.opensuse.org/YaST2-GTK *
+ ********************************************************************/
+
+/* YGtkCellRendererButton widget */
+// check the header file for information about this widget
+
+#include "ygtkcellrendererbutton.h"
+
+#define INNER_BORDER 4
+#define OUTER_BORDER 1
+#define BORDER (INNER_BORDER+OUTER_BORDER)
+#define DEPRESS_PAD 2
+
+enum {
+ PROP_0,
+ PROP_ACTIVE,
+};
+
+static guint toggle_cell_signal = 0;
+
+G_DEFINE_TYPE (YGtkCellRendererButton, ygtk_cell_renderer_button, YGTK_TYPE_CELL_RENDERER_TEXT_PIXBUF)
+
+static void ygtk_cell_renderer_button_init (YGtkCellRendererButton *bcell)
+{
+ bcell->active = FALSE;
+ GtkCellRenderer *cell = GTK_CELL_RENDERER (bcell);
+ cell->xpad = BORDER;
+ cell->ypad = BORDER;
+}
+
+static void ygtk_cell_renderer_button_get_property (GObject *object,
+ guint param_id, GValue *value, GParamSpec *pspec)
+{
+ if (pspec->owner_type == YGTK_TYPE_CELL_RENDERER_BUTTON) {
+ YGtkCellRendererButton *bcell = YGTK_CELL_RENDERER_BUTTON (object);
+ switch (param_id) {
+ case PROP_ACTIVE:
+ g_value_set_boolean (value, bcell->active);
+ break;
+ }
+ }
+ else
+ G_OBJECT_CLASS (ygtk_cell_renderer_button_parent_class)->get_property (
+ object, param_id, value, pspec);
+}
+
+static void ygtk_cell_renderer_button_set_property (GObject *object,
+ guint param_id, const GValue *value, GParamSpec *pspec)
+{
+ if (pspec->owner_type == YGTK_TYPE_CELL_RENDERER_BUTTON) {
+ YGtkCellRendererButton *bcell = YGTK_CELL_RENDERER_BUTTON (object);
+ switch (param_id) {
+ case PROP_ACTIVE:
+ bcell->active = g_value_get_boolean (value);
+ break;
+ }
+ }
+ else
+ G_OBJECT_CLASS (ygtk_cell_renderer_button_parent_class)->set_property (
+ object, param_id, value, pspec);
+}
+
+static void ygtk_cell_renderer_button_get_size (GtkCellRenderer *cell,
+ GtkWidget *widget, GdkRectangle *cell_area, gint *xoffset, gint *yoffset,
+ gint *width, gint *height)
+{
+ GTK_CELL_RENDERER_CLASS (ygtk_cell_renderer_button_parent_class)->get_size (
+ cell, widget, NULL, NULL, NULL, width, height);
+ if (xoffset) *xoffset = 0;
+ if (yoffset) *yoffset = 0;
+}
+
+static void ygtk_cell_renderer_button_render (GtkCellRenderer *cell,
+ GdkDrawable *window, GtkWidget *widget, GdkRectangle *background_area,
+ GdkRectangle *cell_area, GdkRectangle *expose_area, GtkCellRendererState flags)
+{
+ YGtkCellRendererButton *bcell = YGTK_CELL_RENDERER_BUTTON (cell);
+ GtkShadowType shadow = bcell->active ? GTK_SHADOW_IN : GTK_SHADOW_OUT;
+ gboolean has_focus = FALSE;
+ if (flags & GTK_CELL_RENDERER_SELECTED)
+ has_focus = GTK_WIDGET_HAS_FOCUS (widget);
+
+ GtkStateType state;
+ if (!cell->sensitive)
+ state = GTK_STATE_INSENSITIVE;
+ else if ((flags & GTK_CELL_RENDERER_PRELIT) == GTK_CELL_RENDERER_PRELIT &&
+ GTK_WIDGET_STATE (widget) == GTK_STATE_PRELIGHT)
+ state = GTK_STATE_PRELIGHT;
+ else {
+ if (GTK_WIDGET_STATE (widget) == GTK_STATE_INSENSITIVE)
+ state = GTK_STATE_INSENSITIVE;
+ else
+ state = GTK_STATE_NORMAL;
+ }
+
+ int width, height;
+ GTK_CELL_RENDERER_CLASS (ygtk_cell_renderer_button_parent_class)->get_size (
+ cell, widget, NULL, NULL, NULL, &width, &height);
+ int x = cell_area->x + OUTER_BORDER;
+ width -= OUTER_BORDER*2;
+ int y = cell_area->y + (cell_area->height - height)/2 + OUTER_BORDER;
+ height -= OUTER_BORDER*2;
+
+ gtk_paint_box (widget->style, window, state, shadow, expose_area, widget,
+ "button", x, y, width, height);
+
+ int cell_area_x = cell_area->x, cell_area_y = cell_area->y;
+ if (bcell->active) {
+ cell_area->x += DEPRESS_PAD;
+ cell_area->y += DEPRESS_PAD;
+ }
+
+ GTK_CELL_RENDERER_CLASS (ygtk_cell_renderer_button_parent_class)->render (
+ cell, window, widget, background_area, cell_area, expose_area, 0);
+
+ cell_area->x = cell_area_x; cell_area->y = cell_area_y;
+}
+
+static gboolean ygtk_cell_renderer_button_activate (GtkCellRenderer *cell,
+ GdkEvent *event, GtkWidget *widget, const gchar *path, GdkRectangle *background_area,
+ GdkRectangle *cell_area, GtkCellRendererState flags)
+{
+ g_signal_emit (cell, toggle_cell_signal, 0, path);
+ return TRUE;
+}
+
+GtkCellRenderer *ygtk_cell_renderer_button_new (void)
+{
+ return g_object_new (YGTK_TYPE_CELL_RENDERER_BUTTON, NULL);
+}
+
+static void ygtk_cell_renderer_button_class_init (YGtkCellRendererButtonClass *class)
+{
+ GObjectClass *object_class = G_OBJECT_CLASS (class);
+ object_class->get_property = ygtk_cell_renderer_button_get_property;
+ object_class->set_property = ygtk_cell_renderer_button_set_property;
+
+ GtkCellRendererClass *cell_class = GTK_CELL_RENDERER_CLASS (class);
+ cell_class->get_size = ygtk_cell_renderer_button_get_size;
+ cell_class->render = ygtk_cell_renderer_button_render;
+ cell_class->activate = ygtk_cell_renderer_button_activate;
+
+ g_object_class_install_property (object_class, PROP_ACTIVE,
+ g_param_spec_boolean ("active", "Toggle state", "The toggle state of the button",
+ FALSE, G_PARAM_READWRITE|G_PARAM_STATIC_NAME|G_PARAM_STATIC_NICK|G_PARAM_STATIC_BLURB));
+
+ toggle_cell_signal = g_signal_new ("toggled", G_OBJECT_CLASS_TYPE (object_class),
+ G_SIGNAL_RUN_LAST, G_STRUCT_OFFSET (YGtkCellRendererButtonClass, toggled),
+ NULL, NULL, g_cclosure_marshal_VOID__STRING, G_TYPE_NONE, 1, G_TYPE_STRING);
+}
+
Added: trunk/gtk/src/ygtkcellrendererbutton.h
URL: http://svn.opensuse.org/viewcvs/yast/trunk/gtk/src/ygtkcellrendererbutton.h?rev=58607&view=auto
==============================================================================
--- trunk/gtk/src/ygtkcellrendererbutton.h (added)
+++ trunk/gtk/src/ygtkcellrendererbutton.h Thu Sep 10 04:09:42 2009
@@ -0,0 +1,46 @@
+/********************************************************************
+ * YaST2-GTK - http://en.opensuse.org/YaST2-GTK *
+ ********************************************************************/
+
+/* GtkButton meets GtkCellRenderer.
+*/
+
+#ifndef YGTK_CELL_RENDERER_BUTTON_H
+#define YGTK_CELL_RENDERER_BUTTON_H
+
+#include "ygtkcellrenderertextpixbuf.h"
+G_BEGIN_DECLS
+
+#define YGTK_TYPE_CELL_RENDERER_BUTTON (ygtk_cell_renderer_button_get_type ())
+#define YGTK_CELL_RENDERER_BUTTON(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), \
+ YGTK_TYPE_CELL_RENDERER_BUTTON, YGtkCellRendererButton))
+#define YGTK_CELL_RENDERER_BUTTON_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), \
+ YGTK_TYPE_CELL_RENDERER_BUTTON, YGtkCellRendererButtonClass))
+#define YGTK_IS_CELL_RENDERER_BUTTON(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), \
+ YGTK_TYPE_CELL_RENDERER_BUTTON))
+#define YGTK_IS_CELL_RENDERER_BUTTON_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), \
+ YGTK_TYPE_CELL_RENDERER_BUTTON))
+#define YGTK_CELL_RENDERER_BUTTON_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), \
+ YGTK_TYPE_CELL_RENDERER_BUTTON, YGtkCellRendererButtonClass))
+
+typedef struct _YGtkCellRendererButton
+{
+ YGtkCellRendererTextPixbuf parent;
+
+ // private:
+ guint active : 2;
+} YGtkCellRendererButton;
+
+typedef struct _YGtkCellRendererButtonClass
+{
+ YGtkCellRendererTextPixbufClass parent_class;
+
+ void (* toggled) (YGtkCellRendererButton *renderer, const gchar *path);
+} YGtkCellRendererButtonClass;
+
+GtkCellRenderer *ygtk_cell_renderer_button_new (void);
+GType ygtk_cell_renderer_button_get_type (void) G_GNUC_CONST;
+
+G_END_DECLS
+#endif /*YGTK_CELL_RENDERER_BUTTON_H*/
+
Modified: trunk/gtk/src/ygtkcellrenderertextpixbuf.c
URL: http://svn.opensuse.org/viewcvs/yast/trunk/gtk/src/ygtkcellrenderertextpixbuf.c?rev=58607&r1=58606&r2=58607&view=diff
==============================================================================
--- trunk/gtk/src/ygtkcellrenderertextpixbuf.c (original)
+++ trunk/gtk/src/ygtkcellrenderertextpixbuf.c Thu Sep 10 04:09:42 2009
@@ -8,11 +8,15 @@
#include
#include "ygtkcellrenderertextpixbuf.h"
+extern GdkPixbuf *ygutils_setOpacity (const GdkPixbuf *src, int opacity, gboolean alpha);
+
#define PIXBUF_TEXT_SPACING 4
enum {
PROP_0,
- PROP_PIXBUF
+ PROP_PIXBUF,
+ PROP_STOCK_ID,
+ PROP_STOCK_SIZE,
};
G_DEFINE_TYPE (YGtkCellRendererTextPixbuf, ygtk_cell_renderer_text_pixbuf, GTK_TYPE_CELL_RENDERER_TEXT)
@@ -21,19 +25,28 @@
{
GtkCellRenderer *cell = GTK_CELL_RENDERER (tpcell);
cell->mode = GTK_CELL_RENDERER_MODE_ACTIVATABLE;
- cell->xalign = 0.0;
+ cell->xpad = cell->ypad = 0;
+ cell->xalign = 0;
cell->yalign = 0.5;
- cell->xpad = 0;
- cell->ypad = 0;
+ tpcell->stock_size = GTK_ICON_SIZE_MENU;
+}
+
+static void unset_image_properties (YGtkCellRendererTextPixbuf *cell)
+{
+ if (cell->stock_id) {
+ g_free (cell->stock_id);
+ cell->stock_id = NULL;
+ }
+ if (cell->pixbuf) {
+ g_object_unref (cell->pixbuf);
+ cell->pixbuf = NULL;
+ }
}
static void ygtk_cell_renderer_text_pixbuf_finalize (GObject *object)
{
YGtkCellRendererTextPixbuf *tpcell = YGTK_CELL_RENDERER_TEXT_PIXBUF (object);
- if (tpcell->pixbuf) {
- g_object_unref (G_OBJECT (tpcell->pixbuf));
- tpcell->pixbuf = NULL;
- }
+ unset_image_properties (tpcell);
G_OBJECT_CLASS (ygtk_cell_renderer_text_pixbuf_parent_class)->finalize (object);
}
@@ -46,6 +59,12 @@
case PROP_PIXBUF:
g_value_set_object (value, G_OBJECT (tpcell->pixbuf));
break;
+ case PROP_STOCK_ID:
+ g_value_set_string (value, tpcell->stock_id);
+ break;
+ case PROP_STOCK_SIZE:
+ g_value_set_uint (value, tpcell->stock_size);
+ break;
}
}
else
@@ -60,10 +79,16 @@
YGtkCellRendererTextPixbuf *tpcell = YGTK_CELL_RENDERER_TEXT_PIXBUF (object);
switch (param_id) {
case PROP_PIXBUF:
- if (tpcell->pixbuf)
- g_object_unref (G_OBJECT (tpcell->pixbuf));
+ unset_image_properties (tpcell);
tpcell->pixbuf = (GdkPixbuf *) g_value_dup_object (value);
break;
+ case PROP_STOCK_ID:
+ unset_image_properties (tpcell);
+ tpcell->stock_id = g_value_dup_string (value);
+ break;
+ case PROP_STOCK_SIZE:
+ tpcell->stock_size = g_value_get_uint (value);
+ break;
}
}
else
@@ -79,42 +104,82 @@
return NULL;
}
-#define XPAD 1
-#define YPAD 0
+static void ensure_pixbuf (YGtkCellRendererTextPixbuf *cell, GtkWidget *widget)
+{
+ if (cell->stock_id && !cell->pixbuf)
+ cell->pixbuf = gtk_widget_render_icon (widget, cell->stock_id, cell->stock_size, NULL);
+}
-static void ygtk_cell_renderer_text_pixbuf_get_size (GtkCellRenderer *cell,
- GtkWidget *widget, GdkRectangle *cell_area, gint *xoffset, gint *yoffset,
- gint *width, gint *height)
+static void ygtk_cell_renderer_text_pixbuf_get_size_full (GtkCellRenderer *cell,
+ GtkWidget *widget, GdkRectangle *cell_area, gint *_xoffset, gint *_yoffset,
+ gint *_width, gint *_height, gint *_pixbuf_xoffset, gint *_pixbuf_yoffset,
+ gint *_pixbuf_width, gint *_pixbuf_height, gint *_text_xoffset, gint *_text_yoffset)
{
- GtkCellRendererText *tcell = GTK_CELL_RENDERER_TEXT (cell);
YGtkCellRendererTextPixbuf *tpcell = YGTK_CELL_RENDERER_TEXT_PIXBUF (cell);
+ ensure_pixbuf (tpcell, widget);
- // will be calculated at expose, as both pixbuf and text have their offsets...
- if (xoffset) *xoffset = 0;
- if (yoffset) *yoffset = 0;
- if (!width || !height)
- return;
- *width = 0;
- *height = 0;
-
+ int pixbuf_width = 0, pixbuf_height = 0;
if (tpcell->pixbuf) {
- *width += gdk_pixbuf_get_width (tpcell->pixbuf);
- *height = MAX (*height, gdk_pixbuf_get_height (tpcell->pixbuf));
+ pixbuf_width = gdk_pixbuf_get_width (tpcell->pixbuf);
+ pixbuf_height = gdk_pixbuf_get_height (tpcell->pixbuf);
}
- if (tcell->text) {
- if (tpcell->pixbuf)
- *width += PIXBUF_TEXT_SPACING;
-
- PangoLayout *layout = create_layout (tpcell, widget);
- int lw, lh;
- pango_layout_get_pixel_size (layout, &lw, &lh);
- *width += lw;
- *height = MAX (*height, lh);
- g_object_unref (G_OBJECT (layout));
+ PangoLayout *layout = create_layout (tpcell, widget);
+ int text_width = 0, text_height = 0;
+ if (layout) {
+ PangoRectangle rect;
+ pango_layout_get_pixel_extents (layout, NULL, &rect);
+ text_width = rect.x + rect.width;
+ text_height = rect.y + rect.height;
}
- *width += (cell->xpad+XPAD)*2;
- *height += (cell->ypad+YPAD)*2;
+
+ int width, height;
+ width = pixbuf_width + text_width;
+ if (pixbuf_width && text_width)
+ width += PIXBUF_TEXT_SPACING;
+ height = MAX (pixbuf_height, text_height);
+
+ if (cell_area) {
+ gboolean reverse = gtk_widget_get_default_direction() == GTK_TEXT_DIR_RTL;
+ gfloat xalign = cell->xalign, yalign = cell->yalign;
+ if (reverse)
+ xalign = 1.0 - xalign;
+
+ int cell_width = cell_area->width - cell->xpad*2,
+ cell_height = cell_area->height - cell->ypad*2;
+ int xoffset = (xalign * (cell_width - width)) + cell->xpad;
+ int yoffset = (yalign * (cell_height - height)) + cell->ypad;
+ if (_xoffset) *_xoffset = xoffset;
+ if (_yoffset) *_yoffset = yoffset;
+
+ int text_x = xoffset, text_y;
+ if (pixbuf_width && !reverse)
+ text_x += (pixbuf_width + PIXBUF_TEXT_SPACING);
+ text_y = (yalign * (cell_height - text_height)) + cell->ypad;
+
+ int pixbuf_x = xoffset, pixbuf_y;
+ if (text_width && reverse)
+ pixbuf_x += (text_width + PIXBUF_TEXT_SPACING);
+ pixbuf_y = (yalign * (cell_height - pixbuf_height)) + cell->ypad;
+
+ if (_pixbuf_xoffset) *_pixbuf_xoffset = pixbuf_x;
+ if (_pixbuf_yoffset) *_pixbuf_yoffset = pixbuf_y;
+ if (_pixbuf_width) *_pixbuf_width = pixbuf_width;
+ if (_pixbuf_height) *_pixbuf_height = pixbuf_height;
+ if (_text_xoffset) *_text_xoffset = text_x;
+ if (_text_yoffset) *_text_yoffset = text_y;
+ }
+
+ if (_width) *_width = width + (cell->xpad * 2);
+ if (_height) *_height = height + (cell->ypad * 2);
+}
+
+static void ygtk_cell_renderer_text_pixbuf_get_size (GtkCellRenderer *cell,
+ GtkWidget *widget, GdkRectangle *cell_area, gint *xoffset, gint *yoffset,
+ gint *width, gint *height)
+{
+ ygtk_cell_renderer_text_pixbuf_get_size_full (cell, widget, cell_area,
+ xoffset, yoffset, width, height, NULL, NULL, NULL, NULL, NULL, NULL);
}
static void ygtk_cell_renderer_text_pixbuf_render (GtkCellRenderer *cell,
@@ -142,55 +207,28 @@
state = GTK_STATE_NORMAL;
}
- // positioning
-
- gboolean reverse = gtk_widget_get_default_direction() == GTK_TEXT_DIR_RTL;
- gfloat xalign = cell->xalign, yalign = cell->yalign;
- if (reverse)
- xalign = 1.0 - xalign;
-
- GdkPixbuf *pixbuf = tpcell->pixbuf;
- int pixbuf_width = 0, pixbuf_height = 0;
- if (pixbuf) {
- pixbuf_width = gdk_pixbuf_get_width (pixbuf);
- pixbuf_height = gdk_pixbuf_get_height (pixbuf);
- }
-
- PangoLayout *layout = create_layout (tpcell, widget);
- int text_width = 0, text_height = 0;
- if (layout) {
- PangoRectangle rect;
- pango_layout_get_pixel_extents (layout, NULL, &rect);
- text_width = rect.width;
- text_height = rect.height;
- }
-
- int spacing = (text_width && pixbuf_width) ? PIXBUF_TEXT_SPACING : 0;
- int offset_x = xalign * (cell_area->width - (text_width + pixbuf_width + spacing));
-
- int text_x = offset_x, text_y;
- if (pixbuf_width && !reverse)
- text_x += (pixbuf_width + spacing);
- text_y = yalign * (cell_area->height - text_height);
-
- int pixbuf_x = offset_x, pixbuf_y;
- if (text_width && reverse)
- pixbuf_x += (text_width + spacing);
- pixbuf_y = yalign * (cell_area->height - pixbuf_height);
+ int text_xoffset, text_yoffset, pixbuf_xoffset, pixbuf_yoffset, pixbuf_width,
+ pixbuf_height;
+ ygtk_cell_renderer_text_pixbuf_get_size_full (cell, widget, cell_area,
+ NULL, NULL, NULL, NULL, &pixbuf_xoffset, &pixbuf_yoffset, &pixbuf_width,
+ &pixbuf_height, &text_xoffset, &text_yoffset);
// paint
- int x = cell_area->x + cell->xpad+XPAD, y = cell_area->y + cell->ypad+YPAD;
- if (pixbuf) {
+ ensure_pixbuf (tpcell, widget);
+ if (tpcell->pixbuf) {
+ int x = cell_area->x + pixbuf_xoffset, y = cell_area->y + pixbuf_yoffset;
cairo_t *cr = gdk_cairo_create (window);
- gdk_cairo_set_source_pixbuf (cr, pixbuf, pixbuf_x+x, pixbuf_y+y);
- cairo_rectangle (cr, pixbuf_x+x, pixbuf_y+y, pixbuf_width, pixbuf_height);
+ gdk_cairo_set_source_pixbuf (cr, tpcell->pixbuf, x, y);
+ cairo_rectangle (cr, x, y, pixbuf_width, pixbuf_height);
cairo_fill (cr);
cairo_destroy (cr);
}
+ PangoLayout *layout = create_layout (tpcell, widget);
if (layout) {
+ int x = cell_area->x + text_xoffset, y = cell_area->y + text_yoffset;
GtkStyle *style = gtk_widget_get_style (widget);
gtk_paint_layout (style, window, state, TRUE, expose_area, widget,
- "cellrenderertext", text_x+x, text_y+y, layout);
+ "cellrenderertext", x, y, layout);
g_object_unref (G_OBJECT (layout));
}
}
@@ -211,8 +249,14 @@
cell_class->get_size = ygtk_cell_renderer_text_pixbuf_get_size;
cell_class->render = ygtk_cell_renderer_text_pixbuf_render;
+ GParamFlags readwrite_flag =
+ G_PARAM_READWRITE|G_PARAM_STATIC_NAME|G_PARAM_STATIC_NICK|G_PARAM_STATIC_BLURB;
g_object_class_install_property (object_class, PROP_PIXBUF,
- g_param_spec_object ("pixbuf", "Image", "Side image", GDK_TYPE_PIXBUF,
- G_PARAM_READWRITE|G_PARAM_STATIC_NAME|G_PARAM_STATIC_NICK|G_PARAM_STATIC_BLURB));
+ g_param_spec_object ("pixbuf", "Image", "Side image", GDK_TYPE_PIXBUF, readwrite_flag));
+ g_object_class_install_property (object_class, PROP_STOCK_ID,
+ g_param_spec_string ("stock-id", "Stock ID", "Stock icon to render", NULL, readwrite_flag));
+ g_object_class_install_property (object_class, PROP_STOCK_SIZE,
+ g_param_spec_uint ("stock-size", "Size", "GtkIconSize of the rendered icon",
+ 0, G_MAXUINT, GTK_ICON_SIZE_MENU, readwrite_flag));
}
Modified: trunk/gtk/src/ygtkcellrenderertextpixbuf.h
URL: http://svn.opensuse.org/viewcvs/yast/trunk/gtk/src/ygtkcellrenderertextpixbuf.h?rev=58607&r1=58606&r2=58607&view=diff
==============================================================================
--- trunk/gtk/src/ygtkcellrenderertextpixbuf.h (original)
+++ trunk/gtk/src/ygtkcellrenderertextpixbuf.h Thu Sep 10 04:09:42 2009
@@ -33,6 +33,8 @@
// private:
GdkPixbuf *pixbuf;
+ gchar *stock_id;
+ GtkIconSize stock_size;
} YGtkCellRendererTextPixbuf;
typedef struct _YGtkCellRendererTextPixbufClass
Modified: trunk/gtk/src/ygtkzyppview.cc
URL: http://svn.opensuse.org/viewcvs/yast/trunk/gtk/src/ygtkzyppview.cc?rev=58607&r1=58606&r2=58607&view=diff
==============================================================================
--- trunk/gtk/src/ygtkzyppview.cc (original)
+++ trunk/gtk/src/ygtkzyppview.cc Thu Sep 10 04:09:42 2009
@@ -15,6 +15,7 @@
#include "ygtktreeview.h"
#include "ygtktreemodel.h"
#include "ygtkrichtext.h"
+#include "ygtkcellrendererbutton.h"
#include "YGi18n.h"
#include "YGUtils.h"
#include "YGDialog.h"
@@ -119,6 +120,10 @@
case ZyppModel::AVAILABLE_VERSION_COLUMN:
case ZyppModel::FOREGROUND_COLUMN:
case ZyppModel::BACKGROUND_COLUMN:
+ case ZyppModel::INSTALL_LABEL_COLUMN:
+ case ZyppModel::REMOVE_LABEL_COLUMN:
+ case ZyppModel::INSTALL_STOCK_COLUMN:
+ case ZyppModel::REMOVE_STOCK_COLUMN:
return G_TYPE_STRING;
case ZyppModel::TO_INSTALL_COLUMN:
case ZyppModel::TO_UPGRADE_COLUMN:
@@ -150,6 +155,10 @@
case ZyppModel::SUPPORT_COLUMN:
case ZyppModel::INSTALLED_VERSION_COLUMN:
case ZyppModel::AVAILABLE_VERSION_COLUMN:
+ case ZyppModel::INSTALL_LABEL_COLUMN:
+ case ZyppModel::REMOVE_LABEL_COLUMN:
+ case ZyppModel::INSTALL_STOCK_COLUMN:
+ case ZyppModel::REMOVE_STOCK_COLUMN:
g_value_set_string (value, g_strdup (""));
break;
case ZyppModel::FOREGROUND_COLUMN:
@@ -362,6 +371,7 @@
if (index == -2) { // apply all label
switch (col) {
case ZyppModel::NAME_COLUMN:
+ case ZyppModel::NAME_SUMMARY_COLUMN:
g_value_set_string (value, g_strdup (segment->applyAll.c_str()));
break;
case ZyppModel::BACKGROUND_COLUMN: {
@@ -388,6 +398,14 @@
g_value_set_boolean (value, modified);
break;
}
+ case ZyppModel::INSTALL_LABEL_COLUMN:
+ case ZyppModel::REMOVE_LABEL_COLUMN:
+ g_value_set_string (value, g_strdup (_("All")));
+ break;
+ case ZyppModel::INSTALL_STOCK_COLUMN:
+ case ZyppModel::REMOVE_STOCK_COLUMN:
+ g_value_set_string (value, g_strdup (GTK_STOCK_SELECT_ALL));
+ break;
default:
_getValueDefault (col, value);
break;
@@ -544,6 +562,38 @@
g_value_set_int (value, xpad);
break;
}
+ case ZyppModel::INSTALL_LABEL_COLUMN: {
+ const char *label = _("Install");
+/* if (package->toModify())
+ label = _("Undo");
+ else if (package->hasUpgrade())
+ label = _("Upgrade");*/
+ if (package->hasUpgrade())
+ label = _("Upgrade");
+ g_value_set_string (value, g_strdup (label));
+ break;
+ }
+ case ZyppModel::REMOVE_LABEL_COLUMN: {
+ const char *label = _("Remove");
+/* if (package->toModify())
+ label = _("Undo");*/
+ g_value_set_string (value, g_strdup (label));
+ break;
+ }
+ case ZyppModel::INSTALL_STOCK_COLUMN: {
+ const char *stock = GTK_STOCK_SAVE;
+/* if (package->toModify())
+ stock = GTK_STOCK_UNDO;*/
+ g_value_set_string (value, g_strdup (stock));
+ break;
+ }
+ case ZyppModel::REMOVE_STOCK_COLUMN: {
+ const char *stock = GTK_STOCK_DELETE;
+/* if (package->toModify())
+ stock = GTK_STOCK_UNDO;*/
+ g_value_set_string (value, g_strdup (stock));
+ break;
+ }
case ZyppModel::PTR_COLUMN:
g_value_set_pointer (value, (void *) package);
break;
@@ -733,11 +783,10 @@
GtkTreeView *view = GTK_TREE_VIEW (m_view);
if (header)
gtk_tree_view_set_headers_visible (view, TRUE);
- GtkTreeViewColumn *column;
GtkCellRenderer *renderer = gtk_cell_renderer_pixbuf_new();
int height = MAX (34, YGUtils::getCharsHeight (m_view, 2));
gtk_cell_renderer_set_fixed_size (renderer, -1, height);
- column = gtk_tree_view_column_new_with_attributes (
+ GtkTreeViewColumn *column = gtk_tree_view_column_new_with_attributes (
header, renderer, "pixbuf", col,
"cell-background", ZyppModel::BACKGROUND_COLUMN, NULL);
gtk_tree_view_column_set_sizing (column, GTK_TREE_VIEW_COLUMN_FIXED);
@@ -749,11 +798,11 @@
{
GtkTreeView *view = GTK_TREE_VIEW (m_view);
GtkCellRenderer *renderer = gtk_cell_renderer_toggle_new();
- GtkTreeViewColumn *column;
- column = gtk_tree_view_column_new_with_attributes (NULL,
+ GtkTreeViewColumn *column = gtk_tree_view_column_new_with_attributes (NULL,
renderer, "active", modelCol, "visible", ZyppModel::CHECK_VISIBLE_COLUMN,
"sensitive", ZyppModel::SENSITIVE_COLUMN,
"cell-background", ZyppModel::BACKGROUND_COLUMN, NULL);
+ g_object_set_data (G_OBJECT (column), "status-tooltip", GINT_TO_POINTER (1));
g_object_set_data (G_OBJECT (renderer), "col", GINT_TO_POINTER (modelCol));
g_signal_connect (G_OBJECT (renderer), "toggled",
G_CALLBACK (renderer_toggled_cb), this);
@@ -763,22 +812,56 @@
gtk_tree_view_append_column (view, column);
}
+ void appendButtonColumn (const char *header, int modelCol)
+ {
+ int labelCol, stockCol;
+ switch (modelCol) {
+ case ZyppModel::TO_INSTALL_COLUMN: case ZyppModel::TO_UPGRADE_COLUMN: default:
+ labelCol = ZyppModel::INSTALL_LABEL_COLUMN;
+ stockCol = ZyppModel::INSTALL_STOCK_COLUMN;
+ break;
+ case ZyppModel::TO_REMOVE_COLUMN:
+ labelCol = ZyppModel::REMOVE_LABEL_COLUMN;
+ stockCol = ZyppModel::REMOVE_STOCK_COLUMN;
+ break;
+ }
+
+ GtkTreeView *view = GTK_TREE_VIEW (m_view);
+ GtkCellRenderer *renderer = ygtk_cell_renderer_button_new();
+ GtkTreeViewColumn *column = gtk_tree_view_column_new_with_attributes (header,
+ renderer, "active", modelCol, "visible", ZyppModel::CHECK_VISIBLE_COLUMN,
+ "sensitive", ZyppModel::SENSITIVE_COLUMN,
+ "cell-background", ZyppModel::BACKGROUND_COLUMN,
+ "text", labelCol, "stock-id", stockCol, NULL);
+ g_object_set_data (G_OBJECT (column), "status-tooltip", GINT_TO_POINTER (1));
+ g_object_set_data (G_OBJECT (renderer), "col", GINT_TO_POINTER (modelCol));
+ g_signal_connect (G_OBJECT (renderer), "toggled",
+ G_CALLBACK (renderer_toggled_cb), this);
+ // it seems like GtkCellRendererToggle has no width at start, so fixed doesn't work
+ gtk_tree_view_column_set_sizing (column, GTK_TREE_VIEW_COLUMN_FIXED);
+ gtk_tree_view_column_set_fixed_width (column, 120);
+ gtk_tree_view_append_column (view, column);
+ }
+
void appendTextColumn (const char *header, int col, int size, bool identAuto)
{
GtkTreeView *view = GTK_TREE_VIEW (m_view);
if (header)
gtk_tree_view_set_headers_visible (view, TRUE);
GtkCellRenderer *renderer = gtk_cell_renderer_text_new();
- g_object_set (G_OBJECT (renderer), "ellipsize",
- size == -1 ? PANGO_ELLIPSIZE_END : PANGO_ELLIPSIZE_MIDDLE, NULL);
+ PangoEllipsizeMode ellipsize = PANGO_ELLIPSIZE_END;
+ if (size >= 0 && col != ZyppModel::NAME_SUMMARY_COLUMN)
+ ellipsize = PANGO_ELLIPSIZE_MIDDLE;
+ g_object_set (G_OBJECT (renderer), "ellipsize", ellipsize, NULL);
/* gboolean reverse = gtk_widget_get_default_direction() == GTK_TEXT_DIR_RTL;
if (reverse) { // work-around: Pango ignored alignment flag on RTL
gtk_widget_set_direction (m_view, GTK_TEXT_DIR_LTR);
g_object_set (renderer, "alignment", PANGO_ALIGN_RIGHT, NULL);
}*/
+ const char *colType = col == ZyppModel::NAME_SUMMARY_COLUMN ? "markup" : "text";
GtkTreeViewColumn *column;
column = gtk_tree_view_column_new_with_attributes (
- header, renderer, "markup", col,
+ header, renderer, colType, col,
"sensitive", ZyppModel::SENSITIVE_COLUMN,
"style", ZyppModel::STYLE_COLUMN,
"weight", ZyppModel::WEIGHT_COLUMN,
@@ -793,6 +876,8 @@
gtk_tree_view_column_set_fixed_width (column, size);
else
gtk_tree_view_column_set_expand (column, TRUE);
+ if (col == ZyppModel::NAME_SUMMARY_COLUMN)
+ gtk_tree_view_set_rules_hint (view, TRUE);
// gtk_tree_view_insert_column (view, column, reverse ? 0 : -1);
gtk_tree_view_append_column (view, column);
}
@@ -957,7 +1042,12 @@
gtk_tree_model_get_iter_from_string (model, &iter, path_str);
gtk_tree_model_get (model, &iter, ZyppModel::PTR_COLUMN, &package, -1);
- gboolean active = gtk_cell_renderer_toggle_get_active (renderer);
+ gboolean active;
+ if (GTK_IS_CELL_RENDERER_TOGGLE (renderer))
+ active = gtk_cell_renderer_toggle_get_active (renderer);
+/* else
+ active = ygtk_cell_renderer_toggle_get_active (renderer);*/
+else active = FALSE; // FIXME
int col = GPOINTER_TO_INT (g_object_get_data (G_OBJECT (renderer), "col"));
if (package)
apply (package, col, !active);
@@ -1004,8 +1094,7 @@
view, x, y, &bx, &by);
gtk_tree_view_get_path_at_pos (
view, x, y, NULL, &column, NULL, NULL);
- int status_col = 0;
- if (column == gtk_tree_view_get_column (view, status_col)) {
+ if (g_object_get_data (G_OBJECT (column), "status-tooltip")) {
if (package->toInstall()) {
if (package->isInstalled())
text = _("To re-install a different version");
@@ -1098,6 +1187,9 @@
void YGtkPackageView::appendCheckColumn (int col)
{ impl->appendCheckColumn (col); }
+void YGtkPackageView::appendButtonColumn (const char *header, int col)
+{ impl->appendButtonColumn (header, col); }
+
void YGtkPackageView::appendTextColumn (const char *header, int col, int size, bool identAuto)
{ impl->appendTextColumn (header, col, size, identAuto); }
Modified: trunk/gtk/src/ygtkzyppview.h
URL: http://svn.opensuse.org/viewcvs/yast/trunk/gtk/src/ygtkzyppview.h?rev=58607&r1=58606&r2=58607&view=diff
==============================================================================
--- trunk/gtk/src/ygtkzyppview.h (original)
+++ trunk/gtk/src/ygtkzyppview.h Thu Sep 10 04:09:42 2009
@@ -23,6 +23,7 @@
// internal
STYLE_COLUMN, WEIGHT_COLUMN, SENSITIVE_COLUMN, CHECK_VISIBLE_COLUMN,
FOREGROUND_COLUMN, BACKGROUND_COLUMN, XPAD_COLUMN,
+ INSTALL_LABEL_COLUMN, REMOVE_LABEL_COLUMN, INSTALL_STOCK_COLUMN, REMOVE_STOCK_COLUMN,
// misc
PTR_COLUMN, TOTAL_COLUMNS
};
@@ -57,6 +58,7 @@
void clear();
void appendCheckColumn (int col);
+ void appendButtonColumn (const char *header, int col);
void appendIconColumn (const char *header, int col);
void appendTextColumn (const char *header, int col, int size = -1, bool identAuto = false);
// (set all column headers to NULL in order to hide them.)
--
To unsubscribe, e-mail: yast-commit+unsubscribe@opensuse.org
For additional commands, e-mail: yast-commit+help@opensuse.org