Skip to content

Commit 25a6b48

Browse files
Add files via upload
SKETCH.BAT is simply the environment in which %$CALENDAR% is displayed. Calendar.bat is the function + @calender.click(macro) cmdwiz.bat is a small collection of batch made macros to use cmdwiz a little more easily. stdlib is provided for the esc character.
1 parent 36088e8 commit 25a6b48

File tree

5 files changed

+219
-0
lines changed

5 files changed

+219
-0
lines changed

Calendar/SKETCH.bat

+22
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
@echo off & setlocal enableDelayedExpansion
2+
3+
if "%~1" neq "" goto :%~1
4+
5+
call lib\stdlib 70 55
6+
call lib\cmdwiz
7+
call lib\calendar 20 20
8+
9+
(%@connectController% main controller "%temp%\%~n0_signal.txt" "%~F0") & exit
10+
:Main
11+
for /l %%# in () do (
12+
13+
set /p "com=" & set /a "x=com","%@mouse_and_keys%"
14+
15+
rem l1 = 1 left click l2 = 2 left click r1 = 1 right click r2 = 2 right click
16+
%@calendar.click% /l1
17+
18+
echo %\h%%\e%[H!scrn!%\e%[HCOM: !mx!,!my!,!LMB!,!RMB!,!DLB!,!DRB!,!MWD!,!MWU!,-!key!-%$calendar%%\e%[31;20HDate clicked: !$calendar.click!
19+
)2>nul
20+
21+
:Controller
22+
%@controller%

Calendar/lib/calendar.bat

+121
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,121 @@
1+
:_calendar.click
2+
rem %@calendar.click% calendar.x calendar.y /l1,/l2,/r1,/r2
3+
set @calendar.click=for %%# in (1 2) do if %%#==2 ( for /f "tokens=1" %%1 in ("^!args^!") do (%\n%
4+
for %%i in (^^!date.button.list^^!) do for /f "tokens=1-3 delims=-" %%a in ("%%~i") do (%\n%
5+
set /a "cb.x=(%%b * 4) + %~1 - 3", "cb.x0=(%%b * 4) + %~1 - 1 - 3","cb.x1=(%%b * 4) + %~1 + 1 - 3","cb.y=%%c + (%~2 + 1)"%\n%
6+
if ^^!mx^^! geq ^^!cb.x0^^! if ^^!mx^^! leq ^^!cb.x1^^! if ^^!my^^! equ ^^!cb.y^^! (%\n%
7+
if "%%~1" equ "" (%\n%
8+
set "$calendar.click=%%~a"%\n%
9+
) else if /i "%%~1" equ "/L1" (%\n%
10+
if "^!lmb^!" equ "1" set "$calendar.click=%%~a"%\n%
11+
) else if /i "%%~1" equ "/L2" (%\n%
12+
if "^!dlb^!" equ "1" set "$calendar.click=%%~a"%\n%
13+
) else if /i "%%~1" equ "/R1" (%\n%
14+
if "^!rmb^!" equ "1" set "$calendar.click=%%~a"%\n%
15+
) else if /i "%%~1" equ "/R2" (%\n%
16+
if "^!drb^!" equ "1" set "$calendar.click=%%~a"%\n%
17+
)%\n%
18+
)%\n%
19+
)%\n%
20+
for %%i in (cb.x cb.x0 cb.x1 cb.y) do set "%%~i="%\n%
21+
)) else set args=
22+
23+
rem define a few buffers
24+
for /l %%i in (0,1,5) do set "barBuffer=!barBuffer!!barBuffer! "
25+
26+
rem init calendar details set date
27+
set "totalDaysInMonth.list="01 January 31" "02 February 28" "03 March 31" "04 April 30" "05 May 31" "06 June 30" "07 July 31" "08 August 31" "09 September 30" "10 October 31" "11 November 30" "12 December 31""
28+
set "weekDays=Sun Mon Tue Wed Thu Fri Sat"
29+
30+
for %%a in (Mon.5DE23C Tue.30C5FF Wed.FBF719 Thu.FF793B Fri.FA3BF0) do (
31+
set /a "dayColors+=1"
32+
for /f "tokens=1,2 delims=." %%1 in ("%%a") do (
33+
set "dayDay[!dayColors!]=%%~1"
34+
set "hex=%%~2"
35+
set /a "r=0x!hex:~0,2!","g=0x!hex:~2,2!","b=0x!hex:~4,2!"
36+
set "dayColor[!dayColors!]=%\e%[48;2;!r!;!g!;!b!m%\e%[38;5;16m"
37+
)
38+
)
39+
40+
set "date.day=%date:~0,3%"
41+
for /f "tokens=1-3 delims=/" %%0 in ("%date:~4%") do (
42+
set "date.month=%%0"
43+
set "date.date.name=%%1"
44+
set "date.date=%%1"
45+
set "date.year=%%2"
46+
)
47+
48+
if "%date.date.name:~0,1%" equ "0" (
49+
set "date.date=%date.date.name:~1%"
50+
)
51+
52+
for %%i in (%weekDays%) do (
53+
if /i "%date.day%" neq "%%~i" (
54+
if !found! neq 1 (
55+
set /a "date.offset+=1"
56+
)
57+
) else set /a "found+=1"
58+
)
59+
60+
for %%i in (%totalDaysInMonth.list%) do (
61+
for /f "tokens=1-3" %%0 in ("%%~i") do (
62+
if /i "%date.month%" equ "%%~0" (
63+
set /a "date.daysInMonth=%%~2",^
64+
"date.daysLeft=%%~2 - date.date",^
65+
"date.percent=date.date * 100 / %%~2",^
66+
"date.percent.mapped=(date.date * 100 / %%~2) * %%~2 / 100"
67+
set "date.month.name=%%~1"
68+
)
69+
)
70+
)
71+
72+
set /a "barVal=15 * date.percent.mapped / date.daysInMonth", "onethird=date.daysInMonth / 3", "twoThird=onethird * 2"
73+
if !date.percent.mapped! lss !onethird! (
74+
set "hue=46"
75+
) else if !date.percent.mapped! gtr !oneThird! if !date.percent.mapped! lss !twoThird! (
76+
set "hue=226"
77+
) else if !date.percent.mapped! gtr !twoThird! (
78+
set "hue=196"
79+
)
80+
81+
if /i "!date.day!" equ "Sun" (
82+
set "back=%\e%[D"
83+
)
84+
85+
rem build calendar into sprite
86+
set /a "i=date.offset", "date.offset*=4", "date.monthLoop=date.daysInMonth - date.daysLeft"
87+
set "$calendar==%\e%7%\e%[38;5;15;48;5;16m%\e%[4m%\e%7Days left: !date.daysleft!%\e%8%\e%[14C%\e%(0x%\e%(B Pick a date:%\e%[0m%\e%8%\e%[B%\e%7 S %dayColor[1]% M %dayColor[2]% T %dayColor[3]% W %dayColor[4]% T %dayColor[5]% F %\e%[0m S %\e%8%\e%[B"
88+
set "$calendar!$calendar!%\e%[%date.offset%C%\e%[38;5;16;48;5;15m%back%"
89+
90+
set /a "j=1"
91+
for /l %%i in (%date.date%,1,%date.daysInMonth%) do (
92+
if %%i lss 10 (set "name=0%%i") else (set "name=%%i")
93+
set "$calendar=!$calendar! !name!%\e%(0x%\e%(B"
94+
set /a "i+=1"
95+
set "date.button.list=!date.button.list!"!name!-!i!-!j!" "
96+
if !i! gtr 6 (
97+
set /a "i*=4", "j+=1"
98+
set "$calendar=!$calendar!%\e%[!i!D%\e%[B"
99+
set "i=0"
100+
)
101+
)
102+
for /l %%i in (1,1,%date.monthLoop%) do (
103+
if %%i lss 10 (set "name=0%%i") else (set "name=%%i")
104+
set "$calendar=!$calendar! !name!%\e%(0x%\e%(B"
105+
set /a "i+=1"
106+
set "date.button.list=!date.button.list!"!name!-!i!-!j!" "
107+
if !i! gtr 6 (
108+
set /a "i*=4","j+=1"
109+
set "$calendar=!$calendar!%\e%[!i!D%\e%[B"
110+
set "i=0"
111+
)
112+
)
113+
114+
set /a "bx=%~1 - 1","by=%~2 - 1"
115+
set "$calendar=%\e%[%~2;%~1H!$calendar!%\e%[0m%\e%8%\e%[8B[%\e%7%\e%[48;5;!hue!m!barBuffer:~0,%barVal%!%\e%[0m%\e%8%\e%[15C][%\e%[38;5;!hue!m!date.date!%\e%[0m/!date.daysinmonth!:%\e%[38;5;!hue!m!date.percent!%\e%[0m%%]"
116+
set "$calendar=!$calendar!%\e%[!by!;!bx!H%\e%(0%\e%7lqqqqqqqqqqqqqqqqqqqqqqqqqqqqk%\e%8%\e%[B%\e%7x%\e%[28Cx%\e%8%\e%[B%\e%7x%\e%[28Cx%\e%8%\e%[B%\e%7x%\e%[28Cx%\e%8%\e%[B%\e%7x%\e%[28Cx%\e%8%\e%[B%\e%7x%\e%[28Cx%\e%8%\e%[B%\e%7x%\e%[28Cx%\e%8%\e%[B%\e%7x%\e%[28Cx%\e%8%\e%[B%\e%7x%\e%[28Cx%\e%8%\e%[B%\e%7tqqqqqqqqqqqqqqqqqqqqqqqqqqqqu%\e%8%\e%[B%\e%7x%\e%[28Cx%\e%8%\e%[Bmqqqqqqqqqqqqqqqqqqqqqqqqqqqqj%\e%(B%\e%[0m"
117+
set "date.date=!date.date.name!"
118+
for %%i in (i r g b name hex found date.offset date.date.name date.monthLoop weekDays barval onethird twoThird hue) do set "%%~i="
119+
for /f "tokens=1 delims==" %%i in ('set dayColor') do set "%%~i="
120+
for /f "tokens=1 delims==" %%i in ('set dayDay') do set "%%~i="
121+
goto :eof

