Fix build and interface issues

This commit is contained in:
daleclack 2022-12-12 15:47:43 +08:00
parent 6a964ab72a
commit c6972513ec
5 changed files with 117 additions and 173 deletions

View File

@ -91,7 +91,8 @@
"compilerPath": "D:/msys64/MinGW64/bin/gcc.exe",
"cStandard": "c17",
"cppStandard": "c++17",
"intelliSenseMode": "windows-gcc-x64"
"intelliSenseMode": "windows-gcc-x64",
"configurationProvider": "ms-vscode.cmake-tools"
},
{
"name": "Mac",

View File

@ -1,211 +1,138 @@
<?xml version="1.0" encoding="UTF-8"?>
<!-- Generated with glade 3.38.2 -->
<?xml version='1.0' encoding='UTF-8'?>
<!-- Created with Cambalache 0.11.2 -->
<interface>
<requires lib="gtk+" version="3.24"/>
<!-- interface-name prefs.ui -->
<requires lib="gtk" version="4.6"/>
<object class="GtkBox" id="prefs">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="halign">center</property>
<property name="valign">center</property>
<property name="orientation">vertical</property>
<property name="spacing">10</property>
<child>
<object class="GtkBox">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="margin-start">5</property>
<property name="margin-end">5</property>
<property name="margin-top">5</property>
<property name="margin-bottom">5</property>
<property name="hexpand">True</property>
<property name="vexpand">True</property>
<property name="orientation">vertical</property>
<child>
<object class="GtkLabel" id="label_conf">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="label" translatable="yes">Release Configs:</property>
<property name="label">Release Configs:</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">0</property>
</packing>
</child>
<child>
<!-- n-columns=2 n-rows=4 -->
<object class="GtkGrid">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="halign">center</property>
<property name="valign">center</property>
<child>
<object class="GtkLabel" id="label_lts">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="halign">end</property>
<property name="hexpand">True</property>
<property name="vexpand">True</property>
<property name="label" translatable="yes">LongTerm:</property>
<property name="label">LongTerm:</property>
<layout>
<property name="column">0</property>
<property name="column-span">1</property>
<property name="row">0</property>
<property name="row-span">1</property>
</layout>
</object>
<packing>
<property name="left-attach">0</property>
<property name="top-attach">0</property>
</packing>
</child>
<child>
<object class="GtkLabel" id="label_stable">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="halign">end</property>
<property name="hexpand">True</property>
<property name="vexpand">True</property>
<property name="label" translatable="yes">Stable:</property>
<property name="label">Stable:</property>
<layout>
<property name="column">0</property>
<property name="column-span">1</property>
<property name="row">1</property>
<property name="row-span">1</property>
</layout>
</object>
<packing>
<property name="left-attach">0</property>
<property name="top-attach">1</property>
</packing>
</child>
<child>
<object class="GtkLabel" id="label_dev">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="halign">end</property>
<property name="hexpand">True</property>
<property name="vexpand">True</property>
<property name="label" translatable="yes">Development:</property>
<property name="label">Development:</property>
<layout>
<property name="column">0</property>
<property name="column-span">1</property>
<property name="row">2</property>
<property name="row-span">1</property>
</layout>
</object>
<packing>
<property name="left-attach">0</property>
<property name="top-attach">2</property>
</packing>
</child>
<child>
<object class="GtkEntry" id="entry_lts">
<property name="visible">True</property>
<property name="can-focus">True</property>
<property name="hexpand">True</property>
<property name="vexpand">True</property>
<property name="text" translatable="yes">default_config</property>
</object>
<packing>
<property name="left-attach">1</property>
<property name="top-attach">0</property>
</packing>
</child>
<child>
<object class="GtkEntry" id="entry_stable">
<property name="visible">True</property>
<property name="can-focus">True</property>
<property name="hexpand">True</property>
<property name="vexpand">True</property>
<property name="text" translatable="yes">default_config</property>
</object>
<packing>
<property name="left-attach">1</property>
<property name="top-attach">1</property>
</packing>
</child>
<child>
<object class="GtkEntry" id="entry_dev">
<property name="visible">True</property>
<property name="can-focus">True</property>
<property name="hexpand">True</property>
<property name="vexpand">True</property>
<property name="text" translatable="yes">default_config</property>
</object>
<packing>
<property name="left-attach">1</property>
<property name="top-attach">2</property>
</packing>
</child>
<child>
<object class="GtkLabel">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="halign">end</property>
<property name="label" translatable="yes">Path:</property>
<property name="label">Path:</property>
<layout>
<property name="column">0</property>
<property name="column-span">1</property>
<property name="row">3</property>
<property name="row-span">1</property>
</layout>
</object>
</child>
<child>
<object class="GtkEntry" id="entry_lts">
<property name="text">default config</property>
<layout>
<property name="column">1</property>
<property name="column-span">1</property>
<property name="row">0</property>
<property name="row-span">1</property>
</layout>
</object>
</child>
<child>
<object class="GtkEntry" id="entry_stable">
<property name="text">default config</property>
<layout>
<property name="column">1</property>
<property name="column-span">1</property>
<property name="row">1</property>
<property name="row-span">1</property>
</layout>
</object>
</child>
<child>
<object class="GtkEntry" id="entry_dev">
<property name="text">default config</property>
<layout>
<property name="column">1</property>
<property name="column-span">1</property>
<property name="row">2</property>
<property name="row-span">1</property>
</layout>
</object>
<packing>
<property name="left-attach">0</property>
<property name="top-attach">3</property>
</packing>
</child>
<child>
<object class="GtkEntry" id="entry_path">
<property name="visible">True</property>
<property name="can-focus">True</property>
<property name="text" translatable="yes">./</property>
<property name="text">./</property>
<layout>
<property name="column">1</property>
<property name="column-span">1</property>
<property name="row">3</property>
<property name="row-span">1</property>
</layout>
</object>
<packing>
<property name="left-attach">1</property>
<property name="top-attach">3</property>
</packing>
</child>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">1</property>
</packing>
</child>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">0</property>
</packing>
</child>
<child>
<object class="GtkBox">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="halign">center</property>
<property name="spacing">5</property>
<child>
<object class="GtkButton" id="btnpath">
<property name="label" translatable="yes">Custom Path</property>
<property name="visible">True</property>
<property name="can-focus">True</property>
<property name="receives-default">True</property>
<property name="label">Custom Path</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">False</property>
<property name="position">0</property>
</packing>
</child>
<child>
<object class="GtkButton" id="btn_ok">
<property name="label" translatable="yes">OK</property>
<property name="visible">True</property>
<property name="can-focus">True</property>
<property name="receives-default">True</property>
<property name="label">OK</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">False</property>
<property name="position">1</property>
</packing>
</child>
<child>
<object class="GtkButton" id="btn_cancel">
<property name="label" translatable="yes">Cancel</property>
<property name="visible">True</property>
<property name="can-focus">True</property>
<property name="receives-default">True</property>
<property name="label">Cancel</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">False</property>
<property name="position">2</property>
</packing>
</child>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">1</property>
</packing>
</child>
</object>
</interface>

View File

@ -182,6 +182,8 @@ MsgBox::MsgBox(Gtk::Window &parent)
set_transient_for(parent);
// Add Message
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);
@ -189,6 +191,7 @@ MsgBox::MsgBox(Gtk::Window &parent)
hbox.set_halign(Gtk::Align::FILL);
hbox.set_valign(Gtk::Align::FILL);
vbox->append(hbox);
vbox->set_margin(5);
}
MsgBox::MsgBox()
@ -199,6 +202,8 @@ MsgBox::MsgBox()
add_button("OK", Gtk::ResponseType::OK);
// Add Message
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);
@ -206,6 +211,7 @@ MsgBox::MsgBox()
hbox.set_halign(Gtk::Align::FILL);
hbox.set_valign(Gtk::Align::FILL);
vbox->append(hbox);
vbox->set_margin(5);
}
void MsgBox::Init(Glib::ustring msg)

