From 7a0538ba2b26a947da88f010b85e3e07981cdb04 Mon Sep 17 00:00:00 2001 From: Dane Johnson Date: Tue, 3 May 2022 16:36:46 -0500 Subject: [PATCH] Label browser --- board.zip | Bin 511876 -> 511899 bytes src/main.rs | 45 ++++++++++++++++++++++++++++++++++++++++++--- 2 files changed, 42 insertions(+), 3 deletions(-) diff --git a/board.zip b/board.zip index bc4d9b841250a7433d23d16eb7f7e78716347efd..12a1a2798e731fe5a6791067cfc06e26db920035 100644 GIT binary patch delta 484 zcmZpfFF$*}e0_j7Gm8iV0|N)cmBz&(Rl63J=rJ-dTxDWl-~x)K7bO;C=w%h>=ha?{ z^*(GM!uDW)P?4-krk~xd-JJKdERJ?>>^^fW@=eqUB`f#;yE9K*ib(X;l*y30H+i!0 zt1stD+(YJHTzqr8bN?&eUGi(H^~2bcZ-@69MDfp$+$(GNs=obLi*M1dn#Hs3Oj)WT zD%x;Sb4ruv!WI8R<#|?Jbbh}jmwo-rH2b%AIe2E|f1H!>#lTZ8(5q2s;^L+tJx=d? zt1chspIcbs>A2|6vki-mS}bm9^tje-X_fr@(a!w2nO$2ipPOvFcS@$3cO=v5pi>`C zsI*W1^Qq=z%9`A}3H~#+Bc>b7_ZL3&NRaK2<WMmm|(GM=sVYUtVW;oBFr zU)NsE-?sbGz7x0D@7wJSP;Hqqfj2XK&FSSVKkm;tb%gQpmY`QcJzjb#VmfiBw^wNE ztNiBfd#vAV&)9Cy2*ON2%nZaVK+FonY}@S_*^ivH5@Em{?!cgDU}R7LQ9yu*g#d3x qCJ~0|w&&SZl*54Wl$o2Do~l=nmmc8F$_7%(1cdoOTI@VKkOTnWyuk1P delta 443 zcmbO|U%q9&e0_j7Gm8iV0|N)cuO*8^OsW~aiZe1WtY%_h-~x)K7bO;C=w%h>=ha?3 z=yyaxfbBteriJj~DUA!OqlMR31w1}jk)WHEoGa|L==HMqdbzuF$|mdbHnQydb66%K zyL_GOjb{c$*S>C@J*{Wi%l6zOp^=kTI4Gz8u3W8}$^3D}-}<7Q!|!$_)Lu3|7xUNd zZtXRhomCHKN+(XVN$hc4EY4@rprkl?d+ys0nZ|tAMAWq6<{eM+RCV;Ya(dN(lIQQO9*IS!dTID;ZJt{%O zi_!Ns>%NWCl^@TV);aB><0_L&POmfk>ldxx`#1L%_tV#FYI>d?o~Tvm*BLpv>|FaE z?-S>Lg{bi@Z8|k0*+5~bCbyY=+Q!_BAz DEVZ?D diff --git a/src/main.rs b/src/main.rs index 66c5295..e5b6ec4 100644 --- a/src/main.rs +++ b/src/main.rs @@ -107,7 +107,45 @@ impl Board { } } -//////////////////// Node Create/Edit Dialogs //////////////////// +//////////////////// Auxilary Dialogs //////////////////// +fn add_remove_labels_dialog() { + let mut state = STATE.get().lock().unwrap(); + let mut win = window::Window::default() + .with_size(300, 200) + .center_of_parent(); + let flex = group::Flex::default() + .size_of_parent() + .center_of_parent(); + let mut label_key_browser = browser::HoldBrowser::default(); + for key in state.board.labels.keys() { + label_key_browser.add(key); + } + let mut label_value_browser = browser::HoldBrowser::default(); + label_key_browser.set_callback({ + let labels = state.board.labels.clone(); + move |k| { + label_value_browser.clear(); + match k.selected_text() { + Some(key) => { + for val in &labels[&key] { + label_value_browser.add(&val); + } + } + None => {} + } + } + }); + + flex.end(); + win.end(); + win.make_resizable(true); + win.make_modal(true); + win.show(); + while win.shown() { + app::wait(); + } +} + fn node_create_dialog(pos_x: f32, pos_y: f32) { let mut win = window::Window::default() .with_size(100, 100) @@ -330,14 +368,15 @@ fn main() { } ar.finish().ok(); }); - menubar.add("Edit/Edit Nodes", Shortcut::None, menu::MenuFlag::Normal, move |_| { + menubar.add("Edit/Edit Nodes", Shortcut::None, menu::MenuFlag::Normal, |_| { let mut state = STATE.get().lock().unwrap(); state.edit_mode = EditMode::Node; }); - menubar.add("Edit/Edit Edges", Shortcut::None, menu::MenuFlag::Normal, move |_| { + menubar.add("Edit/Edit Edges", Shortcut::None, menu::MenuFlag::Normal, |_| { let mut state = STATE.get().lock().unwrap(); state.edit_mode = EditMode::Edge; }); + menubar.add("Edit/Edit Labels", Shortcut::None, menu::MenuFlag::Normal, |_| add_remove_labels_dialog()); flex.set_size(&menubar, 40);