#include <iostream>
#include <memory>
#include <string>
#include <thread>
#include "FL/Fl.H"
#include "FL/Fl_Double_Window.H"
#include "FL/Fl_Browser.H"
#include "FL/Fl_Check_Button.H"
void run(Fl_Button*, void*);
class UI
{
public:
Fl_Double_Window* window;
Fl_Browser* output;
UI() {
{ window = new Fl_Double_Window(660, 420, "window");
{ Fl_Button* o = new Fl_Button(445, 370, 190, 30, "Start");
o->labelfont(1);
o->labelsize(16);
o->callback((Fl_Callback*)run);
} // Fl_Button* o
{
output = new Fl_Browser(25, 40, 395, 275);
output->box(FL_BORDER_BOX);
output->textfont(4);
} // Fl_Browser* output
{ Fl_Check_Button* o = new Fl_Check_Button(185, 380, 56, 16, "name");
o->down_box(FL_DOWN_BOX);
o->value(1);
} // Fl_Check_Button* o
}
}
void show() {
window->show();
}
};
std::unique_ptr<UI> ui;
void awake(void* v)
{
ui->output->add(static_cast<char*>(v));
}
void output(std::string s)
{
std::cout << const_cast<char*>(("@S14@C92@." + s).c_str()) << std::endl;
Fl::awake(awake, const_cast<char*>(("@S14@C92@." + s).c_str()));
}
void thread()
{
output("a");
std::this_thread::sleep_for(std::chrono::seconds(1));
output("b");
int temp = 1;
for (int i = 1; i < 1000000000; i++)
{
temp += i;
}
output(std::to_string(temp));
}
void run(Fl_Button* o, void* v)
{
std::thread t(thread);
t.detach();
}
int main(int argc, char* argv[])
{
ui = std::make_unique<UI>();
Fl::get_system_colors();
Fl::lock();
ui->window->show();
for (int i = 0; i < 20; i++)
{
output(std::to_string(i));
}
Fl::run();
}