Browse Source

Cleanup of menu inconsistency fix

pipelines/1486128344
eidheim 1 year ago
parent
commit
a8163f0d84
  1. 7
      src/juci.cpp
  2. 76
      src/menu.cpp
  3. 1
      src/menu.hpp

7
src/juci.cpp

@ -121,7 +121,12 @@ void Application::on_startup() {
Gtk::Application::on_startup();
Menu::get().build();
set_menubar(Menu::get().window_menu);
if(Menu::get().juci_menu)
set_app_menu(Menu::get().juci_menu);
if(!Menu::get().window_menu)
std::cerr << "Menu not found." << std::endl;
else
set_menubar(Menu::get().window_menu);
}
Application::Application() : Gtk::Application("no.sout.juci", Gio::APPLICATION_NON_UNIQUE | Gio::APPLICATION_HANDLES_COMMAND_LINE) {

76
src/menu.cpp

@ -4,6 +4,44 @@
#include <iostream>
#include <string>
const Glib::ustring juci_section_xml = R"RAW(<section>
<item>
<attribute name='label' translatable='yes'>_About</attribute>
<attribute name='action'>app.about</attribute>
</item>
</section>
<section>
<item>
<attribute name='label' translatable='yes'>_Preferences</attribute>
<attribute name='action'>app.preferences</attribute>
</item>
</section>
<section>
<item>
<attribute name='label' translatable='yes'>_Snippets</attribute>
<attribute name='action'>app.snippets</attribute>
</item>
<item>
<attribute name='label' translatable='yes'>_Commands</attribute>
<attribute name='action'>app.commands</attribute>
</item>
</section>
<section>
<item>
<attribute name='label' translatable='yes'>_Quit</attribute>
<attribute name='action'>app.quit</attribute>
</item>
</section>
)RAW";
#ifdef __APPLE__
const Glib::ustring juci_menu_xml = "<menu id='juci-menu'>" + juci_section_xml + "</menu>";
const Glib::ustring juci_submenu_xml = "";
#else
const Glib::ustring juci_menu_xml = "";
const Glib::ustring juci_submenu_xml = "<submenu><attribute name='label' translatable='no'>juCi++</attribute>" + juci_section_xml + "</submenu>";
#endif
const Glib::ustring menu_xml = R"RAW(<interface>
<menu id='right-click-line-menu'>
<section>
@ -88,38 +126,10 @@ const Glib::ustring menu_xml = R"RAW(<interface>
</section>
</menu>
)RAW" + juci_menu_xml + R"RAW(
<menu id='window-menu'>
<submenu id='juci-menu'>
<attribute name='label' translatable='yes'>_juci++</attribute>
<section>
<item>
<attribute name='label' translatable='yes'>_About</attribute>
<attribute name='action'>app.about</attribute>
</item>
</section>
<section>
<item>
<attribute name='label' translatable='yes'>_Preferences</attribute>
<attribute name='action'>app.preferences</attribute>
</item>
</section>
<section>
<item>
<attribute name='label' translatable='yes'>_Snippets</attribute>
<attribute name='action'>app.snippets</attribute>
</item>
<item>
<attribute name='label' translatable='yes'>_Commands</attribute>
<attribute name='action'>app.commands</attribute>
</item>
</section>
<section>
<item>
<attribute name='label' translatable='yes'>_Quit</attribute>
<attribute name='action'>app.quit</attribute>
</item>
</section>
</submenu>
)RAW" + juci_submenu_xml + R"RAW(
<submenu>
<attribute name='label' translatable='yes'>_File</attribute>
<section>
@ -612,7 +622,9 @@ void Menu::set_keys() {
void Menu::build() {
try {
builder = Gtk::Builder::create_from_string(menu_xml);
auto object = builder->get_object("window-menu");
auto object = builder->get_object("juci-menu");
juci_menu = Glib::RefPtr<Gio::Menu>::cast_dynamic(object);
object = builder->get_object("window-menu");
window_menu = Glib::RefPtr<Gio::Menu>::cast_dynamic(object);
object = builder->get_object("right-click-line-menu");
auto ptr = Glib::RefPtr<Gio::Menu>::cast_dynamic(object);

1
src/menu.hpp

@ -20,6 +20,7 @@ public:
void build();
Glib::RefPtr<Gio::Menu> juci_menu;
Glib::RefPtr<Gio::Menu> window_menu;
std::unique_ptr<Gtk::Menu> right_click_line_menu;
std::unique_ptr<Gtk::Menu> right_click_selected_menu;

Loading…
Cancel
Save