Пример #1
0
static void
hippo_canvas_block_update_item_expansion(HippoCanvasBlock *canvas_block)
{
    if (canvas_block->sent_to_box)
        hippo_canvas_item_set_visible(HIPPO_CANVAS_ITEM(canvas_block->sent_to_box),
                                      canvas_block->expanded && canvas_block->sent_to_set);
    if (canvas_block->age_prefix_item)
        hippo_canvas_item_set_visible(canvas_block->age_prefix_item,
                                      canvas_block->expanded && canvas_block->age_set);
    if (canvas_block->original_age_box)
        hippo_canvas_item_set_visible(HIPPO_CANVAS_ITEM(canvas_block->original_age_box),
                                      canvas_block->expanded && canvas_block->original_age_set);
}
Пример #2
0
static void
hippo_canvas_control_set_property(GObject         *object,
                                 guint            prop_id,
                                 const GValue    *value,
                                 GParamSpec      *pspec)
{
    HippoCanvasControl *control;

    control = HIPPO_CANVAS_CONTROL(object);

    switch (prop_id) {
    case PROP_CONTROL:
        {
            HippoAbstractControl *w = (HippoAbstractControl*) g_value_get_pointer(value);
            if (control->control != w) {
                if (w) {
                    w->AddRef();
                }
                if (control->control) {
                    control->control->Release();
                }
                control->control = w;

                hippo_canvas_item_emit_request_changed(HIPPO_CANVAS_ITEM(control));
            }
        }
        break;
    default:
        G_OBJECT_WARN_INVALID_PROPERTY_ID(object, prop_id, pspec);
        break;
    }
}
Пример #3
0
HippoCanvasItem*
hippo_canvas_link_new(void)
{
    HippoCanvasLink *link = g_object_new(HIPPO_TYPE_CANVAS_LINK, NULL);

    return HIPPO_CANVAS_ITEM(link);
}
static void
update_visibility(HippoCanvasBlockNetflixMovie *block_netflix)
{
    HippoCanvasBlock *canvas_block = HIPPO_CANVAS_BLOCK(block_netflix);
    HippoStackReason stack_reason;
    gboolean have_chat_id;
    
    hippo_canvas_item_set_visible(HIPPO_CANVAS_ITEM(block_netflix->queue_box), canvas_block->expanded);

    if (canvas_block->block)
        stack_reason = hippo_block_get_stack_reason(canvas_block->block);
    else
        stack_reason = HIPPO_STACK_BLOCK_UPDATE;

    have_chat_id = FALSE;
    if (canvas_block->block)
        have_chat_id = hippo_block_get_chat_id(canvas_block->block) != NULL;

    hippo_canvas_item_set_visible(block_netflix->quipper,
                                  canvas_block->expanded && have_chat_id);
    hippo_canvas_item_set_visible(block_netflix->last_message_preview,
                                  !canvas_block->expanded && stack_reason == HIPPO_STACK_CHAT_MESSAGE);
    hippo_canvas_item_set_visible(block_netflix->chat_preview,
                                  canvas_block->expanded && have_chat_id);
}
Пример #5
0
static void
hippo_canvas_widget_set_property(GObject         *object,
                                 guint            prop_id,
                                 const GValue    *value,
                                 GParamSpec      *pspec)
{
    HippoCanvasWidget *widget;

    widget = HIPPO_CANVAS_WIDGET(object);

    switch (prop_id) {
    case PROP_WIDGET:
        {
            GtkWidget *w = (GtkWidget*) g_value_get_object(value);
            if (widget->widget != w) {
                if (w) {
                    gtk_object_ref(GTK_OBJECT(w));
                    gtk_object_sink(GTK_OBJECT(w));
                }
                if (widget->widget)
                    g_object_unref(widget->widget);
                widget->widget = w;

                update_widget_visibility(widget);

                hippo_canvas_item_emit_request_changed(HIPPO_CANVAS_ITEM(widget));
            }
        }
        break;
    default:
        G_OBJECT_WARN_INVALID_PROPERTY_ID(object, prop_id, pspec);
        break;
    }
}
Пример #6
0
static void
hippo_canvas_grip_set_property(GObject         *object,
                               guint            prop_id,
                               const GValue    *value,
                               GParamSpec      *pspec)
{
    HippoCanvasGrip *grip;

    grip = HIPPO_CANVAS_GRIP(object);

    switch (prop_id) {
    case PROP_SIDE:
    {
        HippoSide side = g_value_get_int(value);
        if (side != grip->side) {
            grip->side = side;

            g_object_set(G_OBJECT(grip),
                         "border-left", side == HIPPO_SIDE_LEFT ? 1 : 0,
                         "border-right", side == HIPPO_SIDE_RIGHT ? 1 : 0,
                         "border-top", side == HIPPO_SIDE_TOP ? 1 : 0,
                         "border-bottom", side == HIPPO_SIDE_BOTTOM ? 1 : 0,
                         NULL);

            hippo_canvas_item_emit_request_changed(HIPPO_CANVAS_ITEM(grip));
        }
    }
    break;
    default:
        G_OBJECT_WARN_INVALID_PROPERTY_ID(object, prop_id, pspec);
        break;
    }
}
Пример #7
0
/* this is analogous to what pygtk does for GtkObject, GtkWindow, etc.
 * but it just has to be a bug in pygtk that it works this way.
 */
