All pastes #1427937 Raw Edit

libliqbase example widget

public c v1 · immutable
#1427937 ·published 2009-05-19 22:54 UTC
rendered paste body
//#####################################################################//#####################################################################//##################################################################### liqdesign :: by gary birkett :)//#####################################################################//#####################################################################	static int liqdesign_dialog_open(liqcell *self, liqcelleventargs *args, void *context)	{		liqapp_log("dialog_open");		return 1;	}	static int liqdesign_dialog_close(liqcell *self, liqcelleventargs *args, void *context)	{		liqapp_log("dialog_close");		return 1;	}	//############################################################################################	static int liqdesign_undo_click(liqcell *self, liqcellclickeventargs *args, void *context)	{		liqapp_log("undo_click");		return 1;	}	static int liqdesign_clear_click(liqcell *self, liqcellclickeventargs *args, void *context)	{		liqapp_log("clear_click");		return 1;	}	static int liqdesign_del_click(liqcell *self, liqcellclickeventargs *args, void *context)	{		liqapp_log("del_click");		return 1;	}	static int liqdesign_save_click(liqcell *self, liqcellclickeventargs *args, void *context)	{		liqapp_log("save_click");		return 1;	}	static int liqdesign__cmdnull_mouse(liqcell *self, liqcellmouseeventargs *args, void *context)	{		// empty mouse handler so we dont draw behind the buttons..		return 1;	}		//############################################################################################	static int liqdesign_surface_item_mouse(liqcell *self, liqcellmouseeventargs *args, void *context)	{				//		if(args->mcnt==1)		{			// starting			// find out where and how we were hit						//int hitx=0;			//int hity=0;			int hitcode = liqcell_rect_gethitcode(self,   args->msx-args->ox + self->x,args->msy-args->oy + self->y  ,self->w/8,self->h/8);			liqcell_propseti(self,"hitcode",hitcode);			liqapp_log("item mouse (%i,%i),  hc=%i", args->msx-args->ox,args->msy-args->oy,   hitcode );		}		else		{			// now, we must adjust ourselves according to the hit location identified			int hitcode = liqcell_propgeti(self,"hitcode",0);			liqcell_rect_adjust_hitcode(self,hitcode,args->mdx,args->mdy);		}		//liqcell_adjustpos(self,args->mdx,args->mdy);		return 1;	}				static int liqdesign_surface_mouse(liqcell *self, liqcellmouseeventargs *args, void *context)	{		//liqapp_log("surface mouse mcnt=%i, mex==%i, mey==%i, mez==%i",args->mcnt, args->ox+args->mex,args->oy+args->mey,   args->mez);		// on the surface there might be 0..N items		// if I hit any of those items the item itself will have recvd the mouse event		// if i hit directly on the surface, the intention will be to create a drag box				liqcell *grabbox = liqcell_child_lookup(self,"grabbox");		if(!grabbox)		{			grabbox = liqcell_quickcreatevis("grabbox","grabbox",  args->msx-args->ox,args->msy-args->oy,      0,0 );			liqcell_setfont(   grabbox, liqfont_cache_getttf("/usr/share/fonts/nokia/nosnb.ttf", (24), 0) );			liqcell_propsets(  grabbox,    	"bordercolor", "rgb(255,255,255)" );			liqcell_setvisible(grabbox ,0);			liqcell_child_insert( self, grabbox );				}				if(args->mcnt==1)		{			// starting			liqcell_setrect(   grabbox ,   args->msx-args->ox,args->msy-args->oy   , 0,0);			liqcell_setvisible(grabbox ,1);		}		else		{			if(args->mez!=0)			{				// continuing				liqcell_setrect(   grabbox ,    args->msx-args->ox,args->msy-args->oy,     args->mex-args->msx,args->mey-args->msy);				liqcell_rect_ensurepositive(grabbox);				liqcell_setvisible(grabbox ,1);			}			else			{				// finished, create				liqcell_setrect(   grabbox ,     args->msx-args->ox,args->msy-args->oy,             args->mex-args->msx,args->mey-args->msy);				liqcell_rect_ensurepositive(grabbox);				liqcell_setvisible(grabbox ,0);				liqcell *b = liqcell_quickcreatevis("contentx","liqbase",  0,0,0,0 );				//liqcell_child_insert( self, b );																				liqcell *c = liqcell_quickcreatevis("item1","item",  args->msx-args->ox,args->msy-args->oy,   args->mex-args->msx,args->mey-args->msy );				liqcell_rect_ensurepositive(c);				//liqcell_propseti(c,     "lockaspect",  1);				//liqcell_setfont( c,     liqfont_cache_getttf("/usr/share/fonts/nokia/nosnb.ttf", (24), 0) );				liqcell_propsets(c,    	"bordercolor", "rgb(255,0,0)" );				liqcell_handleradd(c,   "mouse",       liqdesign_surface_item_mouse);								// 20090513_000454 lcuk : set this to make an IFS fractal :)				//liqcell_setcontent( c,liqcell_getbasewidget(self) );								liqcell_setcontent( c,b );								liqcell_child_insert( self, c );			}		}				return 1;	}	static int liqdesign_surface_click(liqcell *self, liqcellclickeventargs *args, void *context)	{		liqapp_log("surface click");		return 1;	}	static int liqdesign_surface_keypress(liqcell *self, liqcellkeyeventargs *args, void *context)	{		liqapp_log("surface key");		return 1;	}			//############################################################################################								static int liqdesign_mouse(liqcell *self, liqcellmouseeventargs *args, void *context)	{		liqapp_log("general mouse mex==%i, mey==%i, mez==%i",args->mex,args->mey,args->mez);		return 1;	}	static int liqdesign_click(liqcell *self, liqcellclickeventargs *args, void *context)	{		liqapp_log("general click");		return 1;	}	static int liqdesign_keypress(liqcell *self, liqcellkeyeventargs *args, void *context)	{		liqapp_log("general key");		return 1;	}			static int liqdesign_resize(liqcell *self, liqcelleventargs *args, void *context)	{		liqapp_log("general resize");				//liqcell *base = liqcell_getbasewidget(self);		liqcell *undo = liqcell_child_lookup(self,"undo");		liqcell *clear = liqcell_child_lookup(self,"clear");		liqcell *save = liqcell_child_lookup(self,"save");		liqcell *del = liqcell_child_lookup(self,"del");		liqcell *surface = liqcell_child_lookup(self,"surface");				int ww=liqcell_getw(self);		int hh=liqcell_geth(self);				liqcell_setrect(undo,    ww*0.9,  0,        ww*0.1,hh*0.3);		liqcell_setrect(clear,   ww*0.9,  hh*0.3,   ww*0.1,hh*0.3);		liqcell_setrect(save ,   ww*0.9,  hh*0.6,   ww*0.1,hh*0.3);		liqcell_setrect(del ,    ww*0.9,  hh*0.9,   ww*0.1,hh*0.1);		liqcell_setrect(surface ,0,       0,        ww*0.9,hh);		return 1;	}		//############################################################################################liqcell *liqdesign_create(){	liqcell *self = liqcell_quickcreatewidget("liqdesign","form", 800,480);	if(self)	{		liqcell *b;		b = liqcell_quickcreatevis("undo","button",  800-180,20,   160,160 );		liqcell_setfont(   b, liqfont_cache_getttf("/usr/share/fonts/nokia/nosnb.ttf", (24), 0) );		liqcell_propsets(  b,    	"backcolor", "rgb(100,0,100)" );		liqcell_handleradd(b,    	"click",     liqdesign_undo_click);		liqcell_handleradd(b,    	"mouse",     liqdesign__cmdnull_mouse);		liqcell_child_insert( self, b );		b = liqcell_quickcreatevis("clear","button",  800-180,20,   160,160 );		liqcell_setfont(   b, liqfont_cache_getttf("/usr/share/fonts/nokia/nosnb.ttf", (24), 0) );		liqcell_propsets(  b,    	"backcolor", "rgb(0,0,100)" );		liqcell_handleradd(b,    	"click",     liqdesign_clear_click);		liqcell_handleradd(b,    	"mouse",     liqdesign__cmdnull_mouse);		liqcell_child_insert( self, b );		b = liqcell_quickcreatevis("save","button",  800-180,200,   160,160 );		liqcell_setfont(   b, liqfont_cache_getttf("/usr/share/fonts/nokia/nosnb.ttf", (24), 0) );		liqcell_propsets(  b,    	"backcolor", "rgb(0,100,0)" );		liqcell_handleradd(b,    	"click",     liqdesign_save_click);		liqcell_handleradd(b,    	"mouse",     liqdesign__cmdnull_mouse);		liqcell_child_insert( self, b );		b = liqcell_quickcreatevis("del","button",  800-180,200,   160,160 );		liqcell_setfont(   b, liqfont_cache_getttf("/usr/share/fonts/nokia/nosnb.ttf", (24), 0) );		liqcell_propsets(  b,    	"backcolor", "rgb(100,0,0)" );		liqcell_handleradd(b,    	"click",     liqdesign_del_click);		liqcell_handleradd(b,    	"mouse",     liqdesign__cmdnull_mouse);		liqcell_child_insert( self, b );		b = liqcell_quickcreatevis("surface","designer",  0,0 ,   640,480 );		liqcell_setcaption(b,       "liqsurface");  			liqcell_setfont(   b, liqfont_cache_getttf("/usr/share/fonts/nokia/nosnb.ttf", (32), 0) );		//liqcell_propsets(  b,    	"backcolor", "rgb(40,40,40)" );		liqcell_handleradd(b,    	"keypress",  liqdesign_surface_keypress);		liqcell_handleradd(b,    	"click",     liqdesign_surface_click);		liqcell_handleradd(b,    	"mouse",     liqdesign_surface_mouse);		liqcell_child_insert( self, b );		liqdesign_resize(self,NULL, NULL);		liqcell_handleradd(self,    "keypress",      liqdesign_keypress);		liqcell_handleradd(self,    "mouse",         liqdesign_mouse);		liqcell_handleradd(self,    "click",         liqdesign_click);		liqcell_handleradd(self,    "resize",        liqdesign_resize);		liqcell_handleradd(self,    "dialog_open",   liqdesign_dialog_open);		liqcell_handleradd(self,    "dialog_close",  liqdesign_dialog_close);					}	return self;}