/**   
 * listitemlive was clicked
 */   
static int listitemlive_click(liqcell *self,liqcellclickeventargs *args, void *context)
{
	// code required
	// 20090421_191821 lcuk : switch between yes and no, eventually make into icons
	
	char *cap = liqcell_getcaption(self);
	
	if( (strcasecmp(cap,"Y")==0) )
	{
		//liqcell_setcaption(self,"N");
		//liqcell_propsets(  self, "textcolor", "rgb(255,0,0)" );
		liqcell_setcaption(self,"N");
		liqcell_propsets(  self, "textcolor", "rgb(255,0,0)" );
		desktopmanage_live_untickall(context);
	}
	else
	{
		// disable all others then set this one.
		desktopmanage_live_untickall(context);
		liqcell_setcaption(self,"Y");
		liqcell_propsets(  self, "textcolor", "rgb(0,255,0)" );
	}

	return 1;
}
Beispiel #2
0
/**
 * Create a numberbox ui component
 * @param caption The caption
 * @param datafefault Data caption
 * @return liqcell* The new numberbox
 */
liqcell *uinumberbox_create(const char *caption, const char *datadefault)
{
	
	liqcell *self = liqcell_quickcreatewidget(caption,"uinumberbox", 800,80);
	
	if(self)
	{

		liqcell_propsets(  self,  "backcolor", "rgb(0,0,0)" );
		
			liqcell *body = liqcell_quickcreatevis("body","frame", 10,10,   200,60);
			liqcell_setfont(   body,  liqfont_cache_getttf("/usr/share/fonts/nokia/nosnb.ttf", (24), 0) );
			liqcell_propsets(  body,  "backcolor", "rgb(40,40,40)" );
			liqcell_propsets(  body,  "textcolor", "rgb(255,255,255)" );
			liqcell_setcaption(body,  caption );
		liqcell_child_insert( self, body );
		
		
			liqcell *data = liqcell_quickcreatevis("data","frame", 220,5,   560,70);
			liqcell_setfont(   data,  liqfont_cache_getttf("/usr/share/fonts/nokia/nosnb.ttf", (42), 0) );
			liqcell_propsets(  data,  "backcolor", "rgb(220,220,255)" );
			liqcell_propsets(  data,  "textcolor", "rgb(0,0,0)" );
			liqcell_setcaption(data,  datadefault );
		
		
		liqcell_child_insert( self, data );
	}
	return self;
}
Beispiel #3
0
/**
 * Create a txtmsgbox ui component, this is the development function
 * @param caption Body Caption
 * @param datadefault Caption of the data
 * @return liqcell* The new textbox
 */
liqcell *uitxtmsgbox_create(const char *caption, const char *datadefault)
{
	
	liqcell *self = liqcell_quickcreatewidget(caption,"txtmsgbox", 800,220);
	
	if(self)
	{

		liqcell_propsets(  self,  "backcolor", "rgb(0,0,0)" );
		
			liqcell *body = liqcell_quickcreatevis("body","frame", 10,10,   200,60);
			liqcell_setfont(   body,  liqfont_cache_getttf("/usr/share/fonts/nokia/nosnb.ttf", (24), 0) );
			liqcell_propsets(  body,  "backcolor", "rgb(40,40,40)" );
			liqcell_propsets(  body,  "textcolor", "rgb(255,255,255)" );
			liqcell_setcaption(body,  caption );
		liqcell_child_insert( self, body );
		
		
			liqcell *data = liqcell_quickcreatevis("data","textbox", 220,5,   560,210);
			liqcell_setfont(   data,  liqfont_cache_getttf("/usr/share/fonts/nokia/nosnb.ttf", (64), 0) );
			liqcell_propsets(  data,  "backcolor", "rgb(220,255,220)" );
			liqcell_propsets(  data,  "textcolor", "rgb(0,0,0)" );
			liqcell_propseti(  data,  "wordwrap", 1 );
			liqcell_propseti(  data,  "maxlength",  140 );
			liqcell_handleradd_withcontext(data, "captionchange", (void*)uitxtmsgbox_captionchange ,self);

			liqcell_setcaption(data,  datadefault );
		liqcell_child_insert( self, data );

	}
	return self;
}
Beispiel #4
0
/**	
 * create a new liqtasks_new widget
 */	
liqcell *liqtasks_new_create()
{
	liqcell *self = liqcell_quickcreatewidget("liqtasks_new", "form", 800, 480);
	if(!self) {liqapp_log("liqcell error not create 'liqtasks_new'"); return NULL;  } 
	
	// Optimization:  The aim is to REDUCE the number of drawn layers and operations called.
	// Optimization:  use only what you NEED to get an effect
	// Optimization:  Minimal layers and complexity
	// Optimization:  defaults: background, prefer nothing, will be shown through if there is a wallpaper
	// Optimization:  defaults: text, white, very fast rendering
	//############################# editor:label
	liqcell *editor = liqcell_quickcreatevis("editor", "label", 0, 0, 800, 480);
	liqcell_setfont(	editor, liqfont_cache_getttf("/usr/share/fonts/nokia/nosnb.ttf", (12), 0) );
	liqcell_setcaption(editor, "backplane" );
	liqcell_propsets(  editor, "textcolor", "rgb(255,0,0)" );
	liqcell_propsets(  editor, "backcolor", "rgb(64,64,64)" );
	liqcell_propseti(  editor, "textalign", 2 );
	liqcell_propseti(  editor, "textaligny", 2 );
	liqcell_child_append(  self, editor);
	//############################# title:label
	liqcell *title = liqcell_quickcreatevis("title", "label", 0, 0, 800, 52);
	liqcell_setfont(	title, liqfont_cache_getttf("/usr/share/fonts/nokia/nosnb.ttf", (29), 0) );
	liqcell_setcaption(title, "New Task" );
	liqcell_propsets(  title, "textcolor", "rgb(255,255,255)" );
	liqcell_propsets(  title, "backcolor", "xrgb(128,128,128)" );
	liqcell_propseti(  title, "textalign", 0 );
	liqcell_propseti(  title, "textaligny", 0 );
	liqcell_child_append(  self, title);
	//############################# cmdsave:label
	liqcell *cmdsave = liqcell_quickcreatevis("cmdsave", "label", 594, 432, 206, 48);
	liqcell_setfont(	cmdsave, liqfont_cache_getttf("/usr/share/fonts/nokia/nosnb.ttf", (29), 0) );
	liqcell_setcaption(cmdsave, "Save" );
	liqcell_propsets(  cmdsave, "textcolor", "rgb(255,255,255)" );
	liqcell_propsets(  cmdsave, "backcolor", "xrgb(0,64,0)" );
	liqcell_propsets(  cmdsave, "bordercolor", "rgb(255,255,255)" );
	liqcell_propseti(  cmdsave, "textalign", 2 );
	liqcell_propseti(  cmdsave, "textaligny", 2 );
	liqcell_handleradd_withcontext(cmdsave, "click", (void*)cmdsave_click, self );
	liqcell_child_append(  self, cmdsave);
	//liqcell_propsets(  self, "backcolor", "rgb(0,0,0)" );
	//liqcell_setimage(  self ,  liqimage_cache_getfile( "/usr/share/liqbase/liqtasks/media/liqtasks_new_back.png",0,0,0) );
	liqcell_handleradd_withcontext(self, "filter",		 (void*)liqtasks_new_filter ,self);
	liqcell_handleradd_withcontext(self, "refresh",		(void*)liqtasks_new_refresh ,self);
	liqcell_handleradd_withcontext(self, "shown",		  (void*)liqtasks_new_shown ,self);
	liqcell_handleradd_withcontext(self, "resize",	  (void*)liqtasks_new_resize ,self);
	liqcell_handleradd_withcontext(self, "layout",	  (void*)liqtasks_new_layout ,self);
	//liqcell_handleradd_withcontext(self, "keypress",	(void*)liqtasks_new_keypress,self );
	//liqcell_handleradd_withcontext(self, "keyrelease", (void*)liqtasks_new_keyrelease ,self);
	//liqcell_handleradd_withcontext(self, "mouse",		(void*)liqtasks_new_mouse,self );
	//liqcell_handleradd_withcontext(self, "click",		(void*)liqtasks_new_click ,self);
	//liqcell_handleradd_withcontext(self, "paint",		(void*)liqtasks_new_paint ,self); // use only if required, heavyweight
	liqcell_handleradd_withcontext(self, "dialog_open",  (void*)liqtasks_new_dialog_open ,self);
	liqcell_handleradd_withcontext(self, "dialog_close", (void*)liqtasks_new_dialog_close ,self);
	return self;
}
int desktopmanage_live_tickone(liqcell *desktopmanage,char *name)
{
    liqapp_log("desktopmanage: updating ticks");


	liqcell *list1 = liqcell_child_lookup( desktopmanage,"list1");
		//############################# backplane:picturebox
		liqcell *backplane =liqcell_child_lookup( list1,"backplane");
			//############################# listitem:picturebox
			liqcell *listitem = liqcell_getlinkchild_visual(backplane);
			while(listitem)
			{
				//if(liqcell_getflagvisual(listitem))
				{
                   char *key=listitem->name;
                    liqcell *listitemlive = liqcell_child_lookup( listitem,"listitemlive");
					if( (strcasecmp(key,name)==0) )
					{
						liqcell_setcaption(listitemlive,"Y");
						liqcell_propsets(  listitemlive, "textcolor", "rgb(0,255,,0)" );
					}
				}
				listitem=liqcell_getlinknext_visual(listitem);
			}
}
Beispiel #6
0
/**
 * Create a colorbox ui component
 * @param caption The caption
 * @param datafefault Data caption
 * @return liqcell* The new colorbox
 */