View File

@ -16,7 +16,7 @@ enum Releases
MyWin::MyWin()
: btn_box(Gtk::Orientation::VERTICAL, 5),
btn_ver("Xe-Ver"),
cfg_box(Gtk::Orientation::HORIZONTAL, 5),
cfg_box(Gtk::Orientation::VERTICAL, 5),
msg_dialog(*this)
{
// Initalize window
@ -26,9 +26,13 @@ MyWin::MyWin()
// Set Background Image
auto pixbuf = Gdk::Pixbuf::create_from_xpm_data(fly);
auto sized = pixbuf->scale_simple(640, 360, Gdk::INTERP_BILINEAR);
gtk_image_set_from_pixbuf(background.gobj(), sized->gobj());
auto sized = pixbuf->scale_simple(640, 360, Gdk::InterpType::BILINEAR);
background.set_pixbuf(sized);
back_overlay.set_child(background);
background.set_size_request(640, 360);
back_overlay.set_halign(Gtk::Align::FILL);
back_overlay.set_valign(Gtk::Align::FILL);
back_overlay.set_expand();
// Get Local time
time_t t;
@ -66,6 +70,9 @@ MyWin::MyWin()
load_config();
prefs->init_json_data(data);
cfg_box.append(*prefs);
// cfg_box.set_hexpand();
cfg_box.set_halign(Gtk::Align::CENTER);
cfg_box.set_valign(Gtk::Align::CENTER);
cfg_box.set_opacity(0.7);
stack1.add(cfg_box, "config_page", "Config");
@ -91,16 +98,16 @@ void MyWin::titlebar_init()
// header.set_title("Xe Release 15");
// Add stack widget
header.set_custom_title(switcher);
header.set_show_close_button();
//header.set_custom_title(switcher);
header.set_title_widget(switcher);
header.set_show_title_buttons();
header.set_decoration_layout("close,minimize:menu");
set_titlebar(header);
// Initalize Menu
menu_builder = Gtk::Builder::create_from_resource("/org/gtk/daleclack/menubar.xml");
auto object = menu_builder->get_object("app-menu");
auto gmenu = Glib::RefPtr<Gio::Menu>::cast_dynamic(object);
popover.bind_model(gmenu);
auto object = menu_builder->get_object<Gio::MenuModel>("app-menu");
popover.set_menu_model(object);
// Add Menu Actions
add_action("configs", sigc::mem_fun(*this, &MyWin::config_dialog));
@ -111,7 +118,7 @@ void MyWin::titlebar_init()
add_action("quit", sigc::mem_fun(*this, &MyWin::hide));
// Initalize MenuButton
menubtn.set_image_from_icon_name("open-menu");
menubtn.set_icon_name("open-menu");
menubtn.set_popover(popover);
header.pack_end(menubtn);
}
@ -120,8 +127,9 @@ void MyWin::background1()
{
// Set Background Image
auto pixbuf = Gdk::Pixbuf::create_from_xpm_data(winpe);
auto sized = pixbuf->scale_simple(640, 360, Gdk::INTERP_BILINEAR);
gtk_image_set_from_pixbuf(background.gobj(), sized->gobj());
auto sized = pixbuf->scale_simple(640, 360, Gdk::InterpType::BILINEAR);
background.set_pixbuf(sized);
// gtk_image_set_from_pixbuf(background.gobj(), sized->gobj());
// overlay.add(background);
// Free Memory
pixbuf.reset();
@ -132,8 +140,9 @@ void MyWin::background2()
{
// Set Background Image
auto pixbuf = Gdk::Pixbuf::create_from_xpm_data(img7);
auto sized = pixbuf->scale_simple(640, 360, Gdk::INTERP_BILINEAR);
gtk_image_set_from_pixbuf(background.gobj(), sized->gobj());
auto sized = pixbuf->scale_simple(640, 360, Gdk::InterpType::BILINEAR);
background.set_pixbuf(sized);
// gtk_image_set_from_pixbuf(background.gobj(), sized->gobj());
// overlay.add(background);
// Free Memory
pixbuf.reset();
@ -144,8 +153,9 @@ void MyWin::background3()
{
// Set Background Image
auto pixbuf = Gdk::Pixbuf::create_from_xpm_data(fly);
auto sized = pixbuf->scale_simple(640, 360, Gdk::INTERP_BILINEAR);
gtk_image_set_from_pixbuf(background.gobj(), sized->gobj());
auto sized = pixbuf->scale_simple(640, 360, Gdk::InterpType::BILINEAR);
background.set_pixbuf(sized);
// gtk_image_set_from_pixbuf(background.gobj(), sized->gobj());
// overlay.add(background);
// Free Memory
pixbuf.reset();
@ -175,7 +185,7 @@ void MyWin::load_config(){
else
{
msg_dialog.Init("The config doesn't exist!\nPlease use \"Config\" menu to set releases");
msg_dialog.show_all();
msg_dialog.show();
return;
}
json_config_init(data);
@ -199,17 +209,17 @@ void MyWin::main_releases()
case Releases::LTS:
longterm(local, config_longterm.c_str(), str);
msg_dialog.Init(str);
msg_dialog.show_all();
msg_dialog.show();
break;
case Releases::Stable:
stable(local, config_stable.c_str(), str);
msg_dialog.Init(str);
msg_dialog.show_all();
msg_dialog.show();
break;
case Releases::Dev:
develop(local, config_devel.c_str(), str);
msg_dialog.Init(str);
msg_dialog.show_all();
msg_dialog.show();
break;
}
}
@ -235,7 +245,7 @@ void MyWin::about_dialog()
"license-type", GTK_LICENSE_GPL_3_0,
"logo-icon-name", "Xe-Release",
"title", "About Xe Release",
NULL);
NULL, nullptr);
// Free memory
g_free(version);
g_free(copyright);

View File

@ -15,7 +15,7 @@ private:
// Main window
Gtk::Stack stack1;
Gtk::StackSwitcher switcher;
Gtk::Image background;
Gtk::Picture background;
Gtk::Overlay back_overlay, overlay;
Gtk::Box btn_box, cfg_box;
Gtk::Label api_label;