Move definiation of MsgBox

This commit is contained in:
daleclack 2024-01-18 13:51:00 +08:00
parent 8a0af99d2a
commit e3d42d36a2
6 changed files with 135 additions and 102 deletions

View File

@ -21,8 +21,8 @@ pkg_check_modules (GTKMM4 REQUIRED gtkmm-4.0)
include_directories (${GTKMM4_INCLUDE_DIRS})
link_directories (${GTKMM4_LIBRARY_DIRS})
set(SOURCES src/main.cc src/MyWin.cc src/MyPrefs.cc
src/xerelease.cc src/xeapi.cc)
set(SOURCES src/main.cc src/MyWin.cc src/MsgBox.cc
src/MyPrefs.cc src/xerelease.cc src/xeapi.cc)
#Compile resources with GCR_CMake
set(RESOURCE_LIST

View File

@ -14,6 +14,29 @@
<property name="label">Release Configs:</property>
</object>
</child>
<child>
<object class="GtkScrolledWindow" id="version_sw">
<property name="height-request">200</property>
<property name="hscrollbar-policy">never</property>
<property name="width-request">350</property>
</object>
</child>
<child>
<object class="GtkBox">
<property name="orientation">horizontal</property>
<property name="halign">center</property>
<child>
<object class="GtkButton" id="btn_add">
<property name="label">Add Item</property>
</object>
</child>
<child>
<object class="GtkButton" id="btn_remove">
<property name="label">Remove Item</property>
</object>
</child>
</object>
</child>
<child>
<object class="GtkGrid">
<property name="halign">center</property>

View File

@ -0,0 +1,83 @@
#include "MsgBox.hh"
MsgBox::MsgBox(Gtk::Window &parent)
: vbox(Gtk::Orientation::VERTICAL, 5),
hbox(Gtk::Orientation::HORIZONTAL, 5),
btn_box(Gtk::Orientation::HORIZONTAL, 5),
btn_ok("OK")
{
// Initalize MsgBox
set_icon_name("Xe-Release");
set_default_size(300, 150);
// add_button("OK", Gtk::ResponseType::OK);
set_transient_for(parent);
// Add Message and icon
image.set_from_icon_name("Xe-Release");
image.set_icon_size(Gtk::IconSize::LARGE);
image.set_size_request(64, 64);
// vbox = get_content_area();
hbox.append(image);
hbox.append(msg_label);
// Add message box to the main box
hbox.set_expand();
hbox.set_halign(Gtk::Align::FILL);
hbox.set_valign(Gtk::Align::FILL);
vbox.append(hbox);
vbox.set_margin(5);
// Add button
btn_box.append(btn_ok);
btn_box.set_halign(Gtk::Align::END);
btn_ok.set_halign(Gtk::Align::END);
btn_ok.signal_clicked().connect(sigc::mem_fun(*this, &MsgBox::on_response));
vbox.append(btn_box);
set_child(vbox);
}
MsgBox::MsgBox()
: vbox(Gtk::Orientation::VERTICAL, 5),
hbox(Gtk::Orientation::HORIZONTAL, 5),
btn_box(Gtk::Orientation::HORIZONTAL, 5),
btn_ok("OK")
{
// Initalize MsgBox
set_icon_name("Xe-Release");
set_default_size(300, 150);
// add_button("OK", Gtk::ResponseType::OK);
// set_transient_for(parent);
// Add Message and icon
image.set_from_icon_name("Xe-Release");
image.set_icon_size(Gtk::IconSize::LARGE);
image.set_size_request(64, 64);
// vbox = get_content_area();
hbox.append(image);
hbox.append(msg_label);
// Add message box to the main box
hbox.set_expand();
hbox.set_halign(Gtk::Align::FILL);
hbox.set_valign(Gtk::Align::FILL);
vbox.append(hbox);
vbox.set_margin(5);
// Add button
btn_box.append(btn_ok);
btn_box.set_halign(Gtk::Align::END);
btn_ok.set_halign(Gtk::Align::END);
btn_ok.signal_clicked().connect(sigc::mem_fun(*this, &MsgBox::on_response));
vbox.append(btn_box);
set_child(vbox);
}
void MsgBox::Init(Glib::ustring msg)
{
msg_label.set_label(msg);
}
void MsgBox::on_response()
{
hide();
}

View File

@ -0,0 +1,21 @@
#pragma once
#include <gtkmm.h>
class MsgBox : public Gtk::Window
{
public:
MsgBox(Gtk::Window &parent);
MsgBox();
void Init(Glib::ustring msg);
private:
// Child Widgets
Gtk::Image image;
Gtk::Label msg_label;
Gtk::Box vbox, hbox, btn_box;
Gtk::Button btn_ok;
// Signal Handler
void on_response();
};

View File

@ -5,6 +5,9 @@ MyPrefs::MyPrefs(BaseObjectType *cobject, const Glib::RefPtr<Gtk::Builder> &ref_
ref_Glade(ref_builder)
{
// Get Widgets
version_sw = ref_builder->get_widget<Gtk::ScrolledWindow>("version_sw");
btnadd = ref_builder->get_widget<Gtk::Button>("btn_add");
btnremove = ref_builder->get_widget<Gtk::Button>("btn_remove");
entry_path = ref_builder->get_widget<Gtk::Entry>("entry_path");
btnpath = ref_builder->get_widget<Gtk::Button>("btnpath");
btnok = ref_builder->get_widget<Gtk::Button>("btn_ok");
@ -211,84 +214,3 @@ void MyPrefs::dialog_response(int response_id)
dialog.reset();
}
MsgBox::MsgBox(Gtk::Window &parent)
: vbox(Gtk::Orientation::VERTICAL, 5),
hbox(Gtk::Orientation::HORIZONTAL, 5),
btn_box(Gtk::Orientation::HORIZONTAL, 5),
btn_ok("OK")
{
// Initalize MsgBox
set_icon_name("Xe-Release");
set_default_size(300, 150);
// add_button("OK", Gtk::ResponseType::OK);
set_transient_for(parent);
// Add Message and icon
image.set_from_icon_name("Xe-Release");
image.set_icon_size(Gtk::IconSize::LARGE);
image.set_size_request(64, 64);
// vbox = get_content_area();
hbox.append(image);
hbox.append(msg_label);
// Add message box to the main box
hbox.set_expand();
hbox.set_halign(Gtk::Align::FILL);
hbox.set_valign(Gtk::Align::FILL);
vbox.append(hbox);
vbox.set_margin(5);
// Add button
btn_box.append(btn_ok);
btn_box.set_halign(Gtk::Align::END);
btn_ok.set_halign(Gtk::Align::END);
btn_ok.signal_clicked().connect(sigc::mem_fun(*this, &MsgBox::on_response));
vbox.append(btn_box);
set_child(vbox);
}
MsgBox::MsgBox()
: vbox(Gtk::Orientation::VERTICAL, 5),
hbox(Gtk::Orientation::HORIZONTAL, 5),
btn_box(Gtk::Orientation::HORIZONTAL, 5),
btn_ok("OK")
{
// Initalize MsgBox
set_icon_name("Xe-Release");
set_default_size(300, 150);
// add_button("OK", Gtk::ResponseType::OK);
// set_transient_for(parent);
// Add Message and icon
image.set_from_icon_name("Xe-Release");
image.set_icon_size(Gtk::IconSize::LARGE);
image.set_size_request(64, 64);
// vbox = get_content_area();
hbox.append(image);
hbox.append(msg_label);
// Add message box to the main box
hbox.set_expand();
hbox.set_halign(Gtk::Align::FILL);
hbox.set_valign(Gtk::Align::FILL);
vbox.append(hbox);
vbox.set_margin(5);
// Add button
btn_box.append(btn_ok);
btn_box.set_halign(Gtk::Align::END);
btn_ok.set_halign(Gtk::Align::END);
btn_ok.signal_clicked().connect(sigc::mem_fun(*this, &MsgBox::on_response));
vbox.append(btn_box);
set_child(vbox);
}
void MsgBox::Init(Glib::ustring msg)
{
msg_label.set_label(msg);
}
void MsgBox::on_response()
{
hide();
}

View File

@ -4,28 +4,10 @@
#include <fstream>
#include "json_nlohmann/json.hpp"
#include "config.hh"
#include "MsgBox.hh"
using json = nlohmann::json;
class MsgBox : public Gtk::Window
{
public:
MsgBox(Gtk::Window &parent);
MsgBox();
void Init(Glib::ustring msg);
private:
// Child Widgets
Gtk::Image image;
Gtk::Label msg_label;
Gtk::Box vbox, hbox, btn_box;
Gtk::Button btn_ok;
// Signal Handler
void on_response();
};
class MyPrefs : public Gtk::Box
{
public:
@ -43,6 +25,8 @@ private:
Gtk::Window *parent_win;
// Child widgets
Gtk::ScrolledWindow *version_sw;
Gtk::Button *btnadd, *btnremove;
Gtk::Entry *entry_path;
Gtk::Button *btnpath, *btnok, *btncancel;
bool dark_mode;