liqcell *uicolorbox_create(const char *caption, const char *datadefault)
{
	
	liqcell *self = liqcell_quickcreatewidget(caption,"uicolorbox", 800,150);
	
	if(self)
	{

		liqcell_propsets(  self,  "backcolor", "rgb(0,0,0)" );
		
			liqcell *body = liqcell_quickcreatevis("body","frame", 10,10,   200,130);
			liqcell_setfont(   body,  liqfont_cache_getttf("/usr/share/fonts/nokia/nosnb.ttf", (24), 0) );
			liqcell_propsets(  body,  "backcolor", "rgb(40,40,40)" );
			liqcell_propsets(  body,  "textcolor", "rgb(255,255,255)" );
			liqcell_setcaption(body,  caption );
		liqcell_child_insert( self, body );	
		
			liqcell *data = liqcell_quickcreatevis("data","frame", 270,5,   460,140);
			liqcell_propsets(  data,  "backcolor", datadefault );
			
			
		liqcell_handleradd_withcontext(data, "click", (void*)uicolorbox_click, self );


		liqcell_child_insert( self, data );
	}
	return self;
}
Beispiel #7
0
/**
 * Create a infobar ui component
 * @param infotext Caption of the bar
 * @return liqcell* The new infobar
 */
liqcell *uiinfobar_create(const char *key, const char *infotext)
{
	
	liqcell *self = liqcell_quickcreatewidget(key,"uiinfobar", 800,80);
	
	if(self)
	{

		liqcell_propsets(  self,  "backcolor", "rgb(0,0,0)" );
	
			liqcell *body = liqcell_quickcreatevis("body","frame", 10,10,   780,60);
			liqcell_setfont(   body,  liqfont_cache_getttf("/usr/share/fonts/nokia/nosnb.ttf", (36), 0) );
			liqcell_propsets(  body,  "backcolor", "rgb(40,40,40)" );
			liqcell_propsets(  body,  "textcolor", "rgb(220,220,255)" );
			liqcell_setcaption(body,  infotext );
			
			
			//liqcell_propseti(  body,  "selstart",  5 );
			//liqcell_propseti(  body,  "sellength", 12 );
			//liqcell_propseti(  body,  "cursorpos", 17 );
			
			//liqcell_handleradd(body,    "mouse",      textbox_mouse);
			//liqcell_handleradd(body,    "keypress",   textbox_keypress);
			//liqcell_handleradd(body,    "keyrelease", textbox_keyrelease);
			
			
		
		
		liqcell_child_insert( self, body );
	}
	return self;
}
Beispiel #8
0
int liqcalc_clearall(liqcell *self)
{
	liqcell *calclcd = liqcell_child_lookup(self, "calclcd");
	liqcell_setcaption(calclcd,"0");
	// clear the calc cache
	return 0;
}		
Beispiel #9
0
/**
 * Create a titlebar ui component
 * @param key Name of the widget
 * @param title Title to display
 * @param description Describe what this titlebar is for
 * @return liqcell* The new titlebar
 */
liqcell *uititlebar_create(const char *key, const char *title, const char *description)
{
	
	liqcell *self = liqcell_quickcreatewidget(key,"section", 800,100);
	
	if(self)
	{
		liqcell_propsets(  self,  "backcolor", "rgb(0,0,0)" );
		
		//texturestrip_blu.jpg
		liqcell_setimage(  self,  liqimage_cache_getfile( "/usr/share/liqbase/libliqbase/media/texturestrip_dark.jpg",0,0,0) );
		liqcell_propseti(self,"lockaspect",0);
		//liqcell_propsets(  self,  "backcolor", "xrgb(0,0,64)" );
	
		
		liqcell_child_append( self, liqcell_quickcreatevis("app_icon",   "icon",    5   ,10  ,    90, 80 )    );
		liqcell_child_append( self, liqcell_quickcreatevis("app_title",  "label",   100 ,0  ,   700, 55 )    );
		liqcell_child_append( self, liqcell_quickcreatevis("app_desc",   "label",   100 ,55 ,   700, 40 )    );

		liqcell_setimage(  liqcell_child_lookup( self,"app_icon"),  liqimage_cache_getfile( "/usr/share/liqbase/libliqbase/media/sun.png",0,0,1) );
		liqcell_setfont(   liqcell_child_lookup( self,"app_title"), liqfont_cache_getttf("/usr/share/fonts/nokia/nosnb.ttf", (40), 0) );
		liqcell_setfont(   liqcell_child_lookup( self,"app_desc"),  liqfont_cache_getttf("/usr/share/fonts/nokia/nosnb.ttf", (18), 0) );


		liqcell_propsets(  liqcell_child_lookup( self,"app_title"), "textcolor", "rgb(255,255,255)" );
		liqcell_propsets(  liqcell_child_lookup( self,"app_desc"),  "textcolor", "rgb(0,100,0)" );

		liqcell_setcaption(liqcell_child_lookup( self,"app_title"), title );
		liqcell_setcaption(liqcell_child_lookup( self,"app_desc"), description );

/*
			liqcell *clock = liqcell_quickcreatevis("clock",   "time",   500,0,   200,100 );
			//char buf[80];
			//liqapp_format_strftime(buf,80,"%H:%M:%S");
			//liqcell_setcaption(   clock, buf);
			liqcell_propsets(     clock,"timeformat","%H:%M:%S");
			liqcell_propseti(     clock,"textalign",2);
			liqcell_propseti(     clock,"textaligny",2);
			liqcell_propsets(     clock,"fontname", "/usr/share/fonts/nokia/nosnb.ttf" );
			liqcell_propseti(     clock,"fontsize", 32 );
			liqcell_propsets(     clock, "textcolor", "rgb(255,255,255)" );
		//	liqcell_handleradd(self,    "mouse",   widget_mouse);
			liqcell_child_append( self, clock    );
 */
	}
	return self;
}
	static int search_click(liqcell *self, liqcelleventargs *args, liqcell *sheepdrawing_pictureselect)
	{
		// try to add this tag :)
		//liqcell *body = liqcell_child_lookup(sheepdrawing_pictureselect,"body");
		char *searchterm = liqcell_getcaption(self);
		if(!searchterm || !*searchterm) return 1;
		liqcell_setcaption(self,"");
		return 1;
	}
Beispiel #11
0
int desktopmanage_updateticks(liqcell *desktopmanage)
{
    liqapp_log("desktopmanage: updating ticks");
	
	desktopmanage_live_untickall(desktopmanage);
	
        char *liveback = liqapp_pref_getvalue("liveback");
        if(liveback  && *liveback)
        {
			desktopmanage_live_tickone(desktopmanage,liveback);
		}

	liqcell *list1 = liqcell_child_lookup( desktopmanage,"list1");
		//############################# backplane:picturebox
		liqcell *backplane =liqcell_child_lookup( list1,"backplane");
			//############################# listitem:picturebox
			liqcell *listitem = liqcell_getlinkchild_visual(backplane);
			while(listitem)
			{
				//if(liqcell_getflagvisual(listitem))
				{
                   char *key=listitem->name;
                    liqcell *listitemicon = liqcell_child_lookup( listitem,"listitemtick");
 					char *cap = liqcell_getcaption(listitemicon);
                    
                    
                    if( !liqbase_playground_check_if_class_shown(key) )
                    {

                        liqcell_setcaption(listitemicon,"N");
                        liqcell_propsets(  listitemicon, "textcolor", "rgb(255,0,0)" );
                    }
                    else
                    {
                        //liqapp_log("desktopmanage: tick yes '%s'",key);
                        liqcell_setcaption(listitemicon,"Y");
                        liqcell_propsets(  listitemicon, "textcolor", "rgb(0,255,0)" );
                    }

                }
                listitem=liqcell_getlinknext_visual(listitem);
            }
    liqapp_log("desktopmanage: updated ticks");
}
Beispiel #12
0
/**	Construct a simplebar */
liqcell *simplebar_create()
{
	liqcell *self = liqcell_quickcreatewidget("simplebar", "form", 600, 50);
	
	// exit if fail create
	if(!self)
	{
		liqapp_log("liqcell error not create 'simplebar'"); 
		return NULL;
	}
	
	// create label
	liqcell *simple_label = liqcell_quickcreatevis("simple_label", "label", 20, 7, 200, 36);
	liqcell_setfont(simple_label, liqfont_cache_getttf("/usr/share/fonts/nokia/nosnb.ttf", (22), 0));
	liqcell_setcaption(simple_label, "Body Caption:");
	liqcell_propsets(simple_label, "textcolor", GREEN);
	liqcell_propseti(simple_label, "textalign", 1);
	liqcell_child_append(self, simple_label);
	
	// create textbox
	liqcell *simple_textbox = liqcell_quickcreatevis("simple_textbox", "textbox", 220, 7, 200, 36);
	liqcell_setfont(simple_textbox, liqfont_cache_getttf("/usr/share/fonts/nokia/nosnb.ttf", (22), 0) );
	liqcell_setcaption(simple_textbox, "");
	liqcell_propsets(simple_textbox, "textcolor", WHITE);
	liqcell_propsets(simple_textbox, "backcolor", BLACK);
	liqcell_propsets(simple_textbox, "bordercolor", GREEN);
	liqcell_propseti(simple_textbox, "textalign", 0);
	liqcell_propseti(simple_textbox, "textaligny", 2);
	liqcell_child_append(self, simple_textbox);
	
	// create buttom: Submit
	liqcell *simple_submit = liqcell_quickcreatevis("simple_submit", "commandbutton", 460, 7, 76, 32);
	liqcell_setfont(simple_submit, liqfont_cache_getttf("/usr/share/fonts/nokia/nosnb.ttf", (22), 0) );
	liqcell_setcaption(simple_submit, "Submit");
	liqcell_propsets(simple_submit, "textcolor", GREEN);
	liqcell_propsets(simple_submit, "backcolor", BLACK);
	liqcell_handleradd_withcontext(simple_submit, "click", simplebar_submit_click, self);
	liqcell_propseti(simple_submit, "textalign", 1);
	liqcell_child_append(self, simple_submit);
	
	return self;
}
Beispiel #13
0
/**   
 * listitemtick was clicked
 */   
