1 Star 0 Fork 108

yanan-rock/anaconda

forked from src-openEuler/anaconda 
加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
文件
该仓库未声明开源许可证文件(LICENSE),使用请关注具体项目描述及其代码上游依赖。
克隆/下载
bugfix-Show-warning-message-when-entered-size-is-not-valid.patch 4.50 KB
一键复制 编辑 原始数据 按行查看 历史
xuxiaolong 提交于 2021-04-02 10:25 +08:00 . sync 49 fixbug from github
From 4bf4ba6d9a11cfd652ce48cdaea86bd617b6332a Mon Sep 17 00:00:00 2001
From: Vladimir Slavik <vslavik@redhat.com>
Date: Tue, 28 Apr 2020 14:40:53 +0200
Subject: [PATCH] Show warning message when entered size is not valid
Requires also reordering checks such that the identical text test comes later.
Resolves: rhbz#1809573
---
pyanaconda/ui/gui/spokes/custom_storage.py | 31 ++++++++++++++-----
.../gui/spokes/lib/custom_storage_helpers.py | 10 ++++++
2 files changed, 33 insertions(+), 8 deletions(-)
diff --git a/pyanaconda/ui/gui/spokes/custom_storage.py b/pyanaconda/ui/gui/spokes/custom_storage.py
index 08e62cc40..f3755c48c 100644
--- a/pyanaconda/ui/gui/spokes/custom_storage.py
+++ b/pyanaconda/ui/gui/spokes/custom_storage.py
@@ -63,7 +63,8 @@ from pyanaconda.ui.gui.spokes.lib.custom_storage_helpers import get_size_from_en
get_selected_raid_level, get_default_raid_level, get_container_type, AddDialog,\
ConfirmDeleteDialog, DisksDialog, ContainerDialog, NOTEBOOK_LABEL_PAGE, NOTEBOOK_DETAILS_PAGE,\
NOTEBOOK_LUKS_PAGE, NOTEBOOK_UNEDITABLE_PAGE, NOTEBOOK_INCOMPLETE_PAGE, NEW_CONTAINER_TEXT,\
- CONTAINER_TOOLTIP, get_supported_device_raid_levels, generate_request_description
+ CONTAINER_TOOLTIP, DESIRED_CAPACITY_ERROR, get_supported_device_raid_levels, \
+ generate_request_description
from pyanaconda.ui.gui.spokes.lib.passphrase import PassphraseDialog
from pyanaconda.ui.gui.spokes.lib.refresh import RefreshDialog
from pyanaconda.ui.gui.spokes.lib.summary import ActionSummaryDialog
@@ -1552,23 +1553,37 @@ class CustomPartitioningSpoke(NormalSpoke, StorageCheckHandler):
self._request.device_raid_level = get_selected_raid_level(self._raidLevelCombo)
self.on_value_changed()
- def on_size_changed(self, widget):
+ @timed_action(750, 1500, False)
+ def on_size_changed(self, *args):
+ """Callback for text change in "desired capacity" widget"""
if not self._sizeEntry.get_sensitive():
return
- current_size = Size(self._request.device_size)
- displayed_size = current_size.human_readable(max_places=self.MAX_SIZE_PLACES)
-
- if displayed_size == self._sizeEntry.get_text():
- return
-
size = get_size_from_entry(
self._sizeEntry,
lower_bound=self.MIN_SIZE_ENTRY,
units=SIZE_UNITS_DEFAULT
)
+ # Show warning if the size string is invalid. Field self._error is used as a "flag" that
+ # the last error was the same. This is done because this warning can fire on every change,
+ # so it would keep flickering at the bottom as you type.
if size is None:
+ if self._error != DESIRED_CAPACITY_ERROR:
+ self.clear_errors()
+ self.set_detailed_warning(
+ _("Invalid input. Specify the Desired Capacity in whole or decimal numbers, "
+ "with an appropriate unit."),
+ _(DESIRED_CAPACITY_ERROR)
+ )
+ return
+ elif self._error == DESIRED_CAPACITY_ERROR:
+ self.clear_errors()
+
+ current_size = Size(self._request.device_size)
+ displayed_size = current_size.human_readable(max_places=self.MAX_SIZE_PLACES)
+
+ if displayed_size == self._sizeEntry.get_text():
return
self._request.device_size = size.get_bytes()
diff --git a/pyanaconda/ui/gui/spokes/lib/custom_storage_helpers.py b/pyanaconda/ui/gui/spokes/lib/custom_storage_helpers.py
index f7ae6cfa3..0dffaf0f7 100644
--- a/pyanaconda/ui/gui/spokes/lib/custom_storage_helpers.py
+++ b/pyanaconda/ui/gui/spokes/lib/custom_storage_helpers.py
@@ -49,6 +49,16 @@ CONTAINER_TOOLTIP = N_("Create or select %(container_type)s")
CONTAINER_DIALOG_TITLE = N_("CONFIGURE %(container_type)s")
CONTAINER_DIALOG_TEXT = N_("Please create a name for this %(container_type)s "
"and select at least one disk below.")
+DESIRED_CAPACITY_ERROR = N_(
+ "Specify the Desired Capacity in whole or decimal numbers, with an appropriate unit.\n\n"
+ "Spaces separating digit groups are not allowed. Units consist of a decimal or binary "
+ "prefix, and optionally the letter B. Letter case does not matter for units. The default "
+ "unit used when units are left out is MiB.\n\n"
+ "Examples of valid input:\n"
+ "'100 GiB' = 100 gibibytes\n"
+ "'512m' = 512 megabytes\n"
+ "'123456789' = 123 terabytes and a bit less than a half\n"
+)
ContainerType = namedtuple("ContainerType", ["name", "label"])
--
2.23.0
Loading...
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
1
https://gitee.com/yanan-rock/anaconda.git
git@gitee.com:yanan-rock/anaconda.git
yanan-rock
anaconda
anaconda
master

搜索帮助

371d5123 14472233 46e8bd33 14472233