Author: rpmcruz
Date: Wed Jan 16 12:44:08 2008
New Revision: 43655
URL: http://svn.opensuse.org/viewcvs/yast?rev=43655&view=rev
Log:
* src/YGTable.c: bug fix: trees looked awful. Made everything use our
YGtkCellRendererTextPixbuf.
Modified:
trunk/gtk/ChangeLog
trunk/gtk/src/YGTable.cc
trunk/gtk/src/ygtkcellrenderertextpixbuf.c
Modified: trunk/gtk/ChangeLog
URL: http://svn.opensuse.org/viewcvs/yast/trunk/gtk/ChangeLog?rev=43655&r1=43654&r2=43655&view=diff
==============================================================================
--- trunk/gtk/ChangeLog (original)
+++ trunk/gtk/ChangeLog Wed Jan 16 12:44:08 2008
@@ -8,6 +8,9 @@
* src/ygtkfieldentry.c: bug fix: mnemonic on YGTextEntry (and also, but less
significatively, to YGDate and YGTime) was not functional.
+ * src/YGTable.c: bug fix: trees looked awful. Made everything use our
+ YGtkCellRendererTextPixbuf.
+
2008-01-15 Ricardo Cruz
* src/YGProgressBar.cc (YGBusyIndicator): implemented YBusyIndicator
Modified: trunk/gtk/src/YGTable.cc
URL: http://svn.opensuse.org/viewcvs/yast/trunk/gtk/src/YGTable.cc?rev=43655&r1=43654&r2=43655&view=diff
==============================================================================
--- trunk/gtk/src/YGTable.cc (original)
+++ trunk/gtk/src/YGTable.cc Wed Jan 16 12:44:08 2008
@@ -26,9 +26,9 @@
{
IMPL
if (ordinaryModel) {
- addColumn (GDK_TYPE_PIXBUF, "", YAlignUnchanged, YGSelectionModel::ICON_COLUMN);
- addColumn (G_TYPE_STRING, "", YAlignUnchanged, YGSelectionModel::LABEL_COLUMN);
- gtk_tree_view_set_model (getView(), getModel());
+ appendIconTextColumn ("", YAlignUnchanged, YGSelectionModel::ICON_COLUMN,
+ YGSelectionModel::LABEL_COLUMN);
+ setModel();
}
gtk_tree_view_set_headers_visible (GTK_TREE_VIEW (getWidget()), FALSE);
@@ -44,14 +44,18 @@
inline GtkTreeView *getView()
{ return GTK_TREE_VIEW (getWidget()); }
- void addColumn (GType type, string header, YAlignmentType header_align, int col_nb)
+ void appendIconTextColumn (string header, YAlignmentType align, int icon_col, int text_col)
{
IMPL
- GtkTreeViewColumn *column = 0;
+ GtkTreeViewColumn *column;
+ GtkCellRenderer *renderer;
+
+ renderer = ygtk_cell_renderer_text_pixbuf_new();
+ column = gtk_tree_view_column_new_with_attributes (header.c_str(),
+ renderer, "pixbuf", icon_col, "text", text_col, NULL);
- // The allignment of the column items
gfloat xalign = -1;
- switch (header_align) {
+ switch (align) {
case YAlignBegin:
xalign = 0.0;
break;
@@ -64,45 +68,33 @@
case YAlignUnchanged:
break;
}
+ if (xalign != -1)
+ g_object_set (renderer, "xalign", xalign, NULL);
- GtkCellRenderer *renderer = 0;
- if (type == G_TYPE_STRING) {
- renderer = gtk_cell_renderer_text_new();
- column = gtk_tree_view_column_new_with_attributes (header.c_str(),
- renderer, "text", col_nb, NULL);
- }
- else if (type == GDK_TYPE_PIXBUF) {
- renderer = gtk_cell_renderer_pixbuf_new();
- column = gtk_tree_view_column_new_with_attributes (header.c_str(),
- renderer, "pixbuf", col_nb, NULL);
- }
- else if (type == G_TYPE_BOOLEAN) { // toggle button
- renderer = gtk_cell_renderer_toggle_new();
- g_object_set_data (G_OBJECT (renderer), "column", GINT_TO_POINTER (col_nb));
- column = gtk_tree_view_column_new_with_attributes (header.c_str(),
- renderer, "active", col_nb, NULL);
+ gtk_tree_view_column_set_resizable (column, TRUE);
+ gtk_tree_view_append_column (getView(), column);
+ }
- g_signal_connect (G_OBJECT (renderer), "toggled",
- G_CALLBACK (toggled_cb), this);
- }
- else if (type == YGTK_TYPE_CELL_RENDERER_TEXT_PIXBUF) { // string, pixbuf combo
- renderer = ygtk_cell_renderer_text_pixbuf_new();
- g_object_set_data (G_OBJECT (renderer), "column", GINT_TO_POINTER (col_nb));
- column = gtk_tree_view_column_new_with_attributes (header.c_str(),
- renderer, "pixbuf", col_nb, "text", col_nb+1, NULL);
- }
- else
- g_error ("YGTable: no support for column of given type");
+ void appendCheckColumn (string header, int bool_col)
+ {
+ IMPL
+ GtkTreeViewColumn *column;
+ GtkCellRenderer *renderer;
- if (renderer && xalign != -1)
- g_object_set (renderer, "xalign", xalign, NULL);
+ renderer = gtk_cell_renderer_toggle_new();
+ g_object_set_data (G_OBJECT (renderer), "column", GINT_TO_POINTER (bool_col));
+ column = gtk_tree_view_column_new_with_attributes (header.c_str(),
+ renderer, "active", bool_col, NULL);
+
+ g_signal_connect (G_OBJECT (renderer), "toggled",
+ G_CALLBACK (toggled_cb), this);
gtk_tree_view_column_set_resizable (column, TRUE);
gtk_tree_view_append_column (getView(), column);
}
- virtual void setModel (GtkTreeModel *model)
- { gtk_tree_view_set_model (GTK_TREE_VIEW (getWidget()), model); }
+ void setModel()
+ { gtk_tree_view_set_model (GTK_TREE_VIEW (getWidget()), getModel()); }
// YGSelectionModel
virtual void setFocusItem (GtkTreeIter *iter, bool addingRow)
@@ -216,10 +208,11 @@
types.push_back (G_TYPE_STRING);
}
createModel (types);
- for (int i = 0; i < columns(); i++)
- addColumn (YGTK_TYPE_CELL_RENDERER_TEXT_PIXBUF,
- header (i), alignment (i), i*2);
- gtk_tree_view_set_model (getView(), getModel());
+ for (int i = 0; i < columns(); i++) {
+ int col = i*2;
+ appendIconTextColumn (header (i), alignment (i), col, col+1);
+ }
+ setModel();
g_signal_connect (G_OBJECT (getWidget()), "row-activated",
G_CALLBACK (activated_cb), (YGTableView*) this);
@@ -331,10 +324,9 @@
types.push_back (GDK_TYPE_PIXBUF);
types.push_back (G_TYPE_STRING);
createModel (types);
- addColumn (G_TYPE_BOOLEAN, "", YAlignUnchanged, 0);
- addColumn (GDK_TYPE_PIXBUF, "", YAlignUnchanged, 1);
- addColumn (G_TYPE_STRING, "", YAlignUnchanged, 2);
- gtk_tree_view_set_model (getView(), getModel());
+ appendCheckColumn ("", 0);
+ appendIconTextColumn ("", YAlignUnchanged, 1, 2);
+ setModel();
g_signal_connect (G_OBJECT (getWidget()), "cursor-changed",
G_CALLBACK (selected_cb), (YGTableView*) this);
@@ -414,6 +406,7 @@
: YTree (NULL, label)
, YGTableView (this, parent, label, true, true)
{
+ gtk_tree_view_set_enable_tree_lines (getView(), TRUE);
g_signal_connect (G_OBJECT (getWidget()), "row-activated",
G_CALLBACK (activated_cb), (YGTableView*) this);
g_signal_connect (G_OBJECT (getWidget()), "cursor-changed",
Modified: trunk/gtk/src/ygtkcellrenderertextpixbuf.c
URL: http://svn.opensuse.org/viewcvs/yast/trunk/gtk/src/ygtkcellrenderertextpixbuf.c?rev=43655&r1=43654&r2=43655&view=diff
==============================================================================
--- trunk/gtk/src/ygtkcellrenderertextpixbuf.c (original)
+++ trunk/gtk/src/ygtkcellrenderertextpixbuf.c Wed Jan 16 12:44:08 2008
@@ -98,8 +98,10 @@
// will be calculated at expose, as both pixbuf and text have their offsets...
if (xoffset) *xoffset = 0;
if (yoffset) *yoffset = 0;
- if (!width && !height)
+ if (!width || !height)
return;
+ *width = 0;
+ *height = 0;
if (tpcell->pixbuf) {
*width += gdk_pixbuf_get_width (tpcell->pixbuf);
@@ -117,9 +119,8 @@
g_object_unref (G_OBJECT (layout));
}
-
*width += cell->xpad*2;
- *height += cell->ypad*2;
+ *height += cell->ypad*2 + 2;
}
static void ygtk_cell_renderer_text_pixbuf_render (GtkCellRenderer *cell,
--
To unsubscribe, e-mail: yast-commit+unsubscribe@opensuse.org
For additional commands, e-mail: yast-commit+help@opensuse.org