ui: fix stratum section at mining screen, optimize copy/paste buttons for tokens, update translations

This commit is contained in:
ardocrat 2023-07-15 21:13:37 +03:00
parent afdcc4dcb9
commit e951fbab73
6 changed files with 116 additions and 91 deletions

View file

@ -71,48 +71,50 @@ network_mining:
disconnected: Disconnected disconnected: Disconnected
network_settings: network_settings:
change_value: Change value change_value: Change value
stratum_ip: Stratum IP Address stratum_ip: 'Stratum IP Address:'
stratum_port: Stratum port stratum_port: 'Stratum port:'
port_unavailable: Specified port is unavailable port_unavailable: Specified port is unavailable
restart_node_required: Node restart is required to apply changes. restart_node_required: Node restart is required to apply changes.
enable: Enable enable: Enable
disable: Disable disable: Disable
restart: Restart restart: Restart
server: Server server: Server
api_ip: API IP Address api_ip: 'API IP Address:'
api_port: API Port api_port: 'API Port:'
api_secret: Rest API and V2 Owner API token api_secret: 'Rest API and V2 Owner API token:'
foreign_api_secret: Foreign API token foreign_api_secret: 'Foreign API token:'
disabled: Disabled disabled: Disabled
enabled: Enabled 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. 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 not_valid_value: Entered value is not valid
full_validation: Full validation full_validation: Full validation
full_validation_description: Whether to run a full chain validation when processing each block (except during synchronization). full_validation_description: Whether to run a full chain validation when processing each block (except during synchronization).
archive_mode: Archive mode archive_mode: Archive mode
archive_mode_desc: Run the node in full archive mode (more disk space and time will be required for synchronization). 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: 'Mining attempt time (in seconds):'
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 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 min_share_diff: 'The minimum acceptable share difficulty:'
reset_settings_desc: Reset node settings to default values reset_settings_desc: Reset node settings to default values
reset_settings: Reset settings reset_settings: Reset settings
reset: Reset reset: Reset
tx_pool: Transaction pool tx_pool: Transaction pool
pool_fee: Base fee that's accepted into the pool pool_fee: 'Base fee that is accepted into the pool:'
reorg_period: Reorg cache retention period (in minutes) reorg_period: 'Reorg cache retention period (in minutes):'
max_tx_pool: Maximum number of transactions in the pool max_tx_pool: 'Maximum number of transactions in the pool:'
max_tx_stempool: Maximum number of transactions in the stem-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 max_tx_weight: 'Maximum total weight of transactions that can get selected to build a block:'
epoch_duration: Epoch duration (in seconds) epoch_duration: 'Epoch duration (in seconds):'
embargo_timer: Embargo timer (in seconds) embargo_timer: 'Embargo timer (in seconds):'
aggregation_period: Aggregation period (in seconds) aggregation_period: 'Aggregation period (in seconds):'
stem_probability: Stem phase probability stem_probability: 'Stem phase probability:'
stem_txs: Stem transactions stem_txs: Stem transactions
p2p_server: P2P server p2p_server: P2P server
p2p_port: P2P port p2p_port: 'P2P port:'
add_seed: Add DNS Seed add_seed: Add DNS Seed
seed_address: 'DNS Seed address:'
add_peer: Add peer 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' 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 default: Default
allow_list: Allow list allow_list: Allow list
@ -121,11 +123,11 @@ network_settings:
deny_list_desc: Never connect to peers in this list. deny_list_desc: Never connect to peers in this list.
favourites: Favourites favourites: Favourites
favourites_desc: A list of preferred peers to connect to. 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. 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_inbound_count: 'Maximum number of inbound peer connections:'
max_outbound_count: Maximum number of outbound peer connections max_outbound_count: 'Maximum number of outbound peer connections:'
min_outbound_count: Minimum 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. min_outbound_desc: Node server will actively keep trying to add peers until it will get to at least this number.
modal: modal:
cancel: Cancel cancel: Cancel

View file

