Compare commits
1 Commits
Author | SHA1 | Date |
---|---|---|
Vladislav Nepogodin | 0aef4b8275 |
|
@ -23,17 +23,18 @@ pkg_check_modules(
|
|||
GTKMM
|
||||
REQUIRED
|
||||
IMPORTED_TARGET
|
||||
gtkmm-3.0)
|
||||
gtkmm-4.0)
|
||||
|
||||
FetchContent_Declare(fmt
|
||||
GIT_REPOSITORY "https://github.com/fmtlib/fmt.git"
|
||||
GIT_TAG "3b6e409cd8573f63e4acad7717d9082bd898ec87"
|
||||
GIT_TAG "a44716f58e943905d1357160b98cae2618d053cf"
|
||||
)
|
||||
FetchContent_MakeAvailable(fmt)
|
||||
|
||||
##
|
||||
## CONFIGURATION
|
||||
##
|
||||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wl,--export-dynamic")
|
||||
set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -flto")
|
||||
|
||||
if(CMAKE_CXX_COMPILER_ID STREQUAL "GNU")
|
||||
|
|
47
meson.build
47
meson.build
|
@ -1,18 +1,35 @@
|
|||
project('cachyos-hello', 'cpp',
|
||||
version: '0.6.10',
|
||||
version: '0.6.9',
|
||||
license: 'GPLv3',
|
||||
meson_version: '>=0.55.0',
|
||||
default_options: ['cpp_std=c++17',
|
||||
'buildtype=debugoptimized',
|
||||
'warning_level=3',
|
||||
'werror=true',
|
||||
'werror=false',
|
||||
'b_ndebug=if-release'])
|
||||
|
||||
is_debug_build = get_option('buildtype').startswith('debug')
|
||||
cc = meson.get_compiler('cpp')
|
||||
if cc.get_id() == 'clang'
|
||||
specific_cc_flags = [
|
||||
'-nostdlib++',
|
||||
#'-stdlib=libc++',
|
||||
'-nodefaultlibs',
|
||||
]
|
||||
specific_link_flags = [
|
||||
'-fuse-ld=lld',
|
||||
]
|
||||
add_global_arguments(cc.get_supported_arguments(specific_cc_flags), language : 'cpp')
|
||||
add_global_link_arguments(cc.get_supported_link_arguments(specific_link_flags), language : 'cpp')
|
||||
endif
|
||||
|
||||
if is_debug_build
|
||||
add_global_arguments('-D_GLIBCXX_ASSERTIONS', language : 'cpp')
|
||||
endif
|
||||
|
||||
# Common dependencies
|
||||
fmt = dependency('fmt', version : ['>=8.0.0'], fallback : ['fmt', 'fmt_dep'])
|
||||
gtkmm = dependency('gtkmm-3.0', version : ['>=3.22.0'])
|
||||
gtkmm = dependency('gtkmm-4.0', version : ['>=1.8.0'])
|
||||
|
||||
src_files = files(
|
||||
'src/hello.cpp', 'src/hello.hpp',
|
||||
|
@ -24,16 +41,19 @@ possible_cc_flags = [
|
|||
|
||||
'-Wnon-virtual-dtor',
|
||||
|
||||
'-Wold-style-cast',
|
||||
'-Wcast-align',
|
||||
'-Wunused',
|
||||
'-Woverloaded-virtual',
|
||||
|
||||
'-Wpedantic', # non-standard C++
|
||||
'-Wconversion', # type conversion that may lose data
|
||||
'-Wsign-conversion',
|
||||
'-Wnull-dereference',
|
||||
'-Wdouble-promotion', # float to double
|
||||
|
||||
'-Wformat=2',
|
||||
'-Wimplicit-fallthrough', # fallthrough without an explicit annotation
|
||||
]
|
||||
|
||||
if cc.get_id() == 'gcc'
|
||||
|
@ -43,20 +63,39 @@ if cc.get_id() == 'gcc'
|
|||
'-Wduplicated-cond',
|
||||
'-Wduplicated-branches',
|
||||
'-Wlogical-op',
|
||||
'-Wuseless-cast',
|
||||
|
||||
'-Wsuggest-attribute=cold',
|
||||
'-Wsuggest-attribute=format',
|
||||
'-Wsuggest-attribute=malloc',
|
||||
'-Wsuggest-attribute=noreturn',
|
||||
'-Wsuggest-attribute=pure',
|
||||
'-Wsuggest-final-methods',
|
||||
'-Wsuggest-final-types',
|
||||
'-Wdiv-by-zero',
|
||||
'-Wanalyzer-double-fclose',
|
||||
'-Wanalyzer-double-free',
|
||||
'-Wanalyzer-malloc-leak',
|
||||
'-Wanalyzer-use-after-free',
|
||||
]
|
||||
endif
|
||||
|
||||
if get_option('buildtype') != 'debug'
|
||||
if not is_debug_build
|
||||
if cc.get_id() == 'gcc'
|
||||
possible_cc_flags += [
|
||||
'-flto',
|
||||
'-fwhole-program',
|
||||
'-fuse-linker-plugin',
|
||||
]
|
||||
else
|
||||
possible_cc_flags += [
|
||||
'-flto=thin',
|
||||
]
|
||||
endif
|
||||
|
||||
possible_cc_flags += ['-fdata-sections', '-ffunction-sections']
|
||||
possible_link_flags = ['-Wl,--gc-sections', '-Wl,--export-dynamic']
|
||||
add_project_link_arguments(cc.get_supported_link_arguments(possible_link_flags), language : 'cpp')
|
||||
endif
|
||||
|
||||
add_project_arguments(cc.get_supported_arguments(possible_cc_flags), language : 'cpp')
|
||||
|
|
154
src/hello.cpp
154
src/hello.cpp
|
@ -99,19 +99,19 @@ void quick_message(Gtk::Window* parent, const std::string& message) {
|
|||
auto* label = gtk_label_new(message.c_str());
|
||||
|
||||
// Add the label, and show everything we’ve added
|
||||
gtk_container_add(GTK_CONTAINER(content_area), label);
|
||||
gtk_widget_show_all(dialog);
|
||||
gtk_box_append(GTK_BOX(content_area), label);
|
||||
gtk_widget_show(dialog);
|
||||
|
||||
int result = gtk_dialog_run(GTK_DIALOG(dialog));
|
||||
// int result = gtk_dialog_run(GTK_DIALOG(dialog));
|
||||
std::vector<std::string> argv{};
|
||||
if (result == GTK_RESPONSE_NO) {
|
||||
argv = {fix_path("/usr/local/bin/calamares-offline.sh")};
|
||||
} else if (result == GTK_RESPONSE_YES) {
|
||||
argv = {fix_path("/usr/local/bin/calamares-online.sh")};
|
||||
} else {
|
||||
gtk_widget_destroy(dialog);
|
||||
return;
|
||||
}
|
||||
// if (result == GTK_RESPONSE_NO) {
|
||||
// argv = {fix_path("/usr/local/bin/calamares-offline.sh")};
|
||||
// } else if (result == GTK_RESPONSE_YES) {
|
||||
// argv = {fix_path("/usr/local/bin/calamares-online.sh")};
|
||||
// } else {
|
||||
// gtk_window_destroy(GTK_WINDOW(dialog));
|
||||
// return;
|
||||
// }
|
||||
|
||||
int child_stdout{};
|
||||
int child_stderr{};
|
||||
|
@ -119,31 +119,28 @@ void quick_message(Gtk::Window* parent, const std::string& message) {
|
|||
|
||||
// Spawn child process.
|
||||
try {
|
||||
Glib::spawn_async_with_pipes(".", argv, Glib::SpawnFlags::SPAWN_DO_NOT_REAP_CHILD, Glib::SlotSpawnChildSetup(), &child_pid, nullptr, &child_stdout, &child_stderr);
|
||||
Glib::spawn_async_with_pipes(".", argv, Glib::SpawnFlags::DO_NOT_REAP_CHILD, Glib::SlotSpawnChildSetup(), &child_pid, nullptr, &child_stdout, &child_stderr);
|
||||
} catch (Glib::Error& error) {
|
||||
g_critical("%s", error.what().c_str());
|
||||
g_critical("%s", error.what());
|
||||
}
|
||||
// Add a child watch function which will be called when the child process
|
||||
// exits.
|
||||
g_child_watch_add(child_pid, child_watch_cb, nullptr);
|
||||
|
||||
gtk_widget_destroy(dialog);
|
||||
gtk_window_destroy(GTK_WINDOW(dialog));
|
||||
}
|
||||
} // namespace
|
||||
|
||||
Hello::Hello(int argc, char** argv) {
|
||||
Hello::Hello(bool is_dev) {
|
||||
set_title("CachyOS Hello");
|
||||
set_border_width(6);
|
||||
if (argc > 1 && (strncmp(argv[1], "--dev", 5) == 0)) {
|
||||
m_dev = true;
|
||||
}
|
||||
// set_border_width(6);
|
||||
|
||||
g_refHello = this;
|
||||
|
||||
auto screen = Gdk::Screen::get_default();
|
||||
// auto screen = Gdk::Screen::get_default();
|
||||
|
||||
// Load preferences
|
||||
if (m_dev) {
|
||||
if (is_dev) {
|
||||
m_preferences = read_json("data/preferences.json");
|
||||
m_preferences["data_path"] = "data/";
|
||||
m_preferences["desktop_path"] = fmt::format("{}/{}.desktop", fs::current_path().string(), m_app);
|
||||
|
@ -159,54 +156,55 @@ Hello::Hello(int argc, char** argv) {
|
|||
m_save = (!fs::exists(save_path)) ? nlohmann::json({{"locale", ""}}) : read_json(save_path);
|
||||
|
||||
// Import Css
|
||||
auto provider = Gtk::CssProvider::create();
|
||||
provider->load_from_path(m_preferences["style_path"]);
|
||||
Gtk::StyleContext::add_provider_for_screen(screen, provider, GTK_STYLE_PROVIDER_PRIORITY_APPLICATION);
|
||||
// auto provider = Gtk::CssProvider::create();
|
||||
// provider->load_from_path(m_preferences["style_path"]);
|
||||
// Gtk::StyleContext::add_provider_for_screen(screen, provider, GTK_STYLE_PROVIDER_PRIORITY_APPLICATION);
|
||||
|
||||
// Init window
|
||||
m_builder = Gtk::Builder::create_from_file(m_preferences["ui_path"]);
|
||||
gtk_builder_add_callback_symbol(m_builder->gobj(), "on_languages_changed", G_CALLBACK(on_languages_changed));
|
||||
gtk_builder_add_callback_symbol(m_builder->gobj(), "on_action_clicked", G_CALLBACK(on_action_clicked));
|
||||
gtk_builder_add_callback_symbol(m_builder->gobj(), "on_btn_clicked", G_CALLBACK(on_btn_clicked));
|
||||
gtk_builder_add_callback_symbol(m_builder->gobj(), "on_link_clicked", G_CALLBACK(on_link_clicked));
|
||||
gtk_builder_add_callback_symbol(m_builder->gobj(), "on_delete_window", G_CALLBACK(on_delete_window));
|
||||
gtk_builder_connect_signals(m_builder->gobj(), nullptr);
|
||||
Gtk::Window* ref_window;
|
||||
m_builder->get_widget("window", ref_window);
|
||||
// auto* scope = gtk_builder_get_scope(m_builder->gobj());
|
||||
|
||||
// gtk_builder_cscope_add_callback_symbols(scope, "on_languages_changed", G_CALLBACK(on_languages_changed));
|
||||
// gtk_builder_add_callback_symbol(m_builder->gobj(), "on_languages_changed", G_CALLBACK(on_languages_changed));
|
||||
// gtk_builder_add_callback_symbol(m_builder->gobj(), "on_action_clicked", G_CALLBACK(on_action_clicked));
|
||||
// gtk_builder_add_callback_symbol(m_builder->gobj(), "on_btn_clicked", G_CALLBACK(on_btn_clicked));
|
||||
// gtk_builder_add_callback_symbol(m_builder->gobj(), "on_link_clicked", G_CALLBACK(on_link_clicked));
|
||||
// gtk_builder_add_callback_symbol(m_builder->gobj(), "on_delete_window", G_CALLBACK(on_delete_window));
|
||||
// gtk_builder_connect_signals(m_builder->gobj(), nullptr);
|
||||
auto* ref_window = m_builder->get_widget<Gtk::Window>("window");
|
||||
gobject_ = reinterpret_cast<GObject*>(ref_window->gobj());
|
||||
|
||||
// Subtitle of headerbar
|
||||
Gtk::HeaderBar* header;
|
||||
m_builder->get_widget("headerbar", header);
|
||||
auto* header = m_builder->get_widget<Gtk::HeaderBar>("headerbar");
|
||||
const auto& lsb_info = get_lsb_infos();
|
||||
header->set_subtitle(lsb_info[0] + " " + lsb_info[1]);
|
||||
// header->set_title_widget(Gtk::Label(lsb_info[0] + " " + lsb_info[1], false));
|
||||
// header->set_subtitle(lsb_info[0] + " " + lsb_info[1]);
|
||||
|
||||
// Load images
|
||||
if (fs::is_regular_file(m_preferences["logo_path"])) {
|
||||
const auto& logo = Gdk::Pixbuf::create_from_file(m_preferences["logo_path"]);
|
||||
set_icon(logo);
|
||||
// const std::string& logo = m_preferences["logo_path"];
|
||||
// set_icon(logo);
|
||||
// Glib::Error err;
|
||||
// auto* native_er = err.gobj();
|
||||
// gtk_window_set_icon_from_file(this->gobj(), logo.c_str(), &native_er);
|
||||
|
||||
Gtk::Image* image;
|
||||
m_builder->get_widget("distriblogo", image);
|
||||
image->set(logo);
|
||||
// auto* image = m_builder->get_widget<Gtk::Image>("distriblogo");
|
||||
// image->set(logo);
|
||||
|
||||
Gtk::AboutDialog* dialog;
|
||||
m_builder->get_widget("aboutdialog", dialog);
|
||||
dialog->set_logo(logo);
|
||||
// auto* dialog = m_builder->get_widget<Gtk::AboutDialog>("aboutdialog");
|
||||
// dialog->set_logo(logo);
|
||||
}
|
||||
|
||||
Gtk::Box* social_box;
|
||||
m_builder->get_widget("social", social_box);
|
||||
/*
|
||||
auto* social_box = m_builder->get_widget<Gtk::Box>("social");
|
||||
for (const auto& btn : social_box->get_children()) {
|
||||
const auto& name = btn->get_name();
|
||||
const auto& icon_path = fmt::format("{}img/{}.png", m_preferences["data_path"], name.c_str());
|
||||
Gtk::Image* image;
|
||||
m_builder->get_widget(name, image);
|
||||
auto* image = m_builder->get_widget<Gtk::Image>(name);
|
||||
image->set(icon_path);
|
||||
}
|
||||
}*/
|
||||
|
||||
Gtk::Grid* homepage_grid;
|
||||
m_builder->get_widget("homepage", homepage_grid);
|
||||
/*auto* homepage_grid = m_builder->get_widget<Gtk::Grid>("homepage");
|
||||
for (const auto& widget : homepage_grid->get_children()) {
|
||||
if (!G_TYPE_CHECK_INSTANCE_TYPE(widget->gobj(), GTK_TYPE_BUTTON)) {
|
||||
continue;
|
||||
|
@ -221,29 +219,29 @@ Hello::Hello(int argc, char** argv) {
|
|||
image.set(image_path);
|
||||
image.set_margin_start(2);
|
||||
casted_widget->set_image(image);
|
||||
}
|
||||
}*/
|
||||
|
||||
// Create pages
|
||||
m_pages = fmt::format("{}pages/{}", m_preferences["data_path"], m_preferences["default_locale"]);
|
||||
|
||||
for (const auto& page : fs::directory_iterator(m_pages)) {
|
||||
auto* scrolled_window = gtk_scrolled_window_new(nullptr, nullptr);
|
||||
auto* scrolled_window = gtk_scrolled_window_new();
|
||||
auto* viewport = gtk_viewport_new(nullptr, nullptr);
|
||||
gtk_container_set_border_width(GTK_CONTAINER(viewport), 10);
|
||||
// gtk_container_set_border_width(GTK_CONTAINER(viewport), 10);
|
||||
auto* label = gtk_label_new(nullptr);
|
||||
gtk_label_set_line_wrap(GTK_LABEL(label), true);
|
||||
auto* image = gtk_image_new_from_icon_name("go-previous", GTK_ICON_SIZE_BUTTON);
|
||||
gtk_label_set_wrap(GTK_LABEL(label), true);
|
||||
auto* image = gtk_image_new_from_icon_name("go-previous");
|
||||
auto* backBtn = gtk_button_new();
|
||||
gtk_button_set_image(GTK_BUTTON(backBtn), image);
|
||||
gtk_button_set_child(GTK_BUTTON(backBtn), image);
|
||||
gtk_widget_set_name(backBtn, "home");
|
||||
g_signal_connect(backBtn, "clicked", G_CALLBACK(&on_btn_clicked), nullptr);
|
||||
|
||||
auto* grid = GTK_GRID(gtk_grid_new());
|
||||
gtk_grid_attach(grid, backBtn, 0, 1, 1, 1);
|
||||
gtk_grid_attach(grid, label, 1, 2, 1, 1);
|
||||
gtk_container_add(GTK_CONTAINER(viewport), GTK_WIDGET(grid));
|
||||
gtk_container_add(GTK_CONTAINER(scrolled_window), GTK_WIDGET(viewport));
|
||||
gtk_widget_show_all(scrolled_window);
|
||||
gtk_box_append(GTK_BOX(viewport), GTK_WIDGET(grid));
|
||||
gtk_box_append(GTK_BOX(scrolled_window), GTK_WIDGET(viewport));
|
||||
gtk_widget_show(scrolled_window);
|
||||
|
||||
Glib::RefPtr<Glib::Object> stack = m_builder->get_object("stack");
|
||||
const auto& child_name = page.path().filename().string() + "page";
|
||||
|
@ -252,26 +250,23 @@ Hello::Hello(int argc, char** argv) {
|
|||
|
||||
// Init translation
|
||||
const std::string& locale_path = m_preferences["locale_path"];
|
||||
setlocale(LC_ALL, "");
|
||||
bindtextdomain(m_app, locale_path.c_str());
|
||||
bind_textdomain_codeset(m_app, "UTF-8");
|
||||
textdomain(m_app);
|
||||
Gtk::ComboBoxText* languages;
|
||||
m_builder->get_widget("languages", languages);
|
||||
auto* languages = m_builder->get_widget<Gtk::ComboBoxText>("languages");
|
||||
languages->set_active_id(get_best_locale());
|
||||
|
||||
// Set autostart switcher state
|
||||
m_autostart = fs::exists(fix_path(m_preferences["autostart_path"]));
|
||||
Gtk::Switch* autostart_switch;
|
||||
m_builder->get_widget("autostart", autostart_switch);
|
||||
auto* autostart_switch = m_builder->get_widget<Gtk::Switch>("autostart");
|
||||
autostart_switch->set_active(m_autostart);
|
||||
|
||||
// Live systems
|
||||
if (fs::exists(m_preferences["live_path"]) && fs::is_regular_file(m_preferences["installer_path"])) {
|
||||
Gtk::Label* installlabel;
|
||||
m_builder->get_widget("installlabel", installlabel);
|
||||
auto* installlabel = m_builder->get_widget<Gtk::Label>("installlabel");
|
||||
installlabel->set_visible(true);
|
||||
Gtk::Button* install;
|
||||
m_builder->get_widget("install", install);
|
||||
auto* install = m_builder->get_widget<Gtk::Button>("install");
|
||||
install->set_visible(true);
|
||||
}
|
||||
}
|
||||
|
@ -361,8 +356,7 @@ void Hello::set_locale(const std::string_view& use_locale) noexcept {
|
|||
}
|
||||
for (const auto& elt : elts[method.key()].items()) {
|
||||
const std::string& elt_value = elt.value();
|
||||
Gtk::Widget* item;
|
||||
m_builder->get_widget(elt_value, item);
|
||||
auto* item = m_builder->get_widget<Gtk::Widget>(elt_value);
|
||||
if (!m_default_texts[method.key()].contains(elt_value)) {
|
||||
gchar* item_buf;
|
||||
g_object_get(G_OBJECT(item->gobj()), method.key().c_str(), &item_buf, nullptr);
|
||||
|
@ -377,19 +371,18 @@ void Hello::set_locale(const std::string_view& use_locale) noexcept {
|
|||
|
||||
// Change content of pages
|
||||
for (const auto& page : fs::directory_iterator(m_pages)) {
|
||||
Gtk::Stack* stack;
|
||||
m_builder->get_widget("stack", stack);
|
||||
auto* stack = m_builder->get_widget<Gtk::Stack>("stack");
|
||||
const auto& child = stack->get_child_by_name((page.path().filename().string() + "page").c_str());
|
||||
if (child == nullptr) {
|
||||
fmt::print(stderr, "child not found\n");
|
||||
continue;
|
||||
}
|
||||
const auto& first_child = reinterpret_cast<Gtk::Container*>(child)->get_children();
|
||||
const auto& second_child = reinterpret_cast<Gtk::Container*>(first_child[0])->get_children();
|
||||
const auto& third_child = reinterpret_cast<Gtk::Container*>(second_child[0])->get_children();
|
||||
// const auto& first_child = reinterpret_cast<Gtk::Container*>(child)->get_children();
|
||||
// const auto& second_child = reinterpret_cast<Gtk::Container*>(first_child[0])->get_children();
|
||||
// const auto& third_child = reinterpret_cast<Gtk::Container*>(second_child[0])->get_children();
|
||||
|
||||
const auto& label = reinterpret_cast<Gtk::Label*>(third_child[0]);
|
||||
label->set_markup(get_page(page.path().filename().string()));
|
||||
// const auto& label = reinterpret_cast<Gtk::Label*>(third_child[0]);
|
||||
// label->set_markup(get_page(page.path().filename().string()));
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -434,23 +427,20 @@ void Hello::on_action_clicked(GtkWidget* widget) noexcept {
|
|||
return;
|
||||
}
|
||||
|
||||
Gtk::AboutDialog* dialog;
|
||||
g_refHello->m_builder->get_widget("aboutdialog", dialog);
|
||||
auto* dialog = g_refHello->m_builder->get_widget<Gtk::AboutDialog>("aboutdialog");
|
||||
dialog->set_decorated(false);
|
||||
dialog->run();
|
||||
dialog->hide();
|
||||
}
|
||||
|
||||
void Hello::on_btn_clicked(GtkWidget* widget) noexcept {
|
||||
const auto& name = gtk_widget_get_name(widget);
|
||||
Gtk::Stack* stack;
|
||||
g_refHello->m_builder->get_widget("stack", stack);
|
||||
auto* stack = g_refHello->m_builder->get_widget<Gtk::Stack>("stack");
|
||||
stack->set_visible_child(fmt::format("{}page", name).c_str());
|
||||
}
|
||||
void Hello::on_link_clicked(GtkWidget* widget) noexcept {
|
||||
const auto& name = gtk_widget_get_name(widget);
|
||||
const std::string uri = g_refHello->m_preferences["urls"][name];
|
||||
gtk_show_uri_on_window(nullptr, uri.c_str(), GDK_CURRENT_TIME, nullptr);
|
||||
gtk_show_uri(nullptr, uri.c_str(), GDK_CURRENT_TIME);
|
||||
}
|
||||
void Hello::on_delete_window(GtkWidget* /*widget*/) noexcept {
|
||||
write_json(g_refHello->m_preferences["save_path"].get<std::string>(), g_refHello->m_save);
|
||||
|
|
|
@ -1,12 +1,32 @@
|
|||
#ifndef HELLO_HPP_
|
||||
#define HELLO_HPP_
|
||||
|
||||
#if defined(__clang__)
|
||||
#pragma clang diagnostic push
|
||||
#pragma clang diagnostic ignored "-Wold-style-cast"
|
||||
#pragma clang diagnostic ignored "-Wsign-conversion"
|
||||
#pragma clang diagnostic ignored "-Wdouble-promotion"
|
||||
#else
|
||||
#pragma GCC diagnostic push
|
||||
#pragma GCC diagnostic ignored "-Wold-style-cast"
|
||||
#pragma GCC diagnostic ignored "-Wdouble-promotion"
|
||||
#pragma GCC diagnostic ignored "-Wuseless-cast"
|
||||
#pragma GCC diagnostic ignored "-Wsign-conversion"
|
||||
#endif
|
||||
|
||||
#include <gtkmm.h>
|
||||
|
||||
#if defined(__clang__)
|
||||
#pragma clang diagnostic pop
|
||||
#else
|
||||
#pragma GCC diagnostic pop
|
||||
#endif
|
||||
|
||||
#include <json.hpp>
|
||||
|
||||
class Hello final : public Gtk::Window {
|
||||
public:
|
||||
Hello(int argc, char** argv);
|
||||
Hello(bool is_dev);
|
||||
|
||||
protected:
|
||||
// Handlers
|
||||
|
|
|
@ -3,8 +3,8 @@
|
|||
int main(int argc, char** argv) {
|
||||
auto app = Gtk::Application::create();
|
||||
|
||||
Hello hello(argc, argv);
|
||||
const bool is_dev = 1;
|
||||
|
||||
// Shows the window and returns when it is closed.
|
||||
return app->run(hello);
|
||||
return app->make_window_and_run<Hello>(argc, argv, is_dev);
|
||||
}
|
||||
|
|
|
@ -1,304 +1,240 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!-- Generated with glade 3.38.2
|
||||
|
||||
Copyright (C) 2021-2022 CachyOS team
|
||||
|
||||
This file is part of cachyos-welcome.
|
||||
|
||||
cachyos-welcome is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation, either version 3 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
cachyos-welcome is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with cachyos-welcome. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
-->
|
||||
<interface domain="cachyos-hello">
|
||||
<requires lib="gtk+" version="3.20"/>
|
||||
<!-- interface-css-provider-path style.css -->
|
||||
<!-- interface-license-type gplv3 -->
|
||||
<!-- interface-name cachyos-welcome -->
|
||||
<!-- interface-copyright 2021-2022 CachyOS team -->
|
||||
<interface>
|
||||
<requires lib="gtk" version="4.0"/>
|
||||
<object class="GtkImage" id="abouticon">
|
||||
<property name="visible">True</property>
|
||||
<property name="can-focus">False</property>
|
||||
<property name="icon-name">help-about</property>
|
||||
</object>
|
||||
<object class="GtkWindow" id="window">
|
||||
<property name="can-focus">False</property>
|
||||
<property name="window-position">center</property>
|
||||
<property name="default-width">800</property>
|
||||
<property name="default-height">500</property>
|
||||
<property name="has-resize-grip">True</property>
|
||||
<signal name="delete-event" handler="on_delete_window" swapped="no"/>
|
||||
<child>
|
||||
<property name="child">
|
||||
<object class="GtkStack" id="stack">
|
||||
<property name="visible">True</property>
|
||||
<property name="can-focus">False</property>
|
||||
<property name="hexpand">True</property>
|
||||
<property name="hexpand">1</property>
|
||||
<property name="transition-type">crossfade</property>
|
||||
<child>
|
||||
<!-- n-columns=3 n-rows=11 -->
|
||||
<object class="GtkStackPage">
|
||||
<property name="name">homepage</property>
|
||||
<property name="child">
|
||||
<object class="GtkGrid" id="homepage">
|
||||
<property name="visible">True</property>
|
||||
<property name="can-focus">False</property>
|
||||
<property name="margin-left">10</property>
|
||||
<property name="margin-right">10</property>
|
||||
<property name="margin-start">10</property>
|
||||
<property name="margin-end">10</property>
|
||||
<property name="margin-top">10</property>
|
||||
<property name="margin-bottom">10</property>
|
||||
<property name="row-spacing">20</property>
|
||||
<property name="column-spacing">10</property>
|
||||
<property name="column-homogeneous">True</property>
|
||||
<property name="column-homogeneous">1</property>
|
||||
<child>
|
||||
<object class="GtkImage" id="distriblogo">
|
||||
<property name="visible">True</property>
|
||||
<property name="can-focus">False</property>
|
||||
<layout>
|
||||
<property name="column">0</property>
|
||||
<property name="row">1</property>
|
||||
<property name="column-span">3</property>
|
||||
</layout>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="left-attach">0</property>
|
||||
<property name="top-attach">1</property>
|
||||
<property name="width">3</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkLabel" id="welcometitle">
|
||||
<property name="visible">True</property>
|
||||
<property name="can-focus">True</property>
|
||||
<property name="has-focus">True</property>
|
||||
<property name="label" translatable="yes">Welcome to CachyOS!</property>
|
||||
<property name="focusable">1</property>
|
||||
<property name="has-focus">1</property>
|
||||
<property name="label" translatable="1">Welcome to CachyOS!</property>
|
||||
<attributes>
|
||||
<attribute name="weight" value="bold"/>
|
||||
<attribute name="scale" value="2"/>
|
||||
<attribute name="weight" value="bold"></attribute>
|
||||
<attribute name="scale" value="2"></attribute>
|
||||
</attributes>
|
||||
<layout>
|
||||
<property name="column">0</property>
|
||||
<property name="row">2</property>
|
||||
<property name="column-span">3</property>
|
||||
</layout>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="left-attach">0</property>
|
||||
<property name="top-attach">2</property>
|
||||
<property name="width">3</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkLabel" id="welcomelabel">
|
||||
<property name="visible">True</property>
|
||||
<property name="can-focus">False</property>
|
||||
<property name="label" translatable="yes">Thank you for joining our community!
|
||||
<property name="label" translatable="1">Thank you for joining our community!
|
||||
|
||||
We, the CachyOS Developers, hope that you will enjoy using CachyOS as much as we enjoy building it. The links below will help you get started with your new operating system. So enjoy the experience, and don't hesitate to send us your feedback.</property>
|
||||
We, the CachyOS Developers, hope that you will enjoy using CachyOS as much as we enjoy building it. The links below will help you get started with your new operating system. So enjoy the experience, and don't hesitate to send us your feedback.</property>
|
||||
<property name="justify">fill</property>
|
||||
<property name="wrap">True</property>
|
||||
<property name="wrap">1</property>
|
||||
<property name="width-chars">1</property>
|
||||
<property name="max-width-chars">1</property>
|
||||
<layout>
|
||||
<property name="column">0</property>
|
||||
<property name="row">3</property>
|
||||
<property name="column-span">3</property>
|
||||
</layout>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="left-attach">0</property>
|
||||
<property name="top-attach">3</property>
|
||||
<property name="width">3</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkLabel" id="firstcategory">
|
||||
<property name="visible">True</property>
|
||||
<property name="can-focus">False</property>
|
||||
<property name="label" translatable="yes">DOCUMENTATION</property>
|
||||
<property name="label" translatable="1">DOCUMENTATION</property>
|
||||
<attributes>
|
||||
<attribute name="weight" value="bold"/>
|
||||
<attribute name="weight" value="bold"></attribute>
|
||||
</attributes>
|
||||
<layout>
|
||||
<property name="column">0</property>
|
||||
<property name="row">4</property>
|
||||
</layout>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="left-attach">0</property>
|
||||
<property name="top-attach">4</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkLabel" id="secondcategory">
|
||||
<property name="visible">True</property>
|
||||
<property name="can-focus">False</property>
|
||||
<property name="label" translatable="yes">SUPPORT</property>
|
||||
<property name="label" translatable="1">SUPPORT</property>
|
||||
<attributes>
|
||||
<attribute name="weight" value="bold"/>
|
||||
<attribute name="weight" value="bold"></attribute>
|
||||
</attributes>
|
||||
<layout>
|
||||
<property name="column">1</property>
|
||||
<property name="row">4</property>
|
||||
</layout>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="left-attach">1</property>
|
||||
<property name="top-attach">4</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkLabel" id="thirdcategory">
|
||||
<property name="visible">True</property>
|
||||
<property name="can-focus">False</property>
|
||||
<property name="label" translatable="yes">PROJECT</property>
|
||||
<property name="label" translatable="1">PROJECT</property>
|
||||
<attributes>
|
||||
<attribute name="weight" value="bold"/>
|
||||
<attribute name="weight" value="bold"></attribute>
|
||||
</attributes>
|
||||
<layout>
|
||||
<property name="column">2</property>
|
||||
<property name="row">4</property>
|
||||
</layout>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="left-attach">2</property>
|
||||
<property name="top-attach">4</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkButton" id="readme">
|
||||
<property name="label" translatable="yes">Read me</property>
|
||||
<property name="label" translatable="1">Read me</property>
|
||||
<property name="name">readme</property>
|
||||
<property name="visible">True</property>
|
||||
<property name="can-focus">False</property>
|
||||
<property name="receives-default">True</property>
|
||||
<property name="receives-default">1</property>
|
||||
<signal name="clicked" handler="on_btn_clicked" swapped="no"/>
|
||||
<layout>
|
||||
<property name="column">0</property>
|
||||
<property name="row">5</property>
|
||||
</layout>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="left-attach">0</property>
|
||||
<property name="top-attach">5</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkButton" id="release">
|
||||
<property name="label" translatable="yes">Release info</property>
|
||||
<property name="label" translatable="1">Release info</property>
|
||||
<property name="name">release</property>
|
||||
<property name="visible">True</property>
|
||||
<property name="can-focus">False</property>
|
||||
<property name="receives-default">True</property>
|
||||
<property name="receives-default">1</property>
|
||||
<property name="always-show-image">True</property>
|
||||
<signal name="clicked" handler="on_btn_clicked" swapped="no"/>
|
||||
<layout>
|
||||
<property name="column">0</property>
|
||||
<property name="row">6</property>
|
||||
</layout>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="left-attach">0</property>
|
||||
<property name="top-attach">6</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkButton" id="wiki">
|
||||
<property name="label" translatable="yes">Wiki</property>
|
||||
<property name="label" translatable="1">Wiki</property>
|
||||
<property name="name">wiki</property>
|
||||
<property name="visible">True</property>
|
||||
<property name="can-focus">False</property>
|
||||
<property name="receives-default">True</property>
|
||||
<property name="tooltip-text" translatable="yes">Web resource</property>
|
||||
<property name="receives-default">1</property>
|
||||
<property name="tooltip-text" translatable="1">Web resource</property>
|
||||
<property name="image-position">right</property>
|
||||
<property name="always-show-image">True</property>
|
||||
<signal name="clicked" handler="on_link_clicked" swapped="no"/>
|
||||
<layout>
|
||||
<property name="column">0</property>
|
||||
<property name="row">7</property>
|
||||
</layout>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="left-attach">0</property>
|
||||
<property name="top-attach">7</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkButton" id="involved">
|
||||
<property name="label" translatable="yes">Get involved</property>
|
||||
<property name="label" translatable="1">Get involved</property>
|
||||
<property name="name">involved</property>
|
||||
<property name="visible">True</property>
|
||||
<property name="can-focus">False</property>
|
||||
<property name="receives-default">True</property>
|
||||
<property name="receives-default">1</property>
|
||||
<signal name="clicked" handler="on_btn_clicked" swapped="no"/>
|
||||
<layout>
|
||||
<property name="column">2</property>
|
||||
<property name="row">5</property>
|
||||
</layout>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="left-attach">2</property>
|
||||
<property name="top-attach">5</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkButton" id="forum">
|
||||
<property name="label" translatable="yes">Forums</property>
|
||||
<property name="label" translatable="1">Forums</property>
|
||||
<property name="name">forum</property>
|
||||
<property name="visible">True</property>
|
||||
<property name="can-focus">False</property>
|
||||
<property name="receives-default">True</property>
|
||||
<property name="tooltip-text" translatable="yes">Web resource</property>
|
||||
<property name="receives-default">1</property>
|
||||
<property name="tooltip-text" translatable="1">Web resource</property>
|
||||
<property name="image-position">right</property>
|
||||
<property name="always-show-image">True</property>
|
||||
<signal name="clicked" handler="on_link_clicked" swapped="no"/>
|
||||
<layout>
|
||||
<property name="column">1</property>
|
||||
<property name="row">5</property>
|
||||
</layout>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="left-attach">1</property>
|
||||
<property name="top-attach">5</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkButton" id="discover">
|
||||
<property name="label" translatable="yes">Discover software</property>
|
||||
<property name="label" translatable="1">Discover software</property>
|
||||
<property name="name">discover</property>
|
||||
<property name="visible">True</property>
|
||||
<property name="can-focus">False</property>
|
||||
<property name="receives-default">True</property>
|
||||
<property name="tooltip-text" translatable="yes">Web resource</property>
|
||||
<property name="receives-default">1</property>
|
||||
<property name="tooltip-text" translatable="1">Web resource</property>
|
||||
<property name="image-position">right</property>
|
||||
<property name="always-show-image">True</property>
|
||||
<signal name="clicked" handler="on_link_clicked" swapped="no"/>
|
||||
<layout>
|
||||
<property name="column">1</property>
|
||||
<property name="row">6</property>
|
||||
</layout>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="left-attach">1</property>
|
||||
<property name="top-attach">6</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkButton" id="mailling">
|
||||
<property name="label" translatable="yes">Mailing lists</property>
|
||||
<property name="label" translatable="1">Mailing lists</property>
|
||||
<property name="name">mailling</property>
|
||||
<property name="visible">True</property>
|
||||
<property name="can-focus">False</property>
|
||||
<property name="receives-default">True</property>
|
||||
<property name="tooltip-text" translatable="yes">Web resource</property>
|
||||
<property name="receives-default">1</property>
|
||||
<property name="tooltip-text" translatable="1">Web resource</property>
|
||||
<property name="image-position">right</property>
|
||||
<property name="always-show-image">True</property>
|
||||
<signal name="clicked" handler="on_link_clicked" swapped="no"/>
|
||||
<layout>
|
||||
<property name="column">1</property>
|
||||
<property name="row">7</property>
|
||||
</layout>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="left-attach">1</property>
|
||||
<property name="top-attach">7</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkButton" id="development">
|
||||
<property name="label" translatable="yes">Development</property>
|
||||
<property name="label" translatable="1">Development</property>
|
||||
<property name="name">development</property>
|
||||
<property name="visible">True</property>
|
||||
<property name="can-focus">False</property>
|
||||
<property name="receives-default">True</property>
|
||||
<property name="tooltip-text" translatable="yes">Web resource</property>
|
||||
<property name="receives-default">1</property>
|
||||
<property name="tooltip-text" translatable="1">Web resource</property>
|
||||
<property name="image-position">right</property>
|
||||
<property name="always-show-image">True</property>
|
||||
<signal name="clicked" handler="on_link_clicked" swapped="no"/>
|
||||
<layout>
|
||||
<property name="column">2</property>
|
||||
<property name="row">6</property>
|
||||
</layout>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="left-attach">2</property>
|
||||
<property name="top-attach">6</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkButton" id="donate">
|
||||
<property name="label" translatable="yes">Donate</property>
|
||||
<property name="label" translatable="1">Donate</property>
|
||||
<property name="name">donate</property>
|
||||
<property name="visible">True</property>
|
||||
<property name="can-focus">False</property>
|
||||
<property name="receives-default">True</property>
|
||||
<property name="tooltip-text" translatable="yes">Web resource</property>
|
||||
<property name="receives-default">1</property>
|
||||
<property name="tooltip-text" translatable="1">Web resource</property>
|
||||
<property name="image-position">right</property>
|
||||
<property name="always-show-image">True</property>
|
||||
<signal name="clicked" handler="on_link_clicked" swapped="no"/>
|
||||
<layout>
|
||||
<property name="column">2</property>
|
||||
<property name="row">7</property>
|
||||
</layout>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="left-attach">2</property>
|
||||
<property name="top-attach">7</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkBox">
|
||||
<property name="visible">True</property>
|
||||
<property name="can-focus">False</property>
|
||||
<property name="valign">end</property>
|
||||
<property name="vexpand">True</property>
|
||||
<property name="vexpand">1</property>
|
||||
<property name="spacing">10</property>
|
||||
<child>
|
||||
<object class="GtkComboBoxText" id="languages">
|
||||
<property name="visible">True</property>
|
||||
<property name="can-focus">False</property>
|
||||
<items>
|
||||
<item id="sq">Albanian</item>
|
||||
<item id="ar">Arabic</item>
|
||||
|
@ -348,112 +284,97 @@ We, the CachyOS Developers, hope that you will enjoy using CachyOS as much as we
|
|||
</items>
|
||||
<signal name="changed" handler="on_languages_changed" swapped="no"/>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="expand">False</property>
|
||||
<property name="fill">True</property>
|
||||
<property name="position">0</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkLabel" id="autostartlabel">
|
||||
<property name="visible">True</property>
|
||||
<property name="can-focus">False</property>
|
||||
<property name="hexpand">1</property>
|
||||
<property name="halign">end</property>
|
||||
<property name="valign">center</property>
|
||||
<property name="vexpand">True</property>
|
||||
<property name="label" translatable="yes">Launch at start</property>
|
||||
<property name="vexpand">1</property>
|
||||
<property name="label" translatable="1">Launch at start</property>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="expand">True</property>
|
||||
<property name="fill">True</property>
|
||||
<property name="position">1</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkSwitch" id="autostart">
|
||||
<property name="halign">center</property>
|
||||
<property name="name">autostart</property>
|
||||
<property name="visible">True</property>
|
||||
<property name="can-focus">True</property>
|
||||
<property name="focusable">1</property>
|
||||
<property name="valign">center</property>
|
||||
<property name="vexpand">True</property>
|
||||
<property name="vexpand">1</property>
|
||||
<signal name="notify::active" handler="on_action_clicked" swapped="no"/>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="expand">False</property>
|
||||
<property name="fill">False</property>
|
||||
<property name="position">2</property>
|
||||
</packing>
|
||||
</child>
|
||||
<layout>
|
||||
<property name="column">0</property>
|
||||
<property name="row">10</property>
|
||||
<property name="column-span">3</property>
|
||||
</layout>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="left-attach">0</property>
|
||||
<property name="top-attach">10</property>
|
||||
<property name="width">3</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkLabel" id="installlabel">
|
||||
<property name="can-focus">False</property>
|
||||
<property name="label" translatable="yes">INSTALLATION</property>
|
||||
<property name="visible">0</property>
|
||||
<property name="label" translatable="1">INSTALLATION</property>
|
||||
<attributes>
|
||||
<attribute name="weight" value="bold"/>
|
||||
<attribute name="weight" value="bold"></attribute>
|
||||
</attributes>
|
||||
<layout>
|
||||
<property name="column">1</property>
|
||||
<property name="row">8</property>
|
||||
</layout>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="left-attach">1</property>
|
||||
<property name="top-attach">8</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkButton" id="install">
|
||||
<property name="label" translatable="yes">Launch installer</property>
|
||||
<property name="visible">0</property>
|
||||
<property name="label" translatable="1">Launch installer</property>
|
||||
<property name="name">install</property>
|
||||
<property name="can-focus">False</property>
|
||||
<property name="receives-default">True</property>
|
||||
<property name="receives-default">1</property>
|
||||
<signal name="clicked" handler="on_action_clicked" swapped="no"/>
|
||||
<layout>
|
||||
<property name="column">1</property>
|
||||
<property name="row">9</property>
|
||||
</layout>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="left-attach">1</property>
|
||||
<property name="top-attach">9</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkBox">
|
||||
<property name="name">boxPlugins</property>
|
||||
<property name="visible">True</property>
|
||||
<property name="can-focus">False</property>
|
||||
<property name="homogeneous">True</property>
|
||||
<property name="homogeneous">1</property>
|
||||
<child>
|
||||
<object class="GtkButton" id="appBrowser">
|
||||
<property name="label" translatable="yes">Applications</property>
|
||||
<property name="hexpand">1</property>
|
||||
<property name="visible">0</property>
|
||||
<property name="label" translatable="1">Applications</property>
|
||||
<property name="name">appBrowser</property>
|
||||
<property name="can-focus">False</property>
|
||||
<property name="receives-default">True</property>
|
||||
<property name="tooltip-text" translatable="yes">Common application selection</property>
|
||||
<property name="margin-left">15</property>
|
||||
<property name="margin-right">15</property>
|
||||
<property name="receives-default">1</property>
|
||||
<property name="tooltip-text" translatable="1">Common application selection</property>
|
||||
<property name="margin-start">15</property>
|
||||
<property name="margin-end">15</property>
|
||||
<signal name="clicked" handler="on_btn_clicked" swapped="no"/>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="expand">True</property>
|
||||
<property name="fill">True</property>
|
||||
<property name="position">0</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<placeholder/>
|
||||
</child>
|
||||
<object class="GtkButton" id="appLayouts">
|
||||
<property name="visible">0</property>
|
||||
<property name="label" translatable="1">Gnome Layouts Manager</property>
|
||||
<property name="name">appLayouts</property>
|
||||
<property name="receives-default">1</property>
|
||||
<property name="tooltip-text" translatable="1">CachyOS Gnome config tool</property>
|
||||
<property name="margin-start">15</property>
|
||||
<property name="margin-end">15</property>
|
||||
<signal name="clicked" handler="on_btn_clicked" swapped="no"/>
|
||||
</object>
|
||||
</child>
|
||||
<layout>
|
||||
<property name="column">0</property>
|
||||
<property name="row">9</property>
|
||||
<property name="column-span">3</property>
|
||||
</layout>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="left-attach">0</property>
|
||||
<property name="top-attach">9</property>
|
||||
<property name="width">3</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkBox" id="social">
|
||||
<property name="visible">True</property>
|
||||
<property name="can-focus">False</property>
|
||||
<property name="halign">center</property>
|
||||
<property name="valign">end</property>
|
||||
<property name="spacing">10</property>
|
||||
|
@ -465,23 +386,36 @@ We, the CachyOS Developers, hope that you will enjoy using CachyOS as much as we
|
|||
<signal name="button-press-event" handler="on_link_clicked" swapped="no"/>
|
||||
<child>
|
||||
<object class="GtkImage" id="telegram">
|
||||
<property name="visible">True</property>
|
||||
<property name="can-focus">False</property>
|
||||
<property name="tooltip-text">Telegram</property>
|
||||
</object>
|
||||
</child>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="expand">False</property>
|
||||
<property name="fill">True</property>
|
||||
<property name="position">0</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<placeholder/>
|
||||
<object class="GtkEventBox">
|
||||
<property name="name">facebook</property>
|
||||
<property name="visible">True</property>
|
||||
<property name="can-focus">False</property>
|
||||
<signal name="button-press-event" handler="on_link_clicked" swapped="no"/>
|
||||
<child>
|
||||
<object class="GtkImage" id="facebook">
|
||||
<property name="tooltip-text">Facebook</property>
|
||||
</object>
|
||||
</child>
|
||||
</object>
|
||||
</child>
|
||||
<child>
|
||||
<placeholder/>
|
||||
<object class="GtkEventBox">
|
||||
<property name="name">twitter</property>
|
||||
<property name="visible">True</property>
|
||||
<property name="can-focus">False</property>
|
||||
<signal name="button-press-event" handler="on_link_clicked" swapped="no"/>
|
||||
<child>
|
||||
<object class="GtkImage" id="twitter">
|
||||
<property name="tooltip-text">Twitter</property>
|
||||
</object>
|
||||
</child>
|
||||
</object>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkEventBox">
|
||||
|
@ -491,26 +425,19 @@ We, the CachyOS Developers, hope that you will enjoy using CachyOS as much as we
|
|||
<signal name="button-press-event" handler="on_link_clicked" swapped="no"/>
|
||||
<child>
|
||||
<object class="GtkImage" id="reddit">
|
||||
<property name="visible">True</property>
|
||||
<property name="can-focus">False</property>
|
||||
<property name="tooltip-text">Reddit</property>
|
||||
</object>
|
||||
</child>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="expand">False</property>
|
||||
<property name="fill">True</property>
|
||||
<property name="position">3</property>
|
||||
</packing>
|
||||
</child>
|
||||
<style>
|
||||
<class name="social"/>
|
||||
</style>
|
||||
<layout>
|
||||
<property name="column">1</property>
|
||||
<property name="row">10</property>
|
||||
</layout>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="left-attach">1</property>
|
||||
<property name="top-attach">10</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<placeholder/>
|
||||
|
@ -531,35 +458,25 @@ We, the CachyOS Developers, hope that you will enjoy using CachyOS as much as we
|
|||
<class name="homepage"/>
|
||||
</style>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="name">homepage</property>
|
||||
</packing>
|
||||
</child>
|
||||
</property>
|
||||
</object>
|
||||
</child>
|
||||
</object>
|
||||
</property>
|
||||
<child type="titlebar">
|
||||
<object class="GtkHeaderBar" id="headerbar">
|
||||
<property name="visible">True</property>
|
||||
<property name="can-focus">False</property>
|
||||
<property name="title">CachyOS Hello</property>
|
||||
<property name="show-close-button">True</property>
|
||||
<child>
|
||||
<placeholder/>
|
||||
</child>
|
||||
<child>
|
||||
<child type="end">
|
||||
<object class="GtkButton" id="about">
|
||||
<property name="name">about</property>
|
||||
<property name="visible">True</property>
|
||||
<property name="can-focus">False</property>
|
||||
<property name="receives-default">True</property>
|
||||
<property name="tooltip-text" translatable="yes">About</property>
|
||||
<property name="receives-default">1</property>
|
||||
<property name="tooltip-text" translatable="1">About</property>
|
||||
<property name="image">abouticon</property>
|
||||
<signal name="clicked" handler="on_action_clicked" swapped="no"/>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="pack-type">end</property>
|
||||
<property name="position">1</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<placeholder/>
|
||||
|
@ -568,13 +485,12 @@ We, the CachyOS Developers, hope that you will enjoy using CachyOS as much as we
|
|||
</child>
|
||||
</object>
|
||||
<object class="GtkAboutDialog" id="aboutdialog">
|
||||
<property name="can-focus">False</property>
|
||||
<property name="title" translatable="yes">About</property>
|
||||
<property name="title" translatable="1">About</property>
|
||||
<property name="type-hint">dialog</property>
|
||||
<property name="transient-for">window</property>
|
||||
<property name="program-name">CachyOS Hello</property>
|
||||
<property name="version">0.6.10</property>
|
||||
<property name="comments" translatable="yes">Welcome screen for CachyOS</property>
|
||||
<property name="version">0.6.8</property>
|
||||
<property name="comments" translatable="1">Welcome screen for CachyOS</property>
|
||||
<property name="website">https://github.com/cachyos/cachyos-welcome</property>
|
||||
<property name="website-label">GitHub</property>
|
||||
<property name="authors">Hugo Posnic
|
||||
|
@ -616,24 +532,21 @@ Stefano Capitani
|
|||
Stéphane
|
||||
Πέτρος Σαμαράς
|
||||
Андрей Раугас</property>
|
||||
<property name="logo-icon-name"/>
|
||||
<property name="logo-icon-name"></property>
|
||||
<property name="license-type">gpl-3-0</property>
|
||||
<child internal-child="vbox">
|
||||
<object class="GtkBox">
|
||||
<property name="can-focus">True</property>
|
||||
<property name="has-focus">True</property>
|
||||
<property name="visible">0</property>
|
||||
<property name="focusable">1</property>
|
||||
<property name="has-focus">1</property>
|
||||
<property name="orientation">vertical</property>
|
||||
<property name="spacing">2</property>
|
||||
<child internal-child="action_area">
|
||||
<object class="GtkButtonBox">
|
||||
<property name="valign">center</property>
|
||||
<property name="can-focus">False</property>
|
||||
<property name="layout-style">end</property>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="expand">False</property>
|
||||
<property name="fill">False</property>
|
||||
<property name="position">0</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<placeholder/>
|
||||
|
|
Loading…
Reference in New Issue