diff options
author | Thomas Grill <xovo@users.sourceforge.net> | 2002-12-02 19:36:35 +0000 |
---|---|---|
committer | Thomas Grill <xovo@users.sourceforge.net> | 2002-12-02 19:36:35 +0000 |
commit | 1242ecdbfafd008263f0cca418c10dc1322ff21f (patch) | |
tree | 657a90e8d83af95f6fe876d2ec296603b08b26b7 /externals/grill/guitest/main.cpp | |
parent | 9815096db22c73cacdbb65512d1b61d633db7fa8 (diff) |
""
svn path=/trunk/; revision=268
Diffstat (limited to 'externals/grill/guitest/main.cpp')
-rw-r--r-- | externals/grill/guitest/main.cpp | 152 |
1 files changed, 152 insertions, 0 deletions
diff --git a/externals/grill/guitest/main.cpp b/externals/grill/guitest/main.cpp new file mode 100644 index 00000000..775a206b --- /dev/null +++ b/externals/grill/guitest/main.cpp @@ -0,0 +1,152 @@ +#include "flgui.h" +#include "flguiobj.h" + +#include <stdlib.h> +/* +#include <stdio.h> +#include <string.h> +#include <stdarg.h> +*/ + +#if !defined(FLEXT_VERSION) || (FLEXT_VERSION < 303) +#error You need at least flext version 0.3.3 +#endif + + +#define V void +#define I int +#define C char +#define BL bool +#define L long +#define UL unsigned long + +class guitest: +public flext_gui,virtual public flext_base +{ + FLEXT_HEADER(guitest,flext_gui) + +public: + guitest(I argc,t_atom *argv); + ~guitest(); + + virtual void m_bang() + { + post("%s - bang!",thisName()); + } + +protected: + + virtual void g_Create(); + virtual void g_Edit(bool selected); + + static bool g_Motion(flext_gui &g,GuiSingle &obj,const CBParams &p); + static bool g_MouseKey(flext_gui &g,GuiSingle &obj,const CBParams &p); + static bool g_Key(flext_gui &g,GuiSingle &obj,const CBParams &p); + + virtual void g_Properties(); + virtual void g_Save(t_binbuf *b); + +private: + FLEXT_CALLBACK(m_bang); +}; + +FLEXT_NEW_V("guitest",guitest) + + +void guitest::g_Create() +{ + GuiSingle *frame = Group().Add_Box(0,0,XSize(),YSize(),-1,0xE0E0E0); + frame->Symbol("rect1"); + GuiSingle *wave = Group().Add_Box(8,10,XSize()-16,YSize()-11,0,0x4040FF); + Group().Add_Text(1,1,"Hula",-1); + + I n = XSize()-16; + Pnt *p = new Pnt[n]; + for(int i = 0; i < n; ++i) { + p[i](8+i,10+rand()%(YSize()-11)); + } + Group().Add_Poly(n,p,-1,0xC0C0C0); + delete[] p; + + if(!BindEvent(*frame,g_Motion,evMotion)) post("Motion not supported"); + if(!BindEvent(*wave,g_MouseKey,evMouseDown)) post("MouseDown not supported"); + if(!BindEvent(*wave,g_MouseKey,evKeyDown)) post("KeyDown not supported"); + if(!BindEvent(*wave,g_MouseKey,evKeyUp)) post("KeyUp not supported"); +} + +void guitest::g_Properties() +{ + post("properties"); +} + +void guitest::g_Save(t_binbuf *b) +{ + post("save"); +#ifdef PD + binbuf_addv(b, "ssiis;", gensym("#X"),gensym("obj"), + (t_int)XLo(), (t_int)YLo(),MakeSymbol(thisName()) + // here the arguments + ); +#else +#endif +} + +void guitest::g_Edit(bool selected) +{ + post("select is=%d", selected); + + GuiSingle *obj = Group().Find(MakeSymbol("rect1")); + if(obj) + obj->Outline(selected?0xFF0000:0x000000); + else + post("obj not found"); +} + +bool guitest::g_Motion(flext_gui &g,GuiSingle &obj,const CBParams &p) +{ + if(p.kind == evMotion) { + post("Motion %s x:%i y:%i mod:%i",GetString(obj.Id()),p.pMotion.x,p.pMotion.y,p.pMotion.mod); + } + else + post("Motion"); + return true; +} + +bool guitest::g_MouseKey(flext_gui &g,GuiSingle &obj,const CBParams &p) +{ + if(p.kind == evMouseDown) { + post("MouseDown %s x:%i y:%i b:%i mod:%i",GetString(obj.Id()),p.pMouseKey.x,p.pMouseKey.y,p.pMouseKey.b,p.pMouseKey.mod); + } + else if(p.kind == evKeyDown) { + post("KeyDown %s asc:%i key:%i mod:%i",GetString(obj.Id()),p.pKey.a,p.pKey.k,p.pKey.mod); + } + else if(p.kind == evKeyUp) { + post("KeyUp %s asc:%i key:%i mod:%i",GetString(obj.Id()),p.pKey.a,p.pKey.k,p.pKey.mod); + } + return true; +} + +bool guitest::g_Key(flext_gui &g,GuiSingle &obj,const CBParams &p) +{ + post("Key"); + return true; +} + + + + + +guitest::guitest(I argc,t_atom *argv): + flext_gui(400,100) +{ + AddInAnything(); + AddOutInt(2); + + FLEXT_ADDBANG(0,m_bang); +} + +guitest::~guitest() +{ +} + + |