view src/main.rs @ 17:0bce7fe96937

Add a client, copy of the GTK interface.
author Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
date Thu, 26 Aug 2021 22:00:55 +0200
parents 478cf2a7d577
children
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;
#[cfg(feature = "gui")]
mod client;
mod server;
mod state;
mod uinput;

pub use server::Event;

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,
    Client,
}

fn main() {
    let mut args: Vec<_> = args().collect();
    let ui = match if args.len() > 1 {
        args.remove(1)
    } else {
        String::from("client")
    }
    .as_str()
    {
        "gui" => Ui::Gtk,
        "server" => Ui::Server,
        "client" => Ui::Client,
        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),
        Ui::Client => client::main(&args),
    }
}