Usage

Diego Florio
// sample code

#include <FL/Fl.H>
#include <FL/Fl_Double_Window.H>
#include <FL/Fl_Button.H>
#include <FL/Fl_Radio_Button.H>
#include <FL/Fl_Box.H>
#include <FL/fl_ask.H>
#include "flPlug.h" // include definitions

// My window
class MyWin
    : public Fl_Double_Window,
      public fl::Plugger<MyWin> // template inheritance
{
public:
    MyWin(int _x, int _y, int _w, int _h, const char* _l=0)
        : Fl_Double_Window(_x, _y, _w, _h, _l)
    {
        Fl_Group* g=new Fl_Group(5, 5, _w-10, 24);
        g->box(FL_EMBOSSED_FRAME);
        g->begin();
        Fl_Radio_Button* b_red=new Fl_Radio_Button(6, 7, 50, 20, "Red");
        Fl_Radio_Button* b_green=new Fl_Radio_Button(60, 7, 65, 20, "Green");
        Fl_Radio_Button* b_blue=new Fl_Radio_Button(125, 7, 55, 20, "Blue");
        g->end();
        Fl_Button* b=new Fl_Button(5,_h-43,_w-10, 20, "Pushme!");
        msg_=new Fl_Box(5,_h-23,_w-10, 20);
        msg_->box(FL_THIN_DOWN_FRAME);
        msg_->align(FL_ALIGN_LEFT | FL_ALIGN_INSIDE);
        // connect the callbacks
        plug(b, &MyWin::push);
        for(int i=0; i<g->children(); ++i) {
            plug(g->child(i), &MyWin::optate);
        }
        end();
    }
private:
    // calback can be private
    void push() { msg("Pushed!"); }
    void optate(Fl_Widget* _w) { msg(_w->label()); }
    void msg(const char* _m) {
        msg_->label(_m);
        redraw();
    }

    Fl_Box* msg_;
};

int main() {
    MyWin w(50,50,190, 75, "Simple Test");
    w.show();
    return Fl::run();
}