mirror of
https://github.com/KeithDHedger/LFSDesktopProject.git
synced 2026-01-13 05:42:05 +00:00
296 lines
9.8 KiB
C++
Executable File
296 lines
9.8 KiB
C++
Executable File
#if 0
|
|
|
|
#(c)keithhedger Sat 13 Oct 17:20:15 BST 2018 kdhedger68713@gmail.com
|
|
|
|
if [ "X$1" != "X" ];then
|
|
USEVALGRIND="valgrind --leak-check=full"
|
|
fi
|
|
|
|
(
|
|
cd ..
|
|
make ${MAKEFLAGS:--j4}
|
|
)
|
|
|
|
APPNAME=$(basename $0 .cpp)
|
|
cd "$(dirname "$0")"
|
|
|
|
g++ -Wstack-protector -Werror -fstack-protector "$0" -O0 -ggdb -I../LFSToolKit -L../LFSToolKit/app/.libs $(pkg-config --cflags --libs x11 xft cairo glib-2.0) -llfstoolkit -lImlib2 -Wstack-protector -Werror -fstack-protector -o $APPNAME||exit 1
|
|
LD_LIBRARY_PATH=../LFSToolKit/app/.libs $USEVALGRIND ./$APPNAME "$@"
|
|
retval=$?
|
|
rm $APPNAME
|
|
exit $retval
|
|
|
|
#endif
|
|
|
|
#include "../config.h"
|
|
#include "lfstk/LFSTKGlobals.h"
|
|
|
|
#define BOXLABEL "Examples"
|
|
#define MAKEFLAGS "-j10 --output-sync"
|
|
|
|
LFSTK_applicationClass *apc=NULL;
|
|
LFSTK_windowClass *wc=NULL;
|
|
LFSTK_toggleButtonClass *useDbg=NULL;
|
|
LFSTK_toggleButtonClass *openFile=NULL;
|
|
LFSTK_toggleButtonClass *makeLib=NULL;
|
|
LFSTK_ExpanderGadgetClass *multi=NULL;
|
|
|
|
const char *dbg;
|
|
int retValOfCommand=0;
|
|
|
|
bool doQuit(void *p,void* ud)
|
|
{
|
|
apc->exitValue=0;
|
|
apc->mainLoop=false;
|
|
XSync(apc->display,true);
|
|
return(true);
|
|
}
|
|
|
|
|
|
bool buttonCB(void *p,void* ud)
|
|
{
|
|
char *command;
|
|
if(ud!=NULL)
|
|
{
|
|
if(makeLib->LFSTK_getValue()==true)
|
|
system("(pushd ..;make " MAKEFLAGS ";popd)");
|
|
|
|
asprintf(&command,"%s %s &",(const char*)ud,dbg);
|
|
retValOfCommand=system(command);
|
|
free(command);
|
|
if(openFile->LFSTK_getValue()==true)
|
|
{
|
|
asprintf(&command,"xdg-open $(pwd)/%s &",(const char*)ud);
|
|
system(command);
|
|
free(command);
|
|
}
|
|
}
|
|
return(true);
|
|
}
|
|
|
|
bool doDbg(void *p,void* ud)
|
|
{
|
|
char *command;
|
|
if(p!=NULL)
|
|
{
|
|
if(useDbg->LFSTK_getValue()==true)
|
|
dbg="dbg";
|
|
else
|
|
dbg="";
|
|
}
|
|
return(true);
|
|
}
|
|
|
|
int main(int argc, char **argv)
|
|
{
|
|
XEvent event;
|
|
int sy=0;
|
|
std::vector<hitRect> hrs;
|
|
bool useliveupdate=true;
|
|
dbg="";
|
|
|
|
apc=new LFSTK_applicationClass();
|
|
apc->LFSTK_addWindow(NULL,BOXLABEL,"LFSTKExample");
|
|
wc=apc->mainWindow;
|
|
|
|
//info
|
|
multi=new LFSTK_ExpanderGadgetClass(wc,"",0,0,DIALOGWIDTH,GADGETHITE*4);
|
|
multi->stretchX=true;
|
|
multi->lockY=LOCKTOTOP;
|
|
multi->gadgetStretch=STRETCH;
|
|
multi->liveUpdate=useliveupdate;
|
|
|
|
hrs.push_back({0,sy,DIALOGWIDTH,GADGETHITE,NULL});
|
|
hrs.back().gadget=new LFSTK_labelClass(wc,BOXLABEL,0,0,1,1);
|
|
hrs.back().gadget->LFSTK_setLabelGravity(CENTRE);
|
|
hrs.back().gadget->LFSTK_setCairoFontDataParts("sB",20);
|
|
sy+=YSPACING;
|
|
|
|
hrs.push_back({0,sy,DIALOGWIDTH,GADGETHITE,NULL});
|
|
hrs.back().gadget=new LFSTK_labelClass(wc,COPYRITE,0,0,1,1);
|
|
hrs.back().gadget->LFSTK_setLabelGravity(CENTRE);
|
|
sy+=HALFYSPACING;
|
|
|
|
hrs.push_back({0,sy,DIALOGWIDTH,GADGETHITE,NULL});
|
|
hrs.back().gadget=new LFSTK_labelClass(wc,PERSONAL,0,0,1,1);
|
|
hrs.back().gadget->LFSTK_setLabelGravity(CENTRE);
|
|
hrs.back().gadget->LFSTK_setCairoFontDataParts("B");
|
|
sy+=YSPACING;
|
|
|
|
multi->LFSTK_setHitRects(hrs);
|
|
|
|
hrs.clear();
|
|
|
|
//options
|
|
multi=new LFSTK_ExpanderGadgetClass(wc,"",0,sy,DIALOGWIDTH,GADGETHITE);
|
|
multi->stretchX=true;
|
|
multi->gadgetStretch=SPACESPREADX;
|
|
multi->liveUpdate=useliveupdate;
|
|
|
|
hrs.push_back({0,0,GADGETWIDTH,GADGETHITE,NULL});
|
|
useDbg=new LFSTK_toggleButtonClass(wc,"Use Valgrind",0,0,GADGETWIDTH,GADGETHITE,NorthWestGravity);
|
|
useDbg->LFSTK_setValue(false);
|
|
useDbg->LFSTK_setMouseCallBack(NULL,doDbg,NULL);
|
|
hrs.back().gadget=useDbg;
|
|
|
|
hrs.push_back({0,0,GADGETWIDTH,GADGETHITE,NULL});
|
|
openFile=new LFSTK_toggleButtonClass(wc,"Open File",0,0,GADGETWIDTH,GADGETHITE,NorthWestGravity);
|
|
openFile->LFSTK_setValue(false);
|
|
hrs.back().gadget=openFile;
|
|
|
|
hrs.push_back({0,0,GADGETWIDTH,GADGETHITE,NULL});
|
|
makeLib=new LFSTK_toggleButtonClass(wc,"Build Lib",0,0,GADGETWIDTH,GADGETHITE,NorthWestGravity);
|
|
makeLib->LFSTK_setValue(true);
|
|
hrs.back().gadget=makeLib;
|
|
|
|
multi->LFSTK_setHitRects(hrs);
|
|
hrs.clear();
|
|
|
|
//line
|
|
sy+=HALFYSPACING+12;
|
|
multi=new LFSTK_ExpanderGadgetClass(wc,"",0,sy,DIALOGWIDTH,GADGETHITE-11);
|
|
multi->stretchX=true;
|
|
multi->lockY=LOCKTOTOP;
|
|
multi->gadgetStretch=STRETCH;
|
|
multi->liveUpdate=useliveupdate;
|
|
|
|
hrs.push_back({0,0,DIALOGWIDTH,2,NULL});
|
|
hrs.back().gadget=new LFSTK_buttonClass(wc,"--",0,0,DIALOGWIDTH,2,BUTTONGRAV);
|
|
hrs.back().gadget->gadgetDetails.bevel=BEVELNONE;
|
|
hrs.back().gadget->gadgetDetails.buttonTile=false;
|
|
hrs.back().gadget->gadgetDetails.colour=&wc->windowColourNames[NORMALCOLOUR];
|
|
|
|
multi->LFSTK_setHitRects(hrs);
|
|
hrs.clear();
|
|
|
|
sy+=HALFYSPACING-4;
|
|
|
|
//run examples - middle bit
|
|
int internalsy=0;
|
|
multi=new LFSTK_ExpanderGadgetClass(wc,"",GADGETWIDTH+BORDER/2,sy,GADGETWIDTH*3+BORDER*2,GADGETHITE*13);
|
|
multi->stretchX=true;
|
|
multi->stretchY=true;
|
|
multi->gadgetStretch=STRETCH;
|
|
multi->liveUpdate=useliveupdate;
|
|
|
|
//lineedit
|
|
hrs.push_back({0,internalsy,GADGETWIDTH,GADGETHITE,new LFSTK_buttonClass(wc,"Line Edit",0,0,1,1)});
|
|
hrs.back().gadget->LFSTK_setMouseCallBack(NULL,buttonCB,USERDATA("./lineedit.cpp"));
|
|
//multi line
|
|
hrs.push_back({GADGETWIDTH+multi->spacePad,internalsy,GADGETWIDTH,GADGETHITE,new LFSTK_buttonClass(wc,"Multi Line Edit",0,0,1,1)});
|
|
hrs.back().gadget->LFSTK_setMouseCallBack(NULL,buttonCB,USERDATA("./multilineedit.cpp"));
|
|
//get icon path
|
|
hrs.push_back({(GADGETWIDTH+multi->spacePad)*2,internalsy,GADGETWIDTH,GADGETHITE,new LFSTK_buttonClass(wc,"Get Icon Path",0,0,1,1)});
|
|
hrs.back().gadget->LFSTK_setMouseCallBack(NULL,buttonCB,USERDATA("./geticonpath.cpp"));
|
|
|
|
internalsy+=YSPACING;
|
|
//basic buttons
|
|
hrs.push_back({0,internalsy,GADGETWIDTH,GADGETHITE,new LFSTK_buttonClass(wc,"Buttons",0,0,1,1)});
|
|
hrs.back().gadget->LFSTK_setMouseCallBack(NULL,buttonCB,USERDATA("./basic.cpp"));
|
|
//toggles
|
|
hrs.push_back({GADGETWIDTH+multi->spacePad,internalsy,GADGETWIDTH,GADGETHITE,new LFSTK_buttonClass(wc,"Toggles",0,0,1,1)});
|
|
hrs.back().gadget->LFSTK_setMouseCallBack(NULL,buttonCB,USERDATA("./toggle.cpp"));
|
|
//expander
|
|
hrs.push_back({(GADGETWIDTH+multi->spacePad)*2,internalsy,GADGETWIDTH,GADGETHITE,new LFSTK_buttonClass(wc,"Expander",0,0,1,1)});
|
|
hrs.back().gadget->LFSTK_setMouseCallBack(NULL,buttonCB,USERDATA("./expander.cpp"));
|
|
internalsy+=YSPACING;
|
|
|
|
//menus
|
|
hrs.push_back({GADGETWIDTH+multi->spacePad,internalsy,GADGETWIDTH,GADGETHITE,new LFSTK_buttonClass(wc,"Menus",0,0,1,1)});
|
|
hrs.back().gadget->LFSTK_setMouseCallBack(NULL,buttonCB,USERDATA("./menus.cpp"));
|
|
internalsy+=YSPACING;
|
|
|
|
//dialogs
|
|
hrs.push_back({0,internalsy,GADGETWIDTH,GADGETHITE,new LFSTK_buttonClass(wc,"Dialogs",0,0,1,1)});
|
|
hrs.back().gadget->LFSTK_setMouseCallBack(NULL,buttonCB,USERDATA("./dialogs.cpp"));
|
|
//fontdialog
|
|
hrs.push_back({(GADGETWIDTH+multi->spacePad)*2,internalsy,GADGETWIDTH,GADGETHITE,new LFSTK_buttonClass(wc,"Font Dialog",0,0,1,1)});
|
|
hrs.back().gadget->LFSTK_setMouseCallBack(NULL,buttonCB,USERDATA("./fontdialog.cpp"));
|
|
internalsy+=YSPACING;
|
|
|
|
//list
|
|
hrs.push_back({GADGETWIDTH+multi->spacePad,internalsy,GADGETWIDTH,GADGETHITE,new LFSTK_buttonClass(wc,"List",0,0,1,1)});
|
|
hrs.back().gadget->LFSTK_setMouseCallBack(NULL,buttonCB,USERDATA("./list.cpp"));
|
|
internalsy+=YSPACING;
|
|
|
|
//window
|
|
hrs.push_back({0,internalsy,GADGETWIDTH,GADGETHITE,new LFSTK_buttonClass(wc,"Window",0,0,1,1)});
|
|
hrs.back().gadget->LFSTK_setMouseCallBack(NULL,buttonCB,USERDATA("./window.cpp"));
|
|
//subwindow
|
|
hrs.push_back({(GADGETWIDTH+multi->spacePad)*2,internalsy,GADGETWIDTH,GADGETHITE,new LFSTK_buttonClass(wc,"Sub Window",0,0,1,1)});
|
|
hrs.back().gadget->LFSTK_setMouseCallBack(NULL,buttonCB,USERDATA("./subwindowtest.cpp"));
|
|
internalsy+=YSPACING;
|
|
|
|
//image
|
|
hrs.push_back({0,internalsy,GADGETWIDTH,GADGETHITE,new LFSTK_buttonClass(wc,"Image",0,0,1,1)});
|
|
hrs.back().gadget->LFSTK_setMouseCallBack(NULL,buttonCB,USERDATA("./image.cpp"));
|
|
//image buttons
|
|
hrs.push_back({(GADGETWIDTH+multi->spacePad)*2,internalsy,GADGETWIDTH,GADGETHITE,new LFSTK_buttonClass(wc,"Image Buttons",0,0,1,1)});
|
|
hrs.back().gadget->LFSTK_setMouseCallBack(NULL,buttonCB,USERDATA("./imagebutton.cpp"));
|
|
internalsy+=YSPACING;
|
|
|
|
//scrollbar
|
|
hrs.push_back({GADGETWIDTH+multi->spacePad,internalsy,GADGETWIDTH,GADGETHITE,new LFSTK_buttonClass(wc,"Scrollbar",0,0,1,1)});
|
|
hrs.back().gadget->LFSTK_setMouseCallBack(NULL,buttonCB,USERDATA("./scrollbar.cpp"));
|
|
internalsy+=YSPACING;
|
|
|
|
//lfsabout
|
|
hrs.push_back({GADGETWIDTH+multi->spacePad,internalsy,GADGETWIDTH,GADGETHITE,new LFSTK_buttonClass(wc,"LFS About",0,0,1,1)});
|
|
hrs.back().gadget->LFSTK_setMouseCallBack(NULL,buttonCB,USERDATA("./lfsabout.cpp"));
|
|
internalsy+=YSPACING;
|
|
//Calendar
|
|
hrs.push_back({GADGETWIDTH+multi->spacePad,internalsy,GADGETWIDTH,GADGETHITE,new LFSTK_buttonClass(wc,"Calendar",0,0,1,1)});
|
|
hrs.back().gadget->LFSTK_setMouseCallBack(NULL,buttonCB,USERDATA("./calander.cpp"));
|
|
internalsy+=YSPACING;
|
|
|
|
//run command
|
|
hrs.push_back({GADGETWIDTH+multi->spacePad,internalsy,GADGETWIDTH,GADGETHITE,new LFSTK_buttonClass(wc,"Run Command",0,0,1,1)});
|
|
hrs.back().gadget->LFSTK_setMouseCallBack(NULL,buttonCB,USERDATA("./lfsruncommand.cpp"));
|
|
internalsy+=YSPACING;
|
|
|
|
multi->LFSTK_setHitRects(hrs);
|
|
hrs.clear();
|
|
|
|
sy+=YSPACING*10;
|
|
|
|
//bottom bit
|
|
multi=new LFSTK_ExpanderGadgetClass(wc,"",0,sy,DIALOGWIDTH,6);
|
|
multi->stretchX=true;
|
|
multi->lockY=LOCKTOBOTTOM;
|
|
multi->gadgetStretch=STRETCH;
|
|
multi->liveUpdate=useliveupdate;
|
|
|
|
|
|
//line
|
|
hrs.push_back({0,0,DIALOGWIDTH,2,NULL});
|
|
hrs.back().gadget=new LFSTK_buttonClass(wc,"--",0,0,DIALOGWIDTH,2,BUTTONGRAV);
|
|
hrs.back().gadget->gadgetDetails.bevel=BEVELNONE;
|
|
hrs.back().gadget->gadgetDetails.buttonTile=false;
|
|
hrs.back().gadget->gadgetDetails.colour=&wc->windowColourNames[NORMALCOLOUR];
|
|
|
|
multi->LFSTK_setHitRects(hrs);
|
|
hrs.clear();
|
|
|
|
//quit
|
|
multi=new LFSTK_ExpanderGadgetClass(wc,"",DIALOGMIDDLE-HALFGADGETWIDTH,sy+12,GADGETWIDTH,GADGETHITE);
|
|
multi->lockY=LOCKTOBOTTOM;
|
|
multi->liveUpdate=useliveupdate;
|
|
|
|
hrs.push_back({0,0,GADGETWIDTH,GADGETHITE,new LFSTK_buttonClass(wc,"Quit",0,0,1,1)});
|
|
hrs.back().gadget->LFSTK_setMouseCallBack(NULL,doQuit,NULL);
|
|
internalsy+=YSPACING;
|
|
|
|
multi->LFSTK_setHitRects(hrs);
|
|
hrs.clear();
|
|
|
|
sy+=YSPACING+14;
|
|
|
|
wc->LFSTK_resizeWindow(DIALOGWIDTH,sy,true);
|
|
|
|
printf("Number of gadgets in window=%i\n",wc->LFSTK_gadgetCount());
|
|
//apc->LFSTK_setTimer(1,true);
|
|
int retval=apc->LFSTK_runApp();
|
|
delete apc;
|
|
return(retval);
|
|
|
|
} |