static int listitemtick_click(liqcell *self,liqcellclickeventargs *args, void *context)
{
	// code required
	// 20090421_191821 lcuk : switch between yes and no, eventually make into icons
	
	char *cap = liqcell_getcaption(self);
	
	if( (strcasecmp(cap,"Y")==0) )
	{
		liqcell_setcaption(self,"N");
		liqcell_propsets(  self, "textcolor", "rgb(255,0,0)" );
	}
	else
	{
		liqcell_setcaption(self,"Y");
		liqcell_propsets(  self, "textcolor", "rgb(0,255,0)" );
	}

	return 1;
}
Beispiel #14
0
/**
 * liqmap widget shown - occurs once per lifetime
 */
static int liqmap_shown(liqcell *self,liqcelleventargs *args, liqcell *liqmap)
{
    liqcell *liqmapzoom1 = liqcell_child_lookup(liqmap, "liqmapzoom1");
    liqcell *cmdreset = liqcell_child_lookup(liqmap, "cmdreset");
    liqcell *cmdchange = liqcell_child_lookup(liqmap, "cmdchange");
    liqcell *title = liqcell_child_lookup(liqmap, "title");
    liqmapzoom_settings_load(liqmapzoom1);



    // the owner might have specified a map filename

    char *selfn=liqcell_propgets(  self, "liqmap_filename",NULL );
    if( selfn && *selfn )
    {
        //
        int liqmapzoom_changeimagefilename(liqcell *liqmapzoom,char *imagefilename);

        liqmapzoom_changeimagefilename(liqmapzoom1,selfn);


        liqcell_setcaption_printf(title, "liqmap :: %s", liqapp_filename_walkoverpath( selfn ) );
        liqcell_setvisible(cmdreset,0);
        liqcell_setvisible(cmdchange,0);




    }
    else
    {
        char *mapfn =       liqapp_pref_getvalue_def("liqmap_filename", "http://liqbase.net/papermaps/instructions.png" );

        if(mapfn && *mapfn)
        {
            liqcell_setcaption_printf(title, "liqmap :: %s", liqapp_filename_walkoverpath( mapfn ) );

        }
        else
        {

            liqcell_setcaption(title, "liqmap viewer" );
        }
        liqcell_setvisible(cmdreset,0);
        liqcell_setvisible(cmdchange,1);

    }


    return 0;

}
Beispiel #15
0
/**	Simplebar Submit Button Action */	
static int simplebar_submit_click(liqcell *self, liqcelleventargs *args, liqcell *simplebar)
{
	// get textbox caption
	liqcell *textbox = liqcell_child_lookup(simplebar, "simple_textbox");
	char *caption = liqcell_getcaption(textbox);
	
	// set the caption of body
	liqcell *app = liqcell_getlinkparent(simplebar);
	liqcell *body = liqcell_child_lookup(app, "body");
	liqcell_setcaption(body, caption);

	return 1;
}
Beispiel #16
0
/**
 * Create a textbox ui component
 * @return liqcell* The new textbox
 */
liqcell *textbox_create()
{
	
	liqcell *self = liqcell_quickcreatewidget("textbox","form", 600,50);
	
	if(self)
	{
			
		liqcell_setfont(   self,  liqfont_cache_getttf("/usr/share/fonts/nokia/nosnb.ttf", (24), 0) );
		//liqcell_propsets(  self,  "backcolor", "rgb(100,255,150)" );
		//liqcell_propsets(  self,  "textcolor", "rgb(20,30,40)" );
		//liqcell_propsets(  self,  "bordercolor", "rgb(255,255,255)" );

        liqcell_propsets(  self,  "textcolor", "rgb(0,0,0)" );
		//liqcell_setimage(  self,  liqimage_cache_getfile("/usr/share/liqbase/onedotzero/media/2_text_back.png", 0,0,1) );
        liqcell_setimage(  self,  liqimage_cache_getfile("/usr/share/liqbase/onedotzero/media/2.message/message_input_field.png", 0,0,1) );
		liqcell_propseti(  self,  "lockaspect",  0 );
		//liqcell_propremoves(  self,  "bordercolor" );
		//liqcell_propremoves(  self,  "backcolor" );
				
		liqcell_propseti(  self,  "maxlength",  140 );

		liqcell_propseti(  self,  "selstart",  0 );
		liqcell_propseti(  self,  "sellength", 0 );
		liqcell_propseti(  self,  "cursorpos", 0 );
			
		liqcell_handleradd(self,    "mouse",      textbox_mouse);
		liqcell_handleradd(self,    "keypress",   textbox_keypress);
		liqcell_handleradd(self,    "keyrelease", textbox_keyrelease);
		
		liqcell_handleradd(self,    "resize",   textbox_resize);
	
			
		// add vkbd
		liqcell *vkbd_command = liqcell_quickcreatevis("vkbd_command" , "commandbutton", 0, 0, 0, 0);
		liqcell_handleradd_withcontext(vkbd_command, "click", keyboard_show_button_click, self);
		liqcell_setfont(vkbd_command, liqfont_cache_getttf("/usr/share/fonts/nokia/nosnb.ttf", (12), 0));
		liqcell_setcaption(vkbd_command, "ABC");
		liqcell_propsets(vkbd_command, "backcolor", CYAN);
		liqcell_propsets(vkbd_command, "textcolor", BLACK);
		liqcell_propseti(vkbd_command, "textalign", 2);
		liqcell_propseti(vkbd_command, "textaligny", 2);
		liqcell_propseti(vkbd_command, "lockaspect", 1);
		
		liqcell_setvisible(vkbd_command,0);		// Wed Aug 19 19:08:20 2009 lcuk : proper way would be checking for no keyboard..
		
		liqcell_child_insert(self, vkbd_command);
	}
	return self;
}
Beispiel #17
0
static int keyboard_show_button_click(liqcell *self,liqcellclickeventargs *args, liqcell *textbox)
{
	liqcell *vkbd = liqcell_quickcreatevis("vkbd", "liqkeyboard", 0, 0, -1, -1);
	liqcell *vkbd_textbox = liqcell_child_lookup(vkbd, "liqkeyboard_textbox");
	
	if(vkbd)
	{
		// 20090814_203451 lcuk : make sure the * follow into the vkb :)
		liqcell_propseti(vkbd_textbox,"textispassword",  liqcell_propgeti(textbox,"textispassword",0)  );
		
		char *caption = liqcell_getcaption(textbox);
		liqcell_setcaption(vkbd_textbox, caption);
		liqcell_setdata(vkbd, textbox);
		liqcell_easyrun(vkbd);
		liqcell_release(vkbd);
	}
	return 1;
}
Beispiel #18
0
/**
 * liqmap.cmdchange clicked
 */
static int cmdchange_click(liqcell *self,liqcellclickeventargs *args, liqcell *liqmap)
{

    liqcell *liqmapzoom1 = liqcell_child_lookup(liqmap, "liqmapzoom1");



    liqcell *title = liqcell_child_lookup(liqmap, "title");









    liqcell * dialog = liqcell_quickcreatevis("dialog","dialog_selectimage",0,0,-1,-1);
    if(dialog)
    {
        // set dialog config options ..
        // ...
        // run dialog
        liqcell_easyrun(dialog);
        // process dialog results
        char *selfn=liqcell_propgets(  dialog, "imagefilenameselected",NULL );
        if( selfn && *selfn )
        {
            //
            int liqmapzoom_changeimagefilename(liqcell *liqmapzoom,char *imagefilename);

            liqmapzoom_changeimagefilename(liqmapzoom1,selfn);

            liqcell_setcaption(title, liqapp_filename_walkoverpath( selfn ) );
        }

        // release dialog

        liqcell_release(dialog);
    }

    return 0;
}
Beispiel #19
0
int liqcalc_adddot(liqcell *self)
{
	// append a . to the current caption
	// ensure its valid numerically first
	// if its "0", just use the new cap
	// if its blank, use "0."
	liqcell *calclcd = liqcell_child_lookup(self, "calclcd");
	char *cap = liqcell_getcaption(calclcd);
	if(!cap)cap="";
	if(*cap && !isdigit(*cap))cap="";
	if(strcmp(cap,"0")==0)cap="";
	if(strlen(cap)<9 && strstr(cap,".")==NULL)
	{
		if(!*cap)cap="0";
		char newcap[32];
		snprintf(newcap,sizeof(newcap),"%s%c",cap,'.');
		liqcell_setcaption(calclcd,newcap);
	}
	return 0;
}		
Beispiel #20
0
liqcell *uitoolitem_create(char *key,char *caption,char *imagefilename,void (*handler)(),void *context)
{

	liqcell *self = liqcell_quickcreatewidget(key,"form", 50,50);

	if(self)
	{
		if(caption && *caption) liqcell_setcaption(   self, caption );
		
		liqcell_setimage(     self ,  liqimage_cache_getfile( imagefilename,0,0,1) );
		
		liqcell_propseti(     self ,  "lockaspect",1);
		
		//liqcell_propsets(     self,	"bordercolor", "rgb(100,0,0)"  );

		
		liqcell_handleradd_withcontext(   self,   "click",   handler, context);
		
	}
	return self;
}
Beispiel #21
0
int liqcalc_adddigit(liqcell *self,const char digit)
{
	// append a digit to the current caption
	// ensure its valid numerically first
	// if its "0", just use the new cap
	// 8 DIGITS allowed, though length maybe 9 including .
	liqcell *calclcd = liqcell_child_lookup(self, "calclcd");
	char *cap = liqcell_getcaption(calclcd);
	if(!cap)cap="";
	if(*cap && !isdigit(*cap))cap="";
	if(strcmp(cap,"0")==0)cap="";
	int max=9;
	if(strstr(cap,".")==NULL)max--;
	
	if( (strlen(cap)<max) )
	{
		char newcap[32];
		snprintf(newcap,sizeof(newcap),"%s%c",cap,digit);
		liqcell_setcaption(calclcd,newcap);
	}
	return 0;
}
static int liqrecentsketches_clear_click(liqcell *self, liqcellclickeventargs *args, liqcell *liqrecentsketches)
{
	liqcell *backplane = liqcell_child_lookup( liqrecentsketches,"backplane");
	liqcell *body = liqcell_child_lookup( backplane,"body");
	liqcell *scroller = liqcell_child_lookup( liqrecentsketches,"scroller");
	liqcell *knob = liqcell_child_lookup( scroller,"knob");
	
	liqcell *selecttitle = liqcell_child_lookup( liqrecentsketches,"selecttitle");
	liqcell *selectgroup = liqcell_child_lookup( liqrecentsketches,"selectgroup");
	liqcell *selectbackplane = liqcell_child_lookup( selectgroup,"selectbackplane");
	liqcell *selectcount = liqcell_child_lookup( liqrecentsketches,"selectcount");
	int selectcnt = liqcell_child_countvisible(selectbackplane);

	// must clear all items


	liqcell_child_removeallvisual(selectbackplane);
	liqcell_child_selectnone_recursive(body,0);

	liqcell_setcaption(selecttitle,"");

	liqcell_setcaption_printf(selectcount, "%d items", 0);

}
Beispiel #23
0
/**	
 * create a new liqpostcard widget
 */	