static void
sink_hippocanvasbox(GObject *object)
{
    if (HIPPO_CANVAS_BOX(object)->floating) {
        g_object_ref(object);
        hippo_canvas_item_sink(HIPPO_CANVAS_ITEM(object));
    }
}
Пример #8
0
HippoCanvasItem*
hippo_canvas_image_new(void)
{
    HippoCanvasImage *image = g_object_new(HIPPO_TYPE_CANVAS_IMAGE, NULL);


    return HIPPO_CANVAS_ITEM(image);
}
Пример #9
0
HippoCanvasItem*
hippo_canvas_grip_new(void)
{
    HippoCanvasGrip *grip = g_object_new(HIPPO_TYPE_CANVAS_GRIP, NULL);


    return HIPPO_CANVAS_ITEM(grip);
}
Пример #10
0
HippoCanvasItem*
hippo_canvas_base_new(void)
{
    HippoCanvasBase *base = g_object_new(HIPPO_TYPE_CANVAS_BASE, NULL);


    return HIPPO_CANVAS_ITEM(base);
}
Пример #11
0
HippoCanvasItem*
hippo_canvas_widget_new(void)
{
    HippoCanvasWidget *widget = g_object_new(HIPPO_TYPE_CANVAS_WIDGET, NULL);


    return HIPPO_CANVAS_ITEM(widget);
}
Пример #12
0
static void
hippo_canvas_block_music_update_visibility(HippoCanvasBlockMusic *block_music)
{
    HippoCanvasBlock *canvas_block = HIPPO_CANVAS_BLOCK(block_music);
    
    hippo_canvas_box_set_child_visible(block_music->single_message_preview_parent,
                                       block_music->single_message_preview,
                                       !canvas_block->expanded && block_music->have_messages);
    hippo_canvas_box_set_child_visible(block_music->chat_preview_parent,
                                       block_music->chat_preview,
                                       canvas_block->expanded);
    hippo_canvas_box_set_child_visible(block_music->downloads_box_parent,
                                       HIPPO_CANVAS_ITEM(block_music->downloads_box),
                                       canvas_block->expanded);
    hippo_canvas_box_set_child_visible(block_music->old_tracks_box_parent,
                                       HIPPO_CANVAS_ITEM(block_music->old_tracks_box),
                                       canvas_block->expanded);
}
Пример #13
0
HippoCanvasItem*
hippo_canvas_text_new(void)
{
    HippoCanvasText *text = g_object_new(HIPPO_TYPE_CANVAS_TEXT, NULL);

    
    
    return HIPPO_CANVAS_ITEM(text);
}
Пример #14
0
HippoCanvasItem*
hippo_canvas_stack_new(void)
{
    HippoCanvasStack *stack = g_object_new(HIPPO_TYPE_CANVAS_STACK, NULL);

    HIPPO_CANVAS_BOX(stack)->background_color_rgba = 0xffffffff;
    
    return HIPPO_CANVAS_ITEM(stack);
}
Пример #15
0
HippoCanvasItem*
hippo_canvas_control_new(void)
{
    HippoCanvasControl *control;
    
    control = HIPPO_CANVAS_CONTROL(g_object_new(HIPPO_TYPE_CANVAS_CONTROL, NULL));

    return HIPPO_CANVAS_ITEM(control);
}
Пример #16
0
static GObject*
hippo_canvas_filter_area_constructor (GType                  type,
                                      guint                  n_construct_properties,
                                      GObjectConstructParam *construct_properties)
{
    GObject *object = G_OBJECT_CLASS(hippo_canvas_filter_area_parent_class)->constructor(type,
                                                                                         n_construct_properties,
                                                                                         construct_properties);
    HippoCanvasFilterArea *area = HIPPO_CANVAS_FILTER_AREA(object);
    HippoCanvasItem *item;    
    HippoCanvasBox *box;
    
    box = g_object_new(HIPPO_TYPE_CANVAS_IMAGE,
                       "orientation", HIPPO_ORIENTATION_HORIZONTAL,
                       NULL);
    hippo_canvas_box_append(HIPPO_CANVAS_BOX(area),
                            HIPPO_CANVAS_ITEM(box), 0);    

    box->background_color_rgba = 0xE4D0EDFF;
    
    item = g_object_new(HIPPO_TYPE_CANVAS_TEXT,
                        "text", "Hide feeds: ",
                        "padding-left", 4,
                        "xalign", HIPPO_ALIGNMENT_START,
                        NULL);
    hippo_canvas_box_append(box, item, 0);    
    
    item = g_object_new(HIPPO_TYPE_CANVAS_IMAGE_BUTTON,
                        "normal-image-name", "checkbox",
                        "xalign", HIPPO_ALIGNMENT_START,
                        "yalign", HIPPO_ALIGNMENT_CENTER,
                        "tooltip", "Whether or not to display group feed items",
                        NULL);
    hippo_canvas_box_append(box, item, 0);
    g_signal_connect(G_OBJECT(item), "activated", G_CALLBACK(on_nofeed_activated), area);
    area->nofeed_item = item;
    
    item = g_object_new(HIPPO_TYPE_CANVAS_TEXT,
                        "text", "Hide my items: ",
                        "padding-left", 40,
                        "xalign", HIPPO_ALIGNMENT_START,
                        NULL);
    hippo_canvas_box_append(box, item, 0);    
    
    item = g_object_new(HIPPO_TYPE_CANVAS_IMAGE_BUTTON,
                        "normal-image-name", "checkbox",
                        "xalign", HIPPO_ALIGNMENT_START,
                        "yalign", HIPPO_ALIGNMENT_CENTER,
                        "tooltip", "Whether or not to show items from me",
                        NULL);
    hippo_canvas_box_append(box, item, 0);
    g_signal_connect(G_OBJECT(item), "activated", G_CALLBACK(on_noselfsource_activated), area);
    area->noselfsource_item = item;    
   
    return object;
}
Пример #17
0
HippoCanvasItem*
hippo_canvas_block_new(HippoBlockType type,
                       HippoActions  *actions)
{
    HippoCanvasBlock *block;
    GType object_type;

    object_type = HIPPO_TYPE_CANVAS_BLOCK;
    switch (type) {
    case HIPPO_BLOCK_TYPE_UNKNOWN:
        object_type = HIPPO_TYPE_CANVAS_BLOCK;
        break;
    case HIPPO_BLOCK_TYPE_ACCOUNT_QUESTION:
        object_type = HIPPO_TYPE_CANVAS_BLOCK_ACCOUNT_QUESTION;
        break;
    case HIPPO_BLOCK_TYPE_POST:
        object_type = HIPPO_TYPE_CANVAS_BLOCK_POST;
        break;
    case HIPPO_BLOCK_TYPE_GROUP_CHAT:
        object_type = HIPPO_TYPE_CANVAS_BLOCK_GROUP_CHAT;
        break;
    case HIPPO_BLOCK_TYPE_MUSIC_CHAT:
    case HIPPO_BLOCK_TYPE_MUSIC_PERSON:
        object_type = HIPPO_TYPE_CANVAS_BLOCK_MUSIC;
        break;
    case HIPPO_BLOCK_TYPE_GROUP_MEMBER:
        object_type = HIPPO_TYPE_CANVAS_BLOCK_GROUP_MEMBER;
        break;
    case HIPPO_BLOCK_TYPE_GROUP_REVISION:
        object_type = HIPPO_TYPE_CANVAS_BLOCK_GROUP_REVISION;
        break;
    case HIPPO_BLOCK_TYPE_FACEBOOK_EVENT:
        object_type = HIPPO_TYPE_CANVAS_BLOCK_FACEBOOK_EVENT;
        break;
    case HIPPO_BLOCK_TYPE_NETFLIX_MOVIE:
        object_type = HIPPO_TYPE_CANVAS_BLOCK_NETFLIX_MOVIE;
        break;        
    case HIPPO_BLOCK_TYPE_AMAZON_REVIEW:
    case HIPPO_BLOCK_TYPE_AMAZON_WISH_LIST_ITEM:
        object_type = HIPPO_TYPE_CANVAS_BLOCK_AMAZON_ACTIVITY;
        break;        
    case HIPPO_BLOCK_TYPE_FLICKR_PERSON:
    case HIPPO_BLOCK_TYPE_FLICKR_PHOTOSET:
    case HIPPO_BLOCK_TYPE_YOUTUBE_PERSON:
    case HIPPO_BLOCK_TYPE_GENERIC:
        object_type = HIPPO_TYPE_CANVAS_BLOCK_GENERIC;
        break;
    }

    block = g_object_new(object_type,
                         "actions", actions,
                         NULL);

    return HIPPO_CANVAS_ITEM(block);
}
Пример #18
0
static void
set_surface(HippoCanvasImage *image,
            cairo_surface_t  *surface)
{
    if (surface != image->surface) {
        int old_width, old_height;
        gboolean request_changed = FALSE;
        
#if 0
        /* The FC5 version of Cairo doesn't have this API */
        if (cairo_surface_get_type(surface) != CAIRO_SURFACE_TYPE_IMAGE) {
            g_warning("Image canvas item only supports image surfaces");
            return;
        }
#endif
        old_width = image->surface ? cairo_image_surface_get_width(image->surface) : 0;
        old_height = image->surface ? cairo_image_surface_get_height(image->surface) : 0;
        
        if (surface)
            cairo_surface_reference(surface);
        if (image->surface)
            cairo_surface_destroy(image->surface);
        image->surface = surface;

        if (image->scale_width < 0) {
            int width = image->surface ? cairo_image_surface_get_width(image->surface) : 0;
            if (width != old_width)
                request_changed = TRUE;
        }
        if (image->scale_height < 0) {
            int height = image->surface ? cairo_image_surface_get_height(image->surface) : 0;
            if (height != old_height)
                request_changed = TRUE;
        }

        if (request_changed)
            hippo_canvas_item_emit_request_changed(HIPPO_CANVAS_ITEM(image));
        hippo_canvas_item_emit_paint_needed(HIPPO_CANVAS_ITEM(image), 0, 0, -1, -1);

        g_object_notify(G_OBJECT(image), "image");
    }
}
Пример #19
0
static void
hippo_canvas_block_music_append_right_items (HippoCanvasBlock *block,
                                             HippoCanvasBox   *parent_box)
{
    HippoCanvasBlockMusic *block_music = HIPPO_CANVAS_BLOCK_MUSIC(block);

    block_music->downloads_box = g_object_new(HIPPO_TYPE_CANVAS_BOX,
                                          "orientation", HIPPO_ORIENTATION_VERTICAL,
                                          NULL);
    hippo_canvas_box_append(parent_box, HIPPO_CANVAS_ITEM(block_music->downloads_box), HIPPO_PACK_FLOAT_RIGHT);
}
Пример #20
0
static void
hippo_canvas_block_music_update_visibility(HippoCanvasBlockMusic *block_music)
{
    HippoCanvasBlock *canvas_block = HIPPO_CANVAS_BLOCK(block_music);
    HippoStackReason stack_reason;
    
    if (canvas_block->block)
        stack_reason = hippo_block_get_stack_reason(canvas_block->block);
    else
        stack_reason = HIPPO_STACK_BLOCK_UPDATE;

    hippo_canvas_item_set_visible(block_music->last_message_preview,
                                  !canvas_block->expanded && stack_reason == HIPPO_STACK_CHAT_MESSAGE);
    hippo_canvas_item_set_visible(block_music->chat_preview,
                                  canvas_block->expanded);
    hippo_canvas_item_set_visible(HIPPO_CANVAS_ITEM(block_music->downloads_box),
                                  canvas_block->expanded);
    hippo_canvas_item_set_visible(HIPPO_CANVAS_ITEM(block_music->old_tracks_box),
                                  canvas_block->expanded);
}
Пример #21
0
static void
hippo_canvas_text_set_context(HippoCanvasItem    *item,
                              HippoCanvasContext *context)
{
    HippoCanvasBox *box = HIPPO_CANVAS_BOX(item);
    gboolean changed;
    
    changed = context != box->context;
    
    item_parent_class->set_context(item, context);

    /* we can't create a layout until we have a context,
     * so we have to queue a size change when the context
     * is set.
     */
    if (changed) {
        hippo_canvas_item_emit_request_changed(HIPPO_CANVAS_ITEM(item));
        hippo_canvas_item_emit_paint_needed(HIPPO_CANVAS_ITEM(item), 0, 0, -1, -1);
    }
}
Пример #22
0
static void
update_widget_visibility(HippoCanvasWidget *widget)
{
    int w, h;

    if (widget->widget == NULL)
        return;
    
    hippo_canvas_item_get_allocation(HIPPO_CANVAS_ITEM(widget), &w, &h);

    if (w == 0 || h == 0)
        gtk_widget_hide(widget->widget);
    else
        gtk_widget_show(widget->widget);
}
Пример #23
0
void
hippo_canvas_open_test_window(void)
{
    GtkWidget *window;
    GtkWidget *canvas;
    HippoCanvasItem *root;
    HippoCanvasItem *shape1;
    HippoCanvasItem *shape2;
    int i;
    
    window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
    gtk_container_set_border_width(GTK_CONTAINER(window), 10);
    canvas = hippo_canvas_new();
    gtk_widget_show(canvas);
    gtk_container_add(GTK_CONTAINER(window), canvas);

    root = HIPPO_CANVAS_ITEM(hippo_canvas_box_new());

#if 0
    shape1 = g_object_new(HIPPO_TYPE_CANVAS_SHAPE,
                          "width", 50, "height", 100,
                          NULL);

    shape2 = g_object_new(HIPPO_TYPE_CANVAS_SHAPE,
                          "width", 70, "height", 40,
                          "color", 0x00ff00ff,
                          NULL);

    hippo_canvas_box_append(HIPPO_CANVAS_BOX(root),
                            shape1, 0);
    g_object_unref(shape1);
    hippo_canvas_box_append(HIPPO_CANVAS_BOX(root),
                            shape2, 0);
    g_object_unref(shape2);
#endif
    
    for (i = 0; i < (int) G_N_ELEMENTS(box_rows); ++i) {
        HippoCanvasItem *row = create_row(box_rows[i]);
        hippo_canvas_box_append(HIPPO_CANVAS_BOX(root), row, 0);
        g_object_unref(row);
    }
    
    
    hippo_canvas_set_root(HIPPO_CANVAS(canvas), root);
    g_object_unref(root);

    gtk_widget_show(window);
}
Пример #24
0
static void
update_original_age(HippoCanvasBlock *canvas_block)
{
    if (canvas_block->original_age_item) {
        if (canvas_block->block == NULL)
            canvas_block->original_age_set = FALSE;
        else
            canvas_block->original_age_set =
                set_timestamp_item(canvas_block,
                                   canvas_block->original_age_box, 
                                   canvas_block->original_age_item, canvas_block->original_age);
        
        hippo_canvas_item_set_visible(HIPPO_CANVAS_ITEM(canvas_block->original_age_box),
                                      canvas_block->expanded && canvas_block->original_age_set);
    }
}
Пример #25
0
static GObject*
hippo_canvas_chat_preview_constructor (GType                  type,
                                       guint                  n_construct_properties,
                                       GObjectConstructParam *construct_properties)
{
    GObject *object = G_OBJECT_CLASS(hippo_canvas_chat_preview_parent_class)->constructor(type,
                                                                                          n_construct_properties,
                                                                                          construct_properties);
    
    HippoCanvasChatPreview *chat_preview = HIPPO_CANVAS_CHAT_PREVIEW(object);
    HippoCanvasBox *box;
    HippoCanvasItem *item;
    int i;
    
    for (i = 0; i < MAX_PREVIEWED; ++i) {
        chat_preview->message_previews[i] = g_object_new(HIPPO_TYPE_CANVAS_MESSAGE_PREVIEW,
                                                         "actions", chat_preview->actions,
                                                         NULL);
        
        hippo_canvas_box_append(HIPPO_CANVAS_BOX(chat_preview),
                                chat_preview->message_previews[i],
                                0);
    }

    box = g_object_new(HIPPO_TYPE_CANVAS_BOX,
                       "orientation", HIPPO_ORIENTATION_HORIZONTAL,
                       "color", HIPPO_CANVAS_BLOCK_GRAY_TEXT_COLOR,
                       NULL);

    hippo_canvas_box_append(HIPPO_CANVAS_BOX(chat_preview), HIPPO_CANVAS_ITEM(box), 0);
    
    item = g_object_new(HIPPO_TYPE_CANVAS_LINK,
                        "tooltip", "View all quips and comments",
                        NULL);
    chat_preview->chat_link = item;
    hippo_canvas_box_append(box, item, 0);

    g_signal_connect(G_OBJECT(item), "activated",
                     G_CALLBACK(on_chat_activated), chat_preview);

    update_chat_messages_count(chat_preview);
    update_chat_messages(chat_preview);
    hippo_canvas_chat_preview_update_visibility(chat_preview);

    return object;
}
static void
on_block_queue_changed(HippoBlock *block,
                       GParamSpec *arg, /* null when first calling this */
                       void       *data)
{
    HippoCanvasBlock *canvas_block = HIPPO_CANVAS_BLOCK(data);
    HippoCanvasBlockNetflixMovie *block_netflix = HIPPO_CANVAS_BLOCK_NETFLIX_MOVIE(data);
    GSList *queue = NULL;
    GSList *l;
    
    if (block)
        queue = hippo_block_netflix_movie_get_queue(HIPPO_BLOCK_NETFLIX_MOVIE(block));

    hippo_canvas_box_remove_all(block_netflix->queue_list_box);
    
    for (l = queue; l; l = l->next) {
        HippoNetflixMovie *movie;
        HippoCanvasBox *box;
        HippoCanvasItem *number, *title;
        char *priority_str;
        
        movie = l->data;
        
        box = g_object_new(HIPPO_TYPE_CANVAS_BOX, "orientation", HIPPO_ORIENTATION_HORIZONTAL, NULL);
        
        priority_str = g_strdup_printf("%d", hippo_netflix_movie_get_priority(movie));
        number = g_object_new(HIPPO_TYPE_CANVAS_TEXT, "text", priority_str, NULL);
        g_free(priority_str);
        hippo_canvas_box_append(box, number, 0);
        
        title = g_object_new(HIPPO_TYPE_CANVAS_URL_LINK, 
                             "actions", hippo_canvas_block_get_actions(canvas_block),
                             "xalign", HIPPO_ALIGNMENT_START,
                             "size-mode", HIPPO_CANVAS_SIZE_ELLIPSIZE_END,
                             "text", hippo_netflix_movie_get_title(movie),
                             "url", hippo_netflix_movie_get_url(movie),
                             "underline", FALSE,
                             "padding-left", 4,
                             NULL);
        
        hippo_canvas_box_append(box, title, 0);
        
        hippo_canvas_box_append(block_netflix->queue_list_box, HIPPO_CANVAS_ITEM(box), 0);            
    }
}
Пример #27
0
static void
image_set_on_canvas_item_func(HippoSurface *surface,
                              void         *data)
{
    HippoCanvasItem *item = HIPPO_CANVAS_ITEM(data);

    /* g_debug("Setting image on canvas item, surface=%p", surface); */

    if (surface != NULL) {
        g_object_set(G_OBJECT(item),
                     "image",
                     hippo_surface_get_surface(surface),
                     NULL);
    }

    /* this function held a ref */
    g_object_unref(item);
}
static GObject*
hippo_canvas_block_group_chat_constructor (GType                  type,
                                           guint                  n_construct_properties,
                                           GObjectConstructParam *construct_properties)
{
    GObject *object = G_OBJECT_CLASS(hippo_canvas_block_group_chat_parent_class)->constructor(type,
                                                                                              n_construct_properties,
                                                                                              construct_properties);
    
    HippoCanvasBlock *block = HIPPO_CANVAS_BLOCK(object);
    HippoCanvasBlockGroupChat *block_group_chat = HIPPO_CANVAS_BLOCK_GROUP_CHAT(object);
    HippoCanvasBox *box;
        
    hippo_canvas_block_set_heading(block, _("Group chat: "));

    box = g_object_new(HIPPO_TYPE_CANVAS_BOX,
                       NULL);

    block_group_chat->parent_box = box;
    
    block_group_chat->single_message_preview = g_object_new(HIPPO_TYPE_CANVAS_MESSAGE_PREVIEW,
                                                           "actions", hippo_canvas_block_get_actions(block),
                                                           NULL);
    hippo_canvas_box_append(block_group_chat->parent_box,
                            block_group_chat->single_message_preview, 0);
    hippo_canvas_box_set_child_visible(block_group_chat->parent_box,
                                       block_group_chat->single_message_preview,
                                       TRUE); /* not expanded at first */

    
    block_group_chat->chat_preview = g_object_new(HIPPO_TYPE_CANVAS_CHAT_PREVIEW,
                                                  "actions", hippo_canvas_block_get_actions(block),
                                                  NULL);
    hippo_canvas_box_append(block_group_chat->parent_box,
                            block_group_chat->chat_preview, 0);
    hippo_canvas_box_set_child_visible(block_group_chat->parent_box,
                                       block_group_chat->chat_preview,
                                       FALSE); /* not expanded at first */

    hippo_canvas_block_set_content(block, HIPPO_CANVAS_ITEM(box));
    
    return object;
}
Пример #29
0
static void
hippo_canvas_control_position(HippoCanvasControl *control)
{
    HippoCanvasItem *item = HIPPO_CANVAS_ITEM(control);
    HippoCanvasBox *box = HIPPO_CANVAS_BOX(item);

    int x, y, w, h;
    int control_x, control_y;
    
    if (control->control == NULL)
        return;

    control->control->getLastRequest(&w, &h);

    hippo_canvas_box_align(box, w, h, &x, &y, &w, &h);

    control_x = 0;
    control_y = 0;
    if (box->context)
        hippo_canvas_context_translate_to_widget(box->context, item,
                                                 &control_x, &control_y);

    control->control->sizeAllocate(control_x + x, control_y + y, w, h);
}
Пример #30
0
static GObject*
hippo_canvas_base_constructor (GType                  type,
                               guint                  n_construct_properties,
                               GObjectConstructParam *construct_properties)
{
    GObject *object = G_OBJECT_CLASS(hippo_canvas_base_parent_class)->constructor(type,
                                                                                  n_construct_properties,
                                                                                  construct_properties);
    HippoCanvasBase *base = HIPPO_CANVAS_BASE(object);
    HippoCanvasItem *item;
    HippoCanvasBox *box;
    
    /* Create top bar */
    
    box = g_object_new(HIPPO_TYPE_CANVAS_IMAGE,
                       "orientation", HIPPO_ORIENTATION_HORIZONTAL,
                       "image-name", "bar_middle", /* tile this as background */
                       NULL);
    hippo_canvas_box_append(HIPPO_CANVAS_BOX(base),
                            HIPPO_CANVAS_ITEM(box), 0);

    g_signal_connect_after(G_OBJECT(box), "button-press-event", G_CALLBACK(on_title_bar_button_press_event), base);

    if (base->notification_mode) {
        item = g_object_new(HIPPO_TYPE_CANVAS_IMAGE_BUTTON,
                            "normal-image-name", "arrow",
                            "prelight-image-name", "arrow2",
                            "xalign", HIPPO_ALIGNMENT_START,
                            "tooltip", "Browse all items",
                            NULL);
        hippo_canvas_box_append(box, item, 0);
    
        g_signal_connect(G_OBJECT(item), "activated", G_CALLBACK(on_expand_activated), base);
        g_signal_connect(G_OBJECT(item), "button-press-event", G_CALLBACK(on_button_button_press_event), base);

        add_pipe_bar(box, 0);
    }
    
    item = g_object_new(HIPPO_TYPE_CANVAS_IMAGE,
                        "image-name", "mugshotstacker",
                        "xalign", HIPPO_ALIGNMENT_START,
                        NULL);
    hippo_canvas_box_append(box, item, 0);

    item = g_object_new(HIPPO_TYPE_CANVAS_IMAGE_BUTTON,
                        "normal-image-name", "bar_x",
                        "prelight-image-name", "bar_x2",
                        "xalign", HIPPO_ALIGNMENT_END,
                        "tooltip", "Close",
                        NULL);
    hippo_canvas_box_append(box, item, HIPPO_PACK_END);

    g_signal_connect(G_OBJECT(item), "activated", G_CALLBACK(on_close_activated), base);
    g_signal_connect(G_OBJECT(item), "button-press-event", G_CALLBACK(on_button_button_press_event), base);

    add_pipe_bar(box, HIPPO_PACK_END);

    if (base->notification_mode) {
        item = g_object_new(HIPPO_TYPE_CANVAS_IMAGE_BUTTON,
                            "normal-image-name", "hush",
                            "prelight-image-name", "hush2",
                            "xalign", HIPPO_ALIGNMENT_END,
                            "tooltip", "Don't bug me for a while",
                            NULL);
        hippo_canvas_box_append(box, item, HIPPO_PACK_END);
    
        g_signal_connect(G_OBJECT(item), "activated", G_CALLBACK(on_hush_activated), base);
        g_signal_connect(G_OBJECT(item), "button-press-event", G_CALLBACK(on_button_button_press_event), base);

        add_pipe_bar(box, HIPPO_PACK_END);
    }
    
    if (!base->notification_mode) {
        item = g_object_new(HIPPO_TYPE_CANVAS_IMAGE_BUTTON,
                            "normal-image-name", "home",
                            "prelight-image-name", "home2",
                            "xalign", HIPPO_ALIGNMENT_END,
                            "tooltip", "Open Mugshot home page",
                            NULL);
        hippo_canvas_box_append(box, item, HIPPO_PACK_END);
        
        g_signal_connect(G_OBJECT(item), "activated", G_CALLBACK(on_home_activated), base);
        g_signal_connect(G_OBJECT(item), "button-press-event", G_CALLBACK(on_button_button_press_event), base);
        
        add_pipe_bar(box, HIPPO_PACK_END);
        
        item = g_object_new(HIPPO_TYPE_CANVAS_IMAGE_BUTTON,
                            "normal-image-name", "filter",
                            "prelight-image-name", "filter2",
                            "xalign", HIPPO_ALIGNMENT_END,
                            "tooltip", "Show filters",
                            NULL);
        hippo_canvas_box_append(box, item, HIPPO_PACK_END);
        g_signal_connect(G_OBJECT(item), "activated", G_CALLBACK(on_filter_activated), base);
        g_signal_connect(G_OBJECT(item), "button-press-event", G_CALLBACK(on_button_button_press_event), base);        
        
        add_pipe_bar(box, HIPPO_PACK_END);        
    }
        
#if 0    
    /* Create "find" area */
    box = g_object_new(HIPPO_TYPE_CANVAS_GRADIENT,
                       "orientation", HIPPO_ORIENTATION_HORIZONTAL,
                       "start-color", 0xb47accff,
                       "end-color", 0xa35abfff,
                       NULL);
    hippo_canvas_box_append(HIPPO_CANVAS_BOX(base),
                            HIPPO_CANVAS_ITEM(box), HIPPO_PACK_EXPAND);

    item = g_object_new(HIPPO_TYPE_CANVAS_IMAGE,
                        "image-name", "find",
                        "xalign", HIPPO_ALIGNMENT_START,
                        NULL);
    hippo_canvas_box_append(box, item, 0);

    item = g_object_new(HIPPO_TYPE_CANVAS_IMAGE,
                        "image-name", "search_x",
                        "xalign", HIPPO_ALIGNMENT_START,
                        NULL);
    hippo_canvas_box_append(box, item, 0);
#endif

    return object;
}