@ -71,48 +71,50 @@ network_mining:
disconnected: Отключен disconnected: Отключен
network_settings: network_settings:
change_value: Изменить значение change_value: Изменить значение
stratum_ip: Stratum IP Адрес stratum_ip: 'Stratum IP Адрес:'
stratum_port: Порт Stratum stratum_port: 'Порт Stratum:'
port_unavailable: Указанный порт недоступен port_unavailable: Указанный порт недоступен
restart_node_required: Для применения изменений требуется перезапуск узла. restart_node_required: Для применения изменений требуется перезапуск узла.
enable: Включить enable: Включить
disable: Выключить disable: Выключить
restart: Перезапуск restart: Перезапуск
server: Сервер server: Сервер
api_ip: API IP Адрес api_ip: 'API IP Адрес:'
api_port: API Порт api_port: 'API Порт:'
api_secret: Rest и V2 Owner API токен api_secret: 'Rest и V2 Owner API токен:'
foreign_api_secret: Foreign API токен foreign_api_secret: 'Foreign API токен:'
disabled: Отключен disabled: Отключен
enabled: Включен enabled: Включен
ftl: Предел Будущего Времени (FTL) ftl: 'Предел Будущего Времени (FTL):'
ftl_description: Насколько далеко в будущем, относительно локального времени узла в секундах, может находиться временная метка на новом блоке для его принятия. ftl_description: Насколько далеко в будущем, относительно локального времени узла в секундах, может находиться временная метка на новом блоке для его принятия.
not_valid_value: Введено недопустимое значение not_valid_value: Введено недопустимое значение
full_validation: Полная валидация full_validation: Полная валидация
full_validation_description: Запускать ли полную проверку цепи при обработке каждого блока (за исключением синхронизации). full_validation_description: Запускать ли полную проверку цепи при обработке каждого блока (за исключением синхронизации).
archive_mode: Архивный режим archive_mode: Архивный режим
archive_mode_desc: Запустить узел в режиме полного архива (потребуется больше места и времени для синхронизации). archive_mode_desc: Запустить узел в режиме полного архива (потребуется больше места и времени для синхронизации).
attempt_time: Время попытки attempt_time: 'Время попытки майнинга (в секундах):'
attempt_time_desc: Количество времени в секундах для попытки майнинга на определённом заголовке перед остановкой и повторным сбором транзакций из пула attempt_time_desc: Количество времени для попытки майнинга на определённом заголовке перед остановкой и повторным сбором транзакций из пула
min_share_diff: Минимальная допустимая сложность шары min_share_diff: 'Минимальная допустимая сложность шары:'
reset_settings_desc: Сбросить настройки узла до стандартных значений reset_settings_desc: Сбросить настройки узла до стандартных значений
reset_settings: Сброс настроек reset_settings: Сброс настроек
reset: Сбросить reset: Сбросить
tx_pool: Пул транзакций tx_pool: Пул транзакций
pool_fee: Базовая комиссия, принимаемая в пул pool_fee: 'Базовая комиссия, принимаемая в пул:'
reorg_period: Срок хранения кэша реорганизации (в минутах) reorg_period: 'Срок хранения кэша реорганизации (в минутах):'
max_tx_pool: Максимальное количество транзакций в пуле max_tx_pool: 'Максимальное количество транзакций в пуле:'
max_tx_stempool: Максимальное количество транзакций в stem-пуле max_tx_stempool: 'Максимальное количество транзакций в stem-пуле:'
max_tx_weight: Максимальный общий вес транзакций, которые могут быть выбраны для построения блока max_tx_weight: 'Максимальный общий вес транзакций, которые могут быть выбраны для построения блока:'
epoch_duration: Длительность эпохи (в секундах) epoch_duration: 'Длительность эпохи (в секундах):'
embargo_timer: Таймер эмбарго (в секундах) embargo_timer: 'Таймер эмбарго (в секундах):'
aggregation_period: Период агрегации (в секундах) aggregation_period: 'Период агрегации (в секундах):'
stem_probability: Вероятность фазы Stem stem_probability: 'Вероятность фазы Stem:'
stem_txs: Stem транзакций stem_txs: Stem транзакций
p2p_server: P2P сервер p2p_server: P2P сервер
p2p_port: P2P порт p2p_port: 'P2P порт:'
add_seed: Добавить DNS Seed add_seed: Добавить DNS Seed
seed_address: 'Адрес DNS Seed:'
add_peer: Добавить пир add_peer: Добавить пир
peer_address: 'Адрес пира:'
peer_address_error: 'Введите IP адрес или DNS имя (убедитесь, что указанный хост доступен) в правильном формате, например: 192.168.0.1:1234 или example.com:5678' peer_address_error: 'Введите IP адрес или DNS имя (убедитесь, что указанный хост доступен) в правильном формате, например: 192.168.0.1:1234 или example.com:5678'
default: По умолчанию default: По умолчанию
allow_list: Белый список allow_list: Белый список
@ -121,11 +123,11 @@ network_settings:
deny_list_desc: Никогда не подключаться к пирам в данном списке. deny_list_desc: Никогда не подключаться к пирам в данном списке.
favourites: Избранное favourites: Избранное
favourites_desc: Список предпочтительных пиров для подключения. favourites_desc: Список предпочтительных пиров для подключения.
ban_window: Как долго забаненый пир должен оставаться забаненым (в секундах) ban_window: 'Сколько времени (в секундах) забаненый пир должен оставаться забаненым:'
ban_window_desc: Решение о запрете принимается нодой, основываясь на корректности данных полученных от пира. ban_window_desc: Решение о запрете принимается узлом, основываясь на корректности данных полученных от пира.
max_inbound_count: Максимальное количество входящих подключений пиров max_inbound_count: 'Максимальное количество входящих подключений пиров:'
max_outbound_count: Максимальное количество исходящих подключений к пирам max_outbound_count: 'Максимальное количество исходящих подключений к пирам:'
min_outbound_count: Минимальное количество исходящих подключений к пирам min_outbound_count: 'Минимальное количество исходящих подключений к пирам:'
min_outbound_desc: Сервер узла будет активно пытаться добавить пиры, пока не дойдёт хотя бы до этого числа. min_outbound_desc: Сервер узла будет активно пытаться добавить пиры, пока не дойдёт хотя бы до этого числа.
modal: modal:
cancel: Отмена cancel: Отмена

