Wprowadzenie do FLTK

Co to jest i jak korzystać z Fast Loading ToolKit?

FLTK czyli Fast Loading Toolkit to mała, poręczna i przenośna (linux/unix, Mac, Solaris, Windows...) biblioteka C++ do tworzenia graficznych interfejsów. Wiele dystrybucji zawieraj pakiet FLTK w swoich repozytoriach, a jeżeli nie ma FLTK to wystarczy pobrać źródła z strony projektu.

Hello World

Standardowy program Witaj świecie wygląda tak:
#include <FL/Fl.H>
#include <FL/Fl_Window.H>
#include <FL/Fl_Box.H>

int main(int argc, char **argv) {
  Fl_Window *window = new Fl_Window(300,180);
  Fl_Box *box = new Fl_Box(20,40,260,100,"Hello, World!");
  box->box(FL_UP_BOX);
  box->labelsize(36);
  box->labelfont(FL_BOLD+FL_ITALIC);
  box->labeltype(FL_SHADOW_LABEL);
  window->end();
  window->show(argc, argv);
  return Fl::run();
}
Kompilujemy go najłatwiej poleceniem:
fltk-config --compile nazwa_pliku.cpp
Omówmy kod. Na początku tworzymy okno: gdzie 300 i 180 to odpowiednio długość i wysokość okna:
Fl_Window *window = new Fl_Window(300,180);
Następnie tworzymy Box z tekstem. 20,40 to odpowiednio odległość w poziomie i pionie od górnego lewego rogu, 260,100 - rozmiar boxa:
Fl_Box *box = new Fl_Box(20,40,260,100,"Hello, World!");
Następnie możemy ustawić dodatkowe opcje widgeta - boxa:
box->box(FL_UP_BOX);
box->labelsize(36);
box->labelfont(FL_BOLD+FL_ITALIC);
box->labeltype(FL_SHADOW_LABEL);
I na końcu "wykonujemy" całość:
window->end();
window->show(argc, argv);
return Fl::run();

Zaprezentowany tutaj box to jeden z przykładów widgetów - różnego rodzaju przycisków i pól, które zaraz "przejrzymy" :) Najpierw trochę teorii.
Tworzenie widgetów: widgety tworzymy za pomocą operatora new. Dla większości z nich argumenty konstruktora wyglądają tak:
Fl_Widget(x, y, długość, wysokość, etykieta)
X, Y - odległość w poziomie i pionie od górnego lewego boku w pikselach.
GET/SET: Każdy widget możemy konfigurowany. W przykładzie witaj świecie użyliśmy operacji SET np.: box->box(FL_UP_BOX); co ustawia odpowiedni typ boxa. Notka: metody SET nie wywołują funkcji redraw() - trzeba zrobić to ręcznie.

Przegląd widgetów

W dokumentacji FLTK znajdziemy pełne informacje na temat wszystkich widgetów. Oto przegląd najpopularniejszych. Wykorzystamy program Witaj Świecie z nieco większym oknem :)
#include <FL/Fl.H>
#include <FL/Fl_Window.H>
#include <FL/Fl_Button.H>
#include <FL/Fl_Check_Button.H>
#include <FL/Fl_Light_Button.H>
#include <FL/Fl_Repeat_Button.H>
#include <FL/Fl_Return_Button.H>
#include <FL/Fl_Round_Button.H>

int main(int argc, char **argv) {
  Fl_Window *window = new Fl_Window(600,680);
  //button zwykły
   Fl_Button *but = new Fl_Button(10,10,140,100,"Hello, World!");
     //button z checkboxem
   Fl_Check_Button *but2 = new Fl_Check_Button(10,115,140,100,"Hello, World!");
    //button light
  Fl_Light_Button *but3 = new Fl_Light_Button(10,220,140,100,"Hello, World!");
    //button repeat - pochodna zwykłego
  Fl_Repeat_Button *but4 = new Fl_Repeat_Button(10,325,140,100,"Hello, World!");
      //button return - pochodna zwykłego
  Fl_Return_Button *but5 = new Fl_Return_Button(10,430,140,100,"Hello, World!");
   //button round
  Fl_Round_Button *but6 = new Fl_Round_Button(10,535,140,100,"Hello, World!");

  
  window->end();
  window->show(argc, argv);
  return Fl::run();
}
Po kolei prezentowane są kolejne typy Buttonów. Kolejna grupa - Wejście/Wyjście tekstu:
#include <FL/Fl.H>
#include <FL/Fl_Window.H>
#include <FL/Fl_Input.H>
#include <FL/Fl_Output.H>
#include <FL/Fl_Multiline_Input.H>
#include <FL/Fl_Multiline_Output.H>
#include <FL/Fl_Text_Display.H>
#include <FL/Fl_Text_Editor.H>
#include <FL/Fl_Help_View.h>


int main(int argc, char **argv) {
  Fl_Window *window = new Fl_Window(700,680);

 // Input - wprowadzanie tekstu
   Fl_Input *inp1 = new Fl_Input(290,10,140,100,"Hello, World!");
   
  // output - wyświetla tekst z value();
  Fl_Output *inp2 = new Fl_Output(290,115,140,100,"Hello, World!");
  
  // Fl_Multiline_Input - wielowierszowe wprowadzanie tekstu
  Fl_Multiline_Input *inp3 = new Fl_Multiline_Input(290,225,140,100,"Hello, World!");
   
  // Fl_Multiline_Input - wielowierszowe wyświetlanie tekstu
  Fl_Multiline_Output *inp4 = new Fl_Multiline_Output(290,330,140,100,"Hello, World!");
 inp4->value("aaaaa*N*sssss*N*ssss");
  
   // Text Display - wyświetla tekst z bajerami
  Fl_Text_Display *inp5 = new Fl_Text_Display(290,440,140,100,"Hello, World!");
   
   // Text Editor - edytuje tekst z bajerami
  Fl_Text_Editor *inp6 = new Fl_Text_Editor(290,550,140,100,"Hello, World!");

// wyświetla tekst, parsuje podstawowe tagi HTML
  Fl_Help_View *inp7 = new Fl_Help_View(490,30,140,100,"Hello, World!");
   inp7->value("<B>Bold</B><BR>Nowa <I>linia</I>");

  window->end();
  window->show(argc, argv);
  return Fl::run();
}
Prezentuje dostępne widgety. Dokładny ich opis znajduje się w dokumentacji FLTK. Na razie tylko je oglądamy :) To by było tyle jeżeli chodzi o najprostsze widgety (są jeszcze np.: "valuators" - widgety głównie stosowane w mikserach muzycznych i podobnych aplikacjach :))
blog comments powered by Disqus

Kategorie

Strony