liqcell *liqpostcard_create()
{
	liqcell *self = liqcell_quickcreatewidget("liqpostcard", "form", 800, 480);
	if(!self) {liqapp_log("liqcell error not create 'liqpostcard'"); return NULL;  } 
	
	// Optimization:  The aim is to REDUCE the number of drawn layers and operations called.
	// Optimization:  use only what you NEED to get an effect
	// Optimization:  Minimal layers and complexity
	// Optimization:  defaults: background, prefer nothing, will be shown through if there is a wallpaper
	// Optimization:  defaults: text, white, very fast rendering
	//############################# tweetmessage:textbox
	liqcell *tweetmessage = liqcell_quickcreatevis("tweetmessage", "textbox", 56, 424, 502, 50);
	liqcell_setfont(	tweetmessage, liqfont_cache_getttf("/usr/share/fonts/nokia/nosnb.ttf", (32), 0) );
	liqcell_setcaption(tweetmessage, "" );
	liqcell_propsets(  tweetmessage, "textcolor", "rgb(0,0,0)" );
	liqcell_propsets(  tweetmessage, "backcolor", "rgb(255,255,255)" );
	liqcell_propsets(  tweetmessage, "bordercolor", "rgb(200,100,100)" );
	liqcell_propseti(  tweetmessage, "textalign", 0 );
	liqcell_child_append(  self, tweetmessage);
	//############################# picfront:picturebox
	liqcell *picfront = liqcell_quickcreatevis("picfront", "picturebox", 20, 112, 368, 186);
	//liqcell_setfont(	picfront, liqfont_cache_getttf("/usr/share/fonts/nokia/nosnb.ttf", (12), 0) );
	//liqcell_propsets(  picfront, "textcolor", "rgb(0,0,0)" );
	//liqcell_propsets(  picfront, "backcolor", "rgb(64,0,0)" );
	liqcell_propsets(  picfront, "bordercolor", "rgb(200,100,100)" );
    liqcell_handleradd_withcontext(picfront, "click", cmdpicchoose_click, self );
	liqcell_child_append(  self, picfront);
	//############################# messageback:picturebox
	liqcell *messageback = liqcell_quickcreatevis("messageback", "picturebox", 418, 112, 368, 186);
	//liqcell_setfont(	messageback, liqfont_cache_getttf("/usr/share/fonts/nokia/nosnb.ttf", (12), 0) );
    liqcell_propsets(  messageback, "imagefilename",  "/usr/share/liqbase/liqpostcard/media/liqpostcard_template.png" );
	//liqcell_propsets(  messageback, "textcolor", "rgb(0,0,0)" );
	//liqcell_propsets(  messageback, "backcolor", "rgb(64,0,0)" );
	liqcell_propsets(  messageback, "bordercolor", "rgb(200,100,100)" );
    liqcell_handleradd_withcontext(messageback, "click", cmdmessagedraw_click, self );
	liqcell_child_append(  self, messageback);
 /*   
	//############################# cmdmessagewrite:label
	liqcell *cmdmessagewrite = liqcell_quickcreatevis("cmdmessagewrite", "label", 418, 300, 176, 52);
	liqcell_setfont(	cmdmessagewrite, liqfont_cache_getttf("/usr/share/fonts/nokia/nosnb.ttf", (29), 0) );
	liqcell_setcaption(cmdmessagewrite, "Write" );
	liqcell_propsets(  cmdmessagewrite, "textcolor", "rgb(255,255,255)" );
	liqcell_propsets(  cmdmessagewrite, "backcolor", "xrgb(0,0,64)" );
	liqcell_propsets(  cmdmessagewrite, "bordercolor", "rgb(255,255,255)" );
	liqcell_propseti(  cmdmessagewrite, "textalign", 2 );
	liqcell_handleradd_withcontext(cmdmessagewrite, "click", cmdmessagewrite_click, self );
	liqcell_child_append(  self, cmdmessagewrite);
 */  
	//############################# label5:label
	liqcell *label5 = liqcell_quickcreatevis("label5", "label", 56, 390, 368, 32);
	liqcell_setfont(	label5, liqfont_cache_getttf("/usr/share/fonts/nokia/nosnb.ttf", (22), 0) );
	liqcell_setcaption(label5, "Message" );
	liqcell_propsets(  label5, "textcolor", "rgb(255,255,255)" );
	//liqcell_propsets(  label5, "backcolor", "xrgb(0,64,64)" );
	liqcell_propseti(  label5, "textalign", 0 );
	liqcell_child_append(  self, label5);
    
	//############################# cmdmessagedraw:label
	liqcell *cmdmessagedraw = liqcell_quickcreatevis("cmdmessagedraw", "label", 514, 300, 176, 52);
	liqcell_setfont(	cmdmessagedraw, liqfont_cache_getttf("/usr/share/fonts/nokia/nosnb.ttf", (29), 0) );
	liqcell_setcaption(cmdmessagedraw, "Draw" );
	liqcell_propsets(  cmdmessagedraw, "textcolor", "rgb(255,255,255)" );
	liqcell_propsets(  cmdmessagedraw, "backcolor", "xrgb(0,0,64)" );
	liqcell_propsets(  cmdmessagedraw, "bordercolor", "rgb(255,255,255)" );
	liqcell_propseti(  cmdmessagedraw, "textalign", 2 );
	liqcell_propseti(  cmdmessagedraw, "textaligny", 2 );
	liqcell_handleradd_withcontext(cmdmessagedraw, "click", cmdmessagedraw_click, self );
	liqcell_child_append(  self, cmdmessagedraw);
    
	//############################# cmdpicchoose:label
	liqcell *cmdpicchoose = liqcell_quickcreatevis("cmdpicchoose", "label", 112, 300, 176, 52);
	liqcell_setfont(	cmdpicchoose, liqfont_cache_getttf("/usr/share/fonts/nokia/nosnb.ttf", (29), 0) );
	liqcell_setcaption(cmdpicchoose, "Choose" );
	liqcell_propsets(  cmdpicchoose, "textcolor", "rgb(255,255,255)" );
	liqcell_propsets(  cmdpicchoose, "backcolor", "xrgb(0,0,64)" );
	liqcell_propsets(  cmdpicchoose, "bordercolor", "rgb(255,255,255)" );
	liqcell_propseti(  cmdpicchoose, "textalign", 2 );
	liqcell_propseti(  cmdpicchoose, "textaligny", 2 );
	liqcell_handleradd_withcontext(cmdpicchoose, "click", cmdpicchoose_click, self );
	liqcell_child_append(  self, cmdpicchoose);
    
	//############################# cmdsend:label
	liqcell *cmdsend = liqcell_quickcreatevis("cmdsend", "label", 574, 418, 226, 62);
	liqcell_setfont(	cmdsend, liqfont_cache_getttf("/usr/share/fonts/nokia/nosnb.ttf", (29), 0) );
	liqcell_setcaption(cmdsend, "Send" );
	liqcell_propsets(  cmdsend, "textcolor", "rgb(255,255,255)" );
	liqcell_propsets(  cmdsend, "backcolor", "xrgb(0,64,0)" );
	liqcell_propsets(  cmdsend, "bordercolor", "rgb(255,255,255)" );
	liqcell_propseti(  cmdsend, "textalign", 2 );
	liqcell_propseti(  cmdsend, "textaligny", 2 );
    liqcell_setenabled(  cmdsend, 0 );
	liqcell_handleradd_withcontext(cmdsend, "click", cmdsend_click, self );
	liqcell_child_append(  self, cmdsend);
    
	//############################# pichead:label
	liqcell *pichead = liqcell_quickcreatevis("pichead", "label", 20, 74, 368, 36);
	liqcell_setfont(	pichead, liqfont_cache_getttf("/usr/share/fonts/nokia/nosnb.ttf", (22), 0) );
	liqcell_setcaption(pichead, "Picture" );
	liqcell_propsets(  pichead, "textcolor", "rgb(255,255,255)" );
	//liqcell_propsets(  pichead, "backcolor", "xrgb(0,64,64)" );
	liqcell_propseti(  pichead, "textalign", 0 );
	liqcell_child_append(  self, pichead);
    
	//############################# messagehead:label
	liqcell *messagehead = liqcell_quickcreatevis("messagehead", "label", 418, 74, 368, 36);
	liqcell_setfont(	messagehead, liqfont_cache_getttf("/usr/share/fonts/nokia/nosnb.ttf", (22), 0) );
	liqcell_setcaption(messagehead, "Sketch" );
	liqcell_propsets(  messagehead, "textcolor", "rgb(255,255,255)" );
	//liqcell_propsets(  messagehead, "backcolor", "xrgb(0,64,64)" );
	liqcell_propseti(  messagehead, "textalign", 0 );
	liqcell_child_append(  self, messagehead);
    
	//############################# title:label
	liqcell *title = liqcell_quickcreatevis("title", "label", 0, 0, 800, 56);
	liqcell_setfont(	title, liqfont_cache_getttf("/usr/share/fonts/nokia/nosnb.ttf", (29), 0) );
	liqcell_setcaption(title, "postcard :: say hello." );
	liqcell_propsets(  title, "textcolor", "rgb(255,255,255)" );
	liqcell_propsets(  title, "backcolor", "xrgb(0,0,0)" );
	liqcell_propseti(  title, "textalign", 0 );
	liqcell_child_append(  self, title);
    
	//liqcell_propsets(  self, "backcolor", "rgb(0,0,0)" );
	liqcell_handleradd_withcontext(self, "refresh", liqpostcard_refresh ,self);
	liqcell_handleradd_withcontext(self, "shown", liqpostcard_shown ,self);
	liqcell_handleradd_withcontext(self, "resize", liqpostcard_resize ,self);
	liqcell_handleradd_withcontext(self, "keypress", liqpostcard_keypress,self );
	liqcell_handleradd_withcontext(self, "keyrelease", liqpostcard_keyrelease ,self);
	liqcell_handleradd_withcontext(self, "mouse", liqpostcard_mouse,self );
	liqcell_handleradd_withcontext(self, "click", liqpostcard_click ,self);
	//liqcell_handleradd_withcontext(self, "paint", liqpostcard_paint ,self); // use only if required, heavyweight
	liqcell_handleradd_withcontext(self, "dialog_open", liqpostcard_dialog_open ,self);
	liqcell_handleradd_withcontext(self, "dialog_close", liqpostcard_dialog_close ,self);


	//############################# cmdconfigure:label
	liqcell *cmdconfigure = liqcell_quickcreatevis("cmdconfigure", "label", 508, 0, 226, 56);
	liqcell_setfont(	cmdconfigure, liqfont_cache_getttf("/usr/share/fonts/nokia/nosnb.ttf", (29), 0) );
	liqcell_setcaption(cmdconfigure, "configure" );
	liqcell_propsets(  cmdconfigure, "textcolor", "rgb(255,255,255)" );
	liqcell_propsets(  cmdconfigure, "backcolor", "xrgb(0,64,0)" );
	liqcell_propsets(  cmdconfigure, "bordercolor", "rgb(255,255,255)" );
	liqcell_propseti(  cmdconfigure, "textalign", 2 );
	liqcell_propseti(  cmdconfigure, "textaligny", 2 );
	liqcell_handleradd_withcontext(cmdconfigure, "click", cmdconfigure_click, self );
	liqcell_child_append(  self, cmdconfigure);

    
    
    //########## major sideways hack.  classes need declarations and header files.
    int dialog_selectimage_getfirstphoto_filename(liqcell *self,char *buffer,int bufferlen);
    char selfn[FILENAME_MAX]={0};
    liqcell *dialog_selectimage = liqcell_quickcreatevis("liqpostcard.choose","dialog_selectimage",0,0,-1,-1);
    dialog_selectimage_getfirstphoto_filename(dialog_selectimage,selfn,sizeof(selfn) );
    if(selfn && *selfn)
    {
        liqcell_propsets(  picfront, "imagefilename", selfn  );
    }
    liqcell_release(dialog_selectimage);
    
    
    
    liqcell_handlerrun(self,"refresh",NULL);
    
	return self;
}
Beispiel #24
0
/**	
 * liqpostcard.cmdsend clicked
 */	
