⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ptk-file-icon-renderer.c

📁 台湾人开发的Linux下的文件管理器
💻 C
📖 第 1 页 / 共 2 页
字号:
/**  C Implementation: ptkfileiconrenderer** Description: PtkFileIconRenderer is used to render file icons*** Author: Hong Jen Yee (PCMan) <pcman.tw (AT) gmail.com>, (C) 2006** Copyright: See COPYING file that comes with this distribution** Part of this class is taken from GtkCellRendererPixbuf written by* Red Hat, Inc.,  Jonathan Blandford <jrb@redhat.com>**/#include "ptk-file-icon-renderer.h"static voidptk_file_icon_renderer_init ( PtkFileIconRenderer *renderer );static voidptk_file_icon_renderer_class_init ( PtkFileIconRendererClass *klass );static voidptk_file_icon_renderer_get_property ( GObject *object,                                      guint param_id,                                      GValue *value,                                      GParamSpec *pspec );static voidptk_file_icon_renderer_set_property ( GObject *object,                                      guint param_id,                                      const GValue *value,                                      GParamSpec *pspec );static voidptk_file_icon_renderer_finalize ( GObject *gobject );static voidptk_file_icon_renderer_get_size ( GtkCellRenderer *cell,                                  GtkWidget *widget,                                  GdkRectangle *cell_area,                                  gint *x_offset,                                  gint *y_offset,                                  gint *width,                                  gint *height );static voidptk_file_icon_renderer_render ( GtkCellRenderer *cell,                                GdkWindow *window,                                GtkWidget *widget,                                GdkRectangle *background_area,                                GdkRectangle *cell_area,                                GdkRectangle *expose_area,                                guint flags );enum{    PROP_INFO = 1,    PROP_FLAGS,    PROP_FOLLOW_STATE};static gpointer parent_class;static GdkPixbuf* link_icon = NULL;/* GdkPixbuf RGBA C-Source image dump */#ifdef __SUNPRO_C#pragma align 4 (link_icon_data)#endif#ifdef __GNUC__static const guint8 link_icon_data[] __attribute__ ((__aligned__ (4))) =#elsestatic const guint8 link_icon_data[] =#endif    { ""      /* Pixbuf magic (0x47646b50) */      "GdkP"      /* length: header (24) + pixel_data (400) */      "\0\0\1\250"      /* pixdata_type (0x1010002) */      "\1\1\0\2"      /* rowstride (40) */      "\0\0\0("      /* width (10) */      "\0\0\0\12"      /* height (10) */      "\0\0\0\12"      /* pixel_data: */      "\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377\200"      "\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200"      "\200\377\0\0\0\377\200\200\200\377\377\377\377\377\377\377\377\377\377"      "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377"      "\377\377\377\377\377\377\0\0\0\377\200\200\200\377\377\377\377\377\0"      "\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\377\377\377\377\377"      "\377\377\377\0\0\0\377\200\200\200\377\377\377\377\377\0\0\0\377\0\0"      "\0\377\0\0\0\377\0\0\0\377\377\377\377\377\377\377\377\377\377\377\377"      "\377\0\0\0\377\200\200\200\377\377\377\377\377\0\0\0\377\0\0\0\377\0"      "\0\0\377\0\0\0\377\0\0\0\377\377\377\377\377\377\377\377\377\0\0\0\377"      "\200\200\200\377\377\377\377\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0"      "\377\0\0\0\377\0\0\0\377\377\377\377\377\0\0\0\377\200\200\200\377\377"      "\377\377\377\0\0\0\377\377\377\377\377\377\377\377\377\0\0\0\377\0\0"      "\0\377\0\0\0\377\377\377\377\377\0\0\0\377\200\200\200\377\377\377\377"      "\377\377\377\377\377\377\377\377\377\377\377\377\377\0\0\0\377\0\0\0"      "\377\0\0\0\377\377\377\377\377\0\0\0\377\200\200\200\377\377\377\377"      "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377"      "\377\377\377\377\377\377\377\377\377\377\377\377\0\0\0\377\0\0\0\377"      "\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377"      "\0\0\0\377\0\0\0\377"    };/*************************************************************************** * *  ptk_file_icon_renderer_get_type: here we register our type with *                                          the GObject type system if we *                                          haven't done so yet. Everything *                                          else is done in the callbacks. * ***************************************************************************/GTypeptk_file_icon_renderer_get_type ( void ){    static GType renderer_type = 0;    if ( G_UNLIKELY( !renderer_type ) )    {        static const GTypeInfo renderer_info =            {                sizeof ( PtkFileIconRendererClass ),                NULL,                                                        /* base_init */                NULL,                                                        /* base_finalize */                ( GClassInitFunc ) ptk_file_icon_renderer_class_init,                NULL,                                                        /* class_finalize */                NULL,                                                        /* class_data */                sizeof ( PtkFileIconRenderer ),                0,                                                           /* n_preallocs */                ( GInstanceInitFunc ) ptk_file_icon_renderer_init,            };        /* Derive from GtkCellRendererPixbuf */        renderer_type = g_type_register_static ( GTK_TYPE_CELL_RENDERER_PIXBUF,                                                 "PtkFileIconRenderer",                                                 &renderer_info,                                                 0 );    }    return renderer_type;}/*************************************************************************** * *  ptk_file_icon_renderer_init: set some default properties of the *                                      parent (GtkCellRendererPixbuf). * ***************************************************************************/static voidptk_file_icon_renderer_init ( PtkFileIconRenderer *renderer ){    if ( !link_icon )    {        link_icon = gdk_pixbuf_new_from_inline(                sizeof(link_icon_data),                link_icon_data,                FALSE, NULL );        g_object_add_weak_pointer( G_OBJECT(link_icon), (gpointer)&link_icon  );    }    else        gdk_pixbuf_ref( (link_icon) );}/*************************************************************************** * *  ptk_file_icon_renderer_class_init: * ***************************************************************************/static voidptk_file_icon_renderer_class_init ( PtkFileIconRendererClass *klass ){    GtkCellRendererClass * parent_renderer_class = GTK_CELL_RENDERER_CLASS( klass );    GObjectClass *object_class = G_OBJECT_CLASS( klass );    parent_class = g_type_class_peek_parent ( klass );    object_class->finalize = ptk_file_icon_renderer_finalize;    /* Hook up functions to set and get our    *   custom cell renderer properties */    object_class->get_property = ptk_file_icon_renderer_get_property;    object_class->set_property = ptk_file_icon_renderer_set_property;    parent_renderer_class->get_size = ptk_file_icon_renderer_get_size;    parent_renderer_class->render = ptk_file_icon_renderer_render;    g_object_class_install_property ( object_class,                                      PROP_INFO,                                      g_param_spec_pointer ( "info",                                                             "File info",                                                             "File info",                                                             G_PARAM_READWRITE ) );    g_object_class_install_property ( object_class,                                      PROP_FOLLOW_STATE,                                      g_param_spec_boolean ( "follow-state",                                                             "Follow State",                                                             "Whether the rendered pixbuf should be "                                                             "colorized according to the state",                                                             FALSE,                                                             G_PARAM_READWRITE ) );}/*************************************************************************** * *  ptk_file_icon_renderer_finalize: free any resources here * ***************************************************************************/static voidptk_file_icon_renderer_finalize ( GObject *object ){    PtkFileIconRenderer* renderer = PTK_FILE_ICON_RENDERER(object);     if( renderer->info )        vfs_file_info_unref( renderer->info );    gdk_pixbuf_unref( (link_icon) );    ( * G_OBJECT_CLASS ( parent_class ) ->finalize ) ( object );}/*************************************************************************** * *  ptk_file_icon_renderer_get_property: as it says * ***************************************************************************/static voidptk_file_icon_renderer_get_property ( GObject *object,                                      guint param_id,                                      GValue *value,                                      GParamSpec *psec ){    PtkFileIconRenderer * renderer = PTK_FILE_ICON_RENDERER( object );    switch ( param_id )    {        /*    case PROP_FLAGS:              g_value_set_long(value, renderer->flags);              break;        */    case PROP_INFO:        if( renderer->info )            vfs_file_info_ref( renderer->info );        g_value_set_pointer( value, renderer->info );    case PROP_FOLLOW_STATE:        g_value_set_boolean ( value, renderer->follow_state );    default:        G_OBJECT_WARN_INVALID_PROPERTY_ID ( object, param_id, psec );        break;    }}/*************************************************************************** * *  ptk_file_icon_renderer_set_property: as it says * ***************************************************************************/

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -