Changeset 439


Ignore:
Timestamp:
12/20/06 11:40:31 (6 years ago)
Author:
tongsong_li
Message:

update mokoiconview.c

Location:
trunk/src/target/OM-2007/applications/openmoko-mainmenu/src
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/target/OM-2007/applications/openmoko-mainmenu/src/mainmenu.c

    r434 r439  
    138138    //gtk_container_add (bg_item, mm->item_total); 
    139139 
    140     //mm->icon_view = gtk_icon_view_new (); 
    141140    mm->icon_view = MOKO_ICON_VIEW(moko_icon_view_new()); 
    142     gtk_widget_show (mm->icon_view); 
    143     //moko_icon_view_set_item_width(mm->icon_view, ITEM_WIDTH); 
    144     //moko_icon_view_set_columns (mm->icon_view, COLUMN_NUM); 
     141    //gtk_widget_set_direction (GTK_WIDGET (mm->icon_view), GTK_TEXT_DIR_RTL);  
     142    moko_icon_view_set_item_width(mm->icon_view, ITEM_WIDTH); 
     143    moko_icon_view_set_columns (mm->icon_view, COLUMN_NUM); 
    145144    moko_icon_view_set_margin (mm->icon_view, ITEM_MARGIN); 
    146145    moko_icon_view_set_row_spacing (mm->icon_view, ROW_SPACING); 
    147     //moko_icon_view_set_column_spacing (mm->icon_view, COLUMN_SPACING); 
     146    moko_icon_view_set_column_spacing (mm->icon_view, COLUMN_SPACING); 
     147 
     148    //mm->icon_view = gtk_icon_view_new (); 
     149    //gtk_icon_view_set_item_width(mm->icon_view, ITEM_WIDTH); 
     150    //gtk_icon_view_set_columns (mm->icon_view, COLUMN_NUM); 
     151    //gtk_icon_view_set_margin (mm->icon_view, ITEM_MARGIN); 
     152    //gtk_icon_view_set_row_spacing (mm->icon_view, ROW_SPACING); 
     153    //gtk_icon_view_set_column_spacing (mm->icon_view, COLUMN_SPACING); 
     154 
    148155    //moko_icon_view_set_selection_mode (mm->icon_view, GTK_SELECTION_SINGLE); 
     156    gtk_widget_show (mm->icon_view); 
    149157 
    150158    mm->list_store = gtk_list_store_new (3, GDK_TYPE_PIXBUF, G_TYPE_STRING, G_TYPE_POINTER); 
     
    169177    gtk_widget_show (mm->hbox); 
    170178     
    171     //gtk_box_pack_start (mm, bg_main, FALSE, FALSE, 0); 
     179    gtk_box_pack_start (mm, bg_main, FALSE, FALSE, 0); 
    172180    gtk_container_add (bg_main, mm->hbox);  
    173181    gtk_box_pack_start (mm->hbox, mm->section_name, TRUE, TRUE, 10); 
  • trunk/src/target/OM-2007/applications/openmoko-mainmenu/src/mainmenu.h

    r434 r439  
    4040#define COLUMN_NUM              3 
    4141#define ITEM_WIDTH                      140 
    42 #define ITEM_HEIGHT             120 
    4342#define ITEM_MARGIN             0 
    44 #define ROW_SPACING             20 
     43#define ROW_SPACING             40 
    4544#define COLUMN_SPACING  0 
    4645#define ITME_TOTAL_WIDTH        7 
    4746 
    48 #define PIXBUF_WIDTH            100 
    49 #define PIXBUF_HEIGHT           100 
     47#define PIXBUF_WIDTH            120 //? useless 
     48#define PIXBUF_HEIGHT           120//? useless 
    5049 
    5150#define SECTION_ALG_X           0.6 
     
    7574 
    7675    //GtkIconView *icon_view; 
    77     //GtkWidget *icon_view; 
    78     MokoIconView *icon_view; 
     76    GtkWidget *icon_view; 
     77    //MokoIconView *icon_view; 
    7978    GtkListStore *list_store; 
    8079    GtkWidget *scrolled; 
  • trunk/src/target/OM-2007/applications/openmoko-mainmenu/src/mokoiconview.c

    r436 r439  
    3434  gint x, y; 
    3535  gint width, height; 
     36  gint colspan; 
    3637 
    3738  gint pixbuf_x, pixbuf_y; 
     
    146147  PROP_MARGIN 
    147148}; 
    148  
    149 //GdkPixbuf *frame; 
    150149 
    151150/* GObject signals */ 
     
    791790  icon_view->priv->layout_offset_x = 0; 
    792791  icon_view->priv->layout_offset_y = 0; 
    793   icon_view->priv->max_text_len = 10; 
     792  icon_view->priv->max_text_len = 30; 
    794793   
    795794  icon_view->priv->layout = gtk_widget_create_pango_layout (GTK_WIDGET (icon_view), NULL); 
     795 
     796  icon_view->priv->decoration = gdk_pixbuf_new_from_file (PKGDATADIR"/main_menu_sel_icon.png", NULL); 
    796797 
    797798  pango_layout_set_wrap (icon_view->priv->layout, PANGO_WRAP_WORD_CHAR); 
     
    983984  dest_x = 0; 
    984985  dest_y = 0; 
    985   width = gdk_pixbuf_get_width (src); 
    986   height = gdk_pixbuf_get_height (src); 
    987   offset_x = 0; 
    988   offset_y = 0; 
     986  offset_x = 10; 
     987  offset_y = 10; 
     988  width = gdk_pixbuf_get_width (src) + 2*offset_x; 
     989  height = gdk_pixbuf_get_height (src) + 2*offset_y; 
    989990  scale_x = width; 
    990991  scale_y = height; 
    991992  alpha = gdk_pixbuf_get_has_alpha (src); 
     993 
     994  dest = gdk_pixbuf_new (gdk_pixbuf_get_colorspace (src), 
     995                               TRUE, 
     996                               gdk_pixbuf_get_bits_per_sample (src), 
     997                               width, 
     998                               height); 
    992999   
    9931000  g_debug ("test1---------------------"); 
     
    9981005 */ 
    9991006  g_debug ("test2---------------------"); 
    1000   gdk_pixbuf_composite (decoration, src, 
     1007  gdk_pixbuf_composite (src, decoration, 
    10011008                                   dest_x, dest_y,  
    10021009                                   width, height, 
     
    10151022{ 
    10161023  gint focus_width, focus_pad; 
    1017   GdkPixbuf *pixbuf, *tmp; 
     1024  GdkPixbuf *pixbuf, *tmp, *scaled; 
    10181025  GtkStateType state; 
    10191026  gboolean rtl = gtk_widget_get_direction (GTK_WIDGET (icon_view)) == GTK_TEXT_DIR_RTL; 
    10201027 
     1028   
    10211029  if (!icon_view->priv->decoration) 
    10221030  { 
    1023     GdkPixbuf *tmp = gdk_pixbuf_new_from_file (PKGDATADIR"/main_menu_sel_icon.png", NULL); 
    1024     icon_view->priv->decoration = gdk_pixbuf_scale_simple (tmp,  
    1025         (item->width+2*FRAME_OFFSET), (item->height+2*FRAME_OFFSET), GDK_INTERP_NEAREST); 
    1026     g_object_unref (tmp); 
     1031      g_debug ("Error: can't get decoration image"); 
    10271032  } 
    10281033g_debug (":)  begin-----------------"); 
     
    10431048  if (icon_view->priv->pixbuf_column != -1) 
    10441049    { 
    1045       tmp = moko_icon_view_get_item_icon (icon_view, item); 
    1046       if (item->selected) 
     1050      pixbuf = moko_icon_view_get_item_icon (icon_view, item); 
     1051 
     1052 
     1053       
     1054    if (item->selected) 
    10471055        { 
    1048           //pixbuf = create_colorized_pixbuf (tmp, 
    1049                 //                          &GTK_WIDGET (icon_view)->style->base[state]); 
    1050           //pixbuf = moko_composite_selected_pixbuf (tmp, frame); 
    1051           //g_object_unref (tmp); 
    1052           //g_debug ("pixbuf_width = %d, pixbufheight = %d", item->pixbuf_width, item->pixbuf_height); 
    1053           //g_debug ("pixbuf_x = %d, pixbuf_y = %d", item->pixbuf_x, item->pixbuf_y); 
    1054           gdk_draw_pixbuf (icon_view->priv->bin_window, NULL, icon_view->priv->decoration, 
    1055                        0, 0, 
    1056                        (item->x-FRAME_OFFSET), (item->y-FRAME_OFFSET), 
    1057                        (item->width+2*FRAME_OFFSET), (item->height+2*FRAME_OFFSET), 
    1058                        GDK_RGB_DITHER_NORMAL, 
    1059                        (item->width+2*FRAME_OFFSET), (item->height+2*FRAME_OFFSET)); 
     1056            gint decr_width = 10; 
     1057            gint scaled_w, scaled_h; 
     1058            gint scaled_x, scaled_y; 
     1059      scaled_w =  item->pixbuf_width - 2*decr_width; 
     1060      scaled_h = item->pixbuf_height - 2*decr_width; 
     1061      scaled_x = item->pixbuf_x + decr_width; 
     1062      scaled_y = item->pixbuf_y + decr_width; 
     1063       
     1064         scaled = gdk_pixbuf_scale_simple (pixbuf,  
     1065                                scaled_w, scaled_h, GDK_INTERP_NEAREST); 
     1066 
     1067          tmp = gdk_pixbuf_scale_simple (icon_view->priv->decoration,  
     1068                                                item->pixbuf_width, item->pixbuf_width, 
     1069                                                GDK_INTERP_NEAREST); 
     1070 
     1071          gdk_draw_pixbuf (icon_view->priv->bin_window, NULL,  
     1072                                                tmp, 
     1073                                        0, 0, 
     1074                                        item->pixbuf_x, item->pixbuf_y, 
     1075                                        item->pixbuf_width,  item->pixbuf_height, 
     1076                                        GDK_RGB_DITHER_NORMAL, 
     1077                                        item->pixbuf_width,  item->pixbuf_height); 
     1078          g_debug ("frame(%d,%d)", item->x, item->y); 
     1079          gdk_draw_pixbuf (icon_view->priv->bin_window, NULL, scaled, 
     1080                                        0, 0, 
     1081                                        scaled_x, scaled_y, 
     1082                                scaled_w, scaled_h, 
     1083                                GDK_RGB_DITHER_NORMAL, 
     1084                                scaled_w, scaled_h); 
     1085          g_object_unref (tmp); 
     1086          g_object_unref (scaled); 
     1087 
    10601088        } 
    10611089      else 
    1062         pixbuf = tmp; 
    1063        
    1064       gdk_draw_pixbuf (icon_view->priv->bin_window, NULL, pixbuf, 
    1065                        0, 0, 
    1066                        item->pixbuf_x, item->pixbuf_y, 
    1067                        item->pixbuf_width, item->pixbuf_height, 
    1068                        GDK_RGB_DITHER_NORMAL, 
    1069                        item->pixbuf_width, item->pixbuf_height); 
    1070  
    1071     } 
    1072 g_debug (":) 1 -----------------"); 
     1090        { 
     1091          gdk_draw_pixbuf (icon_view->priv->bin_window, NULL, pixbuf, 
     1092                                        0, 0, 
     1093                                        item->pixbuf_x, item->pixbuf_y, 
     1094                                item->pixbuf_width, item->pixbuf_height, 
     1095                                GDK_RGB_DITHER_NORMAL, 
     1096                                item->pixbuf_width, item->pixbuf_height); 
     1097        } 
     1098               
     1099    } 
     1100g_debug (":) 4 -----------------"); 
    10731101 
    10741102  if (icon_view->priv->text_column != -1 || 
     
    18921920                                item->layout_width, padding, spacing, item->pixbuf_width); 
    18931921    } 
     1922   
    18941923} 
    18951924 
     
    19351964      colspan = item->pixbuf_width / item_width + 1; 
    19361965      maximum_layout_width = MOKO_MAX (colspan * item_width - item->pixbuf_width - icon_view->priv->spacing - 2 * (ICON_TEXT_PADDING + focus_width + focus_pad), 50); 
     1966      g_debug ("maximum_layout_width = %d", maximum_layout_width); 
    19371967    } 
    19381968  else 
    19391969    maximum_layout_width = MOKO_MAX (item_width, item->pixbuf_width); 
    1940     //maximum_layout_width = item_width; 
     1970        g_debug ("maximum_layout_width = %d", maximum_layout_width); 
    19411971 
    19421972     
     
    19471977 
    19481978      pango_layout_set_alignment (icon_view->priv->layout, PANGO_ALIGN_CENTER); 
    1949       pango_layout_set_width (icon_view->priv->layout, icon_view->priv->width* PANGO_SCALE);//maximum_layout_width * PANGO_SCALE); 
    1950       //pango_layout_iter_set_line_yrange (icon_view->priv->layout, 0, 1); 
    1951       //pango_layout_set_ellipsize (icon_view->priv->layout, PANGO_ELLIPSIZE_END); 
    1952  
     1979      pango_layout_set_width (icon_view->priv->layout, maximum_layout_width * PANGO_SCALE); 
     1980       
    19531981      pango_layout_get_pixel_size (icon_view->priv->layout, &layout_width, &layout_height); 
    19541982       
     
    19691997      item->width = item->layout_width + padding + spacing + item->pixbuf_width; 
    19701998      item->height = MOKO_MAX (item->layout_height + padding, item->pixbuf_height); 
    1971       g_debug ("Hlayout_width = %d, padding = %d, spacing = %d, pixbuf_width = %d", 
    1972                                 item->layout_width, padding, spacing, item->pixbuf_width); 
    19731999    } 
    19742000  else 
     
    19762002      item->width = MOKO_MAX (item->layout_width + padding, item->pixbuf_width); 
    19772003      item->height = item->layout_height + padding + spacing + item->pixbuf_height; 
    1978       g_debug ("Vlayout_width = %d, padding = %d, spacing = %d, pixbuf_width = %d", 
    1979                                 item->layout_width, padding, spacing, item->pixbuf_width); 
    1980     } 
     2004    } 
     2005  g_debug ("WH: item(%d,%d) pixbuf(%d,%d) layout(%d,%d)",  
     2006                        item->width, item->height, 
     2007                        item->pixbuf_width, item->pixbuf_height, 
     2008                        item->layout_width, item->layout_height); 
    19812009} 
    19822010 
     
    20012029 
    20022030static GList * 
    2003 gtk_icon_view_layout_single_row (MokoIconView *icon_view,  
     2031moko_icon_view_layout_single_row (MokoIconView *icon_view,  
    20042032                                 GList       *first_item,  
    20052033                                 gint         item_width, 
     
    20152043  gboolean rtl = gtk_widget_get_direction (GTK_WIDGET (icon_view)) == GTK_TEXT_DIR_RTL; 
    20162044 
    2017   x = 0; 
     2045   x = 0; 
    20182046  col = 0; 
    20192047  max_height = 0; 
     
    20262054                        "focus-padding", &focus_pad, 
    20272055                        NULL); 
     2056  g_debug ("focus_w = %d, focus_pad = %d", focus_width, focus_pad); 
    20282057 
    20292058  x += icon_view->priv->margin; 
     
    20332062  while (items) 
    20342063    { 
     2064      gint last_width; 
    20352065      MokoIconViewItem *item = items->data; 
    20362066 
     
    20382068 
    20392069      colspan = 1 + (item->width - 1) / (item_width + icon_view->priv->column_spacing); 
    2040       //current_width += colspan * (item_width + icon_view->priv->column_spacing); 
    2041      current_width += item_width + icon_view->priv->column_spacing; 
    2042        
    2043 g_debug ("draw signal row: "); 
    2044 g_debug ("colspan:%d, current:%d, item->width:%d, item_width:%d", colspan, current_width, item->width, item_width); 
    2045 sleep (1); 
     2070      last_width = current_width; 
     2071      current_width += colspan * (item_width + icon_view->priv->column_spacing); 
     2072 
     2073        
    20462074      if (items != first_item) 
    20472075        { 
     
    20512079        } 
    20522080 
    2053       item->y = *y+(icon_view->priv->row_spacing/2);//SUNZY:modify item box y coordinate, originalty value is "y = *y". 
    2054       //item->x = rtl ? GTK_WIDGET (icon_view)->allocation.width - MOKO_MAX (item_width, item->width) - x : x; 
    2055       item->x = x; 
     2081      item->y = *y + icon_view->priv->row_spacing/2;//SUNZY 
     2082      item->x = rtl ? GTK_WIDGET (icon_view)->allocation.width - MOKO_MAX (item_width, item->width) - x : x; 
     2083 
    20562084      if (icon_view->priv->orientation == GTK_ORIENTATION_HORIZONTAL) 
    20572085        { 
     
    20952123 
    20962124      col += colspan; 
     2125      item->x = last_width; 
     2126      g_debug("item: (%d,%d) pixbuf (%d,%d) layout (%d,%d), current_width = %d", 
     2127                                item->x, item->y, item->pixbuf_x, item->pixbuf_y, 
     2128                                item->layout_x, item->layout_y,  
     2129                                current_width); 
     2130 
    20972131      items = items->next; 
    20982132    } 
     
    21012135 
    21022136  *y += max_height + icon_view->priv->row_spacing; 
     2137 
    21032138 
    21042139  /* Now go through the row again and align the icons */ 
     
    21292164      if (rtl) 
    21302165        item->col = col - 1 - item->col; 
     2166            g_debug("LAST TIME item: (%d,%d) pixbuf (%d,%d) layout (%d,%d)", 
     2167                                item->x, item->y, item->pixbuf_x, item->pixbuf_y, 
     2168                                item->layout_x, item->layout_y); 
    21312169    } 
    21322170   
     
    21352173 
    21362174static GList * 
    2137 moko_icon_view_layout_single_row (MokoIconView *icon_view,  
     2175gtk_icon_view_layout_single_row (MokoIconView *icon_view,  
    21382176                                 GList       *first_item,  
    21392177                                 gint         item_width, 
     
    21712209      moko_icon_view_calculate_item_size (icon_view, item, item_width); 
    21722210 
    2173       colspan = 1 + (item->width - 1) / (item_width + icon_view->priv->column_spacing); 
    2174       current_width += colspan * (item_width + icon_view->priv->column_spacing); 
     2211      //colspan = 1 + (item->width - 1) / (item_width + icon_view->priv->column_spacing); 
     2212      //current_width += colspan * (item_width + icon_view->priv->column_spacing); 
     2213      current_width += icon_view->priv->width + icon_view->priv->column_spacing;  
    21752214g_debug ("draw signal row: "); 
    21762215g_debug ("colspan:%d, current:%d, item->width:%d, item_width:%d, maximum_width:%d", colspan, current_width, item->width, item_width, *maximum_width); 
    2177 sleep (1); 
    21782216      if (items != first_item) 
    21792217        { 
     
    21842222 
    21852223      item->y = *y+(icon_view->priv->row_spacing/2);//SUNZY:modify item box y coordinate, originalty value is "y = *y". 
    2186       item->x = rtl ? GTK_WIDGET (icon_view)->allocation.width - MOKO_MAX (item_width, item->width) - x : x; 
     2224      item->x = rtl ? GTK_WIDGET (icon_view)->allocation.width - icon_view->priv->width-x : x; 
    21872225 
    21882226      if (icon_view->priv->orientation == GTK_ORIENTATION_HORIZONTAL) 
     
    22262264      item->col = col; 
    22272265 
    2228       col += colspan; 
     2266      col ++;//= colspan; 
    22292267      items = items->next; 
    22302268    } 
     
    22532291      } 
    22542292      /* Update the bounding box */ 
    2255       item->y = item->pixbuf_y; 
     2293     // item->y = item->pixbuf_y; 
    22562294 
    22572295      /* We may want to readjust the new y coordinate. */ 
    2258       if (item->y + item->height > *y) 
     2296      if ((item->y + item->height) > *y) 
    22592297        *y = item->y + item->height; 
    22602298 
  • trunk/src/target/OM-2007/applications/openmoko-mainmenu/src/support.c

    r434 r439  
    4040    gtk_list_store_append (store, &iter); 
    4141    pixbuf = gdk_pixbuf_new_from_file_at_size (icon_path, PIXBUF_WIDTH, PIXBUF_HEIGHT, NULL);// ADD Gerro handle later 
    42  
     42    //pixbuf = gdk_pixbuf_new_from_file (icon_path, NULL);// ADD Gerro handle later 
    4343    gtk_list_store_set (store, &iter, PIXBUF_COLUMN, pixbuf, TEXT_COLUMN, icon_name, -1); 
    4444    g_object_unref (pixbuf); 
     
    5353    moko_fill_model(store,"/usr/share/pixmaps/anjuta.xpm","anjuta"); 
    5454    moko_fill_model(store,"/usr/share/pixmaps/battstat.png","battstat"); 
    55     moko_fill_model(store,"/usr/share/pixmaps/gdm.png","gdm"); 
    56     moko_fill_model(store,"/usr/share/pixmaps/gdm-setup.png","gdm-setup"); 
    57     moko_fill_model(store,"/usr/share/pixmaps/gnome-eyes.png","gnome-eyes"); 
    58     moko_fill_model(store,"/usr/share/pixmaps/gnome-geg12.png","gnome-geg12"); 
    59     moko_fill_model(store,"/usr/share/pixmaps/gdm.xpm","gdm"); 
     55    //moko_fill_model(store,"/usr/share/pixmaps/gdm.png","gdm"); 
     56    //moko_fill_model(store,"/usr/share/pixmaps/gdm-setup.png","gdm-setup"); 
     57    //moko_fill_model(store,"/usr/share/pixmaps/gnome-eyes.png","gnome-eyes"); 
     58    //moko_fill_model(store,"/usr/share/pixmaps/gnome-geg12.png","gnome-geg12"); 
     59    //moko_fill_model(store,"/usr/share/pixmaps/gdm.xpm","gdm"); 
    6060} 
    6161 
Note: See TracChangeset for help on using the changeset viewer.