ui: fix stratum section at mining screen, optimize copy/paste buttons for tokens, update translations
This commit is contained in:
parent
afdcc4dcb9
commit
e951fbab73
6 changed files with 116 additions and 91 deletions
|
@ -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
|
||||||
|
|
|
@ -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: Отмена
|
||||||
|
|
|
@ -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);
|
||||||
|
},
|
||||||
_ => {}
|
_ => {}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -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);
|
||||||
|
|
||||||
|
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.
|
// Draw API port text edit.
|
||||||
let text_edit_resp = egui::TextEdit::singleline(&mut self.secret_edit)
|
let edit = egui::TextEdit::singleline(&mut self.secret_edit)
|
||||||
.id(Id::from(modal.id))
|
.id(Id::from(modal.id))
|
||||||
.font(TextStyle::Heading)
|
.font(TextStyle::Heading)
|
||||||
.cursor_at_end(true)
|
.cursor_at_end(true)
|
||||||
.ui(ui);
|
.ui(ui);
|
||||||
text_edit_resp.request_focus();
|
edit.request_focus();
|
||||||
if text_edit_resp.clicked() {
|
if edit.clicked() {
|
||||||
cb.show_keyboard();
|
cb.show_keyboard();
|
||||||
}
|
}
|
||||||
|
});
|
||||||
// Show buttons to copy/paste text for Android.
|
strip.cell(|ui| {
|
||||||
if OperatingSystem::from_target_os() == OperatingSystem::Android {
|
ui.vertical_centered(|ui| {
|
||||||
ui.add_space(12.0);
|
// Draw API port text edit.
|
||||||
ui.scope(|ui| {
|
let copy_icon = COPY.to_string();
|
||||||
// Setup spacing between buttons.
|
View::button(ui, copy_icon, Colors::WHITE, || {
|
||||||
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());
|
cb.copy_string_to_buffer(self.secret_edit.clone());
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
columns[1].with_layout(Layout::left_to_right(Align::Center), |ui| {
|
});
|
||||||
View::button(ui, CLIPBOARD_TEXT.to_string(), Colors::WHITE, || {
|
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();
|
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.
|
||||||
|
|
|
@ -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.
|
||||||
|
|
|
@ -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.
|
||||||
|
|
Loading…
Reference in a new issue