mirror of
https://github.com/Cyrix126/gupaxx.git
synced 2025-01-18 11:54:40 +00:00
045dd7ab03
The original sources, while well documented, had files with over 2.5K LoC. Separating the logic in different modules add clarity making the code easier to work with.
98 lines
3.2 KiB
Rust
98 lines
3.2 KiB
Rust
// Gupax - GUI Uniting P2Pool And XMRig
|
|
//
|
|
// Copyright (c) 2022-2023 hinto-janai
|
|
//
|
|
// This program 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.
|
|
//
|
|
// This program 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 this program. If not, see <https://www.gnu.org/licenses/>.
|
|
|
|
// Hide console in Windows
|
|
#![cfg_attr(not(debug_assertions), windows_subsystem = "windows")]
|
|
|
|
// Only (windows|macos|linux) + (x64|arm64) are supported.
|
|
#[cfg(not(target_pointer_width = "64"))]
|
|
compile_error!("gupax is only compatible with 64-bit CPUs");
|
|
|
|
#[cfg(not(any(target_os = "windows", target_os = "macos", target_os = "linux",)))]
|
|
compile_error!("gupax is only built for windows/macos/linux");
|
|
|
|
use crate::app::App;
|
|
//---------------------------------------------------------------------------------------------------- Imports
|
|
use crate::constants::*;
|
|
use crate::inits::init_auto;
|
|
use crate::inits::init_logger;
|
|
use crate::inits::init_options;
|
|
use crate::miscs::clean_dir;
|
|
use crate::utils::*;
|
|
use egui::Vec2;
|
|
use log::info;
|
|
use log::warn;
|
|
use std::time::Instant;
|
|
|
|
mod app;
|
|
mod components;
|
|
mod disk;
|
|
mod helper;
|
|
mod inits;
|
|
mod miscs;
|
|
mod utils;
|
|
|
|
// Sudo (dummy values for Windows)
|
|
#[cfg(target_family = "unix")]
|
|
extern crate sudo as sudo_check;
|
|
|
|
//---------------------------------------------------------------------------------------------------- Main [App] frame
|
|
fn main() {
|
|
let now = Instant::now();
|
|
|
|
// Set custom panic hook.
|
|
crate::panic::set_panic_hook(now);
|
|
|
|
// Init logger.
|
|
init_logger(now);
|
|
let mut app = App::new(now);
|
|
init_auto(&mut app);
|
|
|
|
// Init GUI stuff.
|
|
let selected_width = app.state.gupax.selected_width as f32;
|
|
let selected_height = app.state.gupax.selected_height as f32;
|
|
let initial_window_size = if selected_width > APP_MAX_WIDTH || selected_height > APP_MAX_HEIGHT
|
|
{
|
|
warn!("App | Set width or height was greater than the maximum! Starting with the default resolution...");
|
|
Some(Vec2::new(APP_DEFAULT_WIDTH, APP_DEFAULT_HEIGHT))
|
|
} else {
|
|
Some(Vec2::new(
|
|
app.state.gupax.selected_width as f32,
|
|
app.state.gupax.selected_height as f32,
|
|
))
|
|
};
|
|
let options = init_options(initial_window_size);
|
|
|
|
// Gupax folder cleanup.
|
|
match clean_dir() {
|
|
Ok(_) => info!("Temporary folder cleanup ... OK"),
|
|
Err(e) => warn!("Could not cleanup [gupax_tmp] folders: {}", e),
|
|
}
|
|
|
|
let resolution = Vec2::new(selected_width, selected_height);
|
|
|
|
// Run Gupax.
|
|
info!("/*************************************/ Init ... OK /*************************************/");
|
|
let _ = eframe::run_native(
|
|
&app.name_version.clone(),
|
|
options,
|
|
Box::new(move |cc| {
|
|
egui_extras::install_image_loaders(&cc.egui_ctx);
|
|
Box::new(App::cc(cc, resolution, app))
|
|
}),
|
|
);
|
|
}
|