static int cmdsend_click(liqcell *self,liqcelleventargs *args, liqcell *liqpostcard)
{

	liqcell *picfront = liqcell_child_lookup(liqpostcard, "picfront");
	liqcell *messageback = liqcell_child_lookup(liqpostcard, "messageback");
	liqcell *tweetmessage = liqcell_child_lookup(liqpostcard, "tweetmessage");
    
    
    liqimage *imgfront = liqcell_getimage(picfront);
    liqimage *imgback = liqcell_getimage(messageback);
    liqsketch *sketch = liqcell_getsketch(messageback);
    char *tweet = liqcell_getcaption(tweetmessage);
    
    if(!imgfront)
    {
        liqapp_log("cmdsend_click need imgfront");
        return -1;
    }
    if(!imgback)
    {
        liqapp_log("cmdsend_click need imgback");
        return -1;
    }
    if(!sketch)
    {
        liqapp_log("cmdsend_click need sketch");
        return -1;
    }
    if(!tweet || !*tweet)
    {
        liqapp_log("cmdsend_click need tweet");
        return -1;
    }
    
    //liqpostcard_sendnow(liqpostcard,imgfront,imgback,sketch, tweet);
    
    liqpostcard_master = liqpostcard;

		liqcell * progress = liqcell_quickcreatevis("liqpostcard.liqpostcard_sendprogress","liqpostcard.liqpostcard_sendprogress",0,0,-1,-1);
		
		if(progress)
		{
			liqcell_easyrun(progress);
            int sentok = liqcell_propgeti(progress,"sentok",0);
			liqcell_release(progress);
            
            if(!sentok)
            {
                //return 0;
            }
            
            if(sentok)
            {
                liqcell_setcaption(tweetmessage,"");
                liqsketch_clear(sketch);
            }
		}
        
    liqpostcard_master = NULL;
    

	return 0;
}
/**	
 * create a new sheepdrawing_pictureselect widget
 */	
