correct menu_bar.ui
This commit is contained in:
		
					parent
					
						
							
								a328b57c3c
							
						
					
				
			
			
				commit
				
					
						77b14d2fe3
					
				
			
		
					 4 changed files with 86 additions and 8 deletions
				
			
		| 
						 | 
					@ -6,15 +6,15 @@
 | 
				
			||||||
#include <iostream>
 | 
					#include <iostream>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
namespace learn_gtkmm4 {
 | 
					namespace learn_gtkmm4 {
 | 
				
			||||||
    HelloWorld::HelloWorld() : m_button("Hello world!") {
 | 
					    HelloWorld::HelloWorld(const Glib::RefPtr<Gio::Menu>& menuModel) :
 | 
				
			||||||
 | 
					            m_VBox(Gtk::Orientation::VERTICAL), m_menu_bar(menuModel), m_button("Hello world!") {
 | 
				
			||||||
        set_title("Hello world!");
 | 
					        set_title("Hello world!");
 | 
				
			||||||
        set_default_size(720, 1280);
 | 
					        set_default_size(1280, 720);
 | 
				
			||||||
        add_action("Open");
 | 
					 | 
				
			||||||
        add_action("Quit");
 | 
					 | 
				
			||||||
        set_show_menubar();
 | 
					 | 
				
			||||||
        m_button.set_margin(10);
 | 
					        m_button.set_margin(10);
 | 
				
			||||||
        m_button.signal_clicked().connect(sigc::mem_fun(*this, &HelloWorld::on_button_clicked));
 | 
					        m_button.signal_clicked().connect(sigc::mem_fun(*this, &HelloWorld::on_button_clicked));
 | 
				
			||||||
        set_child(m_button);
 | 
					        m_VBox.append(m_menu_bar);
 | 
				
			||||||
 | 
					        m_VBox.append(m_button);
 | 
				
			||||||
 | 
					        set_child(m_VBox);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    void HelloWorld::on_button_clicked() {
 | 
					    void HelloWorld::on_button_clicked() {
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -9,18 +9,21 @@
 | 
				
			||||||
#include <gtkmm/glarea.h>
 | 
					#include <gtkmm/glarea.h>
 | 
				
			||||||
#include <gtkmm/box.h>
 | 
					#include <gtkmm/box.h>
 | 
				
			||||||
#include <gtkmm/applicationwindow.h>
 | 
					#include <gtkmm/applicationwindow.h>
 | 
				
			||||||
 | 
					#include <gtkmm/popovermenubar.h>
 | 
				
			||||||
 | 
					#include <gtkmm/popovermenu.h>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
namespace learn_gtkmm4 {
 | 
					namespace learn_gtkmm4 {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    class HelloWorld : public Gtk::ApplicationWindow {
 | 
					    class HelloWorld : public Gtk::ApplicationWindow {
 | 
				
			||||||
    public:
 | 
					    public:
 | 
				
			||||||
        HelloWorld();
 | 
					        explicit HelloWorld(const Glib::RefPtr<Gio::Menu>& menuModel);
 | 
				
			||||||
        ~HelloWorld() override = default;
 | 
					        ~HelloWorld() override = default;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    protected:
 | 
					    protected:
 | 
				
			||||||
        void on_button_clicked();
 | 
					        void on_button_clicked();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        Gtk::Box m_VBox;
 | 
					        Gtk::Box m_VBox;
 | 
				
			||||||
 | 
					        Gtk::PopoverMenuBar m_menu_bar;
 | 
				
			||||||
        Gtk::Button m_button;
 | 
					        Gtk::Button m_button;
 | 
				
			||||||
        Gtk::GLArea gl_area;
 | 
					        Gtk::GLArea gl_area;
 | 
				
			||||||
    };
 | 
					    };
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
							
								
								
									
										19
									
								
								main.cpp
									
										
									
									
									
								
							
							
						
						
									
										19
									
								
								main.cpp
									
										
									
									
									
								
							| 
						 | 
					@ -1,7 +1,24 @@
 | 
				
			||||||
#include "hello_world.hpp"
 | 
					#include "hello_world.hpp"
 | 
				
			||||||
#include <gtkmm/application.h>
 | 
					#include <gtkmm/application.h>
 | 
				
			||||||
 | 
					#include <gtkmm/builder.h>
 | 
				
			||||||
 | 
					#include <iostream>
 | 
				
			||||||
 | 
					#include <memory>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
int main(int argc, char *argv[]) {
 | 
					int main(int argc, char *argv[]) {
 | 
				
			||||||
    auto app = Gtk::Application::create("org.gtkmm.example");
 | 
					    auto app = Gtk::Application::create("org.gtkmm.example");
 | 
				
			||||||
    return app->make_window_and_run<learn_gtkmm4::HelloWorld>(argc, argv);
 | 
					
 | 
				
			||||||
 | 
					    const auto menu_model = []() -> Glib::RefPtr<Gio::Menu> {
 | 
				
			||||||
 | 
					        try {
 | 
				
			||||||
 | 
					            const auto builder = Gtk::Builder::create_from_file("menu_bar.ui");
 | 
				
			||||||
 | 
					            return std::dynamic_pointer_cast<Gio::Menu>(builder->get_object("menu"));
 | 
				
			||||||
 | 
					        } catch (const std::exception &e) {
 | 
				
			||||||
 | 
					            std::cerr << e.what() << '\n';
 | 
				
			||||||
 | 
					            return nullptr;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					    }();
 | 
				
			||||||
 | 
					    if (menu_model == nullptr) {
 | 
				
			||||||
 | 
					        std::cerr << "Menu model object is null. Down-cast failed.\n";
 | 
				
			||||||
 | 
					        return EXIT_FAILURE;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    return app->make_window_and_run<learn_gtkmm4::HelloWorld>(argc, argv, menu_model);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
							
								
								
									
										58
									
								
								menu_bar.ui
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										58
									
								
								menu_bar.ui
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
					@ -0,0 +1,58 @@
 | 
				
			||||||
 | 
					<?xml version="1.0" encoding="UTF-8"?>
 | 
				
			||||||
 | 
					<interface>
 | 
				
			||||||
 | 
					  <requires lib="gio" version="2.0"/>
 | 
				
			||||||
 | 
					  <menu id="menu">
 | 
				
			||||||
 | 
					    <submenu id="file_submenu">
 | 
				
			||||||
 | 
					      <attribute name="label" translatable="yes" context=""Files" menu used here">Fichiers</attribute>
 | 
				
			||||||
 | 
					      <section>
 | 
				
			||||||
 | 
					        <item>
 | 
				
			||||||
 | 
					          <attribute name="action">file.new</attribute>
 | 
				
			||||||
 | 
					          <attribute name="icon">document-new</attribute>
 | 
				
			||||||
 | 
					          <attribute name="label" translatable="yes" context="It means New File in french">Nouveau fichier</attribute>
 | 
				
			||||||
 | 
					        </item>
 | 
				
			||||||
 | 
					        <item>
 | 
				
			||||||
 | 
					          <attribute name="action">file.open</attribute>
 | 
				
			||||||
 | 
					          <attribute name="icon">document-open</attribute>
 | 
				
			||||||
 | 
					          <attribute name="label" translatable="yes" context="It means Open in french">Ouvrir</attribute>
 | 
				
			||||||
 | 
					        </item>
 | 
				
			||||||
 | 
					        <item>
 | 
				
			||||||
 | 
					          <attribute name="action">file.save</attribute>
 | 
				
			||||||
 | 
					          <attribute name="icon">document-save</attribute>
 | 
				
			||||||
 | 
					          <attribute name="label" translatable="yes" context="It means Save">Enregistrer</attribute>
 | 
				
			||||||
 | 
					        </item>
 | 
				
			||||||
 | 
					        <item>
 | 
				
			||||||
 | 
					          <attribute name="action">file.save_as</attribute>
 | 
				
			||||||
 | 
					          <attribute name="icon">document-save-as</attribute>
 | 
				
			||||||
 | 
					          <attribute name="label" translatable="yes" context="It means Save">Enregistrer sous</attribute>
 | 
				
			||||||
 | 
					        </item>
 | 
				
			||||||
 | 
					      </section>
 | 
				
			||||||
 | 
					      <section>
 | 
				
			||||||
 | 
					        <item>
 | 
				
			||||||
 | 
					          <attribute name="action">file.quit</attribute>
 | 
				
			||||||
 | 
					          <attribute name="icon">application-exit</attribute>
 | 
				
			||||||
 | 
					          <attribute name="label" translatable="yes" context="It means Quit">Quitter</attribute>
 | 
				
			||||||
 | 
					        </item>
 | 
				
			||||||
 | 
					      </section>
 | 
				
			||||||
 | 
					    </submenu>
 | 
				
			||||||
 | 
					    <submenu id="edit_submenu">
 | 
				
			||||||
 | 
					      <attribute name="label" translatable="yes" context="It means Edit">Éditer</attribute>
 | 
				
			||||||
 | 
					      <section>
 | 
				
			||||||
 | 
					        <item>
 | 
				
			||||||
 | 
					          <attribute name="action">edit.copy</attribute>
 | 
				
			||||||
 | 
					          <attribute name="icon">edit-copy</attribute>
 | 
				
			||||||
 | 
					          <attribute name="label" translatable="yes">Copier</attribute>
 | 
				
			||||||
 | 
					        </item>
 | 
				
			||||||
 | 
					        <item>
 | 
				
			||||||
 | 
					          <attribute name="action">edit.cut</attribute>
 | 
				
			||||||
 | 
					          <attribute name="icon">edit-cut</attribute>
 | 
				
			||||||
 | 
					          <attribute name="label" translatable="yes">Couper</attribute>
 | 
				
			||||||
 | 
					        </item>
 | 
				
			||||||
 | 
					        <item>
 | 
				
			||||||
 | 
					          <attribute name="action">edit.paste</attribute>
 | 
				
			||||||
 | 
					          <attribute name="icon">edit-paste</attribute>
 | 
				
			||||||
 | 
					          <attribute name="label" translatable="yes">Coller</attribute>
 | 
				
			||||||
 | 
					        </item>
 | 
				
			||||||
 | 
					      </section>
 | 
				
			||||||
 | 
					    </submenu>
 | 
				
			||||||
 | 
					  </menu>
 | 
				
			||||||
 | 
					</interface>
 | 
				
			||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue