omni_git/
git_app_renders.rs1use egui::Ui;
2
3use crate::{
4 git_app::{GitApps, TagSymbol},
5 GitApp,
6};
7
8pub fn render_git_app(app: &mut GitApp, ui: &mut Ui) {
9 egui::Grid::new("git_apps_grid").show(ui, |ui| {
10 ui.horizontal(|ui| {
11 ui.heading("Git Apps");
12
13 egui::ComboBox::from_label("")
14 .selected_text(format!("{:?}", app.selected_gits_app))
15 .show_ui(ui, |ui| {
16 ui.selectable_value(
17 &mut app.selected_gits_app,
18 GitApps::TagDiffWeb,
19 "Web Diff",
20 );
21 ui.selectable_value(
22 &mut app.selected_gits_app,
23 GitApps::TagDiffCommand,
24 "Command Diff",
25 );
26 });
27 });
28
29 ui.end_row();
30
31 ui.vertical(|ui| match app.selected_gits_app {
32 GitApps::TagDiffWeb => render_web_diff(app, ui),
33 GitApps::TagDiffCommand => render_tag_diff(app, ui),
34 });
35
36 ui.end_row();
37 });
38}
39
40fn render_tag_diff(app: &mut GitApp, ui: &mut Ui) {
41 ui.vertical(|ui| {
42 ui.add_space(20.0);
43 actions(app, ui);
44 ui.end_row();
45 settings(app, ui);
46
47 ui.end_row();
48 });
49}
50
51fn combine_choosen(app: &GitApp) -> String {
52 let base = app.base_url.clone();
53
54 let delimiter = "/".to_owned();
55
56 let owner = app.owner.clone();
57
58 let repo = app.repo.clone();
59
60 let compare = "compare".to_owned();
61
62 let one = app.choosen.get_choosen_symbol_chain();
63
64 let points = "...".to_owned();
65
66 let two = app.choosen_other.get_choosen_symbol_chain();
67
68 let pre = vec![
69 base,
70 delimiter.clone(),
71 owner,
72 delimiter.clone(),
73 repo,
74 delimiter.clone(),
75 compare,
76 delimiter,
77 one,
78 points,
79 two,
80 ];
81 pre.concat()
82}
83
84fn render_web_diff(app: &mut GitApp, ui: &mut Ui) {
85 ui.vertical(|ui| {
86 ui.add_space(20.0);
87 actions(app, ui);
88 ui.end_row();
89 settings(app, ui);
90 ui.end_row();
91 ui.label(combine_choosen(app));
92 ui.hyperlink(combine_choosen(app))
93 });
94}
95
96fn actions(app: &mut GitApp, ui: &mut Ui) {
97 ui.horizontal(|ui| {
98 ui.collapsing("Actions", |ui| {
99 ui.horizontal(|ui| {
100 if ui.button("create new").clicked() {
101 app.choosen.choose(TagSymbol::new(1, "prefix", "something"));
102 app.choosen.choose(TagSymbol::new(2, "delitmiter1", "/"));
103 app.choosen
104 .choose(TagSymbol::new(3, "inner", "someversion"));
105 app.choosen.choose(TagSymbol::new(4, "delitmiter11", "/"));
106 app.choosen
107 .choose(TagSymbol::new(5, "delimiter", "someversion"));
108 };
109 });
110
111 if ui.button("take over").clicked() {
112 app.choosen_other.take_over(&app.choosen)
113 };
114 });
115 });
116}
117
118fn settings(app: &mut GitApp, ui: &mut Ui) {
119 ui.horizontal(|ui| {
120 ui.collapsing("Settings", |ui| {
121 ui.vertical(|ui| {
122 ui.text_edit_singleline(&mut app.base_url);
123 ui.text_edit_singleline(&mut app.owner);
124 ui.text_edit_singleline(&mut app.repo);
125 });
126
127 ui.vertical(|ui| {
128 ui.horizontal(|ui| {
129 let mut cloned = app.choosen.get_choosen_symbols();
130 for choosen in &mut cloned {
131 ui.text_edit_singleline(&mut choosen.symbol);
132 ui.add_space(1.0);
133 }
134 for new in cloned.clone() {
135 app.choosen.choose(new)
136 }
137 });
138
139 ui.add_space(5.0);
140 ui.horizontal(|ui| {
141 let mut cloned_other = app.choosen_other.get_choosen_symbols();
142 for choosen_other in &mut cloned_other {
143 ui.text_edit_singleline(&mut choosen_other.symbol);
144 ui.add_space(2.0);
145 }
146 for new in cloned_other.clone() {
147 app.choosen_other.choose(new)
148 }
149 });
150 });
151 })
152 });
153}