view src/main.rs @ 15:d103f7cca0bd

Update to GTK 4.
author Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
date Thu, 26 Aug 2021 19:34:40 +0200
parents adab13145994
children 478cf2a7d577
line wrap: on
line source

// Tablet emulator, for people who don’t own one
// Copyright © 2020 Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
//
// This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU Affero 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 Affero General Public License for more details.
//
// You should have received a copy of the GNU Affero General Public License
// along with this program.  If not, see <https://www.gnu.org/licenses/>.

#[cfg(feature = "gui")]
mod gtk;
mod server;
mod uinput;
mod state;

use std::env::args;

const MAX_X: i32 = 69920;
const MAX_Y: i32 = 39980;

const DEFAULT_WIDTH: i32 = 320;
const DEFAULT_HEIGHT: i32 = 180;

#[derive(Debug)]
enum Ui {
    Gtk,
    Server,
}

fn main() {
    let mut args: Vec<_> = args().collect();
    let ui = match if args.len() > 1 {
        args.remove(1)
    } else {
        String::from("gui")
    }.as_str() {
        "gui" => Ui::Gtk,
        "server" => Ui::Server,
        name => {
            eprintln!("Wrong UI “{}”, expected gui or server.", name);
            std::process::exit(2);
        }
    };

    match ui {
        #[cfg(feature = "gui")]
        Ui::Gtk => gtk::main(&args),

        #[cfg(not(feature = "gui"))]
        Ui::Gtk => panic!("tablet-emu has been compiled without GUI support."),

        Ui::Server => server::main(&args),
    }
}