|
Post by bigbass on Dec 5, 2017 15:14:01 GMT 1
Hey vovchik I see what you mean it gets right to the point with very little extra code to remove first and at the same time shows how to hand craft code for bacon (when we have to convert the fluid code ) later I was able to figure out another way to do the menus using menu->add from inside of fluid and the syntax looks much better to port but I think the best way is let fluid write an array and when we finish coding everything in fluid have a script to parse the array and convert it to the menu add syntax along with DECLARE and PRAGMA and company... a fluid to bacon/HUG parser script would be fun to code a reference link for later www.straub.as/cpp/fltk/fltkdoc-1.1.9/doc/Fl_Menu_Item.htmlif you wanted to see how to force the menu->add syntax this is how it could be done to get around the whole menu array and just add one line at a time Joe
|
|
|
Post by vovchik on Dec 5, 2017 22:39:57 GMT 1
Dear Joe, I put the text-edit widget into the scrabble game for modifying word lists. Have a look here scrabble. With kind regards, vovchik
|
|
|
Post by bigbass on Dec 9, 2017 7:07:14 GMT 1
Hey vovchik
to follow up on the easy barebones idea no buffer text box
here is in c++ and in bacon
#include <string.h> #include <FL/Fl.H> #include <FL/Fl_Window.H> #include <FL/Fl_Multi_Browser.H> #include <FL/Fl_Light_Button.H>
Fl_Window *WINDOW; Fl_Multi_Browser *OUTPUT ; Fl_Light_Button *BUTTON ;
void Run_CB(Fl_Widget* w,void*) { OUTPUT->add("test wrote to this place"); }
int main() { WINDOW = new Fl_Window(420,150); OUTPUT = new Fl_Multi_Browser(10,10,400,100); BUTTON = new Fl_Light_Button(300,120,100,20,"send"); BUTTON->tooltip("simple textbox.\n"); BUTTON->callback(Run_CB); WINDOW->end(); WINDOW->show(); return(Fl::run()); }
PRAGMA INCLUDE <FL/Fl.H> PRAGMA INCLUDE <FL/Fl_Window.H> PRAGMA INCLUDE <string.h> PRAGMA INCLUDE <FL/Fl_Multi_Browser.H> PRAGMA INCLUDE <FL/Fl_Light_Button.H> PRAGMA LDFLAGS -lfltk -L. PRAGMA COMPILER g++ PRAGMA OPTIONS -Wno-write-strings -Wno-pointer-arith
OPTION PARSE FALSE
DECLARE WINDOW TYPE Fl_Window* DECLARE OUTPUT TYPE Fl_Multi_Browser* DECLARE BUTTON TYPE Fl_Light_Button*
SUB Run_CB(Fl_Widget* w ,void* ) OUTPUT->add("test wrote to this place") END SUB
WINDOW = new Fl_Window(420,150) OUTPUT = new Fl_Multi_Browser(10,10,400,100) BUTTON = new Fl_Light_Button(300,120,100,20,"send") BUTTON->tooltip("simple textbox.\n") BUTTON->callback(Run_CB) WINDOW->end() WINDOW->show() Fl::run()
|
|
|
Post by vovchik on Dec 9, 2017 9:58:15 GMT 1
Dear Joe, That is an excellent example, since it is barebones and shows how little code is acutally needed to create the gui. Nice... It has all the makings of a future LAN messenger. With kind regards, vovchik
|
|
|
Post by bigbass on Dec 19, 2017 16:49:25 GMT 1
nothing fancy just modified some fluid demos and ported them tried to keep the syntax closer to what you would see from fluid (to understand porting code ) but still compiles and works in bacon all of the fluid demos won't compile outside of the test folder you have to piece together the missing includes but I did this part already to make the demos work and generate the *cxx and *h out of the box PRAGMA INCLUDE <FL/Fl.H> <FL/Fl_Double_Window.H> <FL/Fl_Button.H> <FL/Fl_Return_Button.H> PRAGMA INCLUDE <FL/Fl_Light_Button.H> <FL/Fl_Check_Button.H> <FL/Fl_Round_Button.H> PRAGMA INCLUDE <FL/Fl_Group.H> <FL/Fl_Output.H> <FL/Fl_Export.H> <FL/fl_types.h> PRAGMA INCLUDE <FL/Enumerations.H> <FL/Fl_Widget.H> <FL/Fl_Input.H> <iostream> PRAGMA LDFLAGS -lfltk PRAGMA COMPILER g++ PRAGMA OPTIONS -Wno-write-strings -Wno-pointer-arith PRAGMA BACONLIB OPTION PARSE FALSE
DECLARE WIN TYPE Fl_Double_Window* DECLARE BUT1 TYPE Fl_Button* DECLARE BUT2 TYPE Fl_Button* DECLARE BUT3 TYPE Fl_Return_Button* DECLARE BUT4 TYPE Fl_Light_Button* DECLARE CHECK1 TYPE Fl_Check_Button* DECLARE CHECKROUND TYPE Fl_Round_Button* DECLARE GROUP TYPE Fl_Group* DECLARE RADIO1 TYPE Fl_Round_Button* DECLARE RADIO2 TYPE Fl_Round_Button* DECLARE RADIO3 TYPE Fl_Round_Button* DECLARE RADIO4 TYPE Fl_Round_Button* DECLARE GROUP2 TYPE Fl_Group* DECLARE RADIO5 TYPE Fl_Button* DECLARE RADIO6 TYPE Fl_Button* DECLARE RADIO7 TYPE Fl_Button* DECLARE RADIO8 TYPE Fl_Button* DECLARE cb_info TYPE Fl_Output*
'---------------------------------------------- SUB button_cb(Fl_Widget* b, void* userdata) '---------------------------------------------- char msg[256] sprintf(msg, "Label: '%s'\n", b->label()) cb_info->value(msg) printf("%s\n",msg) cb_info->redraw() END SUB
WIN = new Fl_Double_Window(365, 210) WIN->box(FL_GLEAM_ROUND_DOWN_BOX) BUT1 = new Fl_Button(20, 10, 160, 30, "&Fl_Button 1") BUT1->tooltip("Normal button (callback called only when released)") BUT1->box(FL_GLEAM_ROUND_UP_BOX) BUT1->labelsize(13) BUT1->user_data((void*)("but1")) BUT1->callback((Fl_Callback*) button_cb) BUT2 = new Fl_Button(20, 44, 160, 30, "Fl_Button &2") BUT2->tooltip("Normal button with callback called when changed (push and released)") BUT2->box(FL_GLEAM_ROUND_UP_BOX) BUT2->labelsize(13) BUT2->user_data((void*)("but2")) BUT2->callback((Fl_Callback*) button_cb) BUT3 = new Fl_Return_Button(20, 78, 160, 30, "Fl_Return_Button &3") BUT3->tooltip("Button with Return key as default shortcut") BUT3->box(FL_GLEAM_ROUND_UP_BOX) BUT3->labelsize(13) BUT3->user_data((void*)("but3")) BUT3->callback((Fl_Callback*) button_cb) BUT4 = new Fl_Light_Button(20, 113, 160, 30, "Fl_Light_Button &4") BUT4->tooltip("Button with toggle state and a visual indicator of the current state") BUT4->box(FL_GLEAM_ROUND_UP_BOX) BUT4->labelsize(13) BUT4->user_data((void*)("but4")) BUT4->callback((Fl_Callback*) button_cb) CHECK1 = new Fl_Check_Button(20, 148, 160, 30, "Fl_Check_Button &D") CHECK1->tooltip("Check button with toggle state") CHECK1->down_box(FL_GLEAM_ROUND_DOWN_BOX) CHECK1->labelsize(13) CHECK1->user_data((void*)("check1")) CHECK1->callback((Fl_Callback*) button_cb) CHECKROUND = new Fl_Round_Button(20, 178, 160, 30, "Fl_Round_Button &E") CHECKROUND->tooltip("Round Button with toggle state") CHECKROUND->down_box(FL_GLEAM_ROUND_DOWN_BOX) CHECKROUND->labelsize(13) CHECKROUND->user_data((void*)("checkround")) CHECKROUND->callback((Fl_Callback*) button_cb) GROUP = new Fl_Group(190, 10, 70, 120) GROUP->box(FL_THIN_UP_FRAME) RADIO1 = new Fl_Round_Button(190, 10, 70, 30, "radio &1") RADIO1->tooltip("Radio button, only one button is set at a time.") RADIO1->type(102) RADIO1->down_box(FL_GLEAM_ROUND_DOWN_BOX) RADIO1->user_data((void*)("radio1")) RADIO1->callback((Fl_Callback*) button_cb) RADIO2 = new Fl_Round_Button(190, 40, 70, 30, "radio &2") RADIO2->tooltip("Radio button, only one button is set at a time.") RADIO2->type(102) RADIO2->down_box(FL_GLEAM_ROUND_DOWN_BOX) RADIO2->user_data((void*)("radio2")) RADIO2->callback((Fl_Callback*) button_cb) RADIO3 = new Fl_Round_Button(190, 70, 70, 30, "radio &3") RADIO3->tooltip("Radio button, only one button is set at a time.") RADIO3->type(102) RADIO3->down_box(FL_GLEAM_ROUND_DOWN_BOX) RADIO3->user_data((void*)("radio3")) RADIO3->callback((Fl_Callback*) button_cb) RADIO4 = new Fl_Round_Button(190, 100, 70, 30, "radio &4") RADIO4->tooltip("Radio button, only one button is set at a time.") RADIO4->type(102) RADIO4->down_box(FL_GLEAM_ROUND_DOWN_BOX) RADIO4->user_data((void*)("radio4")) RADIO4->callback((Fl_Callback*) button_cb) GROUP->end() GROUP2 = new Fl_Group(270, 10, 90, 120) GROUP2->box(FL_THIN_UP_BOX) RADIO5 = new Fl_Button(280, 20, 20, 20, "radio 5") RADIO5->tooltip("only one button is set at a time.") RADIO5->type(102) RADIO5->box(FL_GLEAM_UP_BOX) RADIO5->selection_color((Fl_Color)1) RADIO5->user_data((void*)("radio5")) RADIO5->align(Fl_Align(FL_ALIGN_RIGHT)) RADIO5->callback((Fl_Callback*) button_cb) RADIO6 = new Fl_Button(280, 45, 20, 20, "radio 6") RADIO6->tooltip("only one button is set at a time.") RADIO6->type(102) RADIO6->box(FL_GLEAM_ROUND_UP_BOX) RADIO6->selection_color((Fl_Color)1) RADIO6->user_data((void*)("radio6")) RADIO6->align(Fl_Align(FL_ALIGN_RIGHT)) RADIO6->callback((Fl_Callback*) button_cb) RADIO7 = new Fl_Button(280, 70, 20, 20, "radio 7") RADIO7->tooltip("only one button is set at a time.") RADIO7->type(102) RADIO7->box(FL_GLEAM_ROUND_UP_BOX) RADIO7->selection_color((Fl_Color)1) RADIO7->user_data((void*)("radio7")) RADIO7->align(Fl_Align(FL_ALIGN_RIGHT)) RADIO7->callback((Fl_Callback*) button_cb) RADIO8 = new Fl_Button(280, 95, 20, 20, "radio 8") RADIO8->tooltip("only one button is set at a time.") RADIO8->type(102) RADIO8->box(FL_GLEAM_ROUND_UP_BOX) RADIO8->selection_color((Fl_Color)1) RADIO8->user_data((void*)("radio8")) RADIO8->align(Fl_Align(FL_ALIGN_RIGHT)) RADIO8->callback((Fl_Callback*) button_cb) GROUP2->end() cb_info = new Fl_Output(190, 148, 170, 62, "callback:") cb_info->type(12) cb_info->textsize(12) cb_info->align(Fl_Align(133)) WIN->end() WIN->show(argc, argv) Fl::run()
# data file for the Fltk User Interface Designer (fluid) version 1.0304 header_name {.h} code_name {.cxx} Function {button_cb(Fl_Widget* b, void* userdata)} { comment {Buttons test callback} open return_type void } { code {char msg[256]; sprintf(msg, "Label: '%s'\\n", b->label()); cb_info->value(msg);cb_info->redraw(); printf("%s\\n",msg);} {} }
Function {} {open } { Fl_Window WIN { comment {\#include <FL/Fl_Export.H> \#include <FL/fl_types.h> \#include <FL/Enumerations.H> \#include <FL/Fl_Widget.H> \#include <FL/Fl_Input.H> } open xywh {527 25 365 210} type Double box GLEAM_ROUND_DOWN_BOX hide } { Fl_Button BUT1 { label {&Fl_Button 1} user_data {"but1"} tooltip {Normal button (callback called only when released)} xywh {20 10 160 30} box GLEAM_ROUND_UP_BOX labelsize 13 code0 {BUT1->callback((Fl_Callback*) button_cb);} } Fl_Button BUT2 { label {Fl_Button &2} user_data {"but2"} tooltip {Normal button with callback called when changed (push and released)} xywh {20 44 160 30} box GLEAM_ROUND_UP_BOX labelsize 13 when 1 code0 {BUT2->callback((Fl_Callback*) button_cb);} } Fl_Return_Button BUT3 { label {Fl_Return_Button &3} user_data {"but3"} tooltip {Button with Return key as default shortcut} xywh {20 78 160 30} box GLEAM_ROUND_UP_BOX labelsize 13 code0 {BUT3->callback((Fl_Callback*) button_cb);} } Fl_Light_Button BUT4 { label {Fl_Light_Button &4} user_data {"but4"} tooltip {Button with toggle state and a visual indicator of the current state} xywh {20 113 160 30} box GLEAM_ROUND_UP_BOX labelsize 13 code0 {BUT4->callback((Fl_Callback*) button_cb);} } Fl_Check_Button CHECK1 { label {Fl_Check_Button &D} user_data {"check1"} tooltip {Check button with toggle state} xywh {20 148 160 30} down_box GLEAM_ROUND_DOWN_BOX labelsize 13 code0 {CHECK1->callback((Fl_Callback*) button_cb);} } Fl_Round_Button CHECKROUND { label {Fl_Round_Button &E} user_data {"checkround"} tooltip {Round Button with toggle state} xywh {20 178 160 30} down_box GLEAM_ROUND_DOWN_BOX labelsize 13 code0 {CHECKROUND->callback((Fl_Callback*) button_cb);} } Fl_Group GROUP {open xywh {190 10 70 120} box THIN_UP_FRAME } { Fl_Round_Button RADIO1 { label {radio &1} user_data {"radio1"} callback {RADIO1->callback((Fl_Callback*) button_cb);} tooltip {Radio button, only one button is set at a time, in the corresponding group.} xywh {190 10 70 30} type Radio down_box GLEAM_ROUND_DOWN_BOX } Fl_Round_Button RADIO2 { label {radio &2} user_data {"radio2"} callback {RADIO2->callback((Fl_Callback*) button_cb);} tooltip {Radio button, only one button is set at a time, in the corresponding group.} xywh {190 40 70 30} type Radio down_box GLEAM_ROUND_DOWN_BOX } Fl_Round_Button RADIO3 { label {radio &3} user_data {"radio3"} callback {RADIO3->callback((Fl_Callback*) button_cb);} tooltip {Radio button, only one button is set at a time, in the corresponding group.} xywh {190 70 70 30} type Radio down_box GLEAM_ROUND_DOWN_BOX } Fl_Round_Button RADIO4 { label {radio &4} user_data {"radio4"} callback {RADIO4->callback((Fl_Callback*) button_cb);} tooltip {Radio button, only one button is set at a time, in the corresponding group.} xywh {190 100 70 30} type Radio down_box GLEAM_ROUND_DOWN_BOX } } Fl_Group GROUP2 {open xywh {270 10 90 120} box THIN_UP_BOX } { Fl_Button RADIO5 { label {radio 5} user_data {"radio5"} callback {RADIO5->callback((Fl_Callback*) button_cb);} selected tooltip {Custom look button, only one button is set at a time, in the corresponding group.} xywh {280 20 20 20} type Radio box GLEAM_UP_BOX selection_color 1 align 8 } Fl_Button RADIO6 { label {radio 6} user_data {"radio6"} callback {RADIO6->callback((Fl_Callback*) button_cb);} tooltip {Custom look button, only one button is set at a time, in the corresponding group.} xywh {280 45 20 20} type Radio box GLEAM_ROUND_UP_BOX selection_color 1 align 8 } Fl_Button RADIO7 { label {radio 7} user_data {"radio7"} callback {RADIO7->callback((Fl_Callback*) button_cb);} tooltip {Custom look button, only one button is set at a time, in the corresponding group.} xywh {280 70 20 20} type Radio box GLEAM_ROUND_UP_BOX selection_color 1 align 8 } Fl_Button RADIO8 { label {radio 8} user_data {"radio8"} callback {RADIO8->callback((Fl_Callback*) button_cb);} tooltip {Custom look button, only one button is set at a time, in the corresponding group.} xywh {280 95 20 20} type Radio box GLEAM_ROUND_UP_BOX selection_color 1 align 8 } } Fl_Output cb_info { label {callback:} xywh {190 148 170 62} type Multiline align 133 textsize 12 } } }
|
|
|
Post by vovchik on Dec 19, 2017 22:06:17 GMT 1
Dear Joe, Thanks for the widget examples. Everything compiles on my machies just fine. With kind regards, vovchik
|
|
|
Post by bigbass on Dec 20, 2017 5:44:32 GMT 1
Hey vovchik I know these are simple demos and thats the point the focus is on how to code in fluid so that the generated code is easy to port and we have a GUI tool to quickly load and edit with *Peter used the tabs/notebook widget for all his editors so this is a good place to see an example with bare bones code PRAGMA INCLUDE <FL/Fl.H> PRAGMA INCLUDE <FL/Fl_Double_Window.H> PRAGMA INCLUDE <FL/Fl_Tabs.H> PRAGMA INCLUDE <FL/Fl_Group.H> PRAGMA INCLUDE <FL/Fl_Input.H> PRAGMA INCLUDE <FL/Fl_Button.H> PRAGMA INCLUDE <FL/fl_ask.H> PRAGMA INCLUDE <FL/Fl_Return_Button.H> PRAGMA INCLUDE <iostream> PRAGMA LDFLAGS -lfltk -lfltk_images -L. PRAGMA COMPILER g++ PRAGMA OPTIONS -Wno-write-strings -Wno-pointer-arith OPTION PARSE FALSE
DECLARE WIN TYPE Fl_Double_Window * DECLARE TABS1 TYPE Fl_Tabs* DECLARE GROUP1 TYPE Fl_Group* DECLARE INPUT1 TYPE Fl_Input* DECLARE INPUT2 TYPE Fl_Input* DECLARE INPUT3 TYPE Fl_Input* DECLARE GROUP2 TYPE Fl_Group* DECLARE BUT1 TYPE Fl_Button* DECLARE INPUT4 TYPE Fl_Input* DECLARE BUT2 TYPE Fl_Button* DECLARE BUT3 TYPE Fl_Button* DECLARE GROUP3 TYPE Fl_Group* DECLARE BUT4 TYPE Fl_Button* DECLARE BUT5 TYPE Fl_Button* DECLARE BUT6 TYPE Fl_Button* DECLARE GROUP4 TYPE Fl_Group* DECLARE BUT7 TYPE Fl_Button* DECLARE BUT8 TYPE Fl_Button* DECLARE BUT9 TYPE Fl_Button* DECLARE CANCELBTN TYPE Fl_Button* DECLARE OKBTN TYPE Fl_Return_Button*
SUB button_cb(Fl_Widget* b , void* userdata) fl_message("Test ") END SUB
SUB cb_BUT1(Fl_Button* b, void*) fl_message("pressed button 1.") END SUB
SUB cb_BUT2(Fl_Button* b, void*) fl_message("Test pressed button 2") END SUB
SUB cb_BUT3(Fl_Button* b, void*) fl_message("pressed button 3") END SUB
SUB cb_CANCELBTN(Fl_Button* b, void*) exit(1) END SUB
SUB cb_OKBTN(Fl_Return_Button* b, void*) exit(0) END SUB
WIN = new Fl_Double_Window(355, 355, "Tab demo") WIN->box(FL_GLEAM_ROUND_DOWN_BOX) WIN->color(FL_DARK1) TABS1 = new Fl_Tabs(10, 35, 315, 260) TABS1->tooltip("the various index cards test different aspects of the Fl_Tabs widget") TABS1->selection_color((Fl_Color)4) TABS1->labelcolor(FL_BACKGROUND2_COLOR) GROUP1 = new Fl_Group(10, 60, 315, 235, "Label&1") GROUP1->tooltip("this tab tests correct keyboard navigation between text input fields") GROUP1->selection_color((Fl_Color)41) INPUT1 = new Fl_Input(70, 80, 240, 40, "input :") INPUT1->tooltip("This is the first input field") INPUT2 = new Fl_Input(70, 120, 240, 30, "input2:") INPUT2->tooltip("") INPUT3 = new Fl_Input(70, 150, 240, 80, "input3:") GROUP1->end() Fl_Group::current()->resizable(GROUP1) GROUP2 = new Fl_Group(10, 60, 315, 235, "tab&2") GROUP2->tooltip("tab2 tests among other things the cooperation of modal windows and tabs") GROUP2->selection_color((Fl_Color)41) GROUP2->hide() BUT1 = new Fl_Button(20, 85, 100, 30, "button1") BUT1->box(FL_GLEAM_ROUND_DOWN_BOX) BUT1->callback((Fl_Callback*)cb_BUT1) INPUT4 = new Fl_Input(130, 130, 175, 30, "input in box2") BUT2 = new Fl_Button(25, 170, 280, 30, "This is stuff inside the Fl_Group \"tab2\"") BUT2->box(FL_GLEAM_ROUND_DOWN_BOX) BUT2->callback((Fl_Callback*)cb_BUT2) BUT3 = new Fl_Button(25, 200, 280, 30, "Test event blocking by modal window") BUT3->box(FL_GLEAM_ROUND_DOWN_BOX) BUT3->callback((Fl_Callback*)cb_BUT3) GROUP2->end() GROUP3 = new Fl_Group(10, 60, 315, 235, "tab&3") GROUP3->tooltip("tab3 checks for correct keyboard navigation") GROUP3->selection_color((Fl_Color)41) GROUP3->hide() BUT4 = new Fl_Button(20, 80, 60, 80, "button4") BUT4->box(FL_GLEAM_ROUND_DOWN_BOX) BUT4->callback((Fl_Callback*)button_cb) BUT5 = new Fl_Button(80, 80, 60, 80, "button5") BUT5->box(FL_GLEAM_ROUND_DOWN_BOX) BUT5->callback((Fl_Callback*)button_cb) BUT6 = new Fl_Button(140, 80, 60, 80, "button6") BUT6->box(FL_GLEAM_ROUND_DOWN_BOX) BUT6->callback((Fl_Callback*)button_cb) GROUP3->end() GROUP4 = new Fl_Group(10, 60, 315, 190, "&tab4") GROUP4->tooltip("this tab shows the issue of indicating a selected tab ") GROUP4->selection_color((Fl_Color)41) GROUP4->labeltype(FL_ENGRAVED_LABEL) GROUP4->labelfont(2) GROUP4->hide() BUT7 = new Fl_Button(20, 80, 60, 120, "button7") BUT7->box(FL_GLEAM_ROUND_DOWN_BOX) BUT7->callback((Fl_Callback*)button_cb) BUT8 = new Fl_Button(80, 80, 60, 120, "button8") BUT8->box(FL_GLEAM_ROUND_DOWN_BOX) BUT8->callback((Fl_Callback*)button_cb) BUT9 = new Fl_Button(140, 80, 60, 120, "button9") BUT9->box(FL_GLEAM_ROUND_DOWN_BOX) BUT9->callback((Fl_Callback*)button_cb) GROUP4->end() TABS1->end() Fl_Group::current()->resizable(TABS1) CANCELBTN = new Fl_Button(20, 310, 70, 30, "cancel") CANCELBTN->box(FL_GLEAM_ROUND_DOWN_BOX) CANCELBTN->callback((Fl_Callback*)cb_CANCELBTN) OKBTN = new Fl_Return_Button(250, 310, 70, 30, "OK") OKBTN->box(FL_GLEAM_ROUND_DOWN_BOX) OKBTN->callback((Fl_Callback*)cb_OKBTN) WIN->end() WIN->show(argc, argv) Fl::run()
here is the fluid file # data file for the Fltk User Interface Designer (fluid) version 1.0304 header_name {.h} code_name {.cxx} Function {} {open } { Fl_Window WIN { label {Tab demo} open xywh {605 238 355 355} type Double box GLEAM_ROUND_DOWN_BOX color 47 hide resizable } { Fl_Tabs TABS1 {open tooltip {the various index cards test different aspects of the Fl_Tabs widget} xywh {10 35 315 260} selection_color 4 labelcolor 7 resizable } { Fl_Group GROUP1 { label {Label&1} open tooltip {this tab tests correct keyboard navigation between text input fields} xywh {10 60 315 235} selection_color 41 hide resizable } { Fl_Input INPUT1 { label {input :} tooltip {This is the first input field} xywh {70 80 240 40} } Fl_Input INPUT2 { label {input2:} xywh {70 120 240 30} code0 {INPUT2->tooltip("");} } Fl_Input INPUT3 { label {input3:} xywh {70 150 240 80} } } Fl_Group GROUP2 { label {tab&2} open tooltip {tab2 tests among other things the cooperation of modal windows and tabs} xywh {10 60 315 235} selection_color 41 hide } { Fl_Button BUT1 { label button1 callback {fl_message("pressed button 1.");} xywh {20 85 100 30} box GLEAM_ROUND_DOWN_BOX code0 {\#include <FL/fl_ask.H>} } Fl_Input INPUT4 { label {input in box2} xywh {130 130 175 30} } Fl_Button BUT2 { label {This is stuff inside the Fl_Group "tab2"} callback {fl_message("Test pressed button 2");} xywh {25 170 280 30} box GLEAM_ROUND_DOWN_BOX } Fl_Button BUT3 { label {Test event blocking by modal window} callback {fl_message("pressed button 3");} xywh {25 200 280 30} box GLEAM_ROUND_DOWN_BOX code0 {\#include <FL/fl_ask.H>} } } Fl_Group GROUP3 { label {tab&3} open tooltip {tab3 checks for correct keyboard navigation} xywh {10 60 315 235} selection_color 41 } { Fl_Button BUT4 { label button4 callback button_cb selected xywh {20 80 60 80} box GLEAM_ROUND_DOWN_BOX } Fl_Button BUT5 { label button5 callback button_cb xywh {80 80 60 80} box GLEAM_ROUND_DOWN_BOX } Fl_Button BUT6 { label button6 callback button_cb xywh {140 80 60 80} box GLEAM_ROUND_DOWN_BOX } } Fl_Group GROUP4 { label {&tab4} open tooltip {this tab shows the issue of indicating a selected tab if the tab layouts are very similar} xywh {10 60 315 190} selection_color 41 labeltype ENGRAVED_LABEL labelfont 2 hide } { Fl_Button BUT7 { label button7 callback button_cb xywh {20 80 60 120} box GLEAM_ROUND_DOWN_BOX } Fl_Button BUT8 { label button8 callback button_cb xywh {80 80 60 120} box GLEAM_ROUND_DOWN_BOX } Fl_Button BUT9 { label button9 callback button_cb xywh {140 80 60 120} box GLEAM_ROUND_DOWN_BOX } } } Fl_Button CANCELBTN { label cancel callback {exit(1);} xywh {20 310 70 30} box GLEAM_ROUND_DOWN_BOX code0 {\#include <stdlib.h>} } Fl_Return_Button OKBTN { label OK callback {exit(0);} xywh {250 310 70 30} box GLEAM_ROUND_DOWN_BOX code0 {\#include <stdlib.h>} } } }
Function {button_cb(Fl_Widget* b, void* userdata)} {open return_type void } { code {fl_message("Test ");} {} }
|
|
|
Post by bigbass on Feb 6, 2018 3:40:53 GMT 1
Hey Guys Note this is all c++ core code I made a new GUI for fluid note this is added to the official source code it has to be compiled in from source code but it is easy just follow the readme readme I modified the fluid source code for version 1.3.4 and compiled in the new widget GUI this is c++
download official fltk 1.3.4 then drop function_panel.cxx in the official fluid folder
here is the c++ source file (better to rename the original function_panel-old.cxx)
place function_panel.cxx in the source inside the official fluid folder run make clean then make again
thats all there is to it we can know hack away at the GUI now
reworked the callbacks to the official files this now controls the real fluid GUI fluid-widgetbin-blue.tar.gz (6.68 KB) this way it will be easy to theme later with different colors and fonts Joe
|
|
|
Post by bigbass on Feb 6, 2018 5:51:44 GMT 1
Hey Guys
Now here is the fluid stand alone for the gui but this is just a demo so you can see what can be done in fluid without the connected code backend
doing that manually sizing everything would be a big pain without some type of visualization aid like fluid its still work with callbacks and connecting code but the visual part is a very big help
BTW there is no gui.fl in the source code but this expresses the idea and it was all done by scratch
the fluid file is very compact it will generate the .cxx and .h
Joe
# data file for the Fltk User Interface Designer (fluid) version 1.0304 header_name {.h} code_name {.cxx} Function {} {open } { Fl_Window WIN { label Text_Edit open xywh {437 66 295 535} type Double box GLEAM_UP_BOX labelfont 6 resizable visible } { Fl_Button Function { label Function callback {//o->callback((Fl_Callback*)type_make_cb, (void*)("Function"));} xywh {10 19 85 22} box GLEAM_ROUND_UP_BOX color 3 labelfont 6 } Fl_Button Declare { label Declare callback {//o->callback((Fl_Callback*)type_make_cb, (void*)("decl"));} xywh {10 72 85 22} box GLEAM_ROUND_UP_BOX color 3 labelfont 6 } Fl_Button Code { label Code callback {//o->callback((Fl_Callback*)type_make_cb, (void*)("Code"));} xywh {10 46 85 22} box GLEAM_ROUND_UP_BOX color 3 labelfont 6 } Fl_Button Window { label Window user_data_type {void*} callback {//o->callback((Fl_Callback*)type_make_cb, (void*)("Fl_Window"));} xywh {10 98 85 22} box GLEAM_ROUND_UP_BOX color 220 labelfont 6 labelcolor 7 } Fl_Button Class { label Class callback {//o->callback((Fl_Callback*)type_make_cb, (void*)("Class"));} xywh {100 19 85 22} box GLEAM_ROUND_UP_BOX color 3 labelfont 6 } Fl_Button Dec_Block { label {Dec Block} callback {//o->callback((Fl_Callback*)type_make_cb, (void*)("declblock"));} xywh {100 72 85 22} box GLEAM_ROUND_UP_BOX color 3 labelfont 6 } Fl_Button Code_Block { label {Code Block} callback {//o->callback((Fl_Callback*)type_make_cb, (void*)("CodeBlock"));} xywh {100 46 85 22} box GLEAM_ROUND_UP_BOX color 3 labelfont 6 } Fl_Button Group { label Group user_data_type {void*} callback {//o->callback((Fl_Callback*)type_make_cb, (void*)("Fl_Group"));} xywh {100 98 85 22} box GLEAM_ROUND_UP_BOX color 220 labelfont 6 labelcolor 7 } Fl_Button Comment { label Comment callback {//o->callback((Fl_Callback*)type_make_cb, (void*)("comment"));} xywh {190 19 85 22} box GLEAM_ROUND_UP_BOX color 3 labelfont 6 } Fl_Button Bin_Data { label {Bin Data} callback {//o->callback((Fl_Callback*)type_make_cb, (void*)("data"));} xywh {190 72 85 22} box GLEAM_ROUND_UP_BOX color 3 labelfont 6 } Fl_Button Wid_Class { label {Wid Class} callback {//o->callback((Fl_Callback*)type_make_cb, (void*)("widget_class"));} xywh {190 46 85 22} box GLEAM_ROUND_UP_BOX color 3 labelfont 6 } Fl_Button Pack { label Pack user_data_type {void*} callback {//o->callback((Fl_Callback*)type_make_cb, (void*)("Fl_Pack"));} xywh {190 98 85 22} box GLEAM_ROUND_UP_BOX color 220 labelfont 6 labelcolor 7 } Fl_Button Tabs { label Tabs callback {//o->callback((Fl_Callback*)type_make_cb, (void*)("Fl_Tabs"));} xywh {10 129 85 22} box GLEAM_ROUND_UP_BOX color 220 labelfont 6 labelcolor 7 } Fl_Button Ret_Button { label {Ret Button} callback {//o->callback((Fl_Callback*)type_make_cb, (void*)("Fl_Return_Button"));} xywh {10 182 85 22} box GLEAM_ROUND_UP_BOX color 172 labelfont 6 labelcolor 7 } Fl_Button Tile { label Tile callback {//o->callback((Fl_Callback*)type_make_cb, (void*)("Fl_Tile"));} xywh {10 156 85 22} box GLEAM_ROUND_UP_BOX color 220 labelfont 6 labelcolor 7 } Fl_Button Check_But { label {Check But} user_data_type {void*} callback {//o->callback((Fl_Callback*)type_make_cb, (void*)("Fl_Check_Button"));} xywh {10 208 85 22} box GLEAM_ROUND_UP_BOX color 172 labelfont 6 labelcolor 7 } Fl_Button Scroll { label Scroll callback {//o->callback((Fl_Callback*)type_make_cb, (void*)("Fl_Scroll"));} xywh {100 129 85 22} box GLEAM_ROUND_UP_BOX color 220 labelfont 6 labelcolor 7 } Fl_Button Light_But { label Light_But callback {//o->callback((Fl_Callback*)type_make_cb, (void*)("Fl_Light_Button"));} xywh {100 182 85 22} box GLEAM_ROUND_UP_BOX color 172 labelfont 6 labelcolor 7 } Fl_Button Wizard { label Wizard callback {//o->callback((Fl_Callback*)type_make_cb, (void*)("Fl_Wizard"));} xywh {100 156 85 22} box GLEAM_ROUND_UP_BOX color 220 labelfont 6 labelcolor 7 } Fl_Button Round_But { label {Round But} user_data_type {void*} callback {//o->callback((Fl_Callback*)type_make_cb, (void*)("Fl_Round_Button"));} xywh {100 208 85 22} box GLEAM_ROUND_UP_BOX color 172 labelfont 6 labelcolor 7 } Fl_Button Table { label Table callback {//o->callback((Fl_Callback*)type_make_cb, (void*)("Fl_Table"));} xywh {190 129 85 22} box GLEAM_ROUND_UP_BOX color 220 labelfont 6 labelcolor 7 } Fl_Button Rep_But { label {Rep But} callback {//o->callback((Fl_Callback*)type_make_cb, (void*)("Fl_Repeat_Button"));} selected xywh {190 182 85 22} box GLEAM_ROUND_UP_BOX color 172 labelfont 6 labelcolor 7 } Fl_Button Button { label Button callback {//o->callback((Fl_Callback*)type_make_cb, (void*)("Fl_Button"));} xywh {190 156 85 22} box GLEAM_ROUND_UP_BOX color 172 labelfont 6 labelcolor 7 } Fl_Button Slider { label Slider user_data_type {void*} callback {//o->callback((Fl_Callback*)type_make_cb, (void*)("Fl_Slider"));} xywh {190 208 85 22} box GLEAM_ROUND_UP_BOX color 183 labelfont 6 } Fl_Button Scroll_Bar { label {Scroll Bar} callback {//o->callback((Fl_Callback*)type_make_cb, (void*)("Fl_Scrollbar"));} xywh {10 239 85 22} box GLEAM_ROUND_UP_BOX color 183 labelfont 6 } Fl_Button Roller { label Roller callback {//o->callback((Fl_Callback*)type_make_cb, (void*)("Fl_Roller"));} xywh {10 292 85 22} box GLEAM_ROUND_UP_BOX color 183 labelfont 6 } Fl_Button Adjuster { label Adjuster callback {//o->callback((Fl_Callback*)type_make_cb, (void*)("Fl_Adjuster"));} xywh {10 266 85 22} box GLEAM_ROUND_UP_BOX color 183 labelfont 6 } Fl_Button Input { label Input user_data_type {void*} callback {//o->callback((Fl_Callback*)type_make_cb, (void*)("Fl_Input"));} xywh {10 318 85 22} box GLEAM_ROUND_UP_BOX color 3 labelfont 6 } Fl_Button Value_Slider { label {Val Slider} callback {//o->callback((Fl_Callback*)type_make_cb, (void*)("Fl_Value_Slider"));} xywh {100 239 85 22} box GLEAM_ROUND_UP_BOX color 183 labelfont 6 } Fl_Button Spinner { label Spinner callback {//o->callback((Fl_Callback*)type_make_cb, (void*)("Fl_Spinner"));} xywh {100 292 85 22} box GLEAM_ROUND_UP_BOX color 183 labelfont 6 } Fl_Button Counter { label Counter callback {//o->callback((Fl_Callback*)type_make_cb, (void*)("Fl_Counter"));} xywh {100 266 85 22} box GLEAM_ROUND_UP_BOX color 183 labelfont 6 } Fl_Button Text_Edit { label Text_Edit user_data_type {void*} callback {//o->callback((Fl_Callback*)type_make_cb, (void*)("Fl_Text_Editor"));} xywh {100 318 85 22} box GLEAM_ROUND_UP_BOX color 3 labelfont 6 } Fl_Button Val_Out { label {Val Out} callback {//o->callback((Fl_Callback*)type_make_cb, (void*)("Fl_Value_Output"));} xywh {190 239 85 22} box GLEAM_ROUND_UP_BOX color 183 labelfont 6 } Fl_Button Val_Input { label {Val Input} callback {//o->callback((Fl_Callback*)type_make_cb, (void*)("Fl_Value_Input"));} xywh {190 292 85 22} box GLEAM_ROUND_UP_BOX color 183 labelfont 6 } Fl_Button Dial { label Dial callback {//o->callback((Fl_Callback*)type_make_cb, (void*)("Fl_Dial"));} xywh {190 266 85 22} box GLEAM_ROUND_UP_BOX color 183 labelfont 6 } Fl_Button File_Input { label {File Input} user_data_type {void*} callback {//o->callback((Fl_Callback*)type_make_cb, (void*)("Fl_File_Input"));} xywh {190 318 85 22} box GLEAM_ROUND_UP_BOX color 3 labelfont 6 } Fl_Button Output { label Output callback {//o->callback((Fl_Callback*)type_make_cb, (void*)("Fl_Output"));} xywh {10 349 85 22} box GLEAM_ROUND_UP_BOX color 3 labelfont 6 } Fl_Button Menu_Item { label {Menu Item} callback {//o->callback((Fl_Callback*)type_make_cb, (void*)("menuitem"));} xywh {10 402 85 22} box GLEAM_ROUND_UP_BOX color 220 labelfont 6 labelcolor 7 } Fl_Button Menu_But { label {Menu But} callback {//o->callback((Fl_Callback*)type_make_cb, (void*)("Fl_Menu_Button"));} xywh {10 376 85 22} box GLEAM_ROUND_UP_BOX color 220 labelfont 6 labelcolor 7 } Fl_Button Check_Browser { label {Check Brow} user_data_type {void*} callback {//o->callback((Fl_Callback*)type_make_cb, (void*)("Fl_Check_Browser"));} xywh {10 428 85 22} box GLEAM_ROUND_UP_BOX color 172 labelfont 6 labelcolor 7 } Fl_Button Text_Disp { label {Text Disp} callback {//o->callback((Fl_Callback*)type_make_cb, (void*)("Fl_Text_Display"));} xywh {100 349 85 22} box GLEAM_ROUND_UP_BOX color 3 labelfont 6 } Fl_Button Sub_Menu { label {Sub Menu} callback {//o->callback((Fl_Callback*)type_make_cb, (void*)("submenu"));} xywh {100 402 85 22} box GLEAM_ROUND_UP_BOX color 220 labelfont 6 labelcolor 7 } Fl_Button Choice { label Choice callback {//o->callback((Fl_Callback*)type_make_cb, (void*)("Fl_Choice"));} xywh {100 376 85 22} box GLEAM_ROUND_UP_BOX color 220 labelfont 6 labelcolor 7 } Fl_Button File_Browser { label {File Brow} user_data_type {void*} callback {//o->callback((Fl_Callback*)type_make_cb, (void*)("Fl_File_Browser"));} xywh {100 428 85 22} box GLEAM_ROUND_UP_BOX color 172 labelfont 6 labelcolor 7 } Fl_Button Menu_Bar { label {Menu Bar} callback {//o->callback((Fl_Callback*)type_make_cb, (void*)("Fl_Menu_Bar"));} xywh {190 349 85 22} box GLEAM_ROUND_UP_BOX color 220 labelfont 6 labelcolor 7 } Fl_Button Browser { label Browser callback {//o->callback((Fl_Callback*)type_make_cb, (void*)("Fl_Browser"));} xywh {190 402 85 22} box GLEAM_ROUND_UP_BOX color 172 labelfont 6 labelcolor 7 } Fl_Button Input_Choice { label {Inp Choice} callback {//o->callback((Fl_Callback*)type_make_cb, (void*)("Fl_Input_Choice"));} xywh {190 376 85 22} box GLEAM_ROUND_UP_BOX color 220 labelfont 6 labelcolor 7 } Fl_Button Tree { label Tree user_data_type {void*} callback {//o->callback((Fl_Callback*)type_make_cb, (void*)("Fl_Tree"));} xywh {190 428 85 22} box GLEAM_ROUND_UP_BOX color 172 labelfont 6 labelcolor 7 } Fl_Button Box { label Box user_data_type {void*} callback {//o->callback((Fl_Callback*)type_make_cb, (void*)("Fl_Box"));} xywh {10 458 85 22} box GLEAM_ROUND_UP_BOX color 172 labelfont 6 labelcolor 7 } Fl_Button Help_Browser { label {Help Brow} user_data_type {void*} callback {//o->callback((Fl_Callback*)type_make_cb, (void*)("Fl_Help_View"));} xywh {100 458 85 22} box GLEAM_ROUND_UP_BOX color 172 labelfont 6 labelcolor 7 } Fl_Button Progress { label Progress user_data_type {void*} callback {//o->callback((Fl_Callback*)type_make_cb, (void*)("Fl_Progress"));} xywh {190 458 85 22} box GLEAM_ROUND_UP_BOX color 172 labelfont 6 labelcolor 7 } Fl_Button Clock { label Clock user_data_type {void*} callback {//o->callback((Fl_Callback*)type_make_cb, (void*)("Fl_Clock"));} xywh {10 488 85 22} box GLEAM_ROUND_UP_BOX color 172 labelfont 6 labelcolor 7 } } }
Function {make_window()} {open } {}
|
|
|
Post by bigbass on Feb 6, 2018 7:14:21 GMT 1
Hey All
And finally! the BaCon version There are many testing steps to get here but it is important to have some code to document the complete start to finish process
Joe
PRAGMA INCLUDE <FL/Fl.H> PRAGMA INCLUDE <FL/Fl_Double_Window.H> PRAGMA INCLUDE <FL/Fl_Box.H> PRAGMA INCLUDE <FL/Fl_Button.H>
PRAGMA LDFLAGS -lfltk -lfltk_images -L. -lbacon++ PRAGMA COMPILER g++ PRAGMA OPTIONS -Wno-write-strings -Wno-pointer-arith OPTION PARSE FALSE
DECLARE Function, Declare, Code, Window, Class, Dec_Block,Code_Block TYPE Fl_Button* DECLARE Group, Comment, Bin_Data, Wid_Class, Pack, Tabs, Ret_Button, Tile TYPE Fl_Button* DECLARE Check_But, Scroll, Light_But, Wizard, Round_But, Table, Rep_But TYPE Fl_Button* DECLARE Button, Slider, Scroll_Bar, Roller, Adjuster, Input, Value_Slider TYPE Fl_Button* DECLARE Spinner, Counter, Text_Edit, Val_Out, Val_Input, Dial, File_Input TYPE Fl_Button* DECLARE Output, Menu_Item, Menu_But, Check_Browser, Text_Disp, Sub_Menu TYPE Fl_Button* DECLARE Choice, File_Browser, Menu_Bar, Browser, Input_Choice, Tree, Box TYPE Fl_Button* DECLARE Help_Browser, Progress, Clock TYPE Fl_Button*
DECLARE WIN TYPE Fl_Double_Window*
SUB cb_Function(Fl_Widget* o, void*) PRINT "Function" END SUB
SUB cb_Declare(Fl_Widget* o, void*) PRINT "decl" END SUB
SUB cb_Code(Fl_Widget* o, void*) PRINT "Code" END SUB
SUB cb_Window(Fl_Widget* o, void*) PRINT "Fl_Window" END SUB
SUB cb_Class(Fl_Widget* o, void*) PRINT "Class" END SUB
SUB cb_Dec_Block(Fl_Widget* o, void*) PRINT "declblock" END SUB
SUB cb_Code_Block(Fl_Widget* o, void*) PRINT "CodeBlock" END SUB
SUB cb_Group(Fl_Widget* o, void*) PRINT "Fl_Group" END SUB
SUB cb_Comment(Fl_Widget* o, void*) PRINT "comment" END SUB
SUB cb_Bin_Data(Fl_Widget* o, void*) PRINT "data" END SUB
SUB cb_Wid_Class(Fl_Widget* o, void*) PRINT "widget_class" END SUB
SUB cb_Pack(Fl_Widget* o, void*) PRINT "Fl_Pack" END SUB
SUB cb_Tabs(Fl_Widget* o, void*) PRINT "Fl_Tabs" END SUB
SUB cb_Ret_Button(Fl_Widget* o, void*) PRINT "Fl_Return_Button" END SUB
SUB cb_Tile(Fl_Widget* o, void*) PRINT "Fl_Tile" END SUB
SUB cb_Check_But(Fl_Widget* o, void*) PRINT "Fl_Check_Button" END SUB
SUB cb_Scroll(Fl_Widget* o, void*) PRINT "Fl_Scroll" END SUB
SUB cb_Light_But(Fl_Widget* o, void*) PRINT "Fl_Light_Button" END SUB
SUB cb_Wizard(Fl_Widget* o, void*) PRINT "Fl_Wizard" END SUB
SUB cb_Round_But(Fl_Widget* o, void*) PRINT "Fl_Round_Button" END SUB
SUB cb_Table(Fl_Widget* o, void*) PRINT "Fl_Table" END SUB
SUB cb_Rep_But(Fl_Widget* o, void*) PRINT "Fl_Repeat_Button" END SUB
SUB cb_Button(Fl_Widget* o, void*) PRINT "Fl_Button" END SUB
SUB cb_Slider(Fl_Widget* o, void*) PRINT "Fl_Slider" END SUB
SUB cb_Scroll_Bar(Fl_Widget* o, void*) PRINT "Fl_Scrollbar" END SUB
SUB cb_Roller(Fl_Widget* o, void*) PRINT "Fl_Roller" END SUB
SUB cb_Adjuster(Fl_Widget* o, void*) PRINT "Fl_Adjuster" END SUB
SUB cb_Input(Fl_Widget* o, void*) PRINT "Fl_Input" END SUB
SUB cb_Value_Slider(Fl_Widget* o, void*) PRINT "Fl_Value_Slider" END SUB
SUB cb_Spinner(Fl_Widget* o, void*) PRINT "Fl_Spinner" END SUB
SUB cb_Counter(Fl_Widget* o, void*) PRINT "Fl_Counter" END SUB
SUB cb_Text_Edit(Fl_Widget* o, void*) PRINT "Fl_Text_Editor" END SUB
SUB cb_Val_Out(Fl_Widget* o, void*) PRINT "Fl_Value_Output" END SUB
SUB cb_Val_Input(Fl_Widget* o, void*) PRINT "Fl_Value_Input" END SUB
SUB cb_Dial(Fl_Widget* o, void*) PRINT "Fl_Dial" END SUB
SUB cb_File_Input(Fl_Widget* o, void*) PRINT "Fl_File_Input" END SUB
SUB cb_Output(Fl_Widget* o, void*) PRINT "Fl_Output" END SUB
SUB cb_Menu_Item(Fl_Widget* o, void*) PRINT "menuitem" END SUB
SUB cb_Menu_But(Fl_Widget* o, void*) PRINT "Fl_Menu_Button" END SUB
SUB cb_Check_Browser(Fl_Widget* o, void*) PRINT "Fl_Check_Browser" END SUB
SUB cb_Text_Disp(Fl_Widget* o, void*) PRINT "Fl_Text_Display" END SUB
SUB cb_Sub_Menu(Fl_Widget* o, void*) PRINT "submenu" END SUB
SUB cb_Choice(Fl_Widget* o, void*) PRINT "Fl_Choice" END SUB
SUB cb_File_Browser(Fl_Widget* o, void*) PRINT "Fl_File_Browser" END SUB
SUB cb_Menu_Bar(Fl_Widget* o, void*) PRINT "Fl_Menu_Bar" END SUB
SUB cb_Browser(Fl_Widget* o, void*) PRINT "Fl_Browser" END SUB
SUB cb_Input_Choice(Fl_Widget* o, void*) PRINT "Fl_Input_Choice" END SUB
SUB cb_Tree(Fl_Widget* o, void*) PRINT "Fl_Tree" END SUB
SUB cb_Box(Fl_Widget* o, void*) PRINT "Fl_Box" END SUB
SUB cb_Help_Browser(Fl_Widget* o, void*) PRINT "Fl_Help_View" END SUB
SUB cb_Progress(Fl_Widget* o, void*) PRINT "Fl_Progress" END SUB
SUB cb_Clock(Fl_Widget* o, void*) PRINT "Fl_Clock" END SUB
WIN = new Fl_Double_Window(295, 535, "Fluid demo") WIN->box(FL_GLEAM_UP_BOX) WIN->labelfont(6) WIN->labelcolor(FL_BACKGROUND2_COLOR) Function = new Fl_Button(10, 19, 85, 22, "Function") Function->tooltip("Function") Function->box(FL_GLEAM_ROUND_UP_BOX) Function->color((Fl_Color)220) Function->labelfont(6) Function->labelcolor(FL_BACKGROUND2_COLOR) Function->callback((Fl_Callback*)cb_Function) Declare = new Fl_Button(10, 72, 85, 22, "Declare") Declare->box(FL_GLEAM_ROUND_UP_BOX) Declare->color((Fl_Color)220) Declare->labelfont(6) Declare->labelcolor(FL_BACKGROUND2_COLOR) Declare->callback((Fl_Callback*)cb_Declare) Code = new Fl_Button(10, 46, 85, 22, "Code") Code->box(FL_GLEAM_ROUND_UP_BOX) Code->color((Fl_Color)220) Code->labelfont(6) Code->labelcolor(FL_BACKGROUND2_COLOR) Code->callback((Fl_Callback*)cb_Code) Window = new Fl_Button(10, 98, 85, 22, "Window") Window->box(FL_GLEAM_ROUND_UP_BOX) Window->color((Fl_Color)220) Window->labelfont(6) Window->labelcolor(FL_BACKGROUND2_COLOR) Window->callback((Fl_Callback*)cb_Window) Class = new Fl_Button(100, 19, 85, 22, "Class") Class->box(FL_GLEAM_ROUND_UP_BOX) Class->color((Fl_Color)220) Class->labelfont(6) Class->labelcolor(FL_BACKGROUND2_COLOR) Class->callback(cb_Class) Dec_Block = new Fl_Button(100, 72, 85, 22, "Dec Block") Dec_Block->box(FL_GLEAM_ROUND_UP_BOX) Dec_Block->color((Fl_Color)220) Dec_Block->labelfont(6) Dec_Block->labelcolor(FL_BACKGROUND2_COLOR) Dec_Block->callback(cb_Dec_Block) Code_Block = new Fl_Button(100, 46, 85, 22, "Code Block") Code_Block->box(FL_GLEAM_ROUND_UP_BOX) Code_Block->color((Fl_Color)220) Code_Block->labelfont(6) Code_Block->labelcolor(FL_BACKGROUND2_COLOR) Code_Block->callback(cb_Code_Block) Group = new Fl_Button(100, 98, 85, 22, "Group") Group->box(FL_GLEAM_ROUND_UP_BOX) Group->color((Fl_Color)220) Group->labelfont(6) Group->labelcolor(FL_BACKGROUND2_COLOR) Group->callback(cb_Group) Comment = new Fl_Button(190, 19, 85, 22, "Comment") Comment->box(FL_GLEAM_ROUND_UP_BOX) Comment->color((Fl_Color)220) Comment->labelfont(6) Comment->labelcolor(FL_BACKGROUND2_COLOR) Comment->callback(cb_Comment) Bin_Data = new Fl_Button(190, 72, 85, 22, "Bin Data") Bin_Data->box(FL_GLEAM_ROUND_UP_BOX) Bin_Data->color((Fl_Color)220) Bin_Data->labelfont(6) Bin_Data->labelcolor(FL_BACKGROUND2_COLOR) Bin_Data->callback(cb_Bin_Data) Wid_Class = new Fl_Button(190, 46, 85, 22, "Wid Class") Wid_Class->box(FL_GLEAM_ROUND_UP_BOX) Wid_Class->color((Fl_Color)220) Wid_Class->labelfont(6) Wid_Class->labelcolor(FL_BACKGROUND2_COLOR) Wid_Class->callback(cb_Wid_Class) Pack = new Fl_Button(190, 98, 85, 22, "Pack") Pack->box(FL_GLEAM_ROUND_UP_BOX) Pack->color((Fl_Color)220) Pack->labelfont(6) Pack->labelcolor(FL_BACKGROUND2_COLOR) Pack->callback(cb_Pack) Tabs = new Fl_Button(10, 129, 85, 22, "Tabs") Tabs->box(FL_GLEAM_ROUND_UP_BOX) Tabs->color((Fl_Color)220) Tabs->labelfont(6) Tabs->labelcolor(FL_BACKGROUND2_COLOR) Tabs->callback(cb_Tabs) Ret_Button = new Fl_Button(10, 182, 85, 22, "Ret Button") Ret_Button->box(FL_GLEAM_ROUND_UP_BOX) Ret_Button->color((Fl_Color)220) Ret_Button->labelfont(6) Ret_Button->labelcolor(FL_BACKGROUND2_COLOR) Ret_Button->callback(cb_Ret_Button) Tile = new Fl_Button(10, 156, 85, 22, "Tile") Tile->box(FL_GLEAM_ROUND_UP_BOX) Tile->color((Fl_Color)220) Tile->labelfont(6) Tile->labelcolor(FL_BACKGROUND2_COLOR) Tile->callback(cb_Tile) Check_But = new Fl_Button(10, 208, 85, 22, "Check But") Check_But->box(FL_GLEAM_ROUND_UP_BOX) Check_But->color((Fl_Color)220) Check_But->labelfont(6) Check_But->labelcolor(FL_BACKGROUND2_COLOR) Check_But->callback(cb_Check_But) Scroll = new Fl_Button(100, 129, 85, 22, "Scroll") Scroll->box(FL_GLEAM_ROUND_UP_BOX) Scroll->color((Fl_Color)220) Scroll->labelfont(6) Scroll->labelcolor(FL_BACKGROUND2_COLOR) Scroll->callback(cb_Scroll) Light_But = new Fl_Button(100, 182, 85, 22, "Light_But") Light_But->box(FL_GLEAM_ROUND_UP_BOX) Light_But->color((Fl_Color)220) Light_But->labelfont(6) Light_But->labelcolor(FL_BACKGROUND2_COLOR) Light_But->callback(cb_Light_But) Wizard = new Fl_Button(100, 156, 85, 22, "Wizard") Wizard->box(FL_GLEAM_ROUND_UP_BOX) Wizard->color((Fl_Color)220) Wizard->labelfont(6) Wizard->labelcolor(FL_BACKGROUND2_COLOR) Wizard->callback(cb_Wizard) Round_But = new Fl_Button(100, 208, 85, 22, "Round But") Round_But->box(FL_GLEAM_ROUND_UP_BOX) Round_But->color((Fl_Color)220) Round_But->labelfont(6) Round_But->labelcolor(FL_BACKGROUND2_COLOR) Round_But->callback(cb_Round_But) Table = new Fl_Button(190, 129, 85, 22, "Table") Table->box(FL_GLEAM_ROUND_UP_BOX) Table->color((Fl_Color)220) Table->labelfont(6) Table->labelcolor(FL_BACKGROUND2_COLOR) Table->callback(cb_Table) Rep_But = new Fl_Button(190, 182, 85, 22, "Rep But") Rep_But->box(FL_GLEAM_ROUND_UP_BOX) Rep_But->color((Fl_Color)220) Rep_But->labelfont(6) Rep_But->labelcolor(FL_BACKGROUND2_COLOR) Rep_But->callback(cb_Rep_But) Button = new Fl_Button(190, 156, 85, 22, "Button") Button->box(FL_GLEAM_ROUND_UP_BOX) Button->color((Fl_Color)220) Button->labelfont(6) Button->labelcolor(FL_BACKGROUND2_COLOR) Button->callback(cb_Button) Slider = new Fl_Button(190, 208, 85, 22, "Slider") Slider->box(FL_GLEAM_ROUND_UP_BOX) Slider->color((Fl_Color)220) Slider->labelfont(6) Slider->labelcolor(FL_BACKGROUND2_COLOR) Slider->callback(cb_Slider) Scroll_Bar = new Fl_Button(10, 239, 85, 22, "Scroll Bar") Scroll_Bar->box(FL_GLEAM_ROUND_UP_BOX) Scroll_Bar->color((Fl_Color)220) Scroll_Bar->labelfont(6) Scroll_Bar->labelcolor(FL_BACKGROUND2_COLOR) Scroll_Bar->callback(cb_Scroll_Bar) Roller = new Fl_Button(10, 292, 85, 22, "Roller") Roller->box(FL_GLEAM_ROUND_UP_BOX) Roller->color((Fl_Color)220) Roller->labelfont(6) Roller->labelcolor(FL_BACKGROUND2_COLOR) Roller->callback(cb_Roller) Adjuster = new Fl_Button(10, 266, 85, 22, "Adjuster") Adjuster->box(FL_GLEAM_ROUND_UP_BOX) Adjuster->color((Fl_Color)220) Adjuster->labelfont(6) Adjuster->labelcolor(FL_BACKGROUND2_COLOR) Adjuster->callback(cb_Adjuster) Input = new Fl_Button(10, 318, 85, 22, "Input") Input->box(FL_GLEAM_ROUND_UP_BOX) Input->color((Fl_Color)220) Input->labelfont(6) Input->labelcolor(FL_BACKGROUND2_COLOR) Input->callback(cb_Input) Value_Slider = new Fl_Button(100, 239, 85, 22, "Val Slider") Value_Slider->box(FL_GLEAM_ROUND_UP_BOX) Value_Slider->color((Fl_Color)220) Value_Slider->labelfont(6) Value_Slider->labelcolor(FL_BACKGROUND2_COLOR) Value_Slider->callback(cb_Value_Slider) Spinner = new Fl_Button(100, 292, 85, 22, "Spinner") Spinner->box(FL_GLEAM_ROUND_UP_BOX) Spinner->color((Fl_Color)220) Spinner->labelfont(6) Spinner->labelcolor(FL_BACKGROUND2_COLOR) Spinner->callback(cb_Spinner) Counter = new Fl_Button(100, 266, 85, 22, "Counter") Counter->box(FL_GLEAM_ROUND_UP_BOX) Counter->color((Fl_Color)220) Counter->labelfont(6) Counter->labelcolor(FL_BACKGROUND2_COLOR) Counter->callback(cb_Counter) Text_Edit = new Fl_Button(100, 318, 85, 22, "Text_Edit") Text_Edit->box(FL_GLEAM_ROUND_UP_BOX) Text_Edit->color((Fl_Color)220) Text_Edit->labelfont(6) Text_Edit->labelcolor(FL_BACKGROUND2_COLOR) Text_Edit->callback(cb_Text_Edit) Val_Out = new Fl_Button(190, 239, 85, 22, "Val Out") Val_Out->box(FL_GLEAM_ROUND_UP_BOX) Val_Out->color((Fl_Color)220) Val_Out->labelfont(6) Val_Out->labelcolor(FL_BACKGROUND2_COLOR) Val_Out->callback(cb_Val_Out) Val_Input = new Fl_Button(190, 292, 85, 22, "Val Input") Val_Input->box(FL_GLEAM_ROUND_UP_BOX) Val_Input->color((Fl_Color)220) Val_Input->labelfont(6) Val_Input->labelcolor(FL_BACKGROUND2_COLOR) Val_Input->callback(cb_Val_Input) Dial = new Fl_Button(190, 266, 85, 22, "Dial") Dial->box(FL_GLEAM_ROUND_UP_BOX) Dial->color((Fl_Color)220) Dial->labelfont(6) Dial->labelcolor(FL_BACKGROUND2_COLOR) Dial->callback(cb_Dial) File_Input = new Fl_Button(190, 318, 85, 22, "File Input") File_Input->box(FL_GLEAM_ROUND_UP_BOX) File_Input->color((Fl_Color)220) File_Input->labelfont(6) File_Input->labelcolor(FL_BACKGROUND2_COLOR) File_Input->callback(cb_File_Input) Output = new Fl_Button(10, 349, 85, 22, "Output") Output->box(FL_GLEAM_ROUND_UP_BOX) Output->color((Fl_Color)220) Output->labelfont(6) Output->labelcolor(FL_BACKGROUND2_COLOR) Output->callback(cb_Output) Menu_Item = new Fl_Button(10, 402, 85, 22, "Menu Item") Menu_Item->box(FL_GLEAM_ROUND_UP_BOX) Menu_Item->color((Fl_Color)220) Menu_Item->labelfont(6) Menu_Item->labelcolor(FL_BACKGROUND2_COLOR) Menu_Item->callback(cb_Menu_Item) Menu_But = new Fl_Button(10, 376, 85, 22, "Menu But") Menu_But->box(FL_GLEAM_ROUND_UP_BOX) Menu_But->color((Fl_Color)220) Menu_But->labelfont(6) Menu_But->labelcolor(FL_BACKGROUND2_COLOR) Menu_But->callback(cb_Menu_But) Check_Browser = new Fl_Button(10, 428, 85, 22, "Check Brow") Check_Browser->box(FL_GLEAM_ROUND_UP_BOX) Check_Browser->color((Fl_Color)220) Check_Browser->labelfont(6) Check_Browser->labelcolor(FL_BACKGROUND2_COLOR) Check_Browser->callback(cb_Check_Browser) Text_Disp = new Fl_Button(100, 349, 85, 22, "Text Disp") Text_Disp->box(FL_GLEAM_ROUND_UP_BOX) Text_Disp->color((Fl_Color)220) Text_Disp->labelfont(6) Text_Disp->labelcolor(FL_BACKGROUND2_COLOR) Text_Disp->callback(cb_Text_Disp) Sub_Menu = new Fl_Button(100, 402, 85, 22, "Sub Menu") Sub_Menu->box(FL_GLEAM_ROUND_UP_BOX) Sub_Menu->color((Fl_Color)220) Sub_Menu->labelfont(6) Sub_Menu->labelcolor(FL_BACKGROUND2_COLOR) Sub_Menu->callback(cb_Sub_Menu) Choice = new Fl_Button(100, 376, 85, 22, "Choice") Choice->box(FL_GLEAM_ROUND_UP_BOX) Choice->color((Fl_Color)220) Choice->labelfont(6) Choice->labelcolor(FL_BACKGROUND2_COLOR) Choice->callback(cb_Choice) File_Browser = new Fl_Button(100, 428, 85, 22, "File Brow") File_Browser->box(FL_GLEAM_ROUND_UP_BOX) File_Browser->color((Fl_Color)220) File_Browser->labelfont(6) File_Browser->labelcolor(FL_BACKGROUND2_COLOR) File_Browser->callback(cb_File_Browser) Menu_Bar = new Fl_Button(190, 349, 85, 22, "Menu Bar") Menu_Bar->box(FL_GLEAM_ROUND_UP_BOX) Menu_Bar->color((Fl_Color)220) Menu_Bar->labelfont(6) Menu_Bar->labelcolor(FL_BACKGROUND2_COLOR) Menu_Bar->callback(cb_Menu_Bar) Browser = new Fl_Button(190, 402, 85, 22, "Browser") Browser->box(FL_GLEAM_ROUND_UP_BOX) Browser->color((Fl_Color)220) Browser->labelfont(6) Browser->labelcolor(FL_BACKGROUND2_COLOR) Browser->callback(cb_Browser) Input_Choice = new Fl_Button(190, 376, 85, 22, "Inp Choice") Input_Choice->box(FL_GLEAM_ROUND_UP_BOX) Input_Choice->color((Fl_Color)220) Input_Choice->labelfont(6) Input_Choice->labelcolor(FL_BACKGROUND2_COLOR) Input_Choice->callback(cb_Input_Choice) Tree = new Fl_Button(190, 428, 85, 22, "Tree") Tree->box(FL_GLEAM_ROUND_UP_BOX) Tree->color((Fl_Color)220) Tree->labelfont(6) Tree->labelcolor(FL_BACKGROUND2_COLOR) Tree->callback(cb_Tree) Box = new Fl_Button(10, 458, 85, 22, "Box") Box->box(FL_GLEAM_ROUND_UP_BOX) Box->color((Fl_Color)220) Box->labelfont(6) Box->labelcolor(FL_BACKGROUND2_COLOR) Box->callback(cb_Box) Help_Browser = new Fl_Button(100, 458, 85, 22, "Help Brow") Help_Browser->box(FL_GLEAM_ROUND_UP_BOX) Help_Browser->color((Fl_Color)220) Help_Browser->labelfont(6) Help_Browser->labelcolor(FL_BACKGROUND2_COLOR) Help_Browser->callback(cb_Help_Browser) Progress = new Fl_Button(190, 458, 85, 22, "Progress") Progress->box(FL_GLEAM_ROUND_UP_BOX) Progress->color((Fl_Color)220) Progress->labelfont(6) Progress->labelcolor(FL_BACKGROUND2_COLOR) Progress->callback(cb_Progress) Clock = new Fl_Button(10, 488, 85, 22, "Clock") Clock->box(FL_GLEAM_ROUND_UP_BOX) Clock->color((Fl_Color)220) Clock->labelfont(6) Clock->labelcolor(FL_BACKGROUND2_COLOR) Clock->callback(cb_Clock) WIN->end() 'WIN->resizable(WIN) WIN->show() Fl::run()
|
|
|
Post by bigbass on Oct 31, 2018 6:26:32 GMT 1
Just a visual of the fluid widgets Thinking about making a new GUI for Fluid I dont like the small icons so went jumbo want to make it so when you click a widget it connects to the FLUID GUI already did it once just takes a lot of time doing so many callbacks
|
|
|
Post by bigbass on Feb 28, 2019 7:42:46 GMT 1
Hey Guys The fltk erco web page is excellent but there are several widgets that have no official demo I have not found any demo code for the the check browser so I decided to write a demo in just C++ using fluid and then manually adding what's needed to have correct callbacks and getting the checked lines to the terminal I had baconized a checkbrowser in another thread but want to give a fluid demo also this time should submit this to fltk someday checkbrowser-demo.tar.gz (1.25 KB) there is another reason for doing this and that is to be transparent to how to read the docs and piece together an example keeping everything short and to the point if you compile in geany g++ -Wall -c "%f" -lfltk -lXext -lX11 -lm build with g++ -Wall -o "%e" "%f" -lfltk -lXext -lX11 -lm Joe
|
|
|
Post by bigbass on Feb 28, 2019 18:41:44 GMT 1
Hey Guys We all wish for better documents with simple demos to focus on each widget there are many GUI toolkits but they all skip to demo each widget as standalone code with callbacks and needed support code to get the practical going not just a lot of theory we have to piece together and hope it works so here is a fltk multi browser in c++ and a fluid fileI made to demo it in a simple way having a fluid file you can resize and edit the widget to your needs fluid does have a steep learning curve but saves a lot of time to go from Idea to code I hope to fill in the things I wish were there when I got started I already ported the browser to bacon in another thread called trying to get events in fltk multibrowser-demo.tar.gz (1.22 KB) Joe
|
|
|
Post by bigbass on Mar 7, 2019 19:29:44 GMT 1
Hello Guys When I first tried using fluid it looked so cryptic and I wished there were more examples for each widget so I decided to go back and make the fluid demos (from c++) that should have been made and included in the source code the advantage of doing it in fluid is we can add to copy resize very easily like building code with lego blocks helpview-demo.tar.gz (3.14 KB) these have been ported to bacon already but this is the missing step c++ to fluid Joe //geany compile options add the -lfltk_images for this one //g++ -Wall -c "%f" -lfltk -lfltk_images -lXext -lX11 -lm //g++ -Wall -o "%e" "%f" -lfltk -lfltk_images -lXext -lX11 -lm
|
|
|
Post by bigbass on Mar 8, 2019 18:41:09 GMT 1
Hello Guys will focus on working minimum demos with callbacks for fluid/fltk and will port to bacon all new demos too just want to be transparent and not skip any of the steps involved so please be patient while I post some C++ code the end goal is have more GUI options for bacon now that we can further test the bacon compiler later when the code is ported we would have some stable reference code for debugging if needed fluid lacks complete code for several widgets Help_view , Tree , File_Browser , Browser , Check_browserthe widgets it lacks I am making demos to complete the missing fluid demos (that are not included in the official source code) filebrowser-demo.tar.gz (8.27 KB) this demo will send the selected line to the terminal Joe
|
|