orbclient_window_shortcuts

Crates.ioorbclient_window_shortcuts
lib.rsorbclient_window_shortcuts
version0.1.5
sourcesrc
created_at2017-06-28 23:48:21.826073
updated_at2017-06-30 19:24:15.65776
descriptionShortcut support for orbclient::Window
homepagehttps://github.com/aspera-non-spernit
repositoryhttps://github.com/aspera-non-spernit/orbclient_window_shortcuts
max_upload_size
id21151
size14,492
aSpErA nOn SpErNiT (aspera-non-spernit)

documentation

https://docs.rs/crate/orbclient_window_shortcuts/

README

Orbclient Window Shortcuts

crates.io Build Status License: MIT

Description

Shortcut support for orbclient::Window

The library makes used of:

#![feature(vec_remove_item)]

and therefore requires to be build with rust nightly. The default branch to be cloned from is 'testing'. Crates.io is the reliable source for a working lib. The documentation may not build and cause a failed build badge.

Please see: recent build logs for more details.

Prerequisites

The orbclient requires sdl2 or orbital (redox os) to run, and may not be installed on your system. On Arch Linux your can use pacman to install libsdl2.

$ pacman -Syu sdl2

On Ubuntu you may install libsdl2 from a 3rd party or compile it from sources:

$ apt-get install libsdl2-dev
# wget https://www.libsdl.org/release/SDL2-2.0.5.tar.gz -O SDL2-2.0.5.tar.gz
# tar -xzvf SDL2-2.0.5.tar.gz
$ cd SDL2-2.0.5 && ./configure && make && sudo make install

Implementation

The lib is available on creates.io. In your Cargo.toml:

orbclient_window_shortcuts = "0.1.5"

In your lib or bin code:

use shortcut::{Shortcut, ShortcutId, ShortcutEq};

Implementation for your Window application:

// Provides the capturing of default shortcuts: CTRL+O (Open), CTRL+N (New), CTRL-Q (Quit)
let mut sceq = ShortcutEq::with_defaults();

In a loop to capture window events implement EventOption::Key(ke):

Every keystroke that's a supported shortcut will return a ShortcutId::{New, Open, Quit}, which can be matched.

events: loop {
    for event in window.events() {
        match event.to_option() {
            EventOption::Key(ke) => match sceq.update(ke) {
                Some(sc) => {
                    // Sample action
                    if PartialEq::eq(sc, &ShortcutId::Quit) { break 'events }
                None => {...},
           },
           ...

The future and potential features

  • Generic support to window specific shortcuts
  • Enabling & disabling a set of shortcuts (adding and removing to supported shortcuts)
  • Refacturing to a more rust idiomatic code
  • A descriptive approach to declare shortcuts

I take any advice and ideas which I will considere when my rust programming capabilities improve. :)

Contribution

Very much appreciated. Please file bug, enahncement or question issues, or fork and request pulls. Thank you very much.

Sorry

I am relatively new to rust and discover new things everyday. I apologise for the multiple versions per day on crates.io failed builds, wrong badges, version numbers etc. :)

Commit count: 0

cargo fmt