liqcell *sheepdrawing_pictureselect_create()
{
	liqcell *self = liqcell_quickcreatewidget("sheepdrawing_pictureselect", "form", 800, 480);
	if(!self) {liqapp_log("liqcell error not create 'sheepdrawing_pictureselect'"); return NULL;  } 
	
	// Optimization:  The aim is to REDUCE the number of drawn layers and operations called.
	// Optimization:  use only what you NEED to get an effect
	// Optimization:  Minimal layers and complexity
	// Optimization:  defaults: background, prefer nothing, will be shown through if there is a wallpaper
	// Optimization:  defaults: text, white, very fast rendering


	//############################# title:label
	liqcell *title = liqcell_quickcreatevis("title", "label", 0, 0, 800, 56);
	liqcell_setfont(	title, liqfont_cache_getttf("/usr/share/fonts/nokia/nosnb.ttf", (29), 0) );
	liqcell_setcaption(title, "select image" );
	liqcell_propsets(  title, "textcolor", "rgb(255,255,255)" );
	liqcell_propsets(  title, "backcolor", "xrgb(0,0,0)" );
	liqcell_propseti(  title, "textalign", 0 );
	liqcell_child_append(  self, title);
	//############################# sheepdrawing_picturegrid:liqrecentphotos
	liqcell *sheepdrawing_picturegrid = liqcell_quickcreatevis("sheepdrawing_picturegrid", "sheepdrawing_picturegrid", 0, 58, 800, 420);
	liqcell_child_append(  self, sheepdrawing_picturegrid);
    //############################# cmdselect:commandbutton
	liqcell *cmdselect = liqcell_quickcreatevis("cmdselect", "commandbutton", 580, 420, 220, 60);
	liqcell_setfont(	cmdselect, liqfont_cache_getttf("/usr/share/fonts/nokia/nosnb.ttf", (29), 0) );
	liqcell_setcaption(cmdselect, "Select" );
	liqcell_propsets(  cmdselect, "textcolor", "rgb(255,255,255)" );
	liqcell_propsets(  cmdselect, "backcolor", "xrgb(0,64,0)" );
	liqcell_propsets(  cmdselect, "bordercolor", "rgb(255,255,255)" );
	liqcell_propseti(  cmdselect, "textalign", 2 );
	liqcell_handleradd_withcontext(cmdselect, "click", cmdselect_click, self );
    //liqcell_setenabled(cmdselect,0);
	liqcell_child_append(  self, cmdselect);
    
    
		liqcell *search = liqcell_quickcreatevis("search","textbox",200 ,self->h-40,   350, 60);
		liqcell_setfont(   search,  liqfont_cache_getttf("/usr/share/fonts/nokia/nosnb.ttf", (32), 0) );
		liqcell_setcaption(search, "" );
		liqcell_propsets(  search, "textcolor",   "rgb(255,255,255)" );
		liqcell_propsets(  search, "backcolor",   "xrgb(100,140,100)" );
		liqcell_handleradd_withcontext( search,    "click",           search_click,  self );
		liqcell_handleradd_withcontext( search,    "captionchange",   search_change, self );
		liqcell_setvisible(search,0);		// watch this!
		liqcell_child_append( self, search );
		
		//liqcell_handleradd_withcontext(body,    "keypress",   sheepdrawing_pictureselect_keypress,  self);
		//liqcell_handleradd_withcontext(body,    "keyrelease", sheepdrawing_pictureselect_keyrelease,self);
		liqcell_handleradd_withcontext(self,    "keypress",   sheepdrawing_pictureselect_keypress,  self);
		liqcell_handleradd_withcontext(self,    "keyrelease", sheepdrawing_pictureselect_keyrelease,self);
 		liqcell_handleradd_withcontext(self,    "paint",      sheepdrawing_pictureselect_paint,  	self);
        
    
    //liqcell_propsets(  self, "backcolor", "rgb(0,0,0)" );
	liqcell_handleradd_withcontext(self, "refresh", sheepdrawing_pictureselect_refresh ,self);
	liqcell_handleradd_withcontext(self, "shown", sheepdrawing_pictureselect_shown ,self);
	liqcell_handleradd_withcontext(self, "resize", sheepdrawing_pictureselect_resize ,self);
	//liqcell_handleradd_withcontext(self, "keypress", sheepdrawing_pictureselect_keypress,self );
	//liqcell_handleradd_withcontext(self, "keyrelease", sheepdrawing_pictureselect_keyrelease ,self);
	liqcell_handleradd_withcontext(self, "mouse", sheepdrawing_pictureselect_mouse,self );
	liqcell_handleradd_withcontext(self, "click", sheepdrawing_pictureselect_click ,self);
	//liqcell_handleradd_withcontext(self, "paint", sheepdrawing_pictureselect_paint ,self); // use only if required, heavyweight
	liqcell_handleradd_withcontext(self, "dialog_open", sheepdrawing_pictureselect_dialog_open ,self);
	liqcell_handleradd_withcontext(self, "dialog_close", sheepdrawing_pictureselect_dialog_close ,self);
	return self;
}
Beispiel #26
0
int liqdialog_askv(const char *key,const char *question,const char *description,const char *footingnotes,int defaultoption,int answercount,const char ** answers)
{
int result;
	
	if(answercount==0)
	{
		const char **a=answers;
		while(*a++) 
		{
			if(answercount>20)break;		// for now, lets not get stuck...
			answercount++;
		}
	}
	
	if(!footingnotes)footingnotes="contact [email protected], lcuk on #maemo";
	
	liqapp_log("Running Dialog with %i options",answercount);






	//##################################################### 
	liqcell *self = liqcell_quickcreatewidget("testcode","form", 800,480);
	if(!self)
	{
		liqapp_log("could not allocate 'testcode'");
		return 0;
	}
	liqcell *b = NULL;
	liqcell *c = NULL;


	

	//##################################################### label1 :: label
	//# This is the main widget constructor for this node
	b = liqcell_quickcreatevis("question","label",  	0,0,  800,112 );
	    liqcell_setcaption(b,       question);
	    liqcell_setfont(   b, 	liqfont_cache_getttf("/usr/share/fonts/nokia/nosnb.ttf", (26), 0) );
	    liqcell_propsets(  b,    	"bordercolor",	"rgb(100,100,100)" );
	    liqcell_propsets(  b,    	"textcolor",		"rgb(255,255,255)" );
	    liqcell_propseti(  b,    	"textalign",		0 );
	    liqcell_propseti(  b,    	"textaligny",		2 );
	    //liqcell_handleradd_withcontext(b,"click",         	(void*)label1_click, self);
	    //liqcell_handleradd_withcontext(b,"mouse",         	(void*)label1_mouse, self);
	liqcell_child_append( self, b );

	//##################################################### panel1 :: panel
	//# This is the main widget constructor for this panel
	b = liqcell_quickcreatevis("panel1","panel",  	0,112,  800,480-112-56 );
	    liqcell_propsets(  b,    	"bordercolor",	"rgb(100,100,100)" );



		//##################################################### 
		int a;
		for(a=0;a<answercount;a++)
		{

			//############################# toolname:button
			liqcell *bt = liqcell_quickcreatevis(answers[a], "button", 0,0, 100, 56);
			liqcell_setfont(	bt, liqfont_cache_getttf("/usr/share/fonts/nokia/nosnb.ttf", (32), 0) );
			liqcell_setcaption(bt, answers[a] );
			liqcell_propsets(  bt, "textcolor",   "rgb(255,255,255)" );
			if(a==defaultoption)
				liqcell_propsets(  bt, "backcolor",   "xrgb(50,160,50)");
			else
				liqcell_propsets(  bt, "backcolor",   "xrgb(50,100,50)");
			liqcell_propsets(  bt, "bordercolor", "rgb(255,255,255)" );
			liqcell_propseti(  bt, "textalign",   2 );
			liqcell_propseti(  bt, "textaligny",  2 );
			
			liqcell_handleradd_withcontext(bt,    "click",   (void*)dialogbutton_click, self);
			liqcell_handleradd_withcontext(bt,    "mouse",   (void*)dialogbutton_mouse, self);
			

			liqcell_child_append( b, bt );
		}

		liqcell_child_arrange_easytile( b );
		
	liqcell_child_append( self, b );

	//##################################################### label2 :: label
	//# This is the main widget constructor for this node
	b = liqcell_quickcreatevis("footer","label",  	0,424,  800,56 );
	    liqcell_setcaption(b,       footingnotes);
	    liqcell_setfont(   b, 	liqfont_cache_getttf("/usr/share/fonts/nokia/nosnb.ttf", (26), 0) );
	    liqcell_propsets(  b,    	"bordercolor",	"rgb(100,100,100)" );
	    liqcell_propsets(  b,    	"textcolor",		"rgb(255,255,255)" );
	    liqcell_propseti(  b,    	"textalign",		2 );
	    liqcell_propseti(  b,    	"textaligny",		2 );
	    //liqcell_handleradd_withcontext(b,"click",         	(void*)label2_click, self);
	    //liqcell_handleradd_withcontext(b,"mouse",         	(void*)label2_mouse, self);
	liqcell_child_append( self, b );






	
	liqcell_propseti(self,"dialog_zoomed",1  );
	liqcell_easyrun(self);
	liqcell_release(self);	
	return result;
}
liqcell *liqrecentsketches_tagging_create()
{
	liqcell *self = liqcell_quickcreatewidget("liqrecentsketches_tagging","form", 800,480);

	if(self)
	{
	//	liqcell_propsets(  self, "backcolor", "rgb(255,255,255)" );

		//liqcell_propseti(self,"autorotate",1);



{
	
	
	liqcell *backplane = liqcell_quickcreatevis("backplane","frame",self->w*0.1 ,0,   self->w*0.7,self->h);
	liqcell_child_insert( self, backplane );
		liqcell *body = liqcell_quickcreatevis("body","frame",0 ,0,   backplane->w,self->h);
		liqcell_child_insert( backplane, body );
		
	//	liqcell_scan_folder_for_images(self,buf);
		
		//liqcell_propsets(  self, "monitorpath" , buf);
		//liqcell_propsets(  self, "watchpattern" , "liq.*");

	//	int cnt=0;
	//	liqcell *c=NULL;



		//liqcell_child_arrange_makegrid(body,3,3);

		//c=liqcell_lastchild(body);

		liqcell_handleradd_withcontext(body,    "mouse",   liqcell_easyhandler_kinetic_mouse, self );
		liqcell_handleradd_withcontext(body,    "move",    liqrecentsketches_body_move,       self );
		//liqcell_handleradd(self,    "click",   float_click);
		

	//############################# scroller:label
	liqcell *scroller = liqcell_quickcreatevis("scroller", "label", 0,56, self->w*0.1, self->h-56);
	//liqcell_setfont(	scroller, liqfont_cache_getttf("/usr/share/fonts/nokia/nosnb.ttf", (29), 0) );
	//liqcell_setcaption(scroller, "Scroller" );
	//liqcell_propsets(  scroller, "imagefilename", "media/titlebanner_left.png" );
	//liqcell_propsets(  scroller, "textcolor", "rgb(255,255,0)" );
	liqcell_propsets(  scroller, "backcolor", "rgb(0,0,60)" );
	liqcell_propseti(  scroller, "textalign", 0 );
	
	liqcell_handleradd_withcontext(scroller,    "mouse",   liqrecentsketches_scroller_mouse , self );

	liqcell_child_append(  self, scroller);

		//############################# knob:label
		liqcell *knob = liqcell_quickcreatevis("knob", "label", 0,0, 200, 50);
		//liqcell_setfont(	knob, liqfont_cache_getttf("/usr/share/fonts/nokia/nosnb.ttf", (29), 0) );
		//liqcell_setcaption(knob, "knob" );
		liqcell_propsets(  knob, "imagefilename", "media/blob.png" );
		liqcell_propsets(  knob, "textcolor", "rgb(255,255,0)" );
		liqcell_propsets(  knob, "backcolor", "rgb(0,60,0)" );
		liqcell_propseti(  knob, "textalign", 0 );

		
		liqcell_child_append(  scroller, knob);

		






// 20090619_221734 lcuk : VERY strange, if I compile with this block in place, when run from the console its ok
// 20090619_221809 lcuk : but when run from the icon the app closes and does not run
// 20090619_221830 lcuk : very curious


//#ifdef USE_INOTIFY
		//############################# timer1:liqtimer
		liqcell *timer1=liqcell_quickcreatevis("timer1",   "liqtimer",   0,0,   0,0 );
		// store ourselves on the tag for use later
		// this does feel like a workaround, but hell, it works!
		//liqcell_settag(timer1,liqcell_hold(self));
		liqcell_propseti(timer1,"timerinterval", 1 );
		liqcell_handleradd_withcontext(timer1,"timertick",timer_tick,self);
		liqcell_setenabled(timer1,0);
		liqcell_child_insert( self,timer1);
//#endif



		//############################# cmdselclear:button
		liqcell *cmdselclear = liqcell_quickcreatevis("cmdselclear", "button", self->w*0.8,self->h-56-56-244-56-28, self->w*0.05, 28);
		liqcell_setfont(	cmdselclear, liqfont_cache_getttf("/usr/share/fonts/nokia/nosnb.ttf", (15), 0) );
		liqcell_setcaption(cmdselclear, "Clear" );
		//liqcell_propsets(  cmdselclear, "imagefilename", "media/titlebanner_left.png" );
		liqcell_propsets(  cmdselclear, "textcolor", "rgb(255,255,0)" );
		liqcell_propsets(  cmdselclear, "backcolor", "xrgb(0,60,60)" );
		liqcell_propseti(  cmdselclear, "textalign", 2 );
		liqcell_propseti(  cmdselclear, "textaligny", 2 );
		liqcell_child_append(  self, cmdselclear);
		liqcell_handleradd_withcontext(cmdselclear,    "click",   liqrecentsketches_clear_click , self );

		//############################# cmdselinv:button
		liqcell *cmdselinv = liqcell_quickcreatevis("cmdselinv", "button", self->w*0.95,self->h-56-56-244-56-28, self->w*0.05, 28);
		liqcell_setfont(	cmdselinv, liqfont_cache_getttf("/usr/share/fonts/nokia/nosnb.ttf", (15), 0) );
		liqcell_setcaption(cmdselinv, "Inv" );
		//liqcell_propsets(  cmdselinv, "imagefilename", "media/titlebanner_left.png" );
		liqcell_propsets(  cmdselinv, "textcolor", "rgb(255,255,0)" );
		liqcell_propsets(  cmdselinv, "backcolor", "xrgb(60,0,60)" );
		liqcell_propseti(  cmdselinv, "textalign", 2 );
		liqcell_propseti(  cmdselinv, "textaligny", 2 );
		liqcell_child_append(  self, cmdselinv);
		//liqcell_handleradd_withcontext(cmdselinv,    "click",   liqrecentsketches_clear_click , self );


		liqcell_setvisible(cmdselinv,0);


		//############################# selecttitle:textbox
		liqcell *selecttitle = liqcell_quickcreatevis("selecttitle", "textbox", self->w*0.8,self->h-56-56-244-56, self->w*0.1, 56);
		liqcell_setfont(	selecttitle, liqfont_cache_getttf("/usr/share/fonts/nokia/nosnb.ttf", (29), 0) );
		liqcell_setcaption(selecttitle, "" );
		//liqcell_propsets(  selecttitle, "imagefilename", "media/titlebanner_left.png" );
		liqcell_propsets(  selecttitle, "textcolor", "rgb(255,255,255)" );
		liqcell_propsets(  selecttitle, "backcolor", "rgb(0,60,0)" );
		liqcell_propsets(  selecttitle, "bordercolor", "xrgb(255,255,255)" );
		liqcell_propseti(  selecttitle, "textalign", 2 );
		liqcell_propseti(  selecttitle, "textaligny", 2 );
		liqcell_child_append(  self, selecttitle);


		//############################# selectgroup:box
		liqcell *selectgroup = liqcell_quickcreatevis("selectgroup", "box", self->w*0.8,self->h-56-56-244, self->w*0.1, 244);
		liqcell_propsets(  selectgroup, "backcolor", "xrgb(0,40,0)" );
		liqcell_propsets(  selectgroup, "bordercolor", "xrgb(255,255,255)" );
		liqcell_child_append(  self, selectgroup);
		
			//############################# selectbackplane:box
			liqcell *selectbackplane = liqcell_quickcreatevis("selectbackplane", "box", self->w*0.8,self->h-56-56-244, self->w*0.1, 244);
			//liqcell_propsets(  selectbackplane, "backcolor", "xrgb(0,40,0)" );
			//liqcell_propsets(  selectbackplane, "bordercolor", "xrgb(255,255,255)" );
			liqcell_child_append(  selectgroup, selectbackplane);

			liqcell_handleradd_withcontext(selectbackplane,    "mouse",   liqcell_easyhandler_kinetic_mouse, self );


		//############################# selectcount:label
		liqcell *selectcount = liqcell_quickcreatevis("selectcount", "label", self->w*0.8,self->h-56-56, self->w*0.1, 56);
		liqcell_setfont(	selectcount, liqfont_cache_getttf("/usr/share/fonts/nokia/nosnb.ttf", (20), 0) );
		liqcell_setcaption(selectcount, "0 items" );
		//liqcell_propsets(  selectcount, "imagefilename", "media/titlebanner_left.png" );
		liqcell_propsets(  selectcount, "textcolor", "rgb(255,255,255)" );
		liqcell_propsets(  selectcount, "backcolor", "rgb(0,0,0)" );
		liqcell_propsets(  selectcount, "bordercolor", "xrgb(255,255,255)" );
		liqcell_propseti(  selectcount, "textalign", 2 );
		liqcell_propseti(  selectcount, "textaligny", 2 );
		liqcell_child_append(  self, selectcount);

		//############################# cmdedit:button
		liqcell *cmdedit = liqcell_quickcreatevis("cmdedit", "button", self->w*0.8,self->h-56, self->w*0.1, 56);
		liqcell_setfont(	cmdedit, liqfont_cache_getttf("/usr/share/fonts/nokia/nosnb.ttf", (20), 0) );
		liqcell_setcaption(cmdedit, "Save" );
		//liqcell_propsets(  cmdedit, "imagefilename", "media/titlebanner_left.png" );
		liqcell_propsets(  cmdedit, "textcolor", "rgb(255,255,0)" );
		liqcell_propsets(  cmdedit, "backcolor", "xrgb(0,0,60)" );
		liqcell_propseti(  cmdedit, "textalign", 2 );
		liqcell_propseti(  cmdedit, "textaligny", 2 );
		liqcell_child_append(  self, cmdedit);
		liqcell_handleradd_withcontext(cmdedit,    "click",   liqrecentsketches_save_click , self );




}



		liqcell_handleradd_withcontext(self, "shown", widget_shown ,self);


	}
	
	return self;
}
	static int liqrecentsketches_sketch_insert(liqcell *self,char *filenamebuffer)
	{
		liqcell *backplane = liqcell_child_lookup( self,"backplane");
		liqcell *body = liqcell_child_lookup( backplane,"body");

		//liqapp_log("gary: [[%s]]",filenamebuffer);

		struct pagefilename pfn;
	
		if(	(pagefilename_breakapart(&pfn,filenamebuffer) == 0) )
		{
		
			char buf[FILENAME_MAX];			snprintf(buf,sizeof(buf),"%s%s",pfn.filedate,pfn.filetitle);
		
			//liqapp_log("ins 1 %s",filenamebuffer);
			// valid file		
			char b[255]={0};
			snprintf(b,5,"%s",pfn.filedate); b[4]='\0';
			liqcell *xy=liqcell_child_lookup(body,b);
			if(!xy)
			{
				//liqapp_log("ins 2 %s",filenamebuffer);
				xy=liqcell_quickcreatevis(b,"year",  0,0, (backplane->w),backplane->h/15);
				liqcell_child_insertsortedbyname(body,xy,0);
				//snprintf(b,5,"%s",pfn.filedate); b[4]='\0';
				//brk=addframe(xy,b,(self->w),self->h/15);				// year break tile
				//brk->style=odd;
			}
		
			//liqapp_log("ins 3 %s",filenamebuffer);
		
		
				snprintf(b,3,"%s",&pfn.filedate[4]); b[2]='\0';
				liqcell *xm=liqcell_child_lookup(xy,b);
				if(!xm)
				{
					//liqapp_log("ins 4 %s",filenamebuffer);
					xm=liqcell_quickcreatevis(b,"month",  0,0, (backplane->w),backplane->h/15);
					liqcell_child_insertsortedbyname(xy,xm,0);
					//snprintf(b,7,"%s",pfn.filedate); b[6]='\0';
					//brk=addframe(xm,b,(self->w),self->h/15);			// month break tile
					//brk->style=odd;
				}
			
				//liqapp_log("ins 5 %s",filenamebuffer);
			
					snprintf(b,3,"%s",&pfn.filedate[6]); b[2]='\0';
					liqcell *xd=liqcell_child_lookup(xm,b);
					if(!xd)
					{
						//liqapp_log("ins 6 %s",filenamebuffer);
						xd=liqcell_quickcreatevis(b,"day",  0,0, (backplane->w),backplane->h/15);
						liqcell_child_insertsortedbyname(xm,xd,0);
					
						//liqapp_log("ins 7 %s",filenamebuffer);
						// add title header

						snprintf(b,10,"_%s",pfn.filedate); b[9]='\0';
						liqcell *brk=liqcell_quickcreatevis(b,"label",  0,0, (backplane->w),backplane->h/15);


						liqcell_setfont(	brk, liqfont_cache_getttf("/usr/share/fonts/nokia/nosnb.ttf", (24), 0) );
					
						snprintf(b,9,"%s",pfn.filedate); b[8]='\0';
					
						liqcell_setcaption(brk, b );
						liqcell_propsets(  brk, "textcolor", "rgb(255,255,255)" );
						liqcell_propsets(  brk, "backcolor", "rgb(0,0,100)");
						liqcell_propseti(  brk, "textalign", 0 );

						liqcell_child_append(xd,brk);
					}
				
					//liqapp_log("ins 8 %s",filenamebuffer);
				

					liqcell *c = liqcell_quickcreatevis(buf,   "sketch",   0,0,(backplane->w/5),(backplane->h/4)    );
					liqcell_propseti(c,"lockaspect",1);
					liqcell_propsets(c,"sketchfilename",filenamebuffer);
					liqcell_handleradd_withcontext(c,"click",liqrecentsketches_sketchitem_click,self);
				
						//	liqcell_propseti(c,"autorotate",1);

				
				
					liqcell_child_insertsortedbyname( xd, c,0);
				
					//liqapp_log("ins 9 %s",filenamebuffer);
				
					liqcell_setsize(xd, backplane->w, backplane->h/15 );
					liqcell_child_arrange_autoflow(xd);
				liqcell_child_arrange_easycol(xm);			
			liqcell_child_arrange_easycol(xy);
				
			liqcell_child_arrange_easycol(body);
			//liqcell_setsize(body,body->w,body->h-700);	
			liqcell_setsize(body,body->w,body->h);			// hmm random offset needed only for huge number of sketches.
		
		}
	}