Calendar/lib/cmdwiz.bat

+27
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
(set \n=^^^
2+
%= This creates an escaped Line Feed - DO NOT ALTER =%
3+
)
4+
5+
set "cmdwiz=lib\cmdwiz\cmdwiz"
6+
7+
:_mouse_and_keys
8+
set "@mouse_and_keys=key=x / 2, MX=((x>>10) & 2047)+1, MY=((x>>21) & 1023)+1, LMB=(x & 2)>>1, RMB=(x & 4)>>2, DLB=(x & 8)>>3, DRB=(x & 16)>>4, MWD=(x & 32)>>5, MWU=(x & 64)>>6"
9+
10+
:_connectController
11+
rem %@connectController% main controller "path"
12+
set @connectController=for %%# in (1 2) do if %%#==2 ( for /f "tokens=1-4" %%1 in ("^!args^!") do (%\n%
13+
"%%~4" %%~2 ^>"%%~3" ^| "%%~4" %%~1 ^<"%%~3"%\n%
14+
)) else set args=
15+
16+
:_controller
17+
rem %@controller%
18+
set @controller=(%\n%
19+
for /l %%# in () do (%\n%
20+
if exist "%temp%\%~n0_abort.txt" (%\n%
21+
del /f /q "%temp%\%~n0_abort.txt"^>nul%\n%
22+
exit%\n%
23+
)%\n%
24+
%cmdwiz% getch_or_mouse^>nul%\n%
25+
echo=^^!errorlevel^^!%\n%
26+
)%\n%
27+
)

