static void
hippo_canvas_block_facebook_event_set_block(HippoCanvasBlock *canvas_block,
                                             HippoBlock       *block)
{
    /* g_debug("canvas-block-facebook-person set block %p", block); */

    if (block == canvas_block->block)
        return;

    if (canvas_block->block != NULL) {
        g_signal_handlers_disconnect_by_func(G_OBJECT(canvas_block->block),
                                             G_CALLBACK(on_user_changed),
                                             canvas_block);
        set_person(HIPPO_CANVAS_BLOCK_FACEBOOK_EVENT(canvas_block), NULL);

        g_signal_handlers_disconnect_by_func(G_OBJECT(HIPPO_BLOCK_FACEBOOK_EVENT(canvas_block->block)),
                                             G_CALLBACK(on_title_changed),
                                             canvas_block);
        hippo_canvas_block_set_title(canvas_block, NULL, NULL, FALSE);
    }

    /* Chain up to get the block really changed */
    HIPPO_CANVAS_BLOCK_CLASS(hippo_canvas_block_facebook_event_parent_class)->set_block(canvas_block, block);

    if (canvas_block->block != NULL) {
        HippoThumbnails *thumbnails;

        g_signal_connect(G_OBJECT(canvas_block->block),
                         "notify::user",
                         G_CALLBACK(on_user_changed),
                         canvas_block);

        g_signal_connect(G_OBJECT(HIPPO_BLOCK_FACEBOOK_EVENT(canvas_block->block)),
                         "notify::title",
                         G_CALLBACK(on_title_changed),
                         canvas_block);

        on_user_changed(canvas_block->block, NULL,
                        HIPPO_CANVAS_BLOCK_FACEBOOK_EVENT(canvas_block));
        
        on_title_changed(HIPPO_BLOCK_FACEBOOK_EVENT(canvas_block->block), NULL,
                         HIPPO_CANVAS_BLOCK_FACEBOOK_EVENT(canvas_block));

        thumbnails = hippo_block_facebook_event_get_thumbnails(HIPPO_BLOCK_FACEBOOK_EVENT(canvas_block->block));
        if (thumbnails != NULL) {
            g_object_set(HIPPO_CANVAS_BLOCK_FACEBOOK_EVENT(canvas_block)->thumbnails,
                         "thumbnails", thumbnails,
                         NULL);        
            if (hippo_thumbnails_get_count(thumbnails) <= 0)
                canvas_block->expandable = FALSE;
        } else {
            canvas_block->expandable = FALSE;
        }
    }
}
static void
hippo_canvas_block_netflix_movie_dispose(GObject *object)
{
    HippoCanvasBlockNetflixMovie *block;

    block = HIPPO_CANVAS_BLOCK_NETFLIX_MOVIE(object);

    set_person(block, NULL);

    G_OBJECT_CLASS(hippo_canvas_block_netflix_movie_parent_class)->dispose(object);
}
static void
hippo_canvas_block_facebook_event_dispose(GObject *object)
{
    HippoCanvasBlockFacebookEvent *block_facebook_event;

    block_facebook_event = HIPPO_CANVAS_BLOCK_FACEBOOK_EVENT(object);

    set_person(block_facebook_event, NULL);

    G_OBJECT_CLASS(hippo_canvas_block_facebook_event_parent_class)->dispose(object);
}
static void
on_user_changed(HippoBlock *block,
                GParamSpec *arg, /* null when first calling this */
                HippoCanvasBlockFacebookEvent *block_facebook_event)
{
    HippoPerson *person;
    person = NULL;
    g_object_get(G_OBJECT(block), "user", &person, NULL);
    set_person(block_facebook_event, person);
    if (person)
        g_object_unref(person);
}
static void
on_user_changed(HippoBlock *block,
                GParamSpec *arg, /* null when first calling this */
                HippoCanvasBlockNetflixMovie *block_netflix)
{
    HippoPerson *person;
    person = NULL;

    if (block)
        g_object_get(G_OBJECT(block), "user", &person, NULL);
    
    set_person(block_netflix, person);
    if (person)
        g_object_unref(person);
}
static void
hippo_canvas_block_netflix_movie_set_block(HippoCanvasBlock *canvas_block,
                                           HippoBlock       *block)
{
    HippoCanvasBlockNetflixMovie *block_netflix = HIPPO_CANVAS_BLOCK_NETFLIX_MOVIE(canvas_block);

    if (block == canvas_block->block)
        return;

    if (canvas_block->block != NULL) {
        g_signal_handlers_disconnect_by_func(G_OBJECT(canvas_block->block),
                                             G_CALLBACK(on_user_changed),
                                             canvas_block);
        g_signal_handlers_disconnect_by_func(G_OBJECT(canvas_block->block),
                                             G_CALLBACK(on_block_description_changed),
                                             canvas_block);                                             
        g_signal_handlers_disconnect_by_func(G_OBJECT(canvas_block->block),
                                             G_CALLBACK(on_block_chat_id_changed),
                                             canvas_block);
        g_signal_handlers_disconnect_by_func(G_OBJECT(canvas_block->block),
                                             G_CALLBACK(on_block_queue_changed),
                                             canvas_block);
        g_signal_handlers_disconnect_by_func(G_OBJECT(canvas_block->block),
                                             G_CALLBACK(on_block_image_url_changed),
                                             canvas_block);
        g_signal_handlers_disconnect_by_func(G_OBJECT(canvas_block->block),
                                             G_CALLBACK(on_block_title_changed),
                                             canvas_block);
        g_signal_handlers_disconnect_by_func(G_OBJECT(canvas_block->block),
                                             G_CALLBACK(on_block_title_link_changed),
                                             canvas_block);
        g_signal_handlers_disconnect_by_func(G_OBJECT(canvas_block->block),
                                             G_CALLBACK(on_block_icon_url_changed),
                                             canvas_block);
        set_person(HIPPO_CANVAS_BLOCK_NETFLIX_MOVIE(canvas_block), NULL);
    }

    /* Chain up to get the block really changed */
    HIPPO_CANVAS_BLOCK_CLASS(hippo_canvas_block_netflix_movie_parent_class)->set_block(canvas_block, block);

    g_object_set(block_netflix->quipper,
                 "block", canvas_block->block,
                 NULL);
    g_object_set(block_netflix->last_message_preview,
                 "block", canvas_block->block,
                 NULL);
    g_object_set(block_netflix->chat_preview,
                 "block", canvas_block->block,
                 NULL);
    
    if (canvas_block->block != NULL) {
        g_signal_connect(G_OBJECT(canvas_block->block),
                         "notify::user",
                         G_CALLBACK(on_user_changed),
                         canvas_block);
        g_signal_connect(G_OBJECT(canvas_block->block),
                         "notify::description",
                         G_CALLBACK(on_block_description_changed),
                         canvas_block);                         
        g_signal_connect(G_OBJECT(canvas_block->block),
                         "notify::chat-id",
                         G_CALLBACK(on_block_chat_id_changed),
                         canvas_block);
        g_signal_connect(G_OBJECT(canvas_block->block),
                         "notify::queue",
                         G_CALLBACK(on_block_queue_changed),
                         canvas_block);
        g_signal_connect(G_OBJECT(canvas_block->block),
                         "notify::image-url",
                         G_CALLBACK(on_block_image_url_changed),
                         canvas_block);
        g_signal_connect(G_OBJECT(canvas_block->block),
                         "notify::title",
                         G_CALLBACK(on_block_title_changed),
                         canvas_block);
        g_signal_connect(G_OBJECT(canvas_block->block),
                         "notify::title-link",
                         G_CALLBACK(on_block_title_link_changed),
                         canvas_block);
        g_signal_connect(G_OBJECT(canvas_block->block),
                         "notify::icon-url",
                         G_CALLBACK(on_block_icon_url_changed),
                         canvas_block);
    }

    on_user_changed(canvas_block->block, NULL, block_netflix);
    on_block_description_changed(canvas_block->block, NULL, block_netflix);
    on_block_chat_id_changed(canvas_block->block, NULL, block_netflix);
    on_block_queue_changed(canvas_block->block, NULL, block_netflix);
    on_block_image_url_changed(canvas_block->block, NULL, block_netflix);
    on_block_title_changed(canvas_block->block, NULL, block_netflix);
    on_block_title_link_changed(canvas_block->block, NULL, block_netflix);
    on_block_icon_url_changed(canvas_block->block, NULL, block_netflix);
}
Esempio n. 7
0
 EndingOk(char *keys, gk_string *gstr, gk_string *avoidgstr, int wantderiv)
{
	int good = 0;
	gk_word * BlnkGkword;
	
	Cur_gkend = BlankGkend;
	BlnkGkword = CreatGkword(1);
	ScanAsciiKeys(keys,BlnkGkword,&Cur_gkend,avoidgstr);
	FreeGkword(BlnkGkword);
	
	if( wantderiv ) {
		if( ! derivtype_of(gstr) || derivtype_of(gstr) < 0 ) return(0);
		
		if( derivtype_of(gstr) != derivtype_of(&Cur_gkend)) 
			return(0);
	}
	
	good =  (WantGkEnd(gstr,&Cur_gkend,NO,0) > 0) &&
	  (NoWantGkEnd(avoidgstr,&Cur_gkend,1) == 0 );
/*
if( ! good ) {
printf("gstr [%s] [%s] want %o nowant %o\n",gkstring_of(gstr), gkstring_of(&Cur_gkend), WantGkEnd(gstr,&Cur_gkend,NO,0) ,
NoWantGkEnd(avoidgstr,&Cur_gkend,1)  );
LPrntGstr(gstr,stdout);
LPrntGstr(&Cur_gkend,stdout);

}
*/
	if( good ) {
		int case1, case2;
		int gend1, gend2;
		int num2, pers2;
		int voice1, voice2;
		Dialect dial1, dial2;

		voice1 = voice_of(forminfo_of(&Cur_gkend));
		voice2 = voice_of(forminfo_of(gstr));
		
		if( voice1 ) set_voice(forminfo_of(gstr),voice1);
		
		case1 = case_of(forminfo_of(&Cur_gkend));
		case2 = case_of(forminfo_of(gstr));
		if( case1 & case2 )
			set_case(forminfo_of(gstr), (case1 & case2) );
		else if( case1 && ! case2 )
			set_case(forminfo_of(gstr), case1 );
	
		num2 = number_of(forminfo_of(&Cur_gkend));
		if( num2 )
			set_number(forminfo_of(gstr), number_of(forminfo_of(&Cur_gkend)) );

		pers2 = person_of(forminfo_of(&Cur_gkend));
		if( pers2 )
			set_person(forminfo_of(gstr), person_of(forminfo_of(&Cur_gkend)) );

		gend1 = gender_of(forminfo_of(&Cur_gkend));
		gend2 = gender_of(forminfo_of(gstr));
		if( gend1 & gend2 )
			set_gender(forminfo_of(gstr), (gend1 & gend2) );
		else if( gend1 && ! gend2 )
			set_gender(forminfo_of(gstr), gend1 );

		dial1 = dialect_of(&Cur_gkend);
		dial2 = dialect_of(gstr);
		if( dial1 & dial2 ) 
			set_dialect(gstr,(dial1 & dial2) );
		else if( dial1 && (! dial2) )
			set_dialect(gstr,dial1);
			
		add_morphflags(gstr,morphflags_of(&Cur_gkend));
	}
	return( good );
}