mirror of
https://github.com/Zeal-Operating-System/ZealOS.git
synced 2024-12-26 23:36:32 +00:00
Implement WinTileGrid.
This commit is contained in:
parent
a879d1a330
commit
ac3e0cee2d
6 changed files with 87 additions and 2 deletions
|
@ -1,4 +1,8 @@
|
||||||
$WW,1$$FG,5$$TX+CX,"ChangeLog"$$FG$
|
$WW,1$$FG,5$$TX+CX,"ChangeLog"$$FG$
|
||||||
|
$IV,1$----12/30/21 22:08:17----$IV,0$
|
||||||
|
* Raised version number to 1.08.
|
||||||
|
* Implemented $LK+PU,"WinTileGrid",A="MN:WinTileGrid"$.
|
||||||
|
|
||||||
$IV,1$----12/30/21 17:12:01----$IV,0$
|
$IV,1$----12/30/21 17:12:01----$IV,0$
|
||||||
* Added $LK+PU,"LexDemo",A="FI:::/Demo/Lectures/LexDemo.ZC"$.
|
* Added $LK+PU,"LexDemo",A="FI:::/Demo/Lectures/LexDemo.ZC"$.
|
||||||
|
|
||||||
|
|
|
@ -16,6 +16,7 @@ $FG,2$ <CTRL-F>$FG$ Find
|
||||||
$FG,2$ <ALT-M>$FG$ Max Window
|
$FG,2$ <ALT-M>$FG$ Max Window
|
||||||
$FG,2$ <ALT-H>$FG$ Horz Tile
|
$FG,2$ <ALT-H>$FG$ Horz Tile
|
||||||
$FG,2$ <ALT-V>$FG$ Vert Tile
|
$FG,2$ <ALT-V>$FG$ Vert Tile
|
||||||
|
$FG,2$ <ALT-G>$FG$ Grid Tile
|
||||||
$FG,2$ <CTRL-L>$FG$ Text Menu
|
$FG,2$ <CTRL-L>$FG$ Text Menu
|
||||||
$FG,2$ <F7>$FG$ God Word
|
$FG,2$ <F7>$FG$ God Word
|
||||||
$FG,2$ <SHIFT-F7>$FG$ God Passage
|
$FG,2$ <SHIFT-F7>$FG$ God Passage
|
||||||
|
|
22
src/Home/Net/Tests/ICMPTest.ZC
Executable file
22
src/Home/Net/Tests/ICMPTest.ZC
Executable file
|
@ -0,0 +1,22 @@
|
||||||
|
|
||||||
|
U8 dst_mac[6] = {0xF0, 0x0D, 0xBE, 0xAD, 0xDE, 0xAF};
|
||||||
|
|
||||||
|
U32 dst_ip = 0x01020304;
|
||||||
|
|
||||||
|
U0 ICMPTest()
|
||||||
|
{
|
||||||
|
U8 *data_payload = CAlloc(8);
|
||||||
|
|
||||||
|
*(data_payload(U64 *)) = EndianU64(0xDEADC0DEBEEFFADE);
|
||||||
|
|
||||||
|
ARPCachePut(dst_ip, dst_mac); // Force entry into ARP Cache so IPV4 can match it with IPV4AddressMACGet
|
||||||
|
|
||||||
|
while (TRUE)
|
||||||
|
{
|
||||||
|
ICMPReplySend(dst_ip, EndianU16(0xDEAD), EndianU16(0xBEEF), EndianU16(0xC0DE), data_payload, 8);
|
||||||
|
Sleep(300);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
ICMPTest;
|
|
@ -135,6 +135,13 @@ Bool MyPutKey(I64 ch, I64 sc)
|
||||||
AutoComplete;
|
AutoComplete;
|
||||||
return TRUE;
|
return TRUE;
|
||||||
|
|
||||||
|
case 'g':
|
||||||
|
if (sc & SCF_KEY_DESC)
|
||||||
|
KeyDescSet("Cmd /WinTileGrid");
|
||||||
|
else
|
||||||
|
WinTileGrid;
|
||||||
|
return TRUE;
|
||||||
|
|
||||||
case 'h':
|
case 'h':
|
||||||
if (sc & SCF_KEY_DESC)
|
if (sc & SCF_KEY_DESC)
|
||||||
KeyDescSet("Cmd /WinTileHorz");
|
KeyDescSet("Cmd /WinTileHorz");
|
||||||
|
|
|
@ -13,7 +13,7 @@ CTask *sys_winmgr_task,
|
||||||
U8 *rev_bits_table; //Table with U8 bits reversed
|
U8 *rev_bits_table; //Table with U8 bits reversed
|
||||||
CDate local_time_offset;
|
CDate local_time_offset;
|
||||||
F64 *pow10_I64,
|
F64 *pow10_I64,
|
||||||
sys_os_version = 1.07;
|
sys_os_version = 1.08;
|
||||||
|
|
||||||
CAutoCompleteDictGlobals acd;
|
CAutoCompleteDictGlobals acd;
|
||||||
CAutoCompleteGlobals ac;
|
CAutoCompleteGlobals ac;
|
||||||
|
|
|
@ -495,7 +495,7 @@ public U0 WinTileHorz()
|
||||||
c = 1;
|
c = 1;
|
||||||
else if (c > 4)
|
else if (c > 4)
|
||||||
c = 4;
|
c = 4;
|
||||||
vert_size = (TEXT_ROWS -1) / c;
|
vert_size = (TEXT_ROWS - 1) / c;
|
||||||
|
|
||||||
WinHorz(1 - no_border, TEXT_COLS - 2 + no_border, task);
|
WinHorz(1 - no_border, TEXT_COLS - 2 + no_border, task);
|
||||||
WinVert((i & 3) * vert_size + 2 - no_border, (i & 3 + 1) * vert_size + no_border, task);
|
WinVert((i & 3) * vert_size + 2 - no_border, (i & 3 + 1) * vert_size + no_border, task);
|
||||||
|
@ -557,6 +557,57 @@ public U0 WinTileVert()
|
||||||
POPFD
|
POPFD
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public U0 WinTileGrid()
|
||||||
|
{//Tile windows in a grid.
|
||||||
|
CTask *task, *last_task = Fs;
|
||||||
|
I64 count, c, i, j, horz_size, vert_size, no_border;
|
||||||
|
|
||||||
|
PUSHFD
|
||||||
|
CLI //TODO Multiprocessor safe
|
||||||
|
task = sys_winmgr_task;
|
||||||
|
count = 0;
|
||||||
|
do
|
||||||
|
{
|
||||||
|
if (!Bt(&task->win_inhibit, WIf_SELF_FOCUS))
|
||||||
|
count++;
|
||||||
|
task = task->last_task;
|
||||||
|
}
|
||||||
|
while (task != sys_winmgr_task);
|
||||||
|
|
||||||
|
task = sys_winmgr_task;
|
||||||
|
i = 0;
|
||||||
|
do
|
||||||
|
{
|
||||||
|
if (!Bt(&task->win_inhibit, WIf_SELF_FOCUS))
|
||||||
|
{
|
||||||
|
no_border = Bt(&task->display_flags, DISPLAYf_NO_BORDER);
|
||||||
|
|
||||||
|
c = 1 + i % 2;
|
||||||
|
vert_size = (TEXT_ROWS - 1) / c;
|
||||||
|
horz_size = TEXT_COLS / c;
|
||||||
|
|
||||||
|
j = i % 4;
|
||||||
|
if (j < 2) // top half of screen
|
||||||
|
WinVert(2 - no_border, TEXT_ROWS / 2 - 1 + no_border, task);
|
||||||
|
else // bottom half of screen
|
||||||
|
WinVert(TEXT_ROWS / 2 + 1 - no_border, TEXT_ROWS - 2 + no_border, task);
|
||||||
|
|
||||||
|
if (j % 2 == 0) // left half of screen
|
||||||
|
WinHorz(1 - no_border, TEXT_COLS / 2 - 1 + no_border, task);
|
||||||
|
else // right half of screen
|
||||||
|
WinHorz(TEXT_COLS / 2 + 1 - no_border, TEXT_COLS - 2 + no_border, task);
|
||||||
|
|
||||||
|
last_task = task;
|
||||||
|
i++;
|
||||||
|
}
|
||||||
|
task = task->last_task;
|
||||||
|
}
|
||||||
|
while (task != sys_winmgr_task);
|
||||||
|
|
||||||
|
POPFD
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
public U0 WinMax(CTask *task = NULL)
|
public U0 WinMax(CTask *task = NULL)
|
||||||
{//Maximize task's window
|
{//Maximize task's window
|
||||||
I64 no_border;
|
I64 no_border;
|
||||||
|
|
Loading…
Reference in a new issue