Calendar/lib/cmdwiz/cmdwiz.exe

83.2 KB
Binary file not shown.

Calendar/lib/stdlib.bat

+49
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,49 @@
1+
for /f "tokens=1 delims==" %%a in ('set') do (
2+
set "unload=true"
3+
for %%b in (cd Path ComSpec SystemRoot temp windir) do if /i "%%a"=="%%b" set "unload=false"
4+
if "!unload!"=="true" set "%%a="
5+
)
6+
set "unload="
7+
8+
(set \n=^^^
9+
%= This creates an escaped Line Feed - DO NOT ALTER \n =%
10+
)
11+
for /f %%a in ('echo prompt $E^| cmd') do set "\e=%%a" %= \e =%
12+
set "\c=%\e%[2J" %= \c =%
13+
set "\h=%\e%[2J%\e%[H" %= \h =%
14+
<nul set /p "=%\e%[?25l" & rem hide cursor
15+
16+
set "@32bitlimit=0x7FFFFFFF" & rem 2147483647 or (1 << 31) - 1 or 0x7FFFFFFF
17+
18+
rem %@getDim% - get current dimensions of window
19+
set @getDim=(%\n%
20+
set "wid=" ^& set "hei=" ^& set "width=" ^& set "height="%\n%
21+
for /f "skip=2 tokens=2" %%a in ('mode') do if not defined hei (set /a "hei=height=%%a") else if not defined wid set /a "wid=width=%%a"%\n%
22+
)
23+
24+
%@getDim%
25+
if "%~2" neq "" (
26+
set /a "wid=width=%~1", "hei=height=%~2"
27+
mode %~1,%~2
28+
) 2>nul
29+
exit /b
30+
31+
Features:
32+
%~1 = width
33+
%~2 = height
34+
35+
Clears environment of unnecessary variables
36+
Hides cursor
37+
Sets size of window and provides definitions in variables, see below
38+
39+
Macros:
40+
@getDim
41+
42+
Values:
43+
@32bitlimit
44+
wid/width
45+
hei/height
46+
\e = esc
47+
\c = clear screen
48+
\h = clear\goto 0,0
49+
\n = newLine

0 commit comments

Comments
 (0)