virtui-manager 1.3.0__py3-none-any.whl → 1.5.0__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {virtui_manager-1.3.0.dist-info → virtui_manager-1.5.0.dist-info}/METADATA +1 -1
- {virtui_manager-1.3.0.dist-info → virtui_manager-1.5.0.dist-info}/RECORD +27 -23
- {virtui_manager-1.3.0.dist-info → virtui_manager-1.5.0.dist-info}/entry_points.txt +1 -0
- vmanager/constants.py +15 -7
- vmanager/gui_wrapper.py +89 -0
- vmanager/i18n.py +2 -2
- vmanager/locale/de/LC_MESSAGES/virtui-manager.mo +0 -0
- vmanager/{locales → locale}/de/LC_MESSAGES/virtui-manager.po +1217 -1037
- vmanager/locale/fr/LC_MESSAGES/virtui-manager.mo +0 -0
- vmanager/{locales → locale}/fr/LC_MESSAGES/virtui-manager.po +564 -503
- vmanager/locale/it/LC_MESSAGES/virtui-manager.mo +0 -0
- vmanager/{locales → locale}/it/LC_MESSAGES/virtui-manager.po +1205 -1050
- vmanager/{locales → locale}/virtui-manager.pot +555 -498
- vmanager/modals/host_stats.py +199 -0
- vmanager/modals/migration_modals.py +1 -1
- vmanager/modals/utils_modals.py +1 -1
- vmanager/utils.py +18 -1
- vmanager/vm_actions.py +20 -0
- vmanager/vm_migration.py +4 -1
- vmanager/vmanager.css +9 -1
- vmanager/vmanager.py +101 -16
- vmanager/vmcard.css +19 -1
- vmanager/vmcard.py +176 -72
- vmanager/webconsole_manager.py +1 -1
- vmanager/locales/fr/LC_MESSAGES/virtui-manager.mo +0 -0
- {virtui_manager-1.3.0.dist-info → virtui_manager-1.5.0.dist-info}/WHEEL +0 -0
- {virtui_manager-1.3.0.dist-info → virtui_manager-1.5.0.dist-info}/licenses/LICENSE +0 -0
- {virtui_manager-1.3.0.dist-info → virtui_manager-1.5.0.dist-info}/top_level.txt +0 -0
|
@@ -1,39 +1,42 @@
|
|
|
1
|
-
virtui_manager-1.
|
|
1
|
+
virtui_manager-1.5.0.dist-info/licenses/LICENSE,sha256=OXLcl0T2SZ8Pmy2_dmlvKuetivmyPd5m1q-Gyd-zaYY,35149
|
|
2
2
|
vmanager/__init__.py,sha256=-gTpOgkPAOtbLwxz-U9i2uVtFW1SB9JhBguViXnQPJ8,15
|
|
3
3
|
vmanager/config.py,sha256=OBMWtXBTnmws1ITjQ7D_C0LVMxzvGaRH8nZOlW9cbqk,3102
|
|
4
4
|
vmanager/connection_manager.py,sha256=osk0EHJ0ua2wnDOu-9faK8fMd7s9TGsI6OtgxLAMTCI,12984
|
|
5
|
-
vmanager/constants.py,sha256=
|
|
5
|
+
vmanager/constants.py,sha256=iynQh2ya31P0QMEdoUAVELtgCfZDx3p1mPYe-DWPfs0,48791
|
|
6
6
|
vmanager/dialog.css,sha256=HhYqGy0U-R6Efig3JbyEmHJWiceL1Rh_hzpSaDewJro,11753
|
|
7
7
|
vmanager/events.py,sha256=yvjcYHMoDnnDKsMjfweZYnu0-U7lxQlB2uuIbtK5FeY,1556
|
|
8
8
|
vmanager/firmware_manager.py,sha256=bnjBnbT3iT-glKL0p6J14wbAcRIntksze8YnzgKmXNg,3481
|
|
9
|
-
vmanager/
|
|
9
|
+
vmanager/gui_wrapper.py,sha256=olRqksAZr-mysAS3r-RGti9mkU1LNdVBQm346suPrJ8,3034
|
|
10
|
+
vmanager/i18n.py,sha256=a_3YCc5c4hDaj_oVCNB2u2W5Go7fzoNNXfuwyeFxva8,747
|
|
10
11
|
vmanager/libvirt_error_handler.py,sha256=aDumo2yNv9_rsbWjYtglt0ixQx8T2WTvgdEF8Uuanqw,1797
|
|
11
12
|
vmanager/libvirt_utils.py,sha256=eJML4YcmSxIUJWMi4_fzzG8nnCq97WH_Y5CEaLB35CY,20366
|
|
12
13
|
vmanager/network_manager.py,sha256=0dlh9D-p4LlEfuiQnyd3s3lxhU1GjO4x89sCKVA3fzE,8748
|
|
13
14
|
vmanager/remote_viewer.py,sha256=evFvp7ilKPuTf-YA4jCGMgO6dzdhbL1iea1lzETwWeU,89495
|
|
14
15
|
vmanager/remote_viewer_gtk4.py,sha256=KIyejYq_PgmSL6yAUOnnloqpaIWdkYIPdoP6CmMaTOo,45994
|
|
15
16
|
vmanager/storage_manager.py,sha256=MewZBTyBGUtKrVQpXH-DrQpr9CPIFi7VLE-8avrE8jw,46773
|
|
16
|
-
vmanager/utils.py,sha256=
|
|
17
|
+
vmanager/utils.py,sha256=9MM7_jyAiY4vDljIYWwVK8Kqtyxwk-NKK90D_dY0P4A,18985
|
|
17
18
|
vmanager/virtui_dev.py,sha256=M2pJEZRNApqezkj4RdEJR9neEdc_7HV3KInVGy9QgiQ,3118
|
|
18
|
-
vmanager/vm_actions.py,sha256=
|
|
19
|
+
vmanager/vm_actions.py,sha256=xDP3KTHsyavSttp7UrcV36_13aCpMXTqYvBLW1UChuM,118436
|
|
19
20
|
vmanager/vm_cache.py,sha256=dxNj1TrkIAI8NW8SZj0QsfhHkjCrylQ5rgcvPN2zDnQ,1181
|
|
20
|
-
vmanager/vm_migration.py,sha256=
|
|
21
|
+
vmanager/vm_migration.py,sha256=lg3m_nuHLNZuxBA91WRewZFYls8ZaP4XzPikzz_aqMo,16148
|
|
21
22
|
vmanager/vm_provisioner.py,sha256=ZOlwHQzsa1Ur90wWtFl8oBUTfozT9wjURV6Yk1O6H84,46090
|
|
22
23
|
vmanager/vm_queries.py,sha256=4yife9RymBqYR0Jk3NHJ7VYIQ0R5qdzb70OurlXDhtM,52776
|
|
23
24
|
vmanager/vm_service.py,sha256=W_j4u5-I0ZujSho6ecC5NEapX5N4lzSWn8lR0ocr2RM,70819
|
|
24
|
-
vmanager/vmanager.css,sha256=
|
|
25
|
-
vmanager/vmanager.py,sha256=
|
|
25
|
+
vmanager/vmanager.css,sha256=7HzaivsJ2lRMvbYP3QSqG2ZR8gwFdJr2hMBvjSu4WdI,14853
|
|
26
|
+
vmanager/vmanager.py,sha256=6eq5UiIwApWzG3HeBx2BGpYlVKueht_82TnpqcQN3FU,83037
|
|
26
27
|
vmanager/vmanager_cmd.py,sha256=IQtCozK6OvdjpIgL_umuv8LkHNk-W9DsQtsxpZ5fQRk,32161
|
|
27
|
-
vmanager/vmcard.css,sha256=
|
|
28
|
-
vmanager/vmcard.py,sha256=
|
|
28
|
+
vmanager/vmcard.css,sha256=rHrDZftmwfnM5wjhZhLjSajnI3PRf8TW-ub3rG-Pqrg,3367
|
|
29
|
+
vmanager/vmcard.py,sha256=No9LsCCL08IK1cBQAHxOq4VG0l6pbwB4ntnvxKxXq6M,104016
|
|
29
30
|
vmanager/vmcard_pool.py,sha256=IgZZIHNNt3t8CAiKalpQpEF69KY8MZ-csuBrh71AmKM,3514
|
|
30
|
-
vmanager/webconsole_manager.py,sha256=
|
|
31
|
+
vmanager/webconsole_manager.py,sha256=3Coafu6SiPWMLB3fMTKvXPHQK3zVCkiUrYaQ-5Ka0sM,28910
|
|
31
32
|
vmanager/wrapper.py,sha256=6aIz7YRN__Cl78XEBxqQ6g7tWMZ9S_8Nq6XaOtaivTM,1265
|
|
32
|
-
vmanager/
|
|
33
|
-
vmanager/
|
|
34
|
-
vmanager/
|
|
35
|
-
vmanager/
|
|
36
|
-
vmanager/
|
|
33
|
+
vmanager/locale/virtui-manager.pot,sha256=-aTS8Pci22WF3wnnjP5JhVNY5h07Pz6wcHvj4brUZww,55619
|
|
34
|
+
vmanager/locale/de/LC_MESSAGES/virtui-manager.mo,sha256=x48qmzKkXVWPlDdICY8ElZ2QxIEXPRFzZmCd4TK7SSg,63051
|
|
35
|
+
vmanager/locale/de/LC_MESSAGES/virtui-manager.po,sha256=oNOV-POIwDSD27psnJ2gYe2QNRtaynAEa2GVsBP2AZE,82660
|
|
36
|
+
vmanager/locale/fr/LC_MESSAGES/virtui-manager.mo,sha256=FIdsflho_pCD_qBqc4U4JdPpp_y4IghhH-6QgjzHd6M,64260
|
|
37
|
+
vmanager/locale/fr/LC_MESSAGES/virtui-manager.po,sha256=3IvnbIFEAAtNZMTbgaxXh8B4YK0_wAWsbUK1N4fRGmo,83899
|
|
38
|
+
vmanager/locale/it/LC_MESSAGES/virtui-manager.mo,sha256=Z0A8fuXZUHuZo-qJ3dMJMvzOvdUjv-f3wJ5tV0DnsKU,62432
|
|
39
|
+
vmanager/locale/it/LC_MESSAGES/virtui-manager.po,sha256=qJ0OKZHLd7XaBxna_vVTBGGrmrywNVncVH0AHPARDNs,80727
|
|
37
40
|
vmanager/modals/__init__.py,sha256=Os1P7i7chUJCxGu4LOC_LJaJgpVOiOhxYzWNoW9Ubuw,36
|
|
38
41
|
vmanager/modals/base_modals.py,sha256=quGmI_FnoD7UVemruvYsvtz1whhJCNVr2hzQ3tl0hak,1263
|
|
39
42
|
vmanager/modals/bulk_modals.py,sha256=zlH5WxVFouJBJrchVLY3uAj3nl6NWC4PvWHhNH1cDFw,3172
|
|
@@ -44,6 +47,7 @@ vmanager/modals/cpu_mem_pc_modals.py,sha256=5FhQ6iOXLFQrkk1dUtgdSNP_rFLQEjQzz4NG
|
|
|
44
47
|
vmanager/modals/custom_migration_modal.py,sha256=Ki7lhns7PvWzd2YTxnDTFCwYCLuedgN-uMPmL7c47xw,2462
|
|
45
48
|
vmanager/modals/disk_pool_modals.py,sha256=4VX68q8nUERwoXMxYvZbrMywiQcVXqGZd5ijgx06uuQ,28923
|
|
46
49
|
vmanager/modals/host_dashboard_modal.py,sha256=jXaZX1EucrX19uzVwyDcsepsnbUnmXl9wC4Wi7GNQuA,7667
|
|
50
|
+
vmanager/modals/host_stats.py,sha256=vkxOePY3VXEDIBpC13hai-eiRZWe_ecRADI3hko2rso,7155
|
|
47
51
|
vmanager/modals/howto_disk_modal.py,sha256=uhiFSUKjBEDY0CddNwwDCQkhXD-0Tyo6LFlHbdftp_U,1241
|
|
48
52
|
vmanager/modals/howto_network_modal.py,sha256=wzQLJgCMu4xJAMLnCpUost9oObS9TZEFLO07JKIsw08,1263
|
|
49
53
|
vmanager/modals/howto_overlay_modal.py,sha256=BJqx5icwwnSzh-AO_CSX2eAxxZA9KkUEMVdN0NG3y7Q,1276
|
|
@@ -51,14 +55,14 @@ vmanager/modals/howto_ssh_modal.py,sha256=Zf_B-9jJDiRypwBsID0VqrJubunmodWZsVORak
|
|
|
51
55
|
vmanager/modals/howto_virtiofs_modal.py,sha256=PyvrODsKbaLDnJSfvmXIhcxgIW9jHBRUdAjv30fnaDI,1257
|
|
52
56
|
vmanager/modals/input_modals.py,sha256=ULByH3ytXuIhkZ08LKH9i2YIMU4CC3uSlia-G9EN6D0,7868
|
|
53
57
|
vmanager/modals/log_modal.py,sha256=X8Is4gWyrovINQfwm_7xy2rzggWTvRqdWErntkNU974,1143
|
|
54
|
-
vmanager/modals/migration_modals.py,sha256=
|
|
58
|
+
vmanager/modals/migration_modals.py,sha256=bX2YwWUS2lgOdr1SHVMao1xQyKYzN-PZG007wFWjMYg,20610
|
|
55
59
|
vmanager/modals/network_modals.py,sha256=Uj2-dOld5Z1pn2ijV4HH0b8BL8S4I73KLvMHqDCpOCA,19275
|
|
56
60
|
vmanager/modals/provisioning_modals.py,sha256=KpdJlYDUHTGjtol375KDOBCNIhSDQAmlYKmI0CEja_Q,29702
|
|
57
61
|
vmanager/modals/select_server_modals.py,sha256=_p75tASi_cfCQaJwOd1w43f50HhN-emeaVIsEQnDCHo,5191
|
|
58
62
|
vmanager/modals/selection_modals.py,sha256=FpQQyVYXWXidFev62llyb8T6E0uyr6Y860PvzON-0uY,6175
|
|
59
63
|
vmanager/modals/server_modals.py,sha256=y5tB7MWupl30RqGztRkQw5Zcdp2Ctpan8wq3ttv8DFg,10571
|
|
60
64
|
vmanager/modals/server_prefs_modals.py,sha256=72qQLYpy9_tmIO58KVunSel64BGyALnnGvQMme0mGjs,40807
|
|
61
|
-
vmanager/modals/utils_modals.py,sha256=
|
|
65
|
+
vmanager/modals/utils_modals.py,sha256=Sy_gtucN3ZbYVfNUyLPPiEkhOu3KWycTSdrpveuHH5E,8819
|
|
62
66
|
vmanager/modals/virsh_modals.py,sha256=hxVEoMg4t7l-LfM2E8vdWvpgGoWzoSw17zGsEqm8qgQ,4694
|
|
63
67
|
vmanager/modals/virtiofs_modals.py,sha256=52CTX3RTUCJ6RyldNLiyjMiYBz93swz8tUIWnXOOK3w,2240
|
|
64
68
|
vmanager/modals/vm_type_info_modal.py,sha256=9eWhGgJDYfNwWjKvpfHDEulypPKaH8VePZ3Wt3kvaxI,4266
|
|
@@ -66,8 +70,8 @@ vmanager/modals/vmanager_modals.py,sha256=UL2nS5ZH3ik8wEALXptNL22xMsGhime2vX73HX
|
|
|
66
70
|
vmanager/modals/vmcard_dialog.py,sha256=NP4qVYfZC58FF0_dXiI-2Q_XqZ1wfGcya1cKnYzBZTw,18848
|
|
67
71
|
vmanager/modals/vmdetails_modals.py,sha256=VcNq2NZ9JUvfNufrQc4YnbwsxzS1ZoXw91AR3KGSN9Y,151040
|
|
68
72
|
vmanager/modals/xml_modals.py,sha256=8lVJFqXM42w2kzCGyVa0Xks8-EfwMLHgkU_U6aqFnLY,1712
|
|
69
|
-
virtui_manager-1.
|
|
70
|
-
virtui_manager-1.
|
|
71
|
-
virtui_manager-1.
|
|
72
|
-
virtui_manager-1.
|
|
73
|
-
virtui_manager-1.
|
|
73
|
+
virtui_manager-1.5.0.dist-info/METADATA,sha256=yTO_cOBEu6FoDHJCZeHfum5l8r5fqc1xQtl3Yik8KLk,5329
|
|
74
|
+
virtui_manager-1.5.0.dist-info/WHEEL,sha256=wUyA8OaulRlbfwMtmQsvNngGrxQHAvkKcvRmdizlJi0,92
|
|
75
|
+
virtui_manager-1.5.0.dist-info/entry_points.txt,sha256=SrZ_7U4R3gPInnJ8Ia2i6yuM7lJ1lMDcnLomIVR3jFA,202
|
|
76
|
+
virtui_manager-1.5.0.dist-info/top_level.txt,sha256=fQ1nwH-4wZrf6Rc9HEHbudVahpy3TqeuMxgaaNHevxM,9
|
|
77
|
+
virtui_manager-1.5.0.dist-info/RECORD,,
|
vmanager/constants.py
CHANGED
|
@@ -38,7 +38,7 @@ class AppInfo:
|
|
|
38
38
|
"""Define app data"""
|
|
39
39
|
name = "virtui-manager"
|
|
40
40
|
namecase = "VirtUI Manager"
|
|
41
|
-
version = "1.
|
|
41
|
+
version = "1.5.0"
|
|
42
42
|
|
|
43
43
|
class VmAction:
|
|
44
44
|
"""Defines constants for VM action types."""
|
|
@@ -63,6 +63,7 @@ class ButtonLabels:
|
|
|
63
63
|
"""Constants for button labels"""
|
|
64
64
|
ADD = _("Add")
|
|
65
65
|
SAVE = _("Save")
|
|
66
|
+
HIBERNATE_VM = _("Hibernate VM")
|
|
66
67
|
SAVE_CHANGES = _("Save Changes")
|
|
67
68
|
CREATE_NETWORK = _("Create Network")
|
|
68
69
|
INSTALL = _("Install")
|
|
@@ -76,6 +77,7 @@ class ButtonLabels:
|
|
|
76
77
|
RESUME = _("Resume")
|
|
77
78
|
CONFIGURE = _("Configure")
|
|
78
79
|
WEB_CONSOLE = _("Web Console")
|
|
80
|
+
TEXT_CONSOLE = _("Text Console")
|
|
79
81
|
CONNECT = _("Connect")
|
|
80
82
|
SNAPSHOT = _("Snapshot")
|
|
81
83
|
RESTORE_SNAPSHOT = _("Restore Snapshot")
|
|
@@ -144,8 +146,8 @@ class ButtonLabels:
|
|
|
144
146
|
BULK_CMD = _("[b][#FFD700]B[/][/]ulk CMD")
|
|
145
147
|
PATTERN_SELECT = _("[b][#FFD700]P[/][/]attern Sel")
|
|
146
148
|
CONFIG = _("Config")
|
|
147
|
-
PREVIOUS_PAGE = _("Previous Page")
|
|
148
|
-
NEXT_PAGE = _("Next Page")
|
|
149
|
+
PREVIOUS_PAGE = _("\\[Previous Page]")
|
|
150
|
+
NEXT_PAGE = _("\\[Next Page]")
|
|
149
151
|
YES = _("Yes")
|
|
150
152
|
NO = _("No")
|
|
151
153
|
CANCEL = _("Cancel")
|
|
@@ -205,9 +207,7 @@ class TabTitles:
|
|
|
205
207
|
"""Constants for tab titles"""
|
|
206
208
|
MANAGE = _("Manage")
|
|
207
209
|
OTHER = _("Other")
|
|
208
|
-
|
|
209
|
-
SNAPSHOTS = _("Snapshots")
|
|
210
|
-
OVERLAY = _("Overlay")
|
|
210
|
+
STATE_MANAGEMENT = _("State Management")
|
|
211
211
|
SNAP_OVER_UPDATE = _("Updating Data...")
|
|
212
212
|
ACTIVE_ALLOCATION = _("Active Allocation")
|
|
213
213
|
TOTAL_ALLOCATION = _("Total Allocation")
|
|
@@ -406,6 +406,10 @@ class StaticText:
|
|
|
406
406
|
TOPOLOGY = _("Topology:")
|
|
407
407
|
WAITING_TO_START_COLLECTION = _("Waiting to start collection...")
|
|
408
408
|
COLLECTING_VM_INFO = _("Collecting VM info: {current}/{total}")
|
|
409
|
+
EDIT_VIRTIOFS_MOUNT = _("Edit VirtIO-FS")
|
|
410
|
+
LATEST_SNAPSHOT = _("Latest Snapshot:")
|
|
411
|
+
NO_SNAPSHOTS_CREATED = _("No Snapshots created")
|
|
412
|
+
SELECT_OVERLAY_DISCARD = _("Select overlay disk to discard:")
|
|
409
413
|
|
|
410
414
|
class SparklineLabels:
|
|
411
415
|
"""Constants for sparkline labels"""
|
|
@@ -684,11 +688,13 @@ class DialogMessages:
|
|
|
684
688
|
CONFIRM_REMOVE_USB_DEVICE_TEMPLATE = _("Are you sure you want to remove USB device '{description}'?")
|
|
685
689
|
CONFIRM_REMOVE_SCSI_CONTROLLER_TEMPLATE = _("Are you sure you want to remove SCSI controller '{model}' at index '{index}'?")
|
|
686
690
|
CONFIRM_REMOVE_VIRTIOFS_TEMPLATE = _("Are you sure you want to remove VirtIO-FS mount '{target_path}'?")
|
|
691
|
+
CONFIRM_DISCARD_CHANGES = _("Are you sure you want to discard changes in '{target_disk}' and revert t o its backing file? This action cannot be undone.")
|
|
692
|
+
CONFIRM_MERGE_CHANGES = _("Are you sure you want to merge changes from '{target_disk}' into its backing file?")
|
|
687
693
|
|
|
688
694
|
|
|
689
695
|
class QuickMessages:
|
|
690
696
|
"""Constants for quick messages"""
|
|
691
|
-
REMOTE_VIEWER_SELECTED = _("The
|
|
697
|
+
REMOTE_VIEWER_SELECTED = _("The remote viewer {viewer} has been selected.")
|
|
692
698
|
VM_DATA_LOADED = _("VM data loaded. Displaying VMs...")
|
|
693
699
|
FILTER_RUNNING_VMS = _("Filter: Running VMs")
|
|
694
700
|
FILTER_ALL_VMS = _("Filter: All VMs")
|
|
@@ -750,6 +756,7 @@ class SuccessMessages:
|
|
|
750
756
|
NETWORK_UPDATED_TEMPLATE = _("Network {name} updated successfully.")
|
|
751
757
|
VM_NAME_SANITIZED_TEMPLATE = _("VM name sanitized: '{original}' -> '{sanitized}'")
|
|
752
758
|
VM_STARTED_TEMPLATE = _("VM '{vm_name}' started.")
|
|
759
|
+
VM_SAVED_TEMPLATE = _("VM '{vm_name}' saved (hibernated).")
|
|
753
760
|
REMOTE_VIEWER_STARTED_TEMPLATE = _("Remote viewer {viewer} started for {vm_name}")
|
|
754
761
|
VM_DEFINED_CONFIGURE_TEMPLATE = _("VM '{vm_name}' defined. Please configure and start it.")
|
|
755
762
|
VM_CREATED_SUCCESSFULLY_TEMPLATE = _("VM '{vm_name}' created successfully!")
|
|
@@ -811,3 +818,4 @@ class ProgressMessages:
|
|
|
811
818
|
CONNECTING_TO_SERVER = _("Connecting to [b]{uri}[/b]...")
|
|
812
819
|
CONFIG_UPDATED_REFRESHING_VM_LIST = _("Configuration updated. Refreshing VM list...")
|
|
813
820
|
LOADING_VM_DATA_FROM_REMOTE_SERVERS = _("Loading VM data from remote server(s)...")
|
|
821
|
+
COMMITTING_CHANGES_FOR = _("Committing changes for {name}...")
|
vmanager/gui_wrapper.py
ADDED
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
#!/usr/bin/env python3
|
|
2
|
+
import sys
|
|
3
|
+
import os
|
|
4
|
+
import gi
|
|
5
|
+
|
|
6
|
+
# Require GTK 3.0 and Vte 2.91
|
|
7
|
+
try:
|
|
8
|
+
gi.require_version('Gtk', '3.0')
|
|
9
|
+
gi.require_version('Vte', '2.91')
|
|
10
|
+
except ValueError as e:
|
|
11
|
+
print(f"Error: Missing required libraries. {e}")
|
|
12
|
+
sys.exit(1)
|
|
13
|
+
|
|
14
|
+
from gi.repository import Gtk, Vte, GLib, Pango
|
|
15
|
+
|
|
16
|
+
class VirtuiWrapper(Gtk.Window):
|
|
17
|
+
def __init__(self):
|
|
18
|
+
super().__init__(title="Virtui Manager Console")
|
|
19
|
+
|
|
20
|
+
self.set_default_size(1200, 1024)
|
|
21
|
+
self.terminal = Vte.Terminal()
|
|
22
|
+
self.terminal.set_size(92, 34)
|
|
23
|
+
|
|
24
|
+
font_desc = Pango.FontDescription("Monospace 12")
|
|
25
|
+
self.terminal.set_font(font_desc)
|
|
26
|
+
|
|
27
|
+
self.terminal.set_scrollback_lines(10000)
|
|
28
|
+
|
|
29
|
+
self.terminal.connect("child-exited", self.on_child_exited)
|
|
30
|
+
|
|
31
|
+
# Add terminal to a ScrolledWindow to handle scrolling
|
|
32
|
+
scrolled_window = Gtk.ScrolledWindow()
|
|
33
|
+
scrolled_window.set_hexpand(True)
|
|
34
|
+
scrolled_window.set_vexpand(True)
|
|
35
|
+
scrolled_window.add(self.terminal)
|
|
36
|
+
|
|
37
|
+
self.add(scrolled_window)
|
|
38
|
+
|
|
39
|
+
self.connect("destroy", Gtk.main_quit)
|
|
40
|
+
self.spawn_app()
|
|
41
|
+
|
|
42
|
+
def spawn_app(self):
|
|
43
|
+
# python3 -m vmanager.wrapper
|
|
44
|
+
cmd = [sys.executable, "-m", "vmanager.wrapper"]
|
|
45
|
+
env = os.environ.copy()
|
|
46
|
+
|
|
47
|
+
# Calculate src directory relative to this script
|
|
48
|
+
# This script is in src/vmanager/gui_wrapper.py
|
|
49
|
+
script_dir = os.path.dirname(os.path.realpath(__file__))
|
|
50
|
+
src_dir = os.path.dirname(script_dir)
|
|
51
|
+
|
|
52
|
+
current_pythonpath = env.get("PYTHONPATH", "")
|
|
53
|
+
if src_dir not in current_pythonpath:
|
|
54
|
+
env["PYTHONPATH"] = f"{src_dir}:{current_pythonpath}" if current_pythonpath else src_dir
|
|
55
|
+
|
|
56
|
+
# Convert env to list of strings "KEY=VALUE" for spawn_async
|
|
57
|
+
envv = [f"{k}={v}" for k, v in env.items()]
|
|
58
|
+
|
|
59
|
+
try:
|
|
60
|
+
# Vte.Terminal.spawn_async(pty_flags, working_directory, argv, envv, spawn_flags, child_setup, child_setup_data, timeout, cancellable, callback, user_data)
|
|
61
|
+
self.terminal.spawn_async(
|
|
62
|
+
Vte.PtyFlags.DEFAULT,
|
|
63
|
+
os.getcwd(), # Working directory
|
|
64
|
+
cmd, # Command arguments
|
|
65
|
+
envv, # Environment
|
|
66
|
+
GLib.SpawnFlags.DEFAULT,
|
|
67
|
+
None, # child_setup
|
|
68
|
+
None, # child_setup_data
|
|
69
|
+
-1, # timeout
|
|
70
|
+
None, # cancellable
|
|
71
|
+
None, # callback
|
|
72
|
+
None # user_data
|
|
73
|
+
)
|
|
74
|
+
except Exception as e:
|
|
75
|
+
error_msg = f"Error spawning application: {e}\n"
|
|
76
|
+
self.terminal.feed(error_msg.encode('utf-8'))
|
|
77
|
+
print(error_msg)
|
|
78
|
+
|
|
79
|
+
def on_child_exited(self, terminal, status):
|
|
80
|
+
print(f"Child exited with status: {status}")
|
|
81
|
+
Gtk.main_quit()
|
|
82
|
+
|
|
83
|
+
def main():
|
|
84
|
+
app = VirtuiWrapper()
|
|
85
|
+
app.show_all()
|
|
86
|
+
Gtk.main()
|
|
87
|
+
|
|
88
|
+
if __name__ == "__main__":
|
|
89
|
+
main()
|
vmanager/i18n.py
CHANGED
|
@@ -3,9 +3,9 @@ import os
|
|
|
3
3
|
import locale
|
|
4
4
|
import logging
|
|
5
5
|
|
|
6
|
-
# Setup path to
|
|
6
|
+
# Setup path to locale
|
|
7
7
|
# This assumes the 'locales' directory is next to this file
|
|
8
|
-
LOCALE_DIR = os.path.join(os.path.dirname(__file__), '
|
|
8
|
+
LOCALE_DIR = os.path.join(os.path.dirname(__file__), 'locale')
|
|
9
9
|
DOMAIN = 'virtui-manager'
|
|
10
10
|
|
|
11
11
|
_ = lambda s: s
|
|
Binary file
|