Adding plus button to headerbar
This commit is contained in:
parent
28b18aa67b
commit
856d7ff67f
@ -6,22 +6,12 @@
|
||||
|
||||
namespace gtkpp {
|
||||
|
||||
void clickedCallback(GtkButton*, void* data) {
|
||||
auto button = reinterpret_cast<Button*>(data);
|
||||
button->_signalClicked.emit();
|
||||
}
|
||||
|
||||
Button::Button() : Widget() {
|
||||
_widget = gtk_button_new();
|
||||
g_signal_connect(_widget, "clicked", G_CALLBACK(clickedCallback), this);
|
||||
}
|
||||
|
||||
void Button::setTitle(const std::string &title) {
|
||||
gtk_button_set_label(GTK_BUTTON(_widget), title.c_str());
|
||||
}
|
||||
|
||||
void Button::onClick(const std::function<void()> &callback) {
|
||||
_signalClicked.connect(callback);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@ -7,21 +7,14 @@
|
||||
|
||||
#include "Widget.h"
|
||||
#include <string>
|
||||
#include <sigc++/sigc++.h>
|
||||
|
||||
namespace gtkpp {
|
||||
|
||||
class Button: public Widget {
|
||||
private:
|
||||
sigc::signal<void()> _signalClicked;
|
||||
|
||||
private:
|
||||
friend void clickedCallback(GtkButton*, void* data);
|
||||
|
||||
public:
|
||||
using Widget::Widget;
|
||||
Button();
|
||||
void setTitle(const std::string& title);
|
||||
void onClick(const std::function<void()>& callback);
|
||||
};
|
||||
|
||||
}
|
||||
|
||||
@ -4,35 +4,57 @@
|
||||
|
||||
#include "Widget.h"
|
||||
|
||||
GtkWidget *gtkpp::Widget::gobj() const {
|
||||
return _widget;
|
||||
}
|
||||
namespace gtkpp {
|
||||
|
||||
void gtkpp::Widget::setMargins(int margin) {
|
||||
gtk_widget_set_margin_top(_widget, margin);
|
||||
gtk_widget_set_margin_bottom(_widget, margin);
|
||||
gtk_widget_set_margin_start(_widget, margin);
|
||||
gtk_widget_set_margin_end(_widget, margin);
|
||||
}
|
||||
void clickedCallback(GtkButton*, void* data) {
|
||||
auto widget = reinterpret_cast<Widget*>(data);
|
||||
widget->_signalClicked.emit();
|
||||
}
|
||||
|
||||
void gtkpp::Widget::setVAlign(GtkAlign align) {
|
||||
gtk_widget_set_valign(_widget, align);
|
||||
}
|
||||
void Widget::onClick(const std::function<void()> &callback) {
|
||||
_signalClicked.connect(callback);
|
||||
}
|
||||
|
||||
void gtkpp::Widget::setVExpand(bool expand) {
|
||||
gtk_widget_set_vexpand(_widget, expand);
|
||||
}
|
||||
Widget::Widget() {
|
||||
_widget = nullptr;
|
||||
}
|
||||
|
||||
void gtkpp::Widget::setHorizontalMargins(int margin) {
|
||||
gtk_widget_set_margin_start(_widget, margin);
|
||||
gtk_widget_set_margin_end(_widget, margin);
|
||||
}
|
||||
Widget::Widget(GtkBuilder *builder, const char *id) {
|
||||
_widget = GTK_WIDGET(gtk_builder_get_object(builder, id));
|
||||
g_signal_connect(_widget, "clicked", G_CALLBACK(clickedCallback), this);
|
||||
}
|
||||
|
||||
void gtkpp::Widget::setVerticalMargins(int margin) {
|
||||
gtk_widget_set_margin_top(_widget, margin);
|
||||
gtk_widget_set_margin_bottom(_widget, margin);
|
||||
}
|
||||
GtkWidget *Widget::gobj() const {
|
||||
return _widget;
|
||||
}
|
||||
|
||||
void Widget::setMargins(int margin) {
|
||||
gtk_widget_set_margin_top(_widget, margin);
|
||||
gtk_widget_set_margin_bottom(_widget, margin);
|
||||
gtk_widget_set_margin_start(_widget, margin);
|
||||
gtk_widget_set_margin_end(_widget, margin);
|
||||
}
|
||||
|
||||
void Widget::setVAlign(GtkAlign align) {
|
||||
gtk_widget_set_valign(_widget, align);
|
||||
}
|
||||
|
||||
void Widget::setVExpand(bool expand) {
|
||||
gtk_widget_set_vexpand(_widget, expand);
|
||||
}
|
||||
|
||||
void Widget::setHorizontalMargins(int margin) {
|
||||
gtk_widget_set_margin_start(_widget, margin);
|
||||
gtk_widget_set_margin_end(_widget, margin);
|
||||
}
|
||||
|
||||
void Widget::setVerticalMargins(int margin) {
|
||||
gtk_widget_set_margin_top(_widget, margin);
|
||||
gtk_widget_set_margin_bottom(_widget, margin);
|
||||
}
|
||||
|
||||
void Widget::setEnabled(bool enabled) {
|
||||
gtk_widget_set_sensitive(_widget, enabled);
|
||||
}
|
||||
|
||||
void gtkpp::Widget::setEnabled(bool enabled) {
|
||||
gtk_widget_set_sensitive(_widget, enabled);
|
||||
}
|
||||
|
||||
@ -6,6 +6,7 @@
|
||||
#define AUTOCAT_GNOME_WIDGET_H
|
||||
|
||||
#include <gtk/gtk.h>
|
||||
#include <sigc++/sigc++.h>
|
||||
|
||||
namespace gtkpp {
|
||||
|
||||
@ -13,7 +14,18 @@ namespace gtkpp {
|
||||
protected:
|
||||
GtkWidget* _widget;
|
||||
|
||||
private:
|
||||
sigc::signal<void()> _signalClicked;
|
||||
|
||||
private:
|
||||
friend void clickedCallback(GtkButton*, void* data);
|
||||
|
||||
public:
|
||||
void onClick(const std::function<void()>& callback);
|
||||
|
||||
public:
|
||||
Widget();
|
||||
Widget(GtkBuilder* builder, const char* id);
|
||||
[[nodiscard]] GtkWidget* gobj() const;
|
||||
void setMargins(int margin);
|
||||
void setVerticalMargins(int margin);
|
||||
|
||||
@ -23,14 +23,6 @@ namespace gtkpp {
|
||||
|
||||
Window::Window(std::shared_ptr<Application> app, const char* resourceName) {
|
||||
_app = app;
|
||||
// _builder = gtk_builder_new();
|
||||
//
|
||||
// GError* error = nullptr;
|
||||
// gtk_builder_add_from_resource(_builder, resourceName, &error);
|
||||
// if(error) {
|
||||
// throw std::runtime_error(error->message);
|
||||
// }
|
||||
|
||||
_builder = gtk_builder_new_from_resource(resourceName);
|
||||
_window = GTK_WINDOW(gtk_builder_get_object(_builder, "adw_main_window"));
|
||||
}
|
||||
|
||||
@ -3,15 +3,15 @@
|
||||
//
|
||||
|
||||
#include "MainWindow.h"
|
||||
#include "../gtkpp/Box.h"
|
||||
#include "../gtkpp/HeaderBar.h"
|
||||
|
||||
MainWindow::MainWindow(std::shared_ptr<gtkpp::Application> app): gtkpp::Window(std::move(app), "/gui/MainWindow.xml") {
|
||||
#include <iostream>
|
||||
|
||||
// gtkpp::Box rootBox(GTK_ORIENTATION_VERTICAL, 0);
|
||||
// rootBox.append(gtkpp::HeaderBar("Main"));
|
||||
//
|
||||
// _leaflet.append(&rootBox);
|
||||
//
|
||||
// adw_application_window_set_content(ADW_APPLICATION_WINDOW(_window), _leaflet.gobj());
|
||||
MainWindow::MainWindow(std::shared_ptr<gtkpp::Application> app):
|
||||
gtkpp::Window(std::move(app), "/gui/MainWindow.xml"),
|
||||
_addNumberButton(_builder, "add_number_button") {
|
||||
|
||||
_addNumberButton.onClick([this] {
|
||||
std::cout << "Add clicked" << std::endl;
|
||||
});
|
||||
}
|
||||
|
||||
@ -7,10 +7,12 @@
|
||||
|
||||
#include "../gtkpp/Window.h"
|
||||
#include "../gtkpp/Leaflet.h"
|
||||
#include "../gtkpp/Button.h"
|
||||
|
||||
class MainWindow: public gtkpp::Window {
|
||||
private:
|
||||
gtkpp::Leaflet _leaflet;
|
||||
gtkpp::Button _addNumberButton;
|
||||
|
||||
public:
|
||||
explicit MainWindow(std::shared_ptr<gtkpp::Application> app);
|
||||
|
||||
@ -31,6 +31,12 @@
|
||||
</object>
|
||||
</property>
|
||||
|
||||
<child type="start">
|
||||
<object class="GtkButton" id="add_number_button">
|
||||
<property name="icon-name">list-add</property>
|
||||
</object>
|
||||
</child>
|
||||
|
||||
<child type="end">
|
||||
<object class="GtkMenuButton" id="gtk_btnHeaderHelp">
|
||||
<property name="direction">none</property>
|
||||
|
||||
Loading…
Reference in New Issue
Block a user