• R/O
  • HTTP
  • SSH
  • HTTPS

コミット

タグ
未設定

よく使われているワード(クリックで追加)

javac++androidlinuxc#windowsobjective-ccocoa誰得qtpythonphprubygameguibathyscaphec計画中(planning stage)翻訳omegatframeworktwitterdomtestvb.netdirectxゲームエンジンbtronarduinopreviewer

Virtual machine Management Terminal User Interface


コミットメタ情報

リビジョン51ffafd6f49201aa0ef09d64797181af7eb40715 (tree)
日時2023-01-07 22:42:58
作者Koine Yuusuke(koinec) <koinec@user...>
コミッターKoine Yuusuke(koinec)

ログメッセージ

WorkBackup

変更サマリ

差分

--- a/src/tuiguest.c
+++ b/src/tuiguest.c
@@ -50,13 +50,66 @@ int
5050 TuiGuest_GeneratePageText(
5151 int i_guest )
5252 {
53- Guest *p_guest = NULL;
53+ Guest *p_guest = NULL;
54+ KeyVal_Data t_kval;
55+ TuiGuest_LineAttr t_attr;
56+ char str_temp[128];
57+
58+ if( i_guest == lt_guest.i_guest ) { return 0x00; }
59+ lt_guest.i_guest = i_guest;
5460
5561 TextBuf_Clear( &lt_guest.t_textbuf );
62+ memset( &t_attr, 0x00, sizeof( TuiGuest_LineAttr ) );
63+ memset( &t_kval, 0x00, sizeof( KeyVal_Data ) );
5664
5765 p_guest = Guest_Ref( i_guest );
5866 assert( NULL != p_guest );
5967
68+ // VM name ---
69+ t_attr.str_key[0] = '\0';
70+ t_attr.i_attr = A_BOLD;
71+ snprintf( str_temp, sizeof( str_temp ), " %-22s: %-40s", "VM name", p_guest->str_vmname );
72+ TextBuf_AppendLine( &lt_guest.t_textbuf, str_temp, 0, (void *)&t_attr );
73+
74+ TextBuf_AppendLine( &lt_guest.t_textbuf, "", 0, NULL );
75+
76+ // Status Section ----
77+ t_attr.i_attr = COL_CYAN | A_BOLD;
78+ TextBuf_AppendLine( &lt_guest.t_textbuf, "Status", 0, (void *)&t_attr );
79+
80+ TextBuf_AppendLine( &lt_guest.t_textbuf, "", 0, NULL );
81+
82+ // Configuration Section ----
83+ t_attr.i_attr = COL_CYAN | A_BOLD;
84+ TextBuf_AppendLine( &lt_guest.t_textbuf, "Configuration", 0, (void *)&t_attr );
85+
86+ // Loader --
87+ t_attr.i_attr = 0x00;
88+ strncpy( t_attr.str_key, GUEST_LOADER_KEY, sizeof( t_attr.str_key ) );
89+ KeyVal_GetData( &t_kval, &p_guest->t_info, GUEST_LOADER_KEY );
90+ snprintf( str_temp, sizeof( str_temp ), " %-22s: %s", "Loader", KEYVAL_DATA_STRING( t_kval ) );
91+ TextBuf_AppendLine( &lt_guest.t_textbuf, str_temp, 0, (void *)&t_attr );
92+
93+ // CPU --
94+ t_attr.i_attr = A_BOLD;
95+ TextBuf_AppendLine( &lt_guest.t_textbuf, " CPU:", 0, (void *)&t_attr );
96+
97+ t_attr.i_attr = 0x00;
98+ strncpy( t_attr.str_key, GUEST_CPU_VCPUS_KEY, sizeof( t_attr.str_key ) );
99+ KeyVal_GetData( &t_kval, &p_guest->t_info, GUEST_CPU_VCPUS_KEY );
100+ snprintf( str_temp, sizeof( str_temp ), " %-20s: %d core", "Cores", KEYVAL_DATA_INT( t_kval ) );
101+ TextBuf_AppendLine( &lt_guest.t_textbuf, str_temp, 0, (void *)&t_attr );
102+
103+ // Memory --
104+ t_attr.i_attr = A_BOLD;
105+ TextBuf_AppendLine( &lt_guest.t_textbuf, " Memory:", 0, (void *)&t_attr );
106+
107+ t_attr.i_attr = 0x00;
108+ strncpy( t_attr.str_key, GUEST_MEM_SIZE_KEY, sizeof( t_attr.str_key ) );
109+ KeyVal_GetData( &t_kval, &p_guest->t_info, GUEST_MEM_SIZE_KEY );
110+ snprintf( str_temp, sizeof( str_temp ), " %-20s: %u KByte", "Size", KEYVAL_DATA_DWORD( t_kval ) );
111+ TextBuf_AppendLine( &lt_guest.t_textbuf, str_temp, 0, (void *)&t_attr );
112+
60113
61114 Guest_Release( p_guest );
62115
@@ -71,31 +124,52 @@ int
71124 {
72125 int i_err;
73126 int i_guest;
127+ int i_line;
128+ int i_maxlines;
129+ int i_outlines;
130+ int i_endline;
131+ char *pstr_temp;
132+ TuiGuest_LineAttr t_attr;
74133 chtype ch_line;
75134
76- //werase( gp_guest_win );
77-
135+ // Draw Focus Indicator ---
78136 if( TUI_FOCUS_INFO == gi_tuifocus ) { ch_line = ACS_VLINE; }
79137 else { ch_line = ' '; }
80138 wattrset( lt_guest.p_win, COLOR_PAIR(15) );
81139 mvwvline( lt_guest.p_win, 1, 0, ch_line, gwl_list.i_width );
82140 mvwvline( lt_guest.p_win, 1, COLS-1, ch_line, gwl_list.i_width );
83141
84-
142+ // Check & Create Guest TextBuffer ---
85143 i_err = TuiVmList_GetCursorInfo( NULL, &i_guest );
86- if( -0x01 == i_err ) {
87- // XXX
88- mvwprintw( lt_guest.p_subwin, 0, 0, "error" );
89- goto goto_TuiGuest_Update_post;
90- }
91- if( VMLIST_TYPE_HVISOR == i_err ) {
92- // XXX
93- mvwprintw( lt_guest.p_subwin, 0, 0, "hypervisor" );
94- goto goto_TuiGuest_Update_post;
144+ if( VMLIST_TYPE_GUEST != i_err ) { goto goto_TuiGuest_Update_post; }
145+
146+ TuiGuest_GeneratePageText( i_guest );
147+
148+ // Draw Text ---
149+ werase( lt_guest.p_subwin );
150+
151+ i_maxlines = TextBuf_GetMaxLine( &lt_guest.t_textbuf );
152+ i_outlines = i_maxlines - lt_guest.i_start_line;
153+ if( i_outlines > (gwl_info.i_width - 3) )
154+ { i_outlines = gwl_info.i_width - 3; }
155+
156+ i_endline = lt_guest.i_start_line + i_outlines;
157+ //mvwprintw( lt_guest.p_subwin, 0, 0, "%d %d %d", i_maxlines, i_outlines, i_endline );
158+
159+ for( i_line = 0; i_line < i_outlines; i_line++ ) {
160+ pstr_temp = TextBuf_GetLine( &lt_guest.t_textbuf,
161+ i_line + lt_guest.i_start_line, (void *)&t_attr );
162+ if( NULL == pstr_temp ) {
163+ mvwprintw( lt_guest.p_subwin, i_line + 1, 0, "" );
164+ } else {
165+ if( 0x00 != t_attr.i_attr ) { wattrset( lt_guest.p_subwin, t_attr.i_attr ); }
166+ mvwprintw( lt_guest.p_subwin, i_line + 1, 0, pstr_temp );
167+ if( 0x00 != t_attr.i_attr ) {
168+ wattroff( lt_guest.p_subwin, t_attr.i_attr );
169+ }
170+ }
95171 }
96172
97- mvwprintw( lt_guest.p_subwin, 0, 0, "Guest %d", i_guest );
98-
99173 goto_TuiGuest_Update_post:
100174 touchwin( lt_guest.p_win );
101175 touchwin( lt_guest.p_subwin );
@@ -135,10 +209,13 @@ int
135209 {
136210 int i_err;
137211
138- lt_guest.p_win = NULL;
139- lt_guest.p_subwin = NULL;
212+ lt_guest.p_win = NULL;
213+ lt_guest.p_subwin = NULL;
214+ lt_guest.i_guest = GUEST_ID_NONE;
215+ lt_guest.i_now_line = 0;
216+ lt_guest.i_start_line = 0;
140217
141- i_err = TextBuf_Init( &lt_guest.t_textbuf, 0, 0, 0 );
218+ i_err = TextBuf_Init( &lt_guest.t_textbuf, 0, 0, sizeof( TuiGuest_LineAttr ) );
142219 if( 0x00 != i_err ) {
143220 return -0x01;
144221 }
--- a/src/tuiguest.h
+++ b/src/tuiguest.h
@@ -42,10 +42,18 @@ VMTUI_TUIGUEST_EXTERN int TuiGuest_Init( void );
4242 VMTUI_TUIGUEST_EXTERN int TuiGuest_Term( void );
4343
4444 #ifdef VMTUI_SRC_TUIGUEST
45+typedef struct {
46+ int i_attr;
47+ char str_key[32];
48+} TuiGuest_LineAttr;
49+
4550 static struct {
4651 WINDOW *p_win;
4752 WINDOW *p_subwin;
4853 TextBuf_Info t_textbuf;
54+ int i_guest;
55+ int i_now_line;
56+ int i_start_line;
4957 } lt_guest;
5058 #endif
5159
--- a/src/tuisys.h
+++ b/src/tuisys.h
@@ -52,6 +52,13 @@ VMTUI_TUISYS_EXTERN WinLine gwl_list;
5252 VMTUI_TUISYS_EXTERN WinLine gwl_info;
5353 VMTUI_TUISYS_EXTERN int gi_infopage;
5454
55+#define COL_WHITE COLOR_PAIR(1)
56+#define COL_GREEN COLOR_PAIR(2)
57+#define COL_CYAN COLOR_PAIR(3)
58+#define COL_YELLOW COLOR_PAIR(4)
59+#define COL_RED COLOR_PAIR(5)
60+#define COL_MAGENTA COLOR_PAIR(6)
61+
5562 #define TUI_FOCUS_VMLIST 0x00
5663 #define TUI_FOCUS_INFO 0x01
5764 #define TUI_FOCUS_KEYLINE 0x02
--- a/src/tuivmlist_event.h
+++ b/src/tuivmlist_event.h
@@ -84,19 +84,9 @@ TuiKeyEvent_Define KeyEvent_VmList[] = {
8484 "Up VMlist curosr."
8585 },
8686 {
87- 'H', TUIKEY_MODE_VMLIST, VMLIST_TYPE_NONE, 0x00,
88- TuiVmListEvent_None,
89- "Show HyperVisor Information Page."
90- },
91- {
92- 'G', TUIKEY_MODE_VMLIST, VMLIST_TYPE_NONE, 0x00,
93- TuiVmListEvent_None,
94- "Show Guest Information Page."
95- },
96- {
9787 '?', TUIKEY_MODE_VMLIST, VMLIST_TYPE_NONE, 0x00,
9888 TuiVmListEvent_None,
99- "Show Help Page."
89+ "XXX Show Help Page."
10090 },
10191 // HyperVisor Key ---
10292 {
@@ -112,18 +102,23 @@ TuiKeyEvent_Define KeyEvent_VmList[] = {
112102 {
113103 'D', TUIKEY_MODE_VMLIST, VMLIST_TYPE_HVISOR, 0x00,
114104 TuiVmListEvent_None,
115- "DisConnect HyperVisor."
105+ "XXX DisConnect HyperVisor."
116106 },
117107 {
118108 't', TUIKEY_MODE_VMLIST, VMLIST_TYPE_HVISOR, 0x00,
119109 TuiVmListEvent_None,
120- "Connect HyperVisor terminal (Local / SSH)"
110+ "XXX Connect HyperVisor terminal (Local / SSH)"
121111 },
122112 {
123113 'T', TUIKEY_MODE_VMLIST, VMLIST_TYPE_HVISOR, 0x00,
124114 TuiVmListEvent_Test,
125115 "call Test Function. (for debug)"
126116 },
117+ {
118+ 'H', TUIKEY_MODE_VMLIST, VMLIST_TYPE_NONE, 0x00,
119+ TuiVmListEvent_None,
120+ "XXX Show HyperVisor Information Page."
121+ },
127122 // Guest Operational Key ---
128123 {
129124 '-', TUIKEY_MODE_VMLIST, VMLIST_TYPE_DUMMY_TITLE | VMLIST_TYPE_GUEST, COLOR_PAIR(3),
@@ -138,22 +133,27 @@ TuiKeyEvent_Define KeyEvent_VmList[] = {
138133 {
139134 'r', TUIKEY_MODE_VMLIST, VMLIST_TYPE_GUEST, 0x00,
140135 TuiVmListEvent_None,
141- "Reset(Reboot) Guest machine"
136+ "XXX Reset(Reboot) Guest machine"
142137 },
143138 {
144139 'R', TUIKEY_MODE_VMLIST, VMLIST_TYPE_GUEST, 0x00,
145140 TuiVmListEvent_None,
146- "FORCE Reset(Reboot) Guest machine"
141+ "XXX FORCE Reset(Reboot) Guest machine"
147142 },
148143 {
149144 'p', TUIKEY_MODE_VMLIST, VMLIST_TYPE_GUEST, 0x00,
150145 TuiVmListEvent_None,
151- "PowerOff Guest machine"
146+ "XXX PowerOff Guest machine"
152147 },
153148 {
154149 'P', TUIKEY_MODE_VMLIST, VMLIST_TYPE_GUEST, 0x00,
155150 TuiVmListEvent_None,
156- "Force PowerOFF(Stop) Guest machine"
151+ "XXX Force PowerOFF(Stop) Guest machine"
152+ },
153+ {
154+ 'G', TUIKEY_MODE_VMLIST, VMLIST_TYPE_NONE, 0x00,
155+ TuiVmListEvent_None,
156+ "XXX Show Guest Information Page."
157157 },
158158 // Guest Display Key ---
159159 {
@@ -164,17 +164,17 @@ TuiKeyEvent_Define KeyEvent_VmList[] = {
164164 {
165165 'v', TUIKEY_MODE_VMLIST, VMLIST_TYPE_GUEST, 0x00,
166166 TuiVmListEvent_None,
167- "Open VNC viewer"
167+ "XXX Open VNC viewer"
168168 },
169169 {
170170 'c', TUIKEY_MODE_VMLIST, VMLIST_TYPE_GUEST, 0x00,
171171 TuiVmListEvent_None,
172- "Connect serial console"
172+ "XXX Connect serial console"
173173 },
174174 {
175175 's', TUIKEY_MODE_VMLIST, VMLIST_TYPE_GUEST, 0x00,
176176 TuiVmListEvent_None,
177- "Connect SSH terminal"
177+ "XXX Connect SSH terminal"
178178 },
179179 // Guest Configuration Key ---
180180 {
@@ -185,17 +185,17 @@ TuiKeyEvent_Define KeyEvent_VmList[] = {
185185 {
186186 'C', TUIKEY_MODE_VMLIST, VMLIST_TYPE_GUEST, 0x00,
187187 TuiVmListEvent_None,
188- "Create Guest machine"
188+ "XXX Create Guest machine"
189189 },
190190 {
191191 'E', TUIKEY_MODE_VMLIST, VMLIST_TYPE_GUEST, 0x00,
192192 TuiVmListEvent_None,
193- "Edit(Configure) Guest machine"
193+ "XXX Edit(Configure) Guest machine"
194194 },
195195 {
196196 'X', TUIKEY_MODE_VMLIST, VMLIST_TYPE_GUEST, 0x00,
197197 TuiVmListEvent_None,
198- "Delete Guest machine"
198+ "XXX Delete Guest machine"
199199 }
200200 };
201201