mirror of
https://github.com/Zeal-Operating-System/ZealOS.git
synced 2024-12-25 15:10:28 +00:00
ANSI Wallpaper
This commit is contained in:
parent
ee9bf4feaa
commit
13921f5403
4 changed files with 110 additions and 38 deletions
28
src/Demo/Graphics/WallPaperAnsi.ZC
Executable file
28
src/Demo/Graphics/WallPaperAnsi.ZC
Executable file
|
@ -0,0 +1,28 @@
|
||||||
|
U0 (*old_wall_paper)(CTask *task);
|
||||||
|
CDoc *wallpaper_doc;
|
||||||
|
|
||||||
|
U0 WallPaperAnsiInit(I64 filepath="::/Home/Wallpapers/Default.DD")
|
||||||
|
{
|
||||||
|
// if (Fs != sys_task)
|
||||||
|
// {
|
||||||
|
// "\nMust be System Included. (SHIFT-F5 / RightClick->System Include) \n";
|
||||||
|
// return;
|
||||||
|
// }
|
||||||
|
old_wall_paper = gr.fp_wall_paper;
|
||||||
|
wallpaper_doc = DocRead(filepath, DOCF_DBL_DOLLARS | DOCF_NO_CURSOR);
|
||||||
|
|
||||||
|
sys_winmgr_task->display_doc = wallpaper_doc;
|
||||||
|
|
||||||
|
if (gr_palette[0] > gr_palette[15])
|
||||||
|
Fs->text_attr = WHITE << 4 + WHITE;
|
||||||
|
else
|
||||||
|
Fs->text_attr = BLACK << 4 + BLACK;
|
||||||
|
|
||||||
|
|
||||||
|
wallpaper_doc->win_task = sys_winmgr_task;
|
||||||
|
|
||||||
|
// gr.fp_wall_paper = &WallPaperAnsi;
|
||||||
|
}
|
||||||
|
|
||||||
|
// WallPaperAnsiInit;
|
||||||
|
// WallInit;
|
9
src/Home/LatestChanges.DD
Normal file
9
src/Home/LatestChanges.DD
Normal file
|
@ -0,0 +1,9 @@
|
||||||
|
There is a Telnet client, you can use it to navigate BBS systems.
|
||||||
|
ZealOS community has it's own, feel free to join us at Telnet("bbs.zealos.net", 4001);
|
||||||
|
|
||||||
|
You can now add an ANSI wallpaper using WallPaperAnsiInit;.
|
||||||
|
If you'd like for it to run at the start, make the following changes:
|
||||||
|
|
||||||
|
In ::/StartOS.ZC add the following lines after the WallPaperInit
|
||||||
|
#include "::/Demo/Graphics/WallPaperAnsi"
|
||||||
|
WallPaperAnsiInit("::/Home/Wallpapers/MyWallPaper.DD");
|
55
src/Home/Net/Programs/Telnet/Telnet.ZC
Normal file → Executable file
55
src/Home/Net/Programs/Telnet/Telnet.ZC
Normal file → Executable file
|
@ -44,26 +44,6 @@ I64 TelnetOpen(U8 *host, U16 port) {
|
||||||
return sock;
|
return sock;
|
||||||
}
|
}
|
||||||
|
|
||||||
// function to increase/decrease col or row
|
|
||||||
U0 SetPos(I64 col, I64 row, Bool relativeCol=TRUE, Bool relativeRow=TRUE) {
|
|
||||||
if (col < 0) {
|
|
||||||
if (relativeCol)
|
|
||||||
term.current_col += col;
|
|
||||||
else
|
|
||||||
term.current_col = col;
|
|
||||||
if (term.current_col > term.window_width)
|
|
||||||
term.current_col = 1;
|
|
||||||
}
|
|
||||||
if (row < 0) {
|
|
||||||
if (relativeCol)
|
|
||||||
term.current_row += row;
|
|
||||||
else
|
|
||||||
term.current_row = row;
|
|
||||||
if (term.current_row > term.window_height)
|
|
||||||
term.current_row = 1;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
U0 HandleControlCodes(U8 ch) {
|
U0 HandleControlCodes(U8 ch) {
|
||||||
if (ch < 32) { // ASCII code below 32 (control character)
|
if (ch < 32) { // ASCII code below 32 (control character)
|
||||||
switch (ch) {
|
switch (ch) {
|
||||||
|
@ -90,8 +70,8 @@ U0 HandleControlCodes(U8 ch) {
|
||||||
// DocPrint(term.doc, "\f");
|
// DocPrint(term.doc, "\f");
|
||||||
break;
|
break;
|
||||||
case 13: // CR (Carriage Return)
|
case 13: // CR (Carriage Return)
|
||||||
// DocPrint(term.doc, "\r");
|
DocPrint(term.doc, "\r");
|
||||||
DocPrint(term.doc, "$$CM+LX+PRY,LE=0,RE=1$$");
|
// DocPrint(term.doc, "$$CM+LX+PRY,LE=0,RE=1$$");
|
||||||
break;
|
break;
|
||||||
case 14: // SO (Shift Out) - Switch to an alternate character set
|
case 14: // SO (Shift Out) - Switch to an alternate character set
|
||||||
case 15: // SI (Shift In) - Switch back to the default character set
|
case 15: // SI (Shift In) - Switch back to the default character set
|
||||||
|
@ -543,7 +523,7 @@ U0 ANSIParse()
|
||||||
term.current_col = col;
|
term.current_col = col;
|
||||||
|
|
||||||
DocPrint(term.doc, "$$CM+LX+TY,LE=%d,RE=%d$$", term.current_col-1, term.current_row-1);
|
DocPrint(term.doc, "$$CM+LX+TY,LE=%d,RE=%d$$", term.current_col-1, term.current_row-1);
|
||||||
|
//DocCursorPosSet(term.doc, col, row);
|
||||||
ptr++;
|
ptr++;
|
||||||
break;
|
break;
|
||||||
case 'J':
|
case 'J':
|
||||||
|
@ -568,20 +548,16 @@ U0 ANSIParse()
|
||||||
case 'K':
|
case 'K':
|
||||||
// TODO: I have no idea if this actually works
|
// TODO: I have no idea if this actually works
|
||||||
|
|
||||||
if (ansi_param_count == 0 || ansi_code[0] == 0) {
|
// if (ansi_param_count == 0 || ansi_code[0] == 0) {
|
||||||
// Erase from cursor to end of line
|
// // Erase from cursor to end of line
|
||||||
// I'm not calculating current_row properly yet so it wont work as expected.
|
// LineDeleteToEnd(term.doc->cur_entry, doc.term->cur_col);
|
||||||
SysLog("K code 0, cur: %d\n", term.doc->cur_entry->y);
|
// } else if (ansi_code[0] == 1) {
|
||||||
DocDelToNum(term.doc, term.doc->cur_entry->y);
|
// // Erase from cursor to beginning of line
|
||||||
} else if (ansi_code[0] == 1) {
|
// LineDeleteToStart(term.doc->cur_entry, doc.term->cur_col);
|
||||||
// Erase from cursor to beginning of line
|
// } else if (ansi_code[0] == 2) {
|
||||||
SysLog("K code 1, cur: %d\n", term.doc->cur_entry->y);
|
// // Erase entire line
|
||||||
DocDelToEntry(term.doc, term.doc->cur_entry, TRUE);
|
// LineDeleteEntire(term.doc->cur_entry);
|
||||||
} else if (ansi_code[0] == 2) {
|
// }
|
||||||
// Erase entire line
|
|
||||||
SysLog("K code 2, cur: %d\n", term.doc->cur_entry->y);
|
|
||||||
DocDelEntry(term.doc, term.doc->cur_entry);
|
|
||||||
}
|
|
||||||
ptr++;
|
ptr++;
|
||||||
break;
|
break;
|
||||||
case 'L':
|
case 'L':
|
||||||
|
@ -926,6 +902,11 @@ init_connection:
|
||||||
"Error: Could not load art.\n";
|
"Error: Could not load art.\n";
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
case CH_CTRLS:
|
||||||
|
// Save as DD image.
|
||||||
|
StrCopy(term.doc->filename.name, "::/Home/Wallpapers/Default.DD");
|
||||||
|
DocWrite(term.doc, TRUE);
|
||||||
|
break;
|
||||||
case CH_CTRLD:
|
case CH_CTRLD:
|
||||||
dark_mode = !dark_mode;
|
dark_mode = !dark_mode;
|
||||||
if (dark_mode) Fs->text_attr = WHITE << 4 + BLACK;
|
if (dark_mode) Fs->text_attr = WHITE << 4 + BLACK;
|
||||||
|
|
56
src/Home/Net/Programs/Telnet/TelnetHelpers.ZC
Normal file → Executable file
56
src/Home/Net/Programs/Telnet/TelnetHelpers.ZC
Normal file → Executable file
|
@ -75,7 +75,8 @@ public U8 *ANSIArtBrowser()
|
||||||
U8 *selectedFile = PopUpPickFile("::/Home/Net/Programs/Telnet/Art");
|
U8 *selectedFile = PopUpPickFile("::/Home/Net/Programs/Telnet/Art");
|
||||||
if (selectedFile) {
|
if (selectedFile) {
|
||||||
if (StrCompare(selectedFile, "")) {
|
if (StrCompare(selectedFile, "")) {
|
||||||
SysLog(selectedFile);
|
// SysLog(selectedFile);
|
||||||
|
StrCopy(Fs->task_title, selectedFile);
|
||||||
return selectedFile;
|
return selectedFile;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -83,6 +84,59 @@ public U8 *ANSIArtBrowser()
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
U0 DocCursorPosSet(CDoc *doc, I64 x, I64 y)
|
||||||
|
{
|
||||||
|
Bool unlock;
|
||||||
|
|
||||||
|
unlock = DocLock(doc);
|
||||||
|
if (doc->doc_signature == DOC_SIGNATURE_VAL)
|
||||||
|
{
|
||||||
|
doc->x = x;
|
||||||
|
doc->y = y;
|
||||||
|
DocRecalc(doc, RECALCt_FIND_CURSOR);
|
||||||
|
if (unlock)
|
||||||
|
DocUnlock(doc);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
U0 DocRelCursorPosSet(CDoc *doc, I64 dx, I64 dy) {
|
||||||
|
Bool unlock;
|
||||||
|
|
||||||
|
if (!doc && !(doc = DocPut)) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
unlock = DocLock(doc);
|
||||||
|
|
||||||
|
doc->x += dx;
|
||||||
|
doc->y += dy;
|
||||||
|
|
||||||
|
DocRecalc(doc, RECALCt_FIND_CURSOR);
|
||||||
|
|
||||||
|
if (unlock)
|
||||||
|
DocUnlock(doc);
|
||||||
|
}
|
||||||
|
|
||||||
|
// function to increase/decrease col or row
|
||||||
|
U0 SetPos(I64 col, I64 row, Bool relativeCol=TRUE, Bool relativeRow=TRUE) {
|
||||||
|
if (col < 0) {
|
||||||
|
if (relativeCol)
|
||||||
|
term.current_col += col;
|
||||||
|
else
|
||||||
|
term.current_col = col;
|
||||||
|
if (term.current_col > term.window_width)
|
||||||
|
term.current_col = 1;
|
||||||
|
}
|
||||||
|
if (row < 0) {
|
||||||
|
if (relativeCol)
|
||||||
|
term.current_row += row;
|
||||||
|
else
|
||||||
|
term.current_row = row;
|
||||||
|
if (term.current_row > term.window_height)
|
||||||
|
term.current_row = 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// public I64 ANSIArtBrowser()
|
// public I64 ANSIArtBrowser()
|
||||||
// {
|
// {
|
||||||
// CDirEntry *tmpde1 = NULL, *tmpde2;
|
// CDirEntry *tmpde1 = NULL, *tmpde2;
|
||||||
|
|
Loading…
Reference in a new issue