diff options
| author | 2022-06-17 08:59:51 -0400 | |
|---|---|---|
| committer | 2022-06-17 08:59:51 -0400 | |
| commit | 2a3614cf0cf5229e7f8dba0fe5ad44de15b1b331 (patch) | |
| tree | 6eb3fa4aef7748da8c9cf35a6e69123bd28f3e76 /src/gui.rs | |
| download | portaltools-2a3614cf0cf5229e7f8dba0fe5ad44de15b1b331.tar.gz portaltools-2a3614cf0cf5229e7f8dba0fe5ad44de15b1b331.zip | |
reupload
Diffstat (limited to 'src/gui.rs')
| -rw-r--r-- | src/gui.rs | 147 |
1 files changed, 147 insertions, 0 deletions
diff --git a/src/gui.rs b/src/gui.rs new file mode 100644 index 0000000..a3b80e4 --- /dev/null +++ b/src/gui.rs @@ -0,0 +1,147 @@ +use native_windows_derive::NwgUi; +use native_windows_gui::*; + +#[derive(NwgUi, Default)] +pub struct PortalTools { + // layout and window + #[nwg_control(flags: "WINDOW|VISIBLE", size: (420, 200), title: "Portal Tools")] + pub window: Window, + + #[nwg_layout(parent: window, spacing: 2)] + layout: GridLayout, + + // blue color + #[nwg_control(text: "Blue")] + #[nwg_layout_item(layout: layout, row: 0, col: 0)] + _blue_label: Label, + + #[nwg_control(text: "40a0ff")] + #[nwg_layout_item(layout: layout, row: 0, col: 1, col_span: 3)] + pub blue_box: TextInput, + + #[nwg_layout_item(layout: layout, row: 0, col: 4)] + #[nwg_control(text: "Pick")] + #[nwg_events(OnButtonClick: [PortalTools::pick_blue])] + _blue_button: Button, + + // orange color + #[nwg_control(text: "Orange")] + #[nwg_layout_item(layout: layout, row: 1, col: 0)] + _orange_label: Label, + + #[nwg_control(parent: window, text: "ffa020")] + #[nwg_layout_item(layout: layout, row: 1, col: 1, col_span: 3)] + pub orange_box: TextInput, + + #[nwg_layout_item(layout: layout, row: 1, col: 4)] + #[nwg_control(text: "Pick")] + #[nwg_events(OnButtonClick: [PortalTools::pick_orange])] + _orange_button: Button, + + // prop carry color + #[nwg_control(text: "Carry")] + #[nwg_layout_item(layout: layout, row: 2, col: 0)] + _carry_label: Label, + + #[nwg_control(parent: window, text: "f2caa7")] + #[nwg_layout_item(layout: layout, row: 2, col: 1, col_span: 3)] + pub carry_box: TextInput, + + #[nwg_layout_item(layout: layout, row: 2, col: 4)] + #[nwg_control(text: "Pick")] + #[nwg_events(OnButtonClick: [PortalTools::pick_carry])] + _carry_button: Button, + + // gun color + #[nwg_control(text: "Portal Gun")] + #[nwg_layout_item(layout: layout, row: 3, col: 0)] + _gun_label: Label, + + #[nwg_control(parent: window, text: "ffffff")] + #[nwg_layout_item(layout: layout, row: 3, col: 1, col_span: 3)] + pub gun_box: TextInput, + + #[nwg_layout_item(layout: layout, row: 3, col: 4)] + #[nwg_control(text: "Pick")] + #[nwg_events(OnButtonClick: [PortalTools::pick_gun])] + _gun_button: Button, + + // game dir + #[nwg_control(text: "Game")] + #[nwg_layout_item(layout: layout, row: 4, col: 0)] + _game_label: Label, + + #[nwg_control(parent: window, text: "")] + #[nwg_layout_item(layout: layout, row: 4, col: 1, col_span: 3)] + pub game_box: TextInput, + + #[nwg_layout_item(layout: layout, row: 4, col: 4)] + #[nwg_control(text: "Browse")] + #[nwg_events(OnButtonClick: [PortalTools::pick_game])] + _game_button: Button, + + // options and apply button + #[nwg_layout_item(layout: layout, row: 5, col: 1)] + #[nwg_control(text: "Crosshair")] + pub crosshair_check: CheckBox, + + #[nwg_layout_item(layout: layout, row: 5, col: 2)] + #[nwg_control(text: "Portals")] + pub portals_check: CheckBox, + + #[nwg_layout_item(layout: layout, row: 5, col: 3)] + #[nwg_control(text: "Particles")] + pub particles_check: CheckBox, + + #[nwg_layout_item(layout: layout, row: 5, col: 4)] + #[nwg_control(text: "Portal Gun")] + pub gun_check: CheckBox, + + #[nwg_layout_item(layout: layout, row: 5, col: 0)] + #[nwg_control(text: "Apply")] + #[nwg_events(OnButtonClick: [PortalTools::apply])] + apply_button: Button, + + #[nwg_resource] + picker: ColorDialog, + + #[nwg_resource(action: FileDialogAction::OpenDirectory, multiselect: false)] + browser: FileDialog, +} + +impl PortalTools { + fn pick_blue(&self) { + if self.picker.run(Some(&self.window)) { + let c = self.picker.color(); + self.blue_box + .set_text(&format!("{:02x}{:02x}{:02x}", c[0], c[1], c[2])); + } + } + fn pick_orange(&self) { + if self.picker.run(Some(&self.window)) { + let c = self.picker.color(); + self.orange_box + .set_text(&format!("{:02x}{:02x}{:02x}", c[0], c[1], c[2])); + } + } + fn pick_carry(&self) { + if self.picker.run(Some(&self.window)) { + let c = self.picker.color(); + self.carry_box + .set_text(&format!("{:02x}{:02x}{:02x}", c[0], c[1], c[2])); + } + } + fn pick_gun(&self) { + if self.picker.run(Some(&self.window)) { + let c = self.picker.color(); + self.gun_box + .set_text(&format!("{:02x}{:02x}{:02x}", c[0], c[1], c[2])); + } + } + fn pick_game(&self) { + if self.browser.run(Some(&self.window)) { + let path = self.browser.get_selected_item().unwrap(); + self.game_box.set_text(path.to_str().unwrap()); + } + } +} |
