[#] TGUI, simpla kaj facila biblioteko por maldiligentuloj
btttrn6(tavern,36) — All
2022-08-31 10:19:32


mi ANTAŬDIRAS - mi estas rubkodskribisto, tial ĉio ĉi tie estass malcerta kvalito.
Mi serĉis ian GUI-bibliotekon por mia C++programa interfaco.
Kaj eltrovis IMGUI[1]. Sed ĝin (IMGUI) uzado trovis sin tre maloportuna. Mi ĝis nun tempo ne komprenis, kiel normale labori kun ĝi.
Sed tio nun ne gravas.
Mi trovis TGUI[2], kiu ankaŭ havas poŝplatforman konstruilon.
En mia okazo, mi uzas SFML por interago kun fenestro k.t.p. Kaj resume kodo estas simpla.
Konektate ĉio facile:
Bindila agordoj (Ligil-bibliotekoj): sfml-window, sfml-graphics, sfml-system, /usr/lib/tgui.so
Ceteraj eble agordi en IDM (angle. IDE). Mi uzas Code::Blocks.

main.cxx:
#include "interfaco.hpp"

int main(int argc, char *argv[]){
	fInic();
	return 0;
}

interfaco.hpp:
#include <SFML/Graphics.hpp>
#include <SFML/Graphics/RenderWindow.hpp>
#include <SFML/Window.hpp>
#include <SFML/Window/Event.hpp>
#include <TGUI/TGUI.hpp>

void fInterfaco();
void fInic();

interfaco.cxx:
#include "interfaco.hpp"

sf::RenderWindow window(sf::VideoMode(800, 600), "Mia superpotenca programo", sf::Style::Close);
tgui::GuiSFML gui{window};

void fInic() {
	fInterfaco();

	while (window.isOpen()) {
	sf::Event event;
	while (window.pollEvent(event)) {
		gui.handleEvent(event);

		if (event.type == sf::Event::Closed)
			window.close();
	}

	window.clear();
	gui.draw();
	window.display();
	}
}

void fInterfaco() {
	gui.loadWidgetsFromFile("gui.txt"); // INTERESE: permesate krei interfacon en ui-konstruilo kaj post ŝargi ĝin. Eĉ kelke.

  auto menuo = tgui::MenuBar::create();
  menuo->addMenu("Dosiero");
  menuo->addMenuItem("Konservi");
  menuo->addMenuItem("-"); //Tiuj signoj (-) estas uzataj por disigado (tiel nomataj "disigiloj")
  menuo->addMenuItem("Eliri");

  menuo->addMenu("Helpo");
  menuo->addMenuItem("Pri");

  gui.add(menuo);
}

Funkcias ĉio per signaloj. Detale legi eble ĉi tie[3].
Kiel aspektas ui-konstruilo[4].

-[1]: https://github.com/ocornut/imgui/
-[2]: https://github.com/texus/TGUI
-[3]: https://tgui.eu/documentation/0.9/annotated.html
-[4]: https://i.imgur.com/7WhhtRF.png