diff --git a/src/gui.rs b/src/gui.rs index 3e3bd31..4633f71 100644 --- a/src/gui.rs +++ b/src/gui.rs @@ -383,6 +383,7 @@ impl eframe::App for App { let mut token_id = st.token_id.clone(); let mut token_secret = st.token_secret.clone(); let state_clone = state.clone(); + let ctx_clone = ctx.clone(); drop(st); @@ -390,7 +391,7 @@ impl eframe::App for App { egui::Window::new("设置") .collapsible(false) .resizable(false) - .min_size(Vec2::new(350.0, 320.0)) + .min_size(Vec2::new(350.0, 340.0)) .anchor(egui::Align2::CENTER_CENTER, [0.0, 0.0]) .show(ctx, |ui| { ui.set_width(320.0); @@ -408,7 +409,7 @@ impl eframe::App for App { // Host 输入 ui.horizontal(|ui| { ui.label("Host:"); - ui.text_edit_singleline(&mut host); + ui.add(egui::TextEdit::singleline(&mut host).desired_width(200.0)); }); // Port 输入 @@ -420,13 +421,13 @@ impl eframe::App for App { // 令牌ID 输入 ui.horizontal(|ui| { ui.label("令牌ID:"); - ui.text_edit_singleline(&mut token_id); + ui.add(egui::TextEdit::singleline(&mut token_id).desired_width(200.0)); }); // 密钥 输入(密码框) ui.horizontal(|ui| { ui.label("密钥:"); - ui.add(egui::TextEdit::singleline(&mut token_secret).password(true)); + ui.add(egui::TextEdit::singleline(&mut token_secret).password(true).desired_width(200.0)); }); ui.add_space(12.0); @@ -436,24 +437,29 @@ impl eframe::App for App { if ui.button("💾 保存").clicked() { let ts = token_secret.clone(); let tid = token_id.clone(); - if !host.is_empty() && !tid.is_empty() && !ts.is_empty() { + let h = host.clone(); + let p = port; + if !h.is_empty() && !tid.is_empty() && !ts.is_empty() { let mut state = state_clone.write().unwrap(); - state.host = host.clone(); - state.port = port; + state.host = h.clone(); + state.port = p; state.token_id = tid.clone(); state.token_secret = ts.clone(); - let client = ProxmoxClient::new(&host, port, &tid, &ts); + let client = ProxmoxClient::new(&h, p, &tid, &ts); state.client = Arc::new(Mutex::new(Some(client))); state.is_connected = true; state.save_config(); state.add_log("配置已保存"); + state_clone.write().unwrap().show_settings = false; + ctx_clone.request_repaint(); } } if ui.button("取消").clicked() { state_clone.write().unwrap().show_settings = false; + ctx_clone.request_repaint(); } });