From e951fbab738f1070b2b94bb1f0bac3b26814cb8b Mon Sep 17 00:00:00 2001 From: ardocrat Date: Sat, 15 Jul 2023 21:13:37 +0300 Subject: [PATCH] ui: fix stratum section at mining screen, optimize copy/paste buttons for tokens, update translations --- locales/en.yml | 50 +++++++-------- locales/ru.yml | 52 ++++++++-------- src/gui/views/network/mining.rs | 6 ++ src/gui/views/network/setup/node.rs | 85 +++++++++++++++----------- src/gui/views/network/setup/p2p.rs | 5 +- src/gui/views/network/setup/stratum.rs | 9 ++- 6 files changed, 116 insertions(+), 91 deletions(-) diff --git a/locales/en.yml b/locales/en.yml index 4ee0641..42d8e19 100644 --- a/locales/en.yml +++ b/locales/en.yml @@ -71,48 +71,50 @@ network_mining: disconnected: Disconnected network_settings: change_value: Change value - stratum_ip: Stratum IP Address - stratum_port: Stratum port + stratum_ip: 'Stratum IP Address:' + stratum_port: 'Stratum port:' port_unavailable: Specified port is unavailable restart_node_required: Node restart is required to apply changes. enable: Enable disable: Disable restart: Restart server: Server - api_ip: API IP Address - api_port: API Port - api_secret: Rest API and V2 Owner API token - foreign_api_secret: Foreign API token + api_ip: 'API IP Address:' + api_port: 'API Port:' + api_secret: 'Rest API and V2 Owner API token:' + foreign_api_secret: 'Foreign API token:' disabled: Disabled enabled: Enabled - ftl: The Future Time Limit (FTL) + ftl: 'The Future Time Limit (FTL):' ftl_description: Limit on how far into the future, relative to a node's local time in seconds, the timestamp on a new block can be, in order for the block to be accepted. not_valid_value: Entered value is not valid full_validation: Full validation full_validation_description: Whether to run a full chain validation when processing each block (except during synchronization). archive_mode: Archive mode archive_mode_desc: Run the node in full archive mode (more disk space and time will be required for synchronization). - attempt_time: Attempt time - attempt_time_desc: The amount of time in seconds to attempt to mine on a particular header before stopping and re-collecting transactions from the pool - min_share_diff: The minimum acceptable share difficulty + attempt_time: 'Mining attempt time (in seconds):' + attempt_time_desc: The amount of time to attempt to mine on a particular header before stopping and re-collecting transactions from the pool + min_share_diff: 'The minimum acceptable share difficulty:' reset_settings_desc: Reset node settings to default values reset_settings: Reset settings reset: Reset tx_pool: Transaction pool - pool_fee: Base fee that's accepted into the pool - reorg_period: Reorg cache retention period (in minutes) - max_tx_pool: Maximum number of transactions in the pool - max_tx_stempool: Maximum number of transactions in the stem-pool - max_tx_weight: Maximum total weight of transactions that can get selected to build a block - epoch_duration: Epoch duration (in seconds) - embargo_timer: Embargo timer (in seconds) - aggregation_period: Aggregation period (in seconds) - stem_probability: Stem phase probability + pool_fee: 'Base fee that is accepted into the pool:' + reorg_period: 'Reorg cache retention period (in minutes):' + max_tx_pool: 'Maximum number of transactions in the pool:' + max_tx_stempool: 'Maximum number of transactions in the stem-pool:' + max_tx_weight: 'Maximum total weight of transactions that can get selected to build a block:' + epoch_duration: 'Epoch duration (in seconds):' + embargo_timer: 'Embargo timer (in seconds):' + aggregation_period: 'Aggregation period (in seconds):' + stem_probability: 'Stem phase probability:' stem_txs: Stem transactions p2p_server: P2P server - p2p_port: P2P port + p2p_port: 'P2P port:' add_seed: Add DNS Seed + seed_address: 'DNS Seed address:' add_peer: Add peer + peer_address: 'Peer address:' peer_address_error: 'Enter IP address or DNS name (make sure specified host is available) in correct format, e.g.: 192.168.0.1:1234 or example.com:5678' default: Default allow_list: Allow list @@ -121,11 +123,11 @@ network_settings: deny_list_desc: Never connect to peers in this list. favourites: Favourites favourites_desc: A list of preferred peers to connect to. - ban_window: How long a banned peer should stay banned (in seconds) + ban_window: 'How much time (in seconds) a banned peer should stay banned:' ban_window_desc: The decision to ban is made by node, based on the correctness of the data received from the peer. - max_inbound_count: Maximum number of inbound peer connections - max_outbound_count: Maximum number of outbound peer connections - min_outbound_count: Minimum number of outbound peer connections + max_inbound_count: 'Maximum number of inbound peer connections:' + max_outbound_count: 'Maximum number of outbound peer connections:' + min_outbound_count: 'Minimum number of outbound peer connections:' min_outbound_desc: Node server will actively keep trying to add peers until it will get to at least this number. modal: cancel: Cancel diff --git a/locales/ru.yml b/locales/ru.yml index 82ca9f5..3f49379 100644 --- a/locales/ru.yml +++ b/locales/ru.yml @@ -71,48 +71,50 @@ network_mining: disconnected: Отключен network_settings: change_value: Изменить значение - stratum_ip: Stratum IP Адрес - stratum_port: Порт Stratum + stratum_ip: 'Stratum IP Адрес:' + stratum_port: 'Порт Stratum:' port_unavailable: Указанный порт недоступен restart_node_required: Для применения изменений требуется перезапуск узла. enable: Включить disable: Выключить restart: Перезапуск server: Сервер - api_ip: API IP Адрес - api_port: API Порт - api_secret: Rest и V2 Owner API токен - foreign_api_secret: Foreign API токен + api_ip: 'API IP Адрес:' + api_port: 'API Порт:' + api_secret: 'Rest и V2 Owner API токен:' + foreign_api_secret: 'Foreign API токен:' disabled: Отключен enabled: Включен - ftl: Предел Будущего Времени (FTL) + ftl: 'Предел Будущего Времени (FTL):' ftl_description: Насколько далеко в будущем, относительно локального времени узла в секундах, может находиться временная метка на новом блоке для его принятия. not_valid_value: Введено недопустимое значение full_validation: Полная валидация full_validation_description: Запускать ли полную проверку цепи при обработке каждого блока (за исключением синхронизации). archive_mode: Архивный режим archive_mode_desc: Запустить узел в режиме полного архива (потребуется больше места и времени для синхронизации). - attempt_time: Время попытки - attempt_time_desc: Количество времени в секундах для попытки майнинга на определённом заголовке перед остановкой и повторным сбором транзакций из пула - min_share_diff: Минимальная допустимая сложность шары + attempt_time: 'Время попытки майнинга (в секундах):' + attempt_time_desc: Количество времени для попытки майнинга на определённом заголовке перед остановкой и повторным сбором транзакций из пула + min_share_diff: 'Минимальная допустимая сложность шары:' reset_settings_desc: Сбросить настройки узла до стандартных значений reset_settings: Сброс настроек reset: Сбросить tx_pool: Пул транзакций - pool_fee: Базовая комиссия, принимаемая в пул - reorg_period: Срок хранения кэша реорганизации (в минутах) - max_tx_pool: Максимальное количество транзакций в пуле - max_tx_stempool: Максимальное количество транзакций в stem-пуле - max_tx_weight: Максимальный общий вес транзакций, которые могут быть выбраны для построения блока - epoch_duration: Длительность эпохи (в секундах) - embargo_timer: Таймер эмбарго (в секундах) - aggregation_period: Период агрегации (в секундах) - stem_probability: Вероятность фазы Stem + pool_fee: 'Базовая комиссия, принимаемая в пул:' + reorg_period: 'Срок хранения кэша реорганизации (в минутах):' + max_tx_pool: 'Максимальное количество транзакций в пуле:' + max_tx_stempool: 'Максимальное количество транзакций в stem-пуле:' + max_tx_weight: 'Максимальный общий вес транзакций, которые могут быть выбраны для построения блока:' + epoch_duration: 'Длительность эпохи (в секундах):' + embargo_timer: 'Таймер эмбарго (в секундах):' + aggregation_period: 'Период агрегации (в секундах):' + stem_probability: 'Вероятность фазы Stem:' stem_txs: Stem транзакций p2p_server: P2P сервер - p2p_port: P2P порт + p2p_port: 'P2P порт:' add_seed: Добавить DNS Seed + seed_address: 'Адрес DNS Seed:' add_peer: Добавить пир + peer_address: 'Адрес пира:' peer_address_error: 'Введите IP адрес или DNS имя (убедитесь, что указанный хост доступен) в правильном формате, например: 192.168.0.1:1234 или example.com:5678' default: По умолчанию allow_list: Белый список @@ -121,11 +123,11 @@ network_settings: deny_list_desc: Никогда не подключаться к пирам в данном списке. favourites: Избранное favourites_desc: Список предпочтительных пиров для подключения. - ban_window: Как долго забаненый пир должен оставаться забаненым (в секундах) - ban_window_desc: Решение о запрете принимается нодой, основываясь на корректности данных полученных от пира. - max_inbound_count: Максимальное количество входящих подключений пиров - max_outbound_count: Максимальное количество исходящих подключений к пирам - min_outbound_count: Минимальное количество исходящих подключений к пирам + ban_window: 'Сколько времени (в секундах) забаненый пир должен оставаться забаненым:' + ban_window_desc: Решение о запрете принимается узлом, основываясь на корректности данных полученных от пира. + max_inbound_count: 'Максимальное количество входящих подключений пиров:' + max_outbound_count: 'Максимальное количество исходящих подключений к пирам:' + min_outbound_count: 'Минимальное количество исходящих подключений к пирам:' min_outbound_desc: Сервер узла будет активно пытаться добавить пиры, пока не дойдёт хотя бы до этого числа. modal: cancel: Отмена diff --git a/src/gui/views/network/mining.rs b/src/gui/views/network/mining.rs index b36a298..eaa3810 100644 --- a/src/gui/views/network/mining.rs +++ b/src/gui/views/network/mining.rs @@ -203,6 +203,12 @@ impl NetworkTab for NetworkMining { StratumSetup::STRATUM_PORT_MODAL => { self.stratum_server_setup.port_modal(ui, modal, cb); }, + StratumSetup::ATTEMPT_TIME_MODAL => { + self.stratum_server_setup.attempt_modal(ui, modal, cb); + }, + StratumSetup::MIN_SHARE_DIFF_MODAL => { + self.stratum_server_setup.min_diff_modal(ui, modal, cb); + }, _ => {} } } diff --git a/src/gui/views/network/setup/node.rs b/src/gui/views/network/setup/node.rs index 7867eda..ca8185c 100644 --- a/src/gui/views/network/setup/node.rs +++ b/src/gui/views/network/setup/node.rs @@ -15,6 +15,7 @@ use eframe::emath::Align; use egui::{Id, Layout, RichText, TextStyle, Ui, Widget}; use egui::os::OperatingSystem; +use egui_extras::{Size, StripBuilder}; use grin_core::global::ChainTypes; use crate::AppConfig; @@ -357,48 +358,58 @@ impl NodeSetup { .color(Colors::GRAY)); ui.add_space(6.0); - // Draw API port text edit. - let text_edit_resp = egui::TextEdit::singleline(&mut self.secret_edit) - .id(Id::from(modal.id)) - .font(TextStyle::Heading) - .cursor_at_end(true) - .ui(ui); - text_edit_resp.request_focus(); - if text_edit_resp.clicked() { - cb.show_keyboard(); - } - - // Show buttons to copy/paste text for Android. - if OperatingSystem::from_target_os() == OperatingSystem::Android { - ui.add_space(12.0); - ui.scope(|ui| { - // Setup spacing between buttons. - ui.spacing_mut().item_spacing = egui::Vec2::new(12.0, 0.0); - - let mut buttons_rect = ui.available_rect_before_wrap(); - buttons_rect.set_height(42.0); - ui.allocate_ui_at_rect(buttons_rect, |ui| { - - ui.columns(2, |columns| { - columns[0].with_layout(Layout::right_to_left(Align::Center), |ui| { - View::button(ui, COPY.to_string(), Colors::WHITE, || { - cb.copy_string_to_buffer(self.secret_edit.clone()); + StripBuilder::new(ui) + .size(Size::exact(42.0)) + .vertical(|mut strip| { + strip.strip(|builder| { + builder + .size(Size::remainder()) + .size(Size::exact(48.0)) + .size(Size::exact(48.0)) + .horizontal(|mut strip| { + strip.cell(|ui| { + // Draw API port text edit. + let edit = egui::TextEdit::singleline(&mut self.secret_edit) + .id(Id::from(modal.id)) + .font(TextStyle::Heading) + .cursor_at_end(true) + .ui(ui); + edit.request_focus(); + if edit.clicked() { + cb.show_keyboard(); + } + }); + strip.cell(|ui| { + ui.vertical_centered(|ui| { + // Draw API port text edit. + let copy_icon = COPY.to_string(); + View::button(ui, copy_icon, Colors::WHITE, || { + cb.copy_string_to_buffer(self.secret_edit.clone()); + }); + }); + }); + strip.cell(|ui| { + ui.vertical_centered(|ui| { + // Draw paste button. + let paste_icon = CLIPBOARD_TEXT.to_string(); + View::button(ui, paste_icon, Colors::WHITE, || { + self.secret_edit = cb.get_string_from_buffer(); + }); + }); }); }); - columns[1].with_layout(Layout::left_to_right(Align::Center), |ui| { - View::button(ui, CLIPBOARD_TEXT.to_string(), Colors::WHITE, || { - self.secret_edit = cb.get_string_from_buffer(); - }); - }); - }); - }); + }) }); - } // Show reminder to restart enabled node. - NetworkSettings::node_restart_required_ui(ui); - - ui.add_space(12.0); + if Node::is_running() { + ui.label(RichText::new(t!("network_settings.restart_node_required")) + .size(16.0) + .color(Colors::GREEN) + ); + ui.add_space(8.0); + } + ui.add_space(4.0); }); // Show modal buttons. diff --git a/src/gui/views/network/setup/p2p.rs b/src/gui/views/network/setup/p2p.rs index 9eecb6a..16920da 100644 --- a/src/gui/views/network/setup/p2p.rs +++ b/src/gui/views/network/setup/p2p.rs @@ -386,8 +386,8 @@ impl P2PSetup { ui.add_space(6.0); ui.vertical_centered(|ui| { let label_text = match modal.id { - Self::CUSTOM_SEED_MODAL => t!("network_settings.add_seed"), - &_ => t!("network_settings.add_peer") + Self::CUSTOM_SEED_MODAL => t!("network_settings.seed_address"), + &_ => t!("network_settings.peer_address") }; ui.label(RichText::new(label_text).size(17.0).color(Colors::GRAY)); ui.add_space(8.0); @@ -832,7 +832,6 @@ impl P2PSetup { .size(16.0) .color(Colors::INACTIVE_TEXT) ); - ui.add_space(2.0); } /// Draw minimum number of outbound peers [`Modal`] content. diff --git a/src/gui/views/network/setup/stratum.rs b/src/gui/views/network/setup/stratum.rs index 1c46af0..91d9a69 100644 --- a/src/gui/views/network/setup/stratum.rs +++ b/src/gui/views/network/setup/stratum.rs @@ -258,7 +258,7 @@ impl StratumSetup { /// Draw attempt time value setup content. fn attempt_time_ui(&mut self, ui: &mut Ui, cb: &dyn PlatformCallbacks) { - ui.label(RichText::new(t!("network_settings.attempt_time_desc")) + ui.label(RichText::new(t!("network_settings.attempt_time")) .size(16.0) .color(Colors::GRAY) ); @@ -276,7 +276,12 @@ impl StratumSetup { Modal::show(time_modal); cb.show_keyboard(); }); - ui.add_space(12.0); + ui.add_space(6.0); + ui.label(RichText::new(t!("network_settings.attempt_time_desc")) + .size(16.0) + .color(Colors::INACTIVE_TEXT) + ); + ui.add_space(6.0); } /// Draw attempt time [`Modal`] content.