Author: rpmcruz
Date: Thu Apr 15 15:22:00 2010
New Revision: 61712
URL: http://svn.opensuse.org/viewcvs/yast?rev=61712&view=rev
Log:
* src/ygtkcellrenderertextpixbuf.h/c: removed;
use instead gtkcellrendererpixbuf packaged in a column.
* src/pkg/ygtkcellrenderersidebutton.h/c: removed;
use instead ygtkcellrendererbutton packaged in a column.
* src/ygtkcellrendererbutton.h/c: removed dependency
from ygtkcellrenderertextpixbuf.
* src/YGTable.cc, src/pkg/YGPackageSelector.cc,
src/pkg/ygtkpkglistview.cc & src/ygtkpkghistorydialog.cc:
use gtk or ygtkbutton cell renderers.
* src/ygtktreeview.cc: arabic fixes.
* src/pkg/ygtkpkgdetailview.cc: arabic fix:
"name - summary" -> "summary - name"
Removed:
trunk/gtk/src/pkg/ygtkcellrenderersidebutton.c
trunk/gtk/src/pkg/ygtkcellrenderersidebutton.h
trunk/gtk/src/ygtkcellrenderertextpixbuf.c
trunk/gtk/src/ygtkcellrenderertextpixbuf.h
Modified:
trunk/gtk/ChangeLog
trunk/gtk/src/CMakeLists.txt
trunk/gtk/src/YGTable.cc
trunk/gtk/src/pkg/CMakeLists.txt
trunk/gtk/src/pkg/YGPackageSelector.cc
trunk/gtk/src/pkg/ygtkcellrendererbutton.c
trunk/gtk/src/pkg/ygtkcellrendererbutton.h
trunk/gtk/src/pkg/ygtkpkgdetailview.cc
trunk/gtk/src/pkg/ygtkpkgfilterview.cc
trunk/gtk/src/pkg/ygtkpkghistorydialog.cc
trunk/gtk/src/pkg/ygtkpkglistview.cc
trunk/gtk/src/ygtktreeview.c
Modified: trunk/gtk/ChangeLog
URL: http://svn.opensuse.org/viewcvs/yast/trunk/gtk/ChangeLog?rev=61712&r1=61711&r2=61712&view=diff
==============================================================================
--- trunk/gtk/ChangeLog (original)
+++ trunk/gtk/ChangeLog Thu Apr 15 15:22:00 2010
@@ -1,3 +1,23 @@
+2010-04-15 Ricardo Cruz
+
+ * src/ygtkcellrenderertextpixbuf.h/c: removed;
+ use instead gtkcellrendererpixbuf packaged in a column.
+
+ * src/pkg/ygtkcellrenderersidebutton.h/c: removed;
+ use instead ygtkcellrendererbutton packaged in a column.
+
+ * src/ygtkcellrendererbutton.h/c: removed dependency
+ from ygtkcellrenderertextpixbuf.
+
+ * src/YGTable.cc, src/pkg/YGPackageSelector.cc,
+ src/pkg/ygtkpkglistview.cc & src/ygtkpkghistorydialog.cc:
+ use gtk or ygtkbutton cell renderers.
+
+ * src/ygtktreeview.cc: arabic fixes.
+
+ * src/pkg/ygtkpkgdetailview.cc: arabic fix:
+ "name - summary" -> "summary - name"
+
2010-04-14 Ricardo Cruz
* src/pkg/ygtkpkghistorydialog.h/cc: cache dialog,
Modified: trunk/gtk/src/CMakeLists.txt
URL: http://svn.opensuse.org/viewcvs/yast/trunk/gtk/src/CMakeLists.txt?rev=61712&r1=61711&r2=61712&view=diff
==============================================================================
--- trunk/gtk/src/CMakeLists.txt (original)
+++ trunk/gtk/src/CMakeLists.txt Thu Apr 15 15:22:00 2010
@@ -24,7 +24,6 @@
YGWidget.cc
YGWizard.cc
ygdkmngloader.c
- ygtkcellrenderertextpixbuf.c
ygtkbargraph.c
ygtkfieldentry.c
ygtkhtmlwrap.c
Modified: trunk/gtk/src/YGTable.cc
URL: http://svn.opensuse.org/viewcvs/yast/trunk/gtk/src/YGTable.cc?rev=61712&r1=61711&r2=61712&view=diff
==============================================================================
--- trunk/gtk/src/YGTable.cc (original)
+++ trunk/gtk/src/YGTable.cc Thu Apr 15 15:22:00 2010
@@ -9,7 +9,6 @@
#include "YGWidget.h"
#include "YSelectionWidget.h"
#include "YGSelectionModel.h"
-#include "ygtkcellrenderertextpixbuf.h"
#include "ygtktreeview.h"
/* A generic widget for table related widgets. */
@@ -56,28 +55,27 @@
void appendIconTextColumn (string header, YAlignmentType align, int icon_col, int text_col)
{
- GtkCellRenderer *renderer = ygtk_cell_renderer_text_pixbuf_new();
- GtkTreeViewColumn *column = gtk_tree_view_column_new_with_attributes (
- header.c_str(), renderer, "pixbuf", icon_col, "text", text_col, NULL);
-
gfloat xalign = -1;
switch (align) {
- case YAlignBegin:
- xalign = 0.0;
- break;
- case YAlignCenter:
- xalign = 0.5;
- break;
- case YAlignEnd:
- xalign = 1.0;
- break;
- case YAlignUnchanged:
- break;
- }
- if (xalign != -1) {
+ case YAlignBegin: xalign = 0.0; break;
+ case YAlignCenter: xalign = 0.5; break;
+ case YAlignEnd: xalign = 1.0; break;
+ case YAlignUnchanged: break;
+ }
+
+ GtkTreeViewColumn *column = gtk_tree_view_column_new();
+ gtk_tree_view_column_set_title (column, header.c_str());
+ GtkCellRenderer *renderer;
+
+ renderer = gtk_cell_renderer_pixbuf_new();
+ gtk_tree_view_column_pack_start (column, renderer, FALSE);
+ gtk_tree_view_column_set_attributes (column, renderer, "pixbuf", icon_col, NULL);
+
+ renderer = gtk_cell_renderer_text_new();
+ gtk_tree_view_column_pack_start (column, renderer, TRUE);
+ gtk_tree_view_column_set_attributes (column, renderer, "text", text_col, NULL);
+ if (xalign != -1)
g_object_set (renderer, "xalign", xalign, NULL);
- //gtk_tree_view_column_set_alignment (column, xalign);
- }
gtk_tree_view_column_set_resizable (column, TRUE);
gtk_tree_view_append_column (getView(), column);
Modified: trunk/gtk/src/pkg/CMakeLists.txt
URL: http://svn.opensuse.org/viewcvs/yast/trunk/gtk/src/pkg/CMakeLists.txt?rev=61712&r1=61711&r2=61712&view=diff
==============================================================================
--- trunk/gtk/src/pkg/CMakeLists.txt (original)
+++ trunk/gtk/src/pkg/CMakeLists.txt Thu Apr 15 15:22:00 2010
@@ -20,7 +20,6 @@
yzyppwrapper.cc
ygtkcellrendererbutton.c
- ygtkcellrenderersidebutton.c
ygtktreemodel.cc
)
Modified: trunk/gtk/src/pkg/YGPackageSelector.cc
URL: http://svn.opensuse.org/viewcvs/yast/trunk/gtk/src/pkg/YGPackageSelector.cc?rev=61712&r1=61711&r2=61712&view=diff
==============================================================================
--- trunk/gtk/src/pkg/YGPackageSelector.cc (original)
+++ trunk/gtk/src/pkg/YGPackageSelector.cc Thu Apr 15 15:22:00 2010
@@ -371,24 +371,29 @@
GTK_TREE_VIEW (view)), GTK_SELECTION_NONE);
gtk_tree_view_set_headers_visible (GTK_TREE_VIEW (view), FALSE);
gtk_tree_view_set_search_column (GTK_TREE_VIEW (view), TEXT_COL);
+
GtkTreeViewColumn *column;
GtkCellRenderer *renderer;
+ column = gtk_tree_view_column_new();
+
renderer = gtk_cell_renderer_toggle_new();
+ gtk_tree_view_column_pack_start (column, renderer, FALSE);
+ gtk_tree_view_column_set_attributes (column, renderer,
+ "visible", SHOW_TOGGLE_COL, "active", ACTIVE_TOGGLE_COL, NULL);
gtk_cell_renderer_toggle_set_radio (
GTK_CELL_RENDERER_TOGGLE (renderer), TRUE);
// we should not connect the actual toggle button, as we toggle on row press
g_signal_connect (G_OBJECT (view), "cursor-changed",
G_CALLBACK (inner::cursor_changed_cb), store);
- column = gtk_tree_view_column_new_with_attributes ("", renderer,
- "visible", SHOW_TOGGLE_COL, "active", ACTIVE_TOGGLE_COL, NULL);
- gtk_tree_view_append_column (GTK_TREE_VIEW (view), column);
renderer = gtk_cell_renderer_text_new();
- g_object_set (G_OBJECT (renderer), "wrap-width", 400, NULL);
- column = gtk_tree_view_column_new_with_attributes ("", renderer,
+ gtk_tree_view_column_pack_start (column, renderer, TRUE);
+ gtk_tree_view_column_set_attributes (column, renderer,
"text", TEXT_COL, "weight", WEIGHT_TEXT_COL, "xpad", TEXT_PAD_COL, NULL);
- gtk_tree_view_append_column (GTK_TREE_VIEW (view), column);
+ g_object_set (G_OBJECT (renderer), "wrap-width", 400,
+ "wrap-mode", PANGO_WRAP_WORD_CHAR, NULL);
+ gtk_tree_view_append_column (GTK_TREE_VIEW (view), column);
gtk_tree_view_expand_all (GTK_TREE_VIEW (view));
gtk_widget_set_has_tooltip (view, TRUE);
Modified: trunk/gtk/src/pkg/ygtkcellrendererbutton.c
URL: http://svn.opensuse.org/viewcvs/yast/trunk/gtk/src/pkg/ygtkcellrendererbutton.c?rev=61712&r1=61711&r2=61712&view=diff
==============================================================================
--- trunk/gtk/src/pkg/ygtkcellrendererbutton.c (original)
+++ trunk/gtk/src/pkg/ygtkcellrendererbutton.c Thu Apr 15 15:22:00 2010
@@ -11,16 +11,21 @@
#define INNER_BORDER 4
#define OUTER_BORDER 1
#define BORDER (INNER_BORDER+OUTER_BORDER)
-#define DEPRESS_PAD 2
+#define DEPRESS_PAD 1
+#define PIXBUF_TEXT_SPACING 4
enum {
PROP_0,
PROP_ACTIVE,
+ PROP_PIXBUF,
+ PROP_ICON_NAME,
+ PROP_STOCK_ID,
+ PROP_ICON_SIZE,
};
static guint toggle_cell_signal = 0;
-G_DEFINE_TYPE (YGtkCellRendererButton, ygtk_cell_renderer_button, YGTK_TYPE_CELL_RENDERER_TEXT_PIXBUF)
+G_DEFINE_TYPE (YGtkCellRendererButton, ygtk_cell_renderer_button, GTK_TYPE_CELL_RENDERER_TEXT)
static void ygtk_cell_renderer_button_init (YGtkCellRendererButton *bcell)
{
@@ -29,6 +34,26 @@
cell->xpad = BORDER;
cell->ypad = BORDER;
cell->mode = GTK_CELL_RENDERER_MODE_ACTIVATABLE;
+ bcell->icon_size = 16;
+}
+
+static void unset_image_properties (YGtkCellRendererButton *cell)
+{
+ if (cell->icon_name) {
+ g_free (cell->icon_name);
+ cell->icon_name = NULL;
+ }
+ if (cell->pixbuf) {
+ g_object_unref (cell->pixbuf);
+ cell->pixbuf = NULL;
+ }
+}
+
+static void ygtk_cell_renderer_button_finalize (GObject *object)
+{
+ YGtkCellRendererButton *ccell = YGTK_CELL_RENDERER_BUTTON (object);
+ unset_image_properties (ccell);
+ G_OBJECT_CLASS (ygtk_cell_renderer_button_parent_class)->finalize (object);
}
static void ygtk_cell_renderer_button_get_property (GObject *object,
@@ -40,6 +65,18 @@
case PROP_ACTIVE:
g_value_set_boolean (value, bcell->active);
break;
+ case PROP_PIXBUF:
+ g_value_set_object (value, G_OBJECT (bcell->pixbuf));
+ break;
+ case PROP_STOCK_ID:
+ g_value_set_string (value, bcell->stock_id);
+ break;
+ case PROP_ICON_NAME:
+ g_value_set_string (value, bcell->icon_name);
+ break;
+ case PROP_ICON_SIZE:
+ g_value_set_uint (value, bcell->icon_size);
+ break;
}
}
else
@@ -56,6 +93,21 @@
case PROP_ACTIVE:
bcell->active = g_value_get_boolean (value);
break;
+ case PROP_PIXBUF:
+ unset_image_properties (bcell);
+ bcell->pixbuf = (GdkPixbuf *) g_value_dup_object (value);
+ break;
+ case PROP_STOCK_ID:
+ unset_image_properties (bcell);
+ bcell->stock_id = g_value_dup_string (value);
+ break;
+ case PROP_ICON_NAME:
+ unset_image_properties (bcell);
+ bcell->icon_name = g_value_dup_string (value);
+ break;
+ case PROP_ICON_SIZE:
+ bcell->icon_size = g_value_get_uint (value);
+ break;
}
}
else
@@ -63,14 +115,102 @@
object, param_id, value, pspec);
}
+static PangoLayout *create_layout (YGtkCellRendererButton *bcell, GtkWidget *widget)
+{
+ GtkCellRendererText *tcell = GTK_CELL_RENDERER_TEXT (bcell);
+ if (tcell->text)
+ return gtk_widget_create_pango_layout (widget, tcell->text);
+ return NULL;
+}
+
+static void ensure_pixbuf (YGtkCellRendererButton *cell, GtkWidget *widget)
+{
+ if ((cell->icon_name || cell->stock_id) && !cell->pixbuf) {
+ if (cell->icon_name) {
+ GtkIconTheme *theme = gtk_icon_theme_get_default();
+ GError *error = 0;
+ cell->pixbuf = gtk_icon_theme_load_icon (theme, cell->icon_name,
+ cell->icon_size, GTK_ICON_LOOKUP_FORCE_SIZE, &error);
+ if (!cell->pixbuf)
+ g_warning ("Couldn't load ygtk-cell-renderer-button icon: %s\nGtk: %s\n",
+ cell->icon_name, error->message);
+ }
+ else // stock-id
+ cell->pixbuf = gtk_widget_render_icon (widget, cell->stock_id,
+ GTK_ICON_SIZE_BUTTON, "button");
+ }
+}
+
+static void ygtk_cell_renderer_button_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)
+{
+ YGtkCellRendererButton *bcell = YGTK_CELL_RENDERER_BUTTON (cell);
+ ensure_pixbuf (bcell, widget);
+
+ int pixbuf_width = 0, pixbuf_height = 0;
+ if (bcell->pixbuf) {
+ pixbuf_width = gdk_pixbuf_get_width (bcell->pixbuf);
+ pixbuf_height = gdk_pixbuf_get_height (bcell->pixbuf);
+ }
+
+ PangoLayout *layout = create_layout (bcell, 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;
+ }
+
+ 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_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;
+ ygtk_cell_renderer_button_get_size_full (cell, widget, cell_area,
+ xoffset, yoffset, width, height, NULL, NULL, NULL, NULL, NULL, NULL);
}
static void ygtk_cell_renderer_button_render (GtkCellRenderer *cell,
@@ -95,11 +235,14 @@
state = GTK_STATE_ACTIVE;
}
- 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 text_xoffset, text_yoffset, pixbuf_xoffset, pixbuf_yoffset, pixbuf_width,
+ pixbuf_height, height;
+ ygtk_cell_renderer_button_get_size_full (cell, widget, cell_area,
+ NULL, NULL, NULL, &height, &pixbuf_xoffset, &pixbuf_yoffset, &pixbuf_width,
+ &pixbuf_height, &text_xoffset, &text_yoffset);
+
+ int x = cell_area->x + OUTER_BORDER + 1;
+ int width = cell_area->width - OUTER_BORDER*2 - 2;
int y = cell_area->y + (cell_area->height - height)/2 + OUTER_BORDER;
height -= OUTER_BORDER*2;
@@ -112,8 +255,25 @@
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);
+ // paint
+ ensure_pixbuf (bcell, widget);
+ if (bcell->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, bcell->pixbuf, x, y);
+ cairo_rectangle (cr, x, y, pixbuf_width, pixbuf_height);
+ cairo_fill (cr);
+ cairo_destroy (cr);
+ }
+
+ PangoLayout *layout = create_layout (bcell, 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", x, y, layout);
+ g_object_unref (G_OBJECT (layout));
+ }
cell_area->x = cell_area_x; cell_area->y = cell_area_y;
}
@@ -137,15 +297,27 @@
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;
+ object_class->finalize = ygtk_cell_renderer_button_finalize;
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;
+ 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_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));
+ FALSE, readwrite_flag));
+ g_object_class_install_property (object_class, PROP_PIXBUF,
+ g_param_spec_object ("pixbuf", "Image", "Side image", GDK_TYPE_PIXBUF, readwrite_flag));
+ g_object_class_install_property (object_class, PROP_ICON_NAME,
+ g_param_spec_string ("icon-name", "Icon name", "Theme icon to render", NULL, 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_ICON_SIZE,
+ g_param_spec_uint ("icon-size", "Size", "Size of the icon to render",
+ 0, G_MAXUINT, 22, readwrite_flag));
toggle_cell_signal = g_signal_new ("toggled", G_OBJECT_CLASS_TYPE (object_class),
G_SIGNAL_RUN_LAST, G_STRUCT_OFFSET (YGtkCellRendererButtonClass, toggled),
Modified: trunk/gtk/src/pkg/ygtkcellrendererbutton.h
URL: http://svn.opensuse.org/viewcvs/yast/trunk/gtk/src/pkg/ygtkcellrendererbutton.h?rev=61712&r1=61711&r2=61712&view=diff
==============================================================================
--- trunk/gtk/src/pkg/ygtkcellrendererbutton.h (original)
+++ trunk/gtk/src/pkg/ygtkcellrendererbutton.h Thu Apr 15 15:22:00 2010
@@ -8,7 +8,7 @@
#ifndef YGTK_CELL_RENDERER_BUTTON_H
#define YGTK_CELL_RENDERER_BUTTON_H
-#include "ygtkcellrenderertextpixbuf.h"
+#include
G_BEGIN_DECLS
#define YGTK_TYPE_CELL_RENDERER_BUTTON (ygtk_cell_renderer_button_get_type ())
@@ -25,15 +25,18 @@
typedef struct _YGtkCellRendererButton
{
- YGtkCellRendererTextPixbuf parent;
+ GtkCellRendererText parent;
// private:
+ GdkPixbuf *pixbuf;
+ gchar *icon_name, *stock_id;
+ gint icon_size;
guint active : 2;
} YGtkCellRendererButton;
typedef struct _YGtkCellRendererButtonClass
{
- YGtkCellRendererTextPixbufClass parent_class;
+ GtkCellRendererTextClass parent_class;
void (* toggled) (YGtkCellRendererButton *renderer, const gchar *path);
} YGtkCellRendererButtonClass;
Modified: trunk/gtk/src/pkg/ygtkpkgdetailview.cc
URL: http://svn.opensuse.org/viewcvs/yast/trunk/gtk/src/pkg/ygtkpkgdetailview.cc?rev=61712&r1=61711&r2=61712&view=diff
==============================================================================
--- trunk/gtk/src/pkg/ygtkpkgdetailview.cc (original)
+++ trunk/gtk/src/pkg/ygtkpkgdetailview.cc Thu Apr 15 15:22:00 2010
@@ -61,7 +61,10 @@
str += "\">";
if (list.size() == 1) {
Ypp::Selectable &sel = list.get (0);
- str += "<b>" + sel.name() + "</b> - " + sel.summary();
+ if (gtk_widget_get_default_direction() == GTK_TEXT_DIR_RTL)
+ str += sel.summary() + " - " + "<b>" + sel.name() + "</b>";
+ else
+ str += "<b>" + sel.name() + "</b> - " + sel.summary();
}
else {
str += "<b>";
Modified: trunk/gtk/src/pkg/ygtkpkgfilterview.cc
URL: http://svn.opensuse.org/viewcvs/yast/trunk/gtk/src/pkg/ygtkpkgfilterview.cc?rev=61712&r1=61711&r2=61712&view=diff
==============================================================================
--- trunk/gtk/src/pkg/ygtkpkgfilterview.cc (original)
+++ trunk/gtk/src/pkg/ygtkpkgfilterview.cc Thu Apr 15 15:22:00 2010
@@ -599,8 +599,8 @@
column = gtk_tree_view_column_new_with_attributes (
NULL, renderer, "text", YGtkPkgFilterModel::COUNT_NUMBER_COLUMN,
"sensitive", YGtkPkgFilterModel::ENABLED_COLUMN, NULL);
- g_object_set (G_OBJECT (renderer), "xalign", 1.0, "scale", PANGO_SCALE_SMALL,
- "foreground", "#8c8c8c", NULL);
+ g_object_set (G_OBJECT (renderer), "xalign", 1.0,
+ "scale", PANGO_SCALE_SMALL, "foreground", "#8c8c8c", NULL);
ygtk_tree_view_append_column (YGTK_TREE_VIEW (view), column);
GtkTreeSelection *selection = gtk_tree_view_get_selection (view);
Modified: trunk/gtk/src/pkg/ygtkpkghistorydialog.cc
URL: http://svn.opensuse.org/viewcvs/yast/trunk/gtk/src/pkg/ygtkpkghistorydialog.cc?rev=61712&r1=61711&r2=61712&view=diff
==============================================================================
--- trunk/gtk/src/pkg/ygtkpkghistorydialog.cc (original)
+++ trunk/gtk/src/pkg/ygtkpkghistorydialog.cc Thu Apr 15 15:22:00 2010
@@ -11,7 +11,6 @@
#include "YGDialog.h"
#include "YGPackageSelector.h"
#include "ygtkpkglistview.h"
-#include "ygtkcellrenderertextpixbuf.h"
#include
#include "ygtktreeview.h"
@@ -120,7 +119,8 @@
std::string _name;
_name.reserve (action.size() + name.size() + 64);
- _name = std::string ("<b>") + action + "</b> " + name;
+ _name = "<b>";
+ _name += action + "</b> " + name;
int xpad = 0; // autoReq ? 25 : 0;
const char *repo_icon = 0, *color = 0;
@@ -128,15 +128,17 @@
repo_icon = getRepositoryStockIcon (repositoryUrl);
if (repositoryUrl.find ("update") != std::string::npos) {
//color = "red";
- _name += " (";
- _name += _("patch");
- _name += ")</span>";
+ std::string tag;
+ tag.reserve (64);
+ tag = "("; tag += _("patch"); tag += ")</span>";
+ _name += " "; _name += tag;
}
}
if (autoReq) {
- _name += " (";
- _name += _("auto");
- _name += ")</span>";
+ std::string tag;
+ tag.reserve (64);
+ tag = "("; tag += _("auto"); tag += ")</span>";
+ _name += " "; _name += tag;
}
gtk_list_store_append (store, &iter);
@@ -430,49 +432,22 @@
text.reserve (254);
const char *icon = 0;
- int col;
- for (col = 0; gtk_tree_view_get_column (view, col); col++)
- if (column == gtk_tree_view_get_column (view, col))
- break;
-/*
- char *color;
- gtk_tree_model_get (model, &iter, LogListHandler::COLOR_COLUMN, &color, -1);
- bool has_color = color != NULL;
- g_free (color);
-*/
- switch (col) {
- case LogListHandler::REPOSITORY_COLUMN: {
- char *name, *url;
- gtk_tree_model_get (model, &iter,
- LogListHandler::REPOSITORY_COLUMN, &name,
- LogListHandler::REPOSITORY_URL_COLUMN, &url, -1);
- if (name && *name) {
- text = name;
- if (url && *url) {
- text += "\n<small>"; text += url; text += "</small>";
- icon = getRepositoryStockIcon (url);
- }
- if (url)
- g_free (url);
- }
- if (name)
- g_free (name);
- break;
- }
- case LogListHandler::NAME_COLUMN:
- case LogListHandler::VERSION_URL_COLUMN:
- case LogListHandler::REQBY_COLUMN: {
- char *str;
- gtk_tree_model_get (model, &iter, col, &str, -1);
- if (str && *str) {
- text = str;
-/* if (has_color && col != LogListHandler::REQBY_COLUMN)
- text += _(" (patch)");*/
+ if (column == gtk_tree_view_get_column (view, 2)) { // repository
+ char *name, *url;
+ gtk_tree_model_get (model, &iter,
+ LogListHandler::REPOSITORY_COLUMN, &name,
+ LogListHandler::REPOSITORY_URL_COLUMN, &url, -1);
+ if (name && *name) {
+ text = name;
+ if (url && *url) {
+ text += "\n<small>"; text += url; text += "</small>";
+ icon = getRepositoryStockIcon (url);
}
- if (str)
- g_free (str);
- break;
+ if (url)
+ g_free (url);
}
+ if (name)
+ g_free (name);
}
if (!text.empty()) {
@@ -507,7 +482,7 @@
YGtkPkgHistoryDialog::YGtkPkgHistoryDialog()
{
- GtkCellRenderer *renderer;
+ GtkCellRenderer *renderer, *pix_renderer;
GtkTreeViewColumn *column;
GtkWidget *log_view = ygtk_tree_view_new();
@@ -520,18 +495,28 @@
g_signal_connect (G_OBJECT (log_view), "right-click",
G_CALLBACK (right_click_cb), this);
- renderer = gtk_cell_renderer_pixbuf_new();
- column = gtk_tree_view_column_new_with_attributes (NULL, renderer,
- "icon-name", LogListHandler::ICON_COLUMN, NULL);
- gtk_tree_view_column_set_sizing (column, GTK_TREE_VIEW_COLUMN_FIXED);
- gtk_tree_view_column_set_fixed_width (column, 38);
- ygtk_tree_view_append_column (YGTK_TREE_VIEW (log_view), column);
+ bool reverse = gtk_widget_get_default_direction() == GTK_TEXT_DIR_RTL;
+
+ column = gtk_tree_view_column_new();
+ gtk_tree_view_column_set_title (column, _("Action"));
+ gtk_tree_view_column_set_spacing (column, 6);
+
+ pix_renderer = gtk_cell_renderer_pixbuf_new();
+ if (!reverse)
+ gtk_tree_view_column_pack_start (column, pix_renderer, FALSE);
renderer = gtk_cell_renderer_text_new();
- column = gtk_tree_view_column_new_with_attributes (_("Action"), renderer,
+ gtk_tree_view_column_pack_start (column, renderer, TRUE);
+ gtk_tree_view_column_set_attributes (column, renderer,
"markup", LogListHandler::NAME_COLUMN, "xpad", LogListHandler::XPAD_COLUMN,
"foreground", LogListHandler::COLOR_COLUMN, NULL);
g_object_set (G_OBJECT (renderer), "ellipsize", PANGO_ELLIPSIZE_END, NULL);
+
+ if (reverse)
+ gtk_tree_view_column_pack_start (column, pix_renderer, FALSE);
+ gtk_tree_view_column_set_attributes (column, pix_renderer,
+ "icon-name", LogListHandler::ICON_COLUMN, NULL);
+
gtk_tree_view_column_set_resizable (column, TRUE);
gtk_tree_view_column_set_sizing (column, GTK_TREE_VIEW_COLUMN_FIXED);
gtk_tree_view_column_set_expand (column, TRUE);
@@ -547,11 +532,24 @@
gtk_tree_view_column_set_fixed_width (column, 120);
ygtk_tree_view_append_column (YGTK_TREE_VIEW (log_view), column);
- renderer = ygtk_cell_renderer_text_pixbuf_new();
- column = gtk_tree_view_column_new_with_attributes (_("Repository"), renderer,
- "text", LogListHandler::REPOSITORY_COLUMN,
+ column = gtk_tree_view_column_new();
+ gtk_tree_view_column_set_title (column, _("Repository"));
+ gtk_tree_view_column_set_spacing (column, 2);
+
+ pix_renderer = gtk_cell_renderer_pixbuf_new();
+ if (!reverse)
+ gtk_tree_view_column_pack_start (column, pix_renderer, FALSE);
+
+ renderer = gtk_cell_renderer_text_new();
+ gtk_tree_view_column_pack_start (column, renderer, TRUE);
+ gtk_tree_view_column_set_attributes (column, renderer,
+ "text", LogListHandler::REPOSITORY_COLUMN, NULL);
+
+ if (reverse)
+ gtk_tree_view_column_pack_start (column, pix_renderer, FALSE);
+ gtk_tree_view_column_set_attributes (column, pix_renderer,
"icon-name", LogListHandler::REPOSITORY_ICON_COLUMN, NULL);
- g_object_set (G_OBJECT (renderer), "size", 16, NULL);
+
gtk_tree_view_column_set_resizable (column, TRUE);
gtk_tree_view_column_set_sizing (column, GTK_TREE_VIEW_COLUMN_FIXED);
gtk_tree_view_column_set_fixed_width (column, 140);
Modified: trunk/gtk/src/pkg/ygtkpkglistview.cc
URL: http://svn.opensuse.org/viewcvs/yast/trunk/gtk/src/pkg/ygtkpkglistview.cc?rev=61712&r1=61711&r2=61712&view=diff
==============================================================================
--- trunk/gtk/src/pkg/ygtkpkglistview.cc (original)
+++ trunk/gtk/src/pkg/ygtkpkglistview.cc Thu Apr 15 15:22:00 2010
@@ -14,9 +14,7 @@
#include "ygtkpkglistview.h"
#include "ygtktreeview.h"
#include "ygtktreemodel.h"
-#include "ygtkcellrenderertextpixbuf.h"
#include "ygtkcellrendererbutton.h"
-#include "ygtkcellrenderersidebutton.h"
#include
#include
@@ -489,7 +487,7 @@
YGUI::ui()->normalCursor();
}
-static void upgrade_toggled_cb (YGtkCellRendererSideButton *renderer, gchar *path_str,
+static void upgrade_toggled_cb (YGtkCellRendererButton *renderer, gchar *path_str,
YGtkPkgListView *pThis)
{
YGUI::ui()->busyCursor();
@@ -685,40 +683,48 @@
GtkTreeView *view = GTK_TREE_VIEW (impl->view);
if (header)
gtk_tree_view_set_headers_visible (view, TRUE);
+ GtkTreeViewColumn *column = gtk_tree_view_column_new();
+ gtk_tree_view_column_set_title (column, header);
+
GtkCellRenderer *renderer;
+
if (property == VERSION_PROP) {
- renderer = ygtk_cell_renderer_side_button_new();
+ renderer = ygtk_cell_renderer_button_new();
+ if (gtk_widget_get_default_direction() == GTK_TEXT_DIR_RTL)
+ gtk_tree_view_column_pack_start (column, renderer, FALSE);
+ else
+ gtk_tree_view_column_pack_end (column, renderer, FALSE);
+ gtk_tree_view_column_set_attributes (column, renderer,
+ "visible", HAS_UPGRADE_PROP, "active", TO_UPGRADE_PROP, NULL);
g_object_set (G_OBJECT (renderer), "stock-id", GTK_STOCK_GO_UP, NULL);
g_signal_connect (G_OBJECT (renderer), "toggled",
G_CALLBACK (upgrade_toggled_cb), this);
}
- else if (property == REPOSITORY_PROP)
- renderer = ygtk_cell_renderer_text_pixbuf_new();
- else
- renderer = gtk_cell_renderer_text_new();
- PangoEllipsizeMode ellipsize = PANGO_ELLIPSIZE_END;
- if (size >= 0 && property != NAME_SUMMARY_PROP)
- ellipsize = PANGO_ELLIPSIZE_MIDDLE;
- g_object_set (G_OBJECT (renderer), "ellipsize", ellipsize, NULL);
+ else if (property == REPOSITORY_PROP) {
+ renderer = gtk_cell_renderer_pixbuf_new();
+ if (gtk_widget_get_default_direction() == GTK_TEXT_DIR_RTL)
+ gtk_tree_view_column_pack_end (column, renderer, FALSE);
+ else
+ gtk_tree_view_column_pack_start (column, renderer, FALSE);
+ gtk_tree_view_column_set_attributes (column, renderer,
+ "icon-name", REPOSITORY_STOCK_PROP, NULL);
+ }
+
+ renderer = gtk_cell_renderer_text_new();
+ gtk_tree_view_column_pack_start (column, renderer, TRUE);
+ gtk_tree_view_column_set_attributes (column, renderer,
+ "markup", property, "sensitive", IS_LOCKED_PROP, NULL);
- GtkTreeViewColumn *column = gtk_tree_view_column_new_with_attributes (
- header, renderer, "markup", property, "sensitive", IS_LOCKED_PROP, NULL);
if (impl->colorModified)
gtk_tree_view_column_add_attribute (column, renderer,
"cell-background", BACKGROUND_PROP);
-/* if (impl->indentAuto && (property == NAME_PROP || property == ACTION_NAME_PROP ||
- property == NAME_SUMMARY_PROP))*/
if (impl->indentAuto)
gtk_tree_view_column_add_attribute (column, renderer, "xpad", XPAD_PROP);
- if (property == VERSION_PROP) {
- gtk_tree_view_column_add_attribute (column, renderer,
- "button-visible", HAS_UPGRADE_PROP);
- gtk_tree_view_column_add_attribute (column, renderer,
- "active", TO_UPGRADE_PROP);
- }
- else if (property == REPOSITORY_PROP)
- gtk_tree_view_column_add_attribute (column, renderer,
- "icon-name", REPOSITORY_STOCK_PROP);
+
+ PangoEllipsizeMode ellipsize = PANGO_ELLIPSIZE_END;
+ if (size >= 0 && property != NAME_SUMMARY_PROP)
+ ellipsize = PANGO_ELLIPSIZE_MIDDLE;
+ g_object_set (G_OBJECT (renderer), "ellipsize", ellipsize, NULL);
if (size != -1) // on several columns
gtk_tree_view_set_rules_hint (view, TRUE);
Modified: trunk/gtk/src/ygtktreeview.c
URL: http://svn.opensuse.org/viewcvs/yast/trunk/gtk/src/ygtktreeview.c?rev=61712&r1=61711&r2=61712&view=diff
==============================================================================
--- trunk/gtk/src/ygtktreeview.c (original)
+++ trunk/gtk/src/ygtktreeview.c Thu Apr 15 15:22:00 2010
@@ -173,15 +173,31 @@
if (gtk_widget_get_default_direction() == GTK_TEXT_DIR_RTL) {
gtk_widget_set_direction (GTK_WIDGET (view), GTK_TEXT_DIR_LTR);
- GList *renderers = gtk_cell_layout_get_cells (GTK_CELL_LAYOUT (column));
- GtkCellRenderer *renderer = (GtkCellRenderer *) renderers->data;
- if (GTK_IS_CELL_RENDERER_TEXT (renderer)) {
- g_object_set (G_OBJECT (renderer), "alignment", PANGO_ALIGN_RIGHT, NULL);
-
- PangoEllipsizeMode ellipsize;
- g_object_get (G_OBJECT (renderer), "ellipsize", &ellipsize, NULL);
- if (ellipsize == PANGO_ELLIPSIZE_END)
- g_object_set (G_OBJECT (renderer), "ellipsize", PANGO_ELLIPSIZE_START, NULL);
+ GList *renderers = gtk_cell_layout_get_cells (GTK_CELL_LAYOUT (column)), *i;
+ for (i = renderers; i; i = i->next) {
+ GtkCellRenderer *renderer = (GtkCellRenderer *) i->data;
+ if (GTK_IS_CELL_RENDERER_TEXT (renderer)) {
+ PangoAlignment alignment;
+ g_object_get (G_OBJECT (renderer), "alignment", &alignment, NULL);
+ if (alignment == PANGO_ALIGN_LEFT)
+ alignment = PANGO_ALIGN_RIGHT;
+ else if (alignment == PANGO_ALIGN_RIGHT)
+ alignment = PANGO_ALIGN_LEFT;
+ g_object_set (G_OBJECT (renderer), "alignment", alignment, NULL);
+
+ gfloat xalign;
+ g_object_get (G_OBJECT (renderer), "xalign", &xalign, NULL);
+ xalign = 1.0 - xalign;
+ g_object_set (G_OBJECT (renderer), "xalign", xalign, NULL);
+
+ PangoEllipsizeMode ellipsize;
+ g_object_get (G_OBJECT (renderer), "ellipsize", &ellipsize, NULL);
+ if (ellipsize == PANGO_ELLIPSIZE_END)
+ ellipsize = PANGO_ELLIPSIZE_START;
+ else if (ellipsize == PANGO_ELLIPSIZE_START)
+ ellipsize = PANGO_ELLIPSIZE_END;
+ g_object_set (G_OBJECT (renderer), "ellipsize", ellipsize, NULL);
+ }
}
g_list_free (renderers);
pos = 0;
--
To unsubscribe, e-mail: yast-commit+unsubscribe@opensuse.org
For additional commands, e-mail: yast-commit+help@opensuse.org