liqcell *liqrecentsketches_classic_create()
{
	liqcell *self = liqcell_quickcreatewidget("liqrecentsketches_classic","form", 800,480);

	if(self)
	{
	//	liqcell_propsets(  self, "backcolor", "rgb(255,255,255)" );

		//liqcell_propseti(self,"autorotate",1);


		char buf[FILENAME_MAX];    snprintf(buf,sizeof(buf),"%s/sketches",app.userdatapath);


if(liqapp_pathexists(buf))
{
	
	liqapp_log("recent sketches buf=%s",buf);
	
	liqcell *backplane = liqcell_quickcreatevis("backplane","frame",self->w*0.1 ,0,   self->w*0.9,self->h);
	liqcell_child_insert( self, backplane );
		liqcell *body = liqcell_quickcreatevis("body","frame",0 ,0,   self->w*0.9,self->h);

		
		
		liqcell_child_insert( backplane, body );
		
		liqcell_scan_folder_for_images(self,buf);
		
		liqcell_propsets(  self, "monitorpath" , buf);
		//liqcell_propsets(  self, "watchpattern" , "liq.*");

		int cnt=0;
		liqcell *c=NULL;


		//liqcell_child_arrange_makegrid(body,3,3);

		c=liqcell_lastchild(body);

		liqcell_handleradd_withcontext(body,    "mouse",   liqcell_easyhandler_kinetic_mouse, self );
		liqcell_handleradd_withcontext(body,    "move",   liqrecentsketches_body_move, self );
		//liqcell_handleradd(self,    "click",   float_click);
		

	//############################# scroller:label
	liqcell *scroller = liqcell_quickcreatevis("scroller", "label", 0,56, self->w*0.1, self->h-56);
	//liqcell_setfont(	scroller, liqfont_cache_getttf("/usr/share/fonts/nokia/nosnb.ttf", (29), 0) );
	//liqcell_setcaption(scroller, "Scroller" );
	//liqcell_propsets(  scroller, "imagefilename", "media/titlebanner_left.png" );
	//liqcell_propsets(  scroller, "textcolor", "rgb(255,255,0)" );
	
	liqcell_propsets(  scroller, "backcolor", "rgb(0,0,60)" );
	//liqcell_propseti(  scroller, "textalign", 0 );


	//	if(!liqcell_getcontent(scroller))
			//liqcell_setcontent(scroller, body  );
			// amusing effect and shows entire wall but really slugs it up
			// to be usable it should just cache the picture in this case
			// since the data changes rarely but navigation is frequent
			

	
	liqcell_handleradd_withcontext(scroller,    "mouse",   liqrecentsketches_scroller_mouse , self );

	liqcell_child_append(  self, scroller);

		//############################# knob:label
		liqcell *knob = liqcell_quickcreatevis("knob", "label", 0,0, 200, 50);
		//liqcell_setfont(	knob, liqfont_cache_getttf("/usr/share/fonts/nokia/nosnb.ttf", (29), 0) );
		//liqcell_setcaption(knob, "knob" );
//		liqcell_propsets(  knob, "imagefilename", "media/blob.png" );
		//liqcell_propsets(  knob, "textcolor", "rgb(255,255,0)" );
		liqcell_propsets(  knob, "backcolor", "rgba(0,60,0,128)" );
		liqcell_propseti(  knob, "textalign", 0 );


		liqcell_child_append( scroller, knob);


		liqcell_setpos(body,0,-(body->h-backplane->h));




// 20090619_221734 lcuk : VERY strange, if I compile with this block in place, when run from the console its ok
// 20090619_221809 lcuk : but when run from the icon the app closes and does not run
// 20090619_221830 lcuk : very curious


//#ifdef USE_INOTIFY
		//############################# timer1:liqtimer
		liqcell *timer1=liqcell_quickcreatevis("timer1",   "liqtimer",   0,0,   0,0 );
		// store ourselves on the tag for use later
		// this does feel like a workaround, but hell, it works!
		//liqcell_settag(timer1,liqcell_hold(self));
		liqcell_propseti(timer1,"timerinterval", 1 );
		liqcell_handleradd_withcontext(timer1,"timertick",timer_tick,self);
		liqcell_setenabled(timer1,1);
		liqcell_child_insert( self,timer1);
//#endif

		//############################# cmdnew:label
		liqcell *cmdnew = liqcell_quickcreatevis("cmdnew", "button", self->w*0.8,self->h-56, self->w*0.1, 56);
		liqcell_setfont(	cmdnew, liqfont_cache_getttf("/usr/share/fonts/nokia/nosnb.ttf", (29), 0) );
		liqcell_setcaption(cmdnew, "New" );
		//liqcell_propsets(  cmdnew, "imagefilename", "media/titlebanner_left.png" );
		liqcell_propsets(  cmdnew, "textcolor", "rgb(255,255,255)" );
		liqcell_propsets(  cmdnew, "backcolor", "xrgb(0,60,0)" );
		liqcell_propsets(  cmdnew, "bordercolor", "xrgb(255,255,255)" );
		liqcell_propseti(  cmdnew, "textalign", 2 );
		liqcell_propseti(  cmdnew, "textaligny", 2 );
		liqcell_child_append(  self, cmdnew);
		liqcell_handleradd_withcontext(cmdnew,    "click",   liqrecentsketches_new_click , self );

		//############################# cmdedit:label
		liqcell *cmdedit = liqcell_quickcreatevis("cmdedit", "button", self->w*0.9,self->h-56, self->w*0.1, 56);
		liqcell_setfont(	cmdedit, liqfont_cache_getttf("/usr/share/fonts/nokia/nosnb.ttf", (29), 0) );
		liqcell_setcaption(cmdedit, "Edit" );
		//liqcell_propsets(  cmdedit, "imagefilename", "media/titlebanner_left.png" );
		liqcell_propsets(  cmdedit, "textcolor", "rgb(255,255,255)" );
		liqcell_propsets(  cmdedit, "backcolor", "xrgb(0,0,60)" );
		liqcell_propsets(  cmdedit, "bordercolor", "xrgb(255,255,255)" );
		liqcell_propseti(  cmdedit, "textalign", 2 );
		liqcell_propseti(  cmdedit, "textaligny", 2 );
				liqcell_child_append(  self, cmdedit);
		liqcell_handleradd_withcontext(cmdedit,    "click",   liqrecentsketches_edit_click , self );

}

/*
		//############################# title:label
		liqcell *title = liqcell_quickcreatevis("title", "label", 0,0, 200, 50);
		liqcell_setfont(	title, liqfont_cache_getttf("/usr/share/fonts/nokia/nosnb.ttf", (29), 0) );
		liqcell_setcaption(title, "Sketches" );
		liqcell_propsets(  title, "imagefilename", "media/titlebanner_left.png" );
		liqcell_propsets(  title, "textcolor", "rgb(255,255,0)" );
		//liqcell_propsets(  title, "backcolor", "rgb(0,0,60)" );
		liqcell_propseti(  title, "textalign", 0 );
		liqcell_child_append(  self, title);
*/

	}
	
	return self;
}
Beispiel #30
0
	static int textbox_keypress(liqcell *self, liqcellkeyeventargs *args,void *context)
	{
		//liqcell *base = liqcell_getbasewidget(self);
		// i can then use my base to access members as defined by the widget itself
		//liqcell_setcaption(self,args->keystring);
	
		int selstart = liqcell_propgeti(  self,"selstart",-1);
		int sellength = liqcell_propgeti(  self,"sellength",0);
		int cursorpos = liqcell_propgeti(  self,"cursorpos",-1);
		
		char *caption = liqcell_getcaption(self);
		int captionlen = strlen(caption);
		
		char *key = args->keystring;
		int keylen = strlen(key);
		
		if(selstart>captionlen){ selstart=captionlen;sellength=0; }
		
		if(selstart+sellength>captionlen)
		{
			sellength = captionlen-selstart;
		}
		
		
		if(selstart>=0 && (keylen>0))
		{
			liqapp_log("keypress: %3i '%c'",(int)(*key),*key,args->keycode);
			
			if(*key==8)
			{
				// delete ;)
				key="";
				keylen=0;
				if(selstart>0 && sellength==0)
				{
					selstart--;
					sellength++;
				}
			}

			if(*key==13)
			{
				// click event!
				liqapp_log("keypress return! click event firing!");
				key="";
				keylen=0;
				liqcell_handlerrun(self,"click",NULL);
				return 1;
			}
						
			//
			//liqcell_setcaption(self,args->keystring);
			char *aftersel=&caption[selstart+sellength];
			int aftersellen = strlen(aftersel);
			
			// then the result is start..selstart
			// newbit
			// selstart+sellen..end
			
			int reqd = selstart  +  keylen  +  aftersellen + 1;
			char *buff=malloc(reqd);
			char *block=buff;
			if(buff)
			{
				if(selstart>0)
				{
					strncpy(block,caption,selstart);
					block+=selstart;
				}
				if(keylen>0)
				{
					strncpy(block,key,keylen);
					block+=keylen;
				}
				
				if(aftersellen>0)
				{
					strncpy(block,aftersel,aftersellen);
					block+=aftersellen;
				}
				*block=0;
				liqcell_setcaption(self,buff);
				




				
				free(buff);
			}

			liqcell_propseti(  self,  "selstart",  selstart + keylen);
			liqcell_propseti(  self,  "sellength", 0 );
			liqcell_propseti(  self,  "cursorpos", selstart + keylen);
			liqcell_handlerrun(self,"selchange",NULL);
			
		}

	}