r439 - trunk/src/target/OM-2007/applications/openmoko-mainmenu/src
tongsong_li at gta01.hmw-consulting.de
tongsong_li at gta01.hmw-consulting.de
Wed Dec 20 11:40:42 CET 2006
Author: tongsong_li
Date: 2006-12-20 11:40:31 +0100 (Wed, 20 Dec 2006)
New Revision: 439
Modified:
trunk/src/target/OM-2007/applications/openmoko-mainmenu/src/mainmenu.c
trunk/src/target/OM-2007/applications/openmoko-mainmenu/src/mainmenu.h
trunk/src/target/OM-2007/applications/openmoko-mainmenu/src/mokoiconview.c
trunk/src/target/OM-2007/applications/openmoko-mainmenu/src/support.c
Log:
update mokoiconview.c
Modified: trunk/src/target/OM-2007/applications/openmoko-mainmenu/src/mainmenu.c
===================================================================
--- trunk/src/target/OM-2007/applications/openmoko-mainmenu/src/mainmenu.c 2006-12-20 10:36:51 UTC (rev 438)
+++ trunk/src/target/OM-2007/applications/openmoko-mainmenu/src/mainmenu.c 2006-12-20 10:40:31 UTC (rev 439)
@@ -137,15 +137,23 @@
//gtk_widget_set_name (bg_item, "gtkeventbox-black");
//gtk_container_add (bg_item, mm->item_total);
- //mm->icon_view = gtk_icon_view_new ();
mm->icon_view = MOKO_ICON_VIEW(moko_icon_view_new());
- gtk_widget_show (mm->icon_view);
- //moko_icon_view_set_item_width(mm->icon_view, ITEM_WIDTH);
- //moko_icon_view_set_columns (mm->icon_view, COLUMN_NUM);
+ //gtk_widget_set_direction (GTK_WIDGET (mm->icon_view), GTK_TEXT_DIR_RTL);
+ moko_icon_view_set_item_width(mm->icon_view, ITEM_WIDTH);
+ moko_icon_view_set_columns (mm->icon_view, COLUMN_NUM);
moko_icon_view_set_margin (mm->icon_view, ITEM_MARGIN);
moko_icon_view_set_row_spacing (mm->icon_view, ROW_SPACING);
- //moko_icon_view_set_column_spacing (mm->icon_view, COLUMN_SPACING);
+ moko_icon_view_set_column_spacing (mm->icon_view, COLUMN_SPACING);
+
+ //mm->icon_view = gtk_icon_view_new ();
+ //gtk_icon_view_set_item_width(mm->icon_view, ITEM_WIDTH);
+ //gtk_icon_view_set_columns (mm->icon_view, COLUMN_NUM);
+ //gtk_icon_view_set_margin (mm->icon_view, ITEM_MARGIN);
+ //gtk_icon_view_set_row_spacing (mm->icon_view, ROW_SPACING);
+ //gtk_icon_view_set_column_spacing (mm->icon_view, COLUMN_SPACING);
+
//moko_icon_view_set_selection_mode (mm->icon_view, GTK_SELECTION_SINGLE);
+ gtk_widget_show (mm->icon_view);
mm->list_store = gtk_list_store_new (3, GDK_TYPE_PIXBUF, G_TYPE_STRING, G_TYPE_POINTER);
@@ -168,7 +176,7 @@
mm->hbox = gtk_hbox_new (FALSE, FALSE);
gtk_widget_show (mm->hbox);
- //gtk_box_pack_start (mm, bg_main, FALSE, FALSE, 0);
+ gtk_box_pack_start (mm, bg_main, FALSE, FALSE, 0);
gtk_container_add (bg_main, mm->hbox);
gtk_box_pack_start (mm->hbox, mm->section_name, TRUE, TRUE, 10);
gtk_box_pack_end (mm->hbox, mm->item_total, FALSE, FALSE, 10);
Modified: trunk/src/target/OM-2007/applications/openmoko-mainmenu/src/mainmenu.h
===================================================================
--- trunk/src/target/OM-2007/applications/openmoko-mainmenu/src/mainmenu.h 2006-12-20 10:36:51 UTC (rev 438)
+++ trunk/src/target/OM-2007/applications/openmoko-mainmenu/src/mainmenu.h 2006-12-20 10:40:31 UTC (rev 439)
@@ -39,14 +39,13 @@
/*widgets property(s)*/
#define COLUMN_NUM 3
#define ITEM_WIDTH 140
-#define ITEM_HEIGHT 120
#define ITEM_MARGIN 0
-#define ROW_SPACING 20
+#define ROW_SPACING 40
#define COLUMN_SPACING 0
#define ITME_TOTAL_WIDTH 7
-#define PIXBUF_WIDTH 100
-#define PIXBUF_HEIGHT 100
+#define PIXBUF_WIDTH 120 //? useless
+#define PIXBUF_HEIGHT 120//? useless
#define SECTION_ALG_X 0.6
#define SECTION_ALG_Y 0.5
@@ -74,8 +73,8 @@
//GtkWidget widget;
//GtkIconView *icon_view;
- //GtkWidget *icon_view;
- MokoIconView *icon_view;
+ GtkWidget *icon_view;
+ //MokoIconView *icon_view;
GtkListStore *list_store;
GtkWidget *scrolled;
GtkHBox *hbox;
Modified: trunk/src/target/OM-2007/applications/openmoko-mainmenu/src/mokoiconview.c
===================================================================
--- trunk/src/target/OM-2007/applications/openmoko-mainmenu/src/mokoiconview.c 2006-12-20 10:36:51 UTC (rev 438)
+++ trunk/src/target/OM-2007/applications/openmoko-mainmenu/src/mokoiconview.c 2006-12-20 10:40:31 UTC (rev 439)
@@ -33,6 +33,7 @@
/* Bounding boxes */
gint x, y;
gint width, height;
+ gint colspan;
gint pixbuf_x, pixbuf_y;
gint pixbuf_offset_x, pixbuf_offset_y;
@@ -146,8 +147,6 @@
PROP_MARGIN
};
-//GdkPixbuf *frame;
-
/* GObject signals */
static void
moko_icon_view_finalize (GObject *object);
@@ -790,10 +789,12 @@
icon_view->priv->pixbuf_offset_y = 20;
icon_view->priv->layout_offset_x = 0;
icon_view->priv->layout_offset_y = 0;
- icon_view->priv->max_text_len = 10;
+ icon_view->priv->max_text_len = 30;
icon_view->priv->layout = gtk_widget_create_pango_layout (GTK_WIDGET (icon_view), NULL);
+ icon_view->priv->decoration = gdk_pixbuf_new_from_file (PKGDATADIR"/main_menu_sel_icon.png", NULL);
+
pango_layout_set_wrap (icon_view->priv->layout, PANGO_WRAP_WORD_CHAR);
GTK_WIDGET_SET_FLAGS (icon_view, GTK_CAN_FOCUS);
@@ -982,13 +983,19 @@
dest_x = 0;
dest_y = 0;
- width = gdk_pixbuf_get_width (src);
- height = gdk_pixbuf_get_height (src);
- offset_x = 0;
- offset_y = 0;
+ offset_x = 10;
+ offset_y = 10;
+ width = gdk_pixbuf_get_width (src) + 2*offset_x;
+ height = gdk_pixbuf_get_height (src) + 2*offset_y;
scale_x = width;
scale_y = height;
alpha = gdk_pixbuf_get_has_alpha (src);
+
+ dest = gdk_pixbuf_new (gdk_pixbuf_get_colorspace (src),
+ TRUE,
+ gdk_pixbuf_get_bits_per_sample (src),
+ width,
+ height);
g_debug ("test1---------------------");
g_debug ("width = %d, height = %d", width, height);
@@ -997,7 +1004,7 @@
dest, 0, 0);
*/
g_debug ("test2---------------------");
- gdk_pixbuf_composite (decoration, src,
+ gdk_pixbuf_composite (src, decoration,
dest_x, dest_y,
width, height,
offset_x, offset_y,
@@ -1014,16 +1021,14 @@
GdkRectangle *area)
{
gint focus_width, focus_pad;
- GdkPixbuf *pixbuf, *tmp;
+ GdkPixbuf *pixbuf, *tmp, *scaled;
GtkStateType state;
gboolean rtl = gtk_widget_get_direction (GTK_WIDGET (icon_view)) == GTK_TEXT_DIR_RTL;
+
if (!icon_view->priv->decoration)
{
- GdkPixbuf *tmp = gdk_pixbuf_new_from_file (PKGDATADIR"/main_menu_sel_icon.png", NULL);
- icon_view->priv->decoration = gdk_pixbuf_scale_simple (tmp,
- (item->width+2*FRAME_OFFSET), (item->height+2*FRAME_OFFSET), GDK_INTERP_NEAREST);
- g_object_unref (tmp);
+ g_debug ("Error: can't get decoration image");
}
g_debug (":) begin-----------------");
@@ -1042,34 +1047,57 @@
if (icon_view->priv->pixbuf_column != -1)
{
- tmp = moko_icon_view_get_item_icon (icon_view, item);
- if (item->selected)
+ pixbuf = moko_icon_view_get_item_icon (icon_view, item);
+
+
+
+ if (item->selected)
{
- //pixbuf = create_colorized_pixbuf (tmp,
- // >K_WIDGET (icon_view)->style->base[state]);
- //pixbuf = moko_composite_selected_pixbuf (tmp, frame);
- //g_object_unref (tmp);
- //g_debug ("pixbuf_width = %d, pixbufheight = %d", item->pixbuf_width, item->pixbuf_height);
- //g_debug ("pixbuf_x = %d, pixbuf_y = %d", item->pixbuf_x, item->pixbuf_y);
- gdk_draw_pixbuf (icon_view->priv->bin_window, NULL, icon_view->priv->decoration,
- 0, 0,
- (item->x-FRAME_OFFSET), (item->y-FRAME_OFFSET),
- (item->width+2*FRAME_OFFSET), (item->height+2*FRAME_OFFSET),
- GDK_RGB_DITHER_NORMAL,
- (item->width+2*FRAME_OFFSET), (item->height+2*FRAME_OFFSET));
+ gint decr_width = 10;
+ gint scaled_w, scaled_h;
+ gint scaled_x, scaled_y;
+ scaled_w = item->pixbuf_width - 2*decr_width;
+ scaled_h = item->pixbuf_height - 2*decr_width;
+ scaled_x = item->pixbuf_x + decr_width;
+ scaled_y = item->pixbuf_y + decr_width;
+
+ scaled = gdk_pixbuf_scale_simple (pixbuf,
+ scaled_w, scaled_h, GDK_INTERP_NEAREST);
+
+ tmp = gdk_pixbuf_scale_simple (icon_view->priv->decoration,
+ item->pixbuf_width, item->pixbuf_width,
+ GDK_INTERP_NEAREST);
+
+ gdk_draw_pixbuf (icon_view->priv->bin_window, NULL,
+ tmp,
+ 0, 0,
+ item->pixbuf_x, item->pixbuf_y,
+ item->pixbuf_width, item->pixbuf_height,
+ GDK_RGB_DITHER_NORMAL,
+ item->pixbuf_width, item->pixbuf_height);
+ g_debug ("frame(%d,%d)", item->x, item->y);
+ gdk_draw_pixbuf (icon_view->priv->bin_window, NULL, scaled,
+ 0, 0,
+ scaled_x, scaled_y,
+ scaled_w, scaled_h,
+ GDK_RGB_DITHER_NORMAL,
+ scaled_w, scaled_h);
+ g_object_unref (tmp);
+ g_object_unref (scaled);
+
}
else
- pixbuf = tmp;
-
- gdk_draw_pixbuf (icon_view->priv->bin_window, NULL, pixbuf,
- 0, 0,
- item->pixbuf_x, item->pixbuf_y,
- item->pixbuf_width, item->pixbuf_height,
- GDK_RGB_DITHER_NORMAL,
- item->pixbuf_width, item->pixbuf_height);
-
+ {
+ gdk_draw_pixbuf (icon_view->priv->bin_window, NULL, pixbuf,
+ 0, 0,
+ item->pixbuf_x, item->pixbuf_y,
+ item->pixbuf_width, item->pixbuf_height,
+ GDK_RGB_DITHER_NORMAL,
+ item->pixbuf_width, item->pixbuf_height);
+ }
+
}
-g_debug (":) 1 -----------------");
+g_debug (":) 4 -----------------");
if (icon_view->priv->text_column != -1 ||
icon_view->priv->markup_column != -1)
@@ -1891,6 +1919,7 @@
g_debug ("Vlayout_width = %d, padding = %d, spacing = %d, pixbuf_width = %d",
item->layout_width, padding, spacing, item->pixbuf_width);
}
+
}
static void
@@ -1934,10 +1963,11 @@
{
colspan = item->pixbuf_width / item_width + 1;
maximum_layout_width = MOKO_MAX (colspan * item_width - item->pixbuf_width - icon_view->priv->spacing - 2 * (ICON_TEXT_PADDING + focus_width + focus_pad), 50);
+ g_debug ("maximum_layout_width = %d", maximum_layout_width);
}
else
maximum_layout_width = MOKO_MAX (item_width, item->pixbuf_width);
- //maximum_layout_width = item_width;
+ g_debug ("maximum_layout_width = %d", maximum_layout_width);
if (icon_view->priv->markup_column != -1 ||
@@ -1946,10 +1976,8 @@
moko_icon_view_update_item_text (icon_view, item);
pango_layout_set_alignment (icon_view->priv->layout, PANGO_ALIGN_CENTER);
- pango_layout_set_width (icon_view->priv->layout, icon_view->priv->width* PANGO_SCALE);//maximum_layout_width * PANGO_SCALE);
- //pango_layout_iter_set_line_yrange (icon_view->priv->layout, 0, 1);
- //pango_layout_set_ellipsize (icon_view->priv->layout, PANGO_ELLIPSIZE_END);
-
+ pango_layout_set_width (icon_view->priv->layout, maximum_layout_width * PANGO_SCALE);
+
pango_layout_get_pixel_size (icon_view->priv->layout, &layout_width, &layout_height);
item->layout_width = layout_width;
@@ -1968,16 +1996,16 @@
{
item->width = item->layout_width + padding + spacing + item->pixbuf_width;
item->height = MOKO_MAX (item->layout_height + padding, item->pixbuf_height);
- g_debug ("Hlayout_width = %d, padding = %d, spacing = %d, pixbuf_width = %d",
- item->layout_width, padding, spacing, item->pixbuf_width);
}
else
{
item->width = MOKO_MAX (item->layout_width + padding, item->pixbuf_width);
item->height = item->layout_height + padding + spacing + item->pixbuf_height;
- g_debug ("Vlayout_width = %d, padding = %d, spacing = %d, pixbuf_width = %d",
- item->layout_width, padding, spacing, item->pixbuf_width);
}
+ g_debug ("WH: item(%d,%d) pixbuf(%d,%d) layout(%d,%d)",
+ item->width, item->height,
+ item->pixbuf_width, item->pixbuf_height,
+ item->layout_width, item->layout_height);
}
@@ -2000,7 +2028,7 @@
}
static GList *
-gtk_icon_view_layout_single_row (MokoIconView *icon_view,
+moko_icon_view_layout_single_row (MokoIconView *icon_view,
GList *first_item,
gint item_width,
gint row,
@@ -2014,7 +2042,7 @@
gint colspan;
gboolean rtl = gtk_widget_get_direction (GTK_WIDGET (icon_view)) == GTK_TEXT_DIR_RTL;
- x = 0;
+ x = 0;
col = 0;
max_height = 0;
max_pixbuf_height = 0;
@@ -2025,6 +2053,7 @@
"focus-line-width", &focus_width,
"focus-padding", &focus_pad,
NULL);
+ g_debug ("focus_w = %d, focus_pad = %d", focus_width, focus_pad);
x += icon_view->priv->margin;
current_width += 2 * icon_view->priv->margin;
@@ -2032,17 +2061,16 @@
while (items)
{
+ gint last_width;
MokoIconViewItem *item = items->data;
moko_icon_view_calculate_item_size (icon_view, item, item_width);
colspan = 1 + (item->width - 1) / (item_width + icon_view->priv->column_spacing);
- //current_width += colspan * (item_width + icon_view->priv->column_spacing);
- current_width += item_width + icon_view->priv->column_spacing;
-
-g_debug ("draw signal row: ");
-g_debug ("colspan:%d, current:%d, item->width:%d, item_width:%d", colspan, current_width, item->width, item_width);
-sleep (1);
+ last_width = current_width;
+ current_width += colspan * (item_width + icon_view->priv->column_spacing);
+
+
if (items != first_item)
{
if ((icon_view->priv->columns <= 0 && current_width > GTK_WIDGET (icon_view)->allocation.width) ||
@@ -2050,9 +2078,9 @@
break;
}
- item->y = *y+(icon_view->priv->row_spacing/2);//SUNZY:modify item box y coordinate, originalty value is "y = *y".
- //item->x = rtl ? GTK_WIDGET (icon_view)->allocation.width - MOKO_MAX (item_width, item->width) - x : x;
- item->x = x;
+ item->y = *y + icon_view->priv->row_spacing/2;//SUNZY
+ item->x = rtl ? GTK_WIDGET (icon_view)->allocation.width - MOKO_MAX (item_width, item->width) - x : x;
+
if (icon_view->priv->orientation == GTK_ORIENTATION_HORIZONTAL)
{
if (rtl)
@@ -2094,6 +2122,12 @@
item->col = col;
col += colspan;
+ item->x = last_width;
+ g_debug("item: (%d,%d) pixbuf (%d,%d) layout (%d,%d), current_width = %d",
+ item->x, item->y, item->pixbuf_x, item->pixbuf_y,
+ item->layout_x, item->layout_y,
+ current_width);
+
items = items->next;
}
@@ -2101,6 +2135,7 @@
*y += max_height + icon_view->priv->row_spacing;
+
/* Now go through the row again and align the icons */
for (items = first_item; items != last_item; items = items->next)
{
@@ -2128,13 +2163,16 @@
if (rtl)
item->col = col - 1 - item->col;
+ g_debug("LAST TIME item: (%d,%d) pixbuf (%d,%d) layout (%d,%d)",
+ item->x, item->y, item->pixbuf_x, item->pixbuf_y,
+ item->layout_x, item->layout_y);
}
return last_item;
}
static GList *
-moko_icon_view_layout_single_row (MokoIconView *icon_view,
+gtk_icon_view_layout_single_row (MokoIconView *icon_view,
GList *first_item,
gint item_width,
gint row,
@@ -2170,11 +2208,11 @@
moko_icon_view_calculate_item_size (icon_view, item, item_width);
- colspan = 1 + (item->width - 1) / (item_width + icon_view->priv->column_spacing);
- current_width += colspan * (item_width + icon_view->priv->column_spacing);
+ //colspan = 1 + (item->width - 1) / (item_width + icon_view->priv->column_spacing);
+ //current_width += colspan * (item_width + icon_view->priv->column_spacing);
+ current_width += icon_view->priv->width + icon_view->priv->column_spacing;
g_debug ("draw signal row: ");
g_debug ("colspan:%d, current:%d, item->width:%d, item_width:%d, maximum_width:%d", colspan, current_width, item->width, item_width, *maximum_width);
-sleep (1);
if (items != first_item)
{
if ((icon_view->priv->columns <= 0 && current_width > GTK_WIDGET (icon_view)->allocation.width) ||
@@ -2183,7 +2221,7 @@
}
item->y = *y+(icon_view->priv->row_spacing/2);//SUNZY:modify item box y coordinate, originalty value is "y = *y".
- item->x = rtl ? GTK_WIDGET (icon_view)->allocation.width - MOKO_MAX (item_width, item->width) - x : x;
+ item->x = rtl ? GTK_WIDGET (icon_view)->allocation.width - icon_view->priv->width-x : x;
if (icon_view->priv->orientation == GTK_ORIENTATION_HORIZONTAL)
{
@@ -2225,7 +2263,7 @@
item->row = row;
item->col = col;
- col += colspan;
+ col ++;//= colspan;
items = items->next;
}
@@ -2252,10 +2290,10 @@
item->layout_y = item->y + ICON_TEXT_PADDING + focus_width + focus_pad;
}
/* Update the bounding box */
- item->y = item->pixbuf_y;
+ // item->y = item->pixbuf_y;
/* We may want to readjust the new y coordinate. */
- if (item->y + item->height > *y)
+ if ((item->y + item->height) > *y)
*y = item->y + item->height;
if (rtl)
Modified: trunk/src/target/OM-2007/applications/openmoko-mainmenu/src/support.c
===================================================================
--- trunk/src/target/OM-2007/applications/openmoko-mainmenu/src/support.c 2006-12-20 10:36:51 UTC (rev 438)
+++ trunk/src/target/OM-2007/applications/openmoko-mainmenu/src/support.c 2006-12-20 10:40:31 UTC (rev 439)
@@ -39,7 +39,7 @@
gtk_list_store_append (store, &iter);
pixbuf = gdk_pixbuf_new_from_file_at_size (icon_path, PIXBUF_WIDTH, PIXBUF_HEIGHT, NULL);// ADD Gerro handle later
-
+ //pixbuf = gdk_pixbuf_new_from_file (icon_path, NULL);// ADD Gerro handle later
gtk_list_store_set (store, &iter, PIXBUF_COLUMN, pixbuf, TEXT_COLUMN, icon_name, -1);
g_object_unref (pixbuf);
@@ -52,11 +52,11 @@
moko_fill_model(store,"/usr/share/pixmaps/anjuta.xpm","anjuta");
moko_fill_model(store,"/usr/share/pixmaps/anjuta.xpm","anjuta");
moko_fill_model(store,"/usr/share/pixmaps/battstat.png","battstat");
- moko_fill_model(store,"/usr/share/pixmaps/gdm.png","gdm");
- moko_fill_model(store,"/usr/share/pixmaps/gdm-setup.png","gdm-setup");
- moko_fill_model(store,"/usr/share/pixmaps/gnome-eyes.png","gnome-eyes");
- moko_fill_model(store,"/usr/share/pixmaps/gnome-geg12.png","gnome-geg12");
- moko_fill_model(store,"/usr/share/pixmaps/gdm.xpm","gdm");
+ //moko_fill_model(store,"/usr/share/pixmaps/gdm.png","gdm");
+ //moko_fill_model(store,"/usr/share/pixmaps/gdm-setup.png","gdm-setup");
+ //moko_fill_model(store,"/usr/share/pixmaps/gnome-eyes.png","gnome-eyes");
+ //moko_fill_model(store,"/usr/share/pixmaps/gnome-geg12.png","gnome-geg12");
+ //moko_fill_model(store,"/usr/share/pixmaps/gdm.xpm","gdm");
}
/*test code, delete later*/
More information about the commitlog
mailing list