GTK docking interfaces and more

Important information: Google announced that, from September 2026, Android devices will require ALL apps to be signed by Google, effectively leading to an iOS situation. Value your right to a computer that does what you want; do not tolerate this monopolistic practice! Contact me if you don't understand why it is bad. Click to learn more.

 panthera-www.cc

View raw Download
text/x-c • 1.58 kiB
C source, ASCII text
        
            
1
#include "gpanthera.hh"
2
#include <gtkmm.h>
3
#include <glibmm.h>
4
#include <glibmm/ustring.h>
5
#include <iostream>
6
#include <memory>
7
8
int main(int argc, char *argv[]) {
9
auto app = Gtk::Application::create(argc, argv, "org.gpanthera.demo");
10
11
Gtk::Window window;
12
window.set_default_size(600, 400);
13
window.signal_delete_event().connect([&app](GdkEventAny *event) {
14
app->quit();
15
return false;
16
});
17
18
auto layout_manager = std::make_shared<gPanthera::LayoutManager>();
19
auto dock_stack_1 = Gtk::make_managed<gPanthera::DockStack>(layout_manager, "One");
20
auto switcher_1 = Gtk::make_managed<gPanthera::DockStackSwitcher>(dock_stack_1);
21
auto dock_stack_2 = Gtk::make_managed<gPanthera::DockStack>(layout_manager, "Two");
22
auto switcher_2 = Gtk::make_managed<gPanthera::DockStackSwitcher>(dock_stack_2);
23
auto pane_content = Gtk::make_managed<Gtk::Box>(Gtk::ORIENTATION_VERTICAL, 0);
24
pane_content->pack_start(*Gtk::make_managed<Gtk::Label>("Pane 1 content"), Gtk::PACK_EXPAND_WIDGET);
25
auto pane_icon = Gtk::make_managed<Gtk::Image>();
26
pane_icon->set_from_icon_name("go-home-symbolic", Gtk::ICON_SIZE_MENU);
27
auto pane = Gtk::make_managed<gPanthera::DockablePane>(layout_manager, *pane_content, "pane1", "Pane 1", pane_icon);
28
dock_stack_1->add_pane(*pane);
29
30
Gtk::Box vbox(Gtk::ORIENTATION_VERTICAL);
31
vbox.pack_start(*switcher_1, Gtk::PACK_SHRINK);
32
vbox.pack_start(*dock_stack_1);
33
vbox.pack_start(*dock_stack_2);
34
vbox.pack_start(*switcher_2, Gtk::PACK_SHRINK);
35
36
window.add(vbox);
37
window.show_all();
38
39
return app->run(window);
40
}
41