View file

@ -203,6 +203,12 @@ impl NetworkTab for NetworkMining {
StratumSetup::STRATUM_PORT_MODAL => { StratumSetup::STRATUM_PORT_MODAL => {
self.stratum_server_setup.port_modal(ui, modal, cb); 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);
},
_ => {} _ => {}
} }
} }

View file

@ -15,6 +15,7 @@
use eframe::emath::Align; use eframe::emath::Align;
use egui::{Id, Layout, RichText, TextStyle, Ui, Widget}; use egui::{Id, Layout, RichText, TextStyle, Ui, Widget};
use egui::os::OperatingSystem; use egui::os::OperatingSystem;
use egui_extras::{Size, StripBuilder};
use grin_core::global::ChainTypes; use grin_core::global::ChainTypes;
use crate::AppConfig; use crate::AppConfig;
@ -357,48 +358,58 @@ impl NodeSetup {
.color(Colors::GRAY)); .color(Colors::GRAY));
ui.add_space(6.0); ui.add_space(6.0);
// Draw API port text edit. StripBuilder::new(ui)
let text_edit_resp = egui::TextEdit::singleline(&mut self.secret_edit) .size(Size::exact(42.0))
.id(Id::from(modal.id)) .vertical(|mut strip| {
.font(TextStyle::Heading) strip.strip(|builder| {
.cursor_at_end(true) builder
.ui(ui); .size(Size::remainder())
text_edit_resp.request_focus(); .size(Size::exact(48.0))
if text_edit_resp.clicked() { .size(Size::exact(48.0))
cb.show_keyboard(); .horizontal(|mut strip| {
} strip.cell(|ui| {
// Draw API port text edit.
// Show buttons to copy/paste text for Android. let edit = egui::TextEdit::singleline(&mut self.secret_edit)
if OperatingSystem::from_target_os() == OperatingSystem::Android { .id(Id::from(modal.id))
ui.add_space(12.0); .font(TextStyle::Heading)
ui.scope(|ui| { .cursor_at_end(true)
// Setup spacing between buttons. .ui(ui);
ui.spacing_mut().item_spacing = egui::Vec2::new(12.0, 0.0); edit.request_focus();
if edit.clicked() {
let mut buttons_rect = ui.available_rect_before_wrap(); cb.show_keyboard();
buttons_rect.set_height(42.0); }
ui.allocate_ui_at_rect(buttons_rect, |ui| { });
strip.cell(|ui| {
ui.columns(2, |columns| { ui.vertical_centered(|ui| {
columns[0].with_layout(Layout::right_to_left(Align::Center), |ui| { // Draw API port text edit.
View::button(ui, COPY.to_string(), Colors::WHITE, || { let copy_icon = COPY.to_string();
cb.copy_string_to_buffer(self.secret_edit.clone()); 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. // Show reminder to restart enabled node.
NetworkSettings::node_restart_required_ui(ui); if Node::is_running() {
ui.label(RichText::new(t!("network_settings.restart_node_required"))
ui.add_space(12.0); .size(16.0)
.color(Colors::GREEN)
);
ui.add_space(8.0);
}
ui.add_space(4.0);
}); });
// Show modal buttons. // Show modal buttons.

View file

@ -386,8 +386,8 @@ impl P2PSetup {
ui.add_space(6.0); ui.add_space(6.0);
ui.vertical_centered(|ui| { ui.vertical_centered(|ui| {
let label_text = match modal.id { let label_text = match modal.id {
Self::CUSTOM_SEED_MODAL => t!("network_settings.add_seed"), Self::CUSTOM_SEED_MODAL => t!("network_settings.seed_address"),
&_ => t!("network_settings.add_peer") &_ => t!("network_settings.peer_address")
}; };
ui.label(RichText::new(label_text).size(17.0).color(Colors::GRAY)); ui.label(RichText::new(label_text).size(17.0).color(Colors::GRAY));
ui.add_space(8.0); ui.add_space(8.0);
@ -832,7 +832,6 @@ impl P2PSetup {
.size(16.0) .size(16.0)
.color(Colors::INACTIVE_TEXT) .color(Colors::INACTIVE_TEXT)
); );
ui.add_space(2.0);
} }
/// Draw minimum number of outbound peers [`Modal`] content. /// Draw minimum number of outbound peers [`Modal`] content.

View file

@ -258,7 +258,7 @@ impl StratumSetup {
/// Draw attempt time value setup content. /// Draw attempt time value setup content.
fn attempt_time_ui(&mut self, ui: &mut Ui, cb: &dyn PlatformCallbacks) { 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) .size(16.0)
.color(Colors::GRAY) .color(Colors::GRAY)
); );
@ -276,7 +276,12 @@ impl StratumSetup {
Modal::show(time_modal); Modal::show(time_modal);
cb.show_keyboard(); 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. /// Draw attempt time [`Modal`] content.