summaryrefslogtreecommitdiff
path: root/app/src/main.cpp
blob: 119022fe9022c4b0b3fb7bf427172922124f52e9 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
#include "turns/adw/application.hpp"
#include "turns/adw/wrap_init.hpp"
#include "turns/core/init.hpp"
#include "turns/ui/init.hpp"
#include "turns/ui/windows/tracker.hpp"

#include <glibmm/i18n.h>

#include <gtkmm/builder.h>

auto main(int argc, char * argv[]) -> int
{
  setlocale(LC_ALL, "");
  bindtextdomain("turns", LOCALEDIR);
  bind_textdomain_codeset("turns", "UTF-8");
  textdomain("turns");

  auto app = turns::adw::Application::create("ch.arknet.Turns");
  auto builder = Gtk::Builder::create_from_resource("/windows/tracker.ui");
  auto window = Gtk::Builder::get_widget_derived<turns::ui::windows::tracker>(builder, "tracker");

  app->signal_startup().connect([app] {
    turns::core::register_types();
    turns::ui::register_types();

    auto style_manager = adw_style_manager_get_default();
    adw_style_manager_set_color_scheme(style_manager, ADW_COLOR_SCHEME_PREFER_LIGHT);

    app->add_action("quit", sigc::mem_fun(*app, &turns::adw::Application::quit));
    app->set_accel_for_action("app.quit", "<Primary>q");
    app->set_accel_for_action("win.clear", "<Primary>x");
    app->set_accel_for_action("win.next", "<Primary>space");
    app->set_accel_for_action("win.previous", "<Primary>BackSpace");
    app->set_accel_for_action("win.add_participant", "<Primary>a");
  });

  app->signal_shutdown().connect([window] {
    window->close();
    delete window;
  });

  app->signal_activate().connect([app, window] {
    app->add_window(*window);
    window->present();
  });

  return app->run(argc, argv);
}