diff --git a/programs/cmm/lib/fs.h b/programs/cmm/lib/fs.h index 8affbc8025..4535d98316 100644 --- a/programs/cmm/lib/fs.h +++ b/programs/cmm/lib/fs.h @@ -203,25 +203,6 @@ } -:int GetFile(dword buf, filesize, read_path) -{ - int return_val = 0; - BDVK ReadFile_atr; - dword rBuf; - if (! GetFileInfo(read_path, #ReadFile_atr)) - { - rBuf = malloc(ReadFile_atr.sizelo); - if (! ReadFile(0, ReadFile_atr.sizelo, rBuf, read_path)) - { - ESDWORD[buf] = rBuf; - ESDWORD[filesize] = ReadFile_atr.sizelo; - return_val = 1; - } - } - free(rBuf); - return return_val; -} - enum { DIRS_ALL, diff --git a/programs/cmm/notes/Tupfile.lua b/programs/cmm/notes/Tupfile.lua new file mode 100644 index 0000000000..cedf506467 --- /dev/null +++ b/programs/cmm/notes/Tupfile.lua @@ -0,0 +1,6 @@ +if tup.getconfig("NO_CMM") ~= "" then return end +if tup.getconfig("LANG") == "ru" +then C_LANG = "LANG_RUS" +else C_LANG = "LANG_ENG" -- this includes default case without config +end +tup.rule("notes.c", "c-- /D=AUTOBUILD /D=$(C_LANG) %f" .. tup.getconfig("KPACK_CMD"), "notes.com") diff --git a/programs/cmm/notes/checkbox.png b/programs/cmm/notes/checkbox.png new file mode 100644 index 0000000000..270fc82d46 Binary files /dev/null and b/programs/cmm/notes/checkbox.png differ diff --git a/programs/cmm/notes/checkbox.raw b/programs/cmm/notes/checkbox.raw new file mode 100644 index 0000000000..532d5192b4 Binary files /dev/null and b/programs/cmm/notes/checkbox.raw differ diff --git a/programs/cmm/notes/compile.bat b/programs/cmm/notes/compile.bat new file mode 100644 index 0000000000..64d9a8b235 --- /dev/null +++ b/programs/cmm/notes/compile.bat @@ -0,0 +1,9 @@ +@del lang.h-- +@echo #define LANG_ENG 1 >lang.h-- + +C-- notes.c +@del notes +@rename notes.com notes +@pause +@del lang.h-- +@del warning.txt diff --git a/programs/cmm/notes/edge.png b/programs/cmm/notes/edge.png new file mode 100644 index 0000000000..3f513b6965 Binary files /dev/null and b/programs/cmm/notes/edge.png differ diff --git a/programs/cmm/notes/edge.raw b/programs/cmm/notes/edge.raw new file mode 100644 index 0000000000..ad3ce6cbfa --- /dev/null +++ b/programs/cmm/notes/edge.raw @@ -0,0 +1 @@ +ÿÿÿÿÿÿþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿòòòæææÚÚÚÓÓÓÉÉÉÅÅÅ»»»»»»ÄÄÄàààÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðððÖÖÖÆÆÆ»»»ÆÆƼ¼¼íííÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿúúúñññéééìììõõõÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿüüüÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿûûûÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿãããÇÇÇÄÄÄàààýýýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿûûûßßßÅÅÅÁÁÁÑÑÑíííÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿöööýýýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿýýýíííßßßÖÖÖÓÓÓÝÝÝùùùÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿüüüááááááõõõÿÿÿÿÿÿþþþ¼¼¼ÔÔÔÌÌ̾¾¾ÜÜÜúúúÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿìììêêêþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿýýýñññÿÿÿÛÛÛ¼¼¼ÛÛÛÿÿÿÿÿÿõõõçççÙÙÙÑÑÑÙÙÙæææòòòýýýíííÜÜÜÓÓÓêêêýýýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿöööçççØØØÉÉɽ½½ÊÊÊàààùùùÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿúúúíííáááÕÕÕÉÉÉ»»»ÆÆÆÏÏÏÚÚÚàààéééìììõõõõõõíííÒÒÒÈÈÈàààíííñññýýýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿøøøÝÝÝÄÄÄÈÈÈÝÝÝëëëõõõöööáááÑÑÑÿÿÿöööÚÚÚÑÑÑÖÖÖßßßäääíííñññüüüÿÿÿÿÿÿÿÿÿäääÉÉÉÙÙÙéééùùùÿÿÿÿÿÿÿÿÿÿÿÿûûûêêêÙÙÙÇÇÇ¿¿¿ÆÆÆÍÍÍËËËÃÃû»»ÉÉÉÓÓÓáááðððöööÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿóóóéééùùùÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðððáááÒÒÒÄÄľ¾¾½½½ÐÐÐäääõõõÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿùùùÚÚÚ¾¾¾ÁÁÁÝÝÝÿÿÿÿÿÿÞÞÞÂÂÂêêêíííÔÔÔ¼¼¼ãããýýýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿùùùßßß½½½ÕÕÕëëëðððáááÆÆÆÎÎÎêêêûûûÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿéééÍÍͼ¼¼ÝÝÝýýýÿÿÿÿÿÿÿÿÿÿÿÿôôôíííÝÝÝÍÍͼ¼¼ÊÊÊÕÕÕÝÝÝààà×××ÀÀÀ×××ñññÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿàà྾¾ÔÔÔÓÓÓÃÃÃÐÐÐìììäääÎÎÎ÷÷÷÷÷÷ñññÖÖÖ¾¾¾ÜÜÜñññÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿéééÍÍÍËËËÌÌ̼¼¼âââýýýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿòòòñññêêêáááÖÖÖËËËÁÁÁ½½½ÆÆÆØØØÑÑÑðððÃÃÃÍÍ;¾¾ÃÃÃÎÎÎÚÚÚâââÛÛÛÏÏÏÆÆƼ¼¼ÊÊÊÙÙÙàààÌÌ̼¼¼ØØØñññÿÿÿõõõãããÒÒÒÁÁÁÂÂÂÏÏÏÜÜÜéééôôôçççÕÕÕÀÀÀÑÑÑäääñññääääääÚÚÚÖÖÖÏÏÏ¿¿¿ÉÉÉÓÓÓßßßéééõõõöööøøøùùùúúúúúúûûûûûûüüüúúúøøøêêêÕÕÕÊÊÊÆÆƽ½½»»»ÉÉÉËËËÖÖÖÚÚÚäääéééññññññèèèÝÝÝÍÍÍÁÁÁ×××ííí÷÷÷ùùùûûûüüüüüüùùùÎÎÎÍÍÍÂÂÂÚÚÚâââÝÝÝÖÖÖÑÑÑÉÉÉÆÆƾ¾¾»»»»»»»»»ÑÑÑèèèÛÛÛÍÍÍÀÀÀÅÅÅÔÔÔËËËÇÇǾ¾¾ÌÌÌÛÛÛëëëööö÷÷÷÷÷÷÷÷÷öööõõõéééàààÓÓÓÈÈÈ»»»ÏÏÏêêêÜÜÜÀÀÀÅÅÅÍÍÍÀÀÀËËËâââìììàààÔÔÔÈÈÈ»»»ÈÈÈÓÓÓáááíííõõõôôôãããÑÑÑÃÃÃÂÂÂ×××äääÛÛÛÖÖÖÉÉÉÅÅž¾¾ØØØòòòðððÍÍÍÍÍÍÝÝÝÄÄÄðððùùùúúúøøøëëëËË˼¼¼ÁÁÁÉÉÉÌÌÌÖÖÖÖÖÖãããÍÍÍÀÀÀÑÑÑîîîøøøúúúûûûùùù÷÷÷äääÊÊʾ¾¾ÌÌÌÞÞÞöööÿÿÿæææÊÊÊÈÈÈåååõõõðððÑÑѼ¼¼»»»»»»»»»»»»ÄÄÄÉÉÉØØØåååõõõ÷÷÷øøøùùùùùùøøøôôôÝÝÝÆÆÆÀÀÀÖÖÖîîîÿÿÿãããÇÇÇÙÙÙõõõÿÿÿÿÿÿÞÞÞÂÂÂËËËííí÷÷÷øøøöööãããËËË¿¿¿ìììüüüýýýûûûøøøòòò×××ÆÆÆ¿¿¿ÑÑÑåååÜÜÜÃÃÃÆÆÆæææööö÷÷÷ëëëÍÍͼ¼¼»»»¿¿¿ÉÉÉÒÒÒÙÙÙäääíííôôôÿÿÿÿÿÿÿÿÿøøøññññññïïïääääääÛÛÛÖÖÖÖÖÖÑÑÑÉÉÉÉÉÉÇÇÇ»»»»»»»»»ÅÅÅÆÆÆÌÌÌÓÓÓÝÝÝæææïïïõõõõõõÎÎÎöööøøøðððåååñññõõõ÷÷÷øøøùùùùùùøøøöööööö÷÷÷øøøùùù÷÷÷ñññÜÜÜÆÆƽ½½ÃÃÃÒÒÒáááðððöööøøøùùùúúúûûûúúúøøøõõõáááÑÑÑÇÇÇÑÑÑÑÑÑÚÚÚÝÝÝãããïïïööö÷÷÷øøøùùùúúúüüüüüüýýýýýýþþþþþþÿÿÿÿÿÿÿÿÿþþþýýýûûûøøø÷÷÷ööööööõõõéééçççÝÝÝÚÚÚÑÑÑÍÍÍÆÆÆÆÆÆÎÎÎØØØæææöööøøøûûûüüüþþþþþþÿÿÿÿÿÿýýýõõõæææöööøøøùùùùùùøøøøøø÷÷÷ööööööõõõõõõöööøøøùùùùùù÷÷÷öööíííßßßçççëëëööö÷÷÷ùùùûûûüüüüüüýýýýýýüüüüüüûûûùùùøøø÷÷÷öööõõõãããÌÌÌÒÒÒñññööö÷÷÷öööçççÓÓÓËËËÕÕÕßßßêêêõõõ÷÷÷øøøùùùûûûüüüûûûúúúøøøöööïïïÝÝÝÒÒÒÙÙÙÝÝÝèèèíííöööùùùûûûúúúøøøåååØØØòòòûûûþþþþþþýýýúúúøøøöööðððéééæææÝÝÝÝÝÝÒÒÒåååöööøøøûûûýýýþþþþþþþþþüüüúúú÷÷÷öööæææÖÖÖÂÂÂÎÎÎÁÁÁççç÷÷÷úúúûûûûûûøøøöööõõõõõõõõõöööööö÷÷÷ùùùúúúüüüýýýýýýþþþþþþýýýûûûùùù÷÷÷ñññÝÝÝÉÉɾ¾¾ÍÍÍêêêÛÛÛÕÕÕñññ×××ÌÌÌïïïøøøûûûýýýýýýüüüúúú÷÷÷øøøûûûþþþÿÿÿþþþýýýûûûùùù÷÷÷òòòáááÐÐÐÙÙÙîîî÷÷÷úúúüüüüüüúúúøøøöööõõõòòòéééáááÛÛÛÑÑÑÉÉÉÄÄÄ»»»»»»»»»ÁÁÁÆÆÆÆÆÆÈÈÈÑÑÑÑÑÑÙÙÙÝÝÝÝÝÝáááééééééëëëõõõõõõöööööö÷÷÷÷÷÷øøøøøøùùùúúúûûûûûû÷÷÷ûûûýýýûûûúúúúúúûûûüüüüüüþþþþþþýýýüüüüüüýýýýýýýýýýýýûûûùùù÷÷÷ôôôöööøøøúúúûûûüüüýýýþþþþþþÿÿÿþþþýýýüüüúúúøøø÷÷÷øøøøøøùùùùùùúúúûûûüüüýýýýýýþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþýýýýýýüüüüüüûûûûûûúúúùùùùùùøøø÷÷÷÷÷÷÷÷÷øøøùùùúúúüüüýýýþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþýýýûûûüüüýýýþþþþþþýýýýýýýýýüüüüüüüüüüüüüüüýýýþþþþþþýýýüüüûûûúúúúúúûûûüüüýýýþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþþþþýýýýýýüüüûûûúúúøøøùùùûûûüüüýýýüüüúúúøøøøøøøøøùùùûûûüüüüüüýýýþþþþþþÿÿÿÿÿÿþþþýýýüüüûûûùùùøøøùùùùùùúúúûûûüüüýýýþþþþþþýýýúúúúúúüüüþþþÿÿÿÿÿÿÿÿÿþþþýýýüüüûûûûûûúúúùùùùùùùùùúúúüüüýýýþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþýýýüüüúúúøøøöööåååîîîúúúüüüþþþÿÿÿþþþýýýüüüüüüüüüüüüüüüüüüýýýýýýþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþüüüûûûùùù÷÷÷óóóøøøùùùøøøßßßÁÁÁÖÖÖ÷÷÷ûûûýýýþþþÿÿÿÿÿÿÿÿÿþþþýýýýýýþþþÿÿÿÿÿÿÿÿÿÿÿÿþþþýýýüüüûûûúúúøøøùùùûûûýýýþþþÿÿÿÿÿÿþþþýýýüüüüüüûûûúúúúúúùùùøøø÷÷÷ööööööõõõõõõöööööö÷÷÷÷÷÷øøøøøøùùùùùùùùùúúúúúúúúúûûûûûûüüüüüüüüüüüüýýýýýýýýýýýýþþþþþþþþþüüüýýýþþþþþþýýýþþþþþþþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþýýýüüüüüüýýýþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþýýýýýýýýýýýýýýýþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþþþþþþþýýýýýýýýýýýýýýýýýýýýýþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþýýýýýýþþþÿÿÿÿÿÿÿÿÿþþþýýýýýýýýýþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþþþþýýýýýýþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþþþþþþþþþþþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþýýýüüüûûûüüüþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþýýýüüüýýýþþþýýýúúú÷÷÷ùùùüüüþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþýýýþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþþþþþþþýýýýýýüüüüüüüüüüüüüüüüüüüüüýýýýýýýýýýýýþþþþþþþþþþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþþþþþþþþþþþþþ \ No newline at end of file diff --git a/programs/cmm/notes/engine.h b/programs/cmm/notes/engine.h new file mode 100644 index 0000000000..1dd1853a52 --- /dev/null +++ b/programs/cmm/notes/engine.h @@ -0,0 +1,132 @@ +#define LINES_COUNT 13 +#define MAX_LINE_CHARS 256 + +#define CHBOX 12 +#define CHECKBOX_ID 50 +unsigned char checkbox[sizeof(file "checkbox.raw")]= FROM "checkbox.raw"; + +#define COL_BG_ACTIVE 0xFFE56B +#define COL_BG_INACTIVE 0xFFFFFF + +//===================================================// +// // +// LINE // +// // +//===================================================// + +struct NOTE_LINE +{ + bool state; + char data[MAX_LINE_CHARS]; +}; + +//===================================================// +// // +// LIST // +// // +//===================================================// + +struct NOTES { + llist list; + char txt_path[4096]; + char txt_data[MAX_LINE_CHARS*LINES_COUNT]; + + NOTE_LINE lines[LINES_COUNT]; + + char edit_active; + int OpenTxt(); + int SaveTxt(); + void DeleteCurrentNode(); + void DrawList(); + dword DrawLine(int line_n, draw_h); +} notes; + + +int NOTES::OpenTxt(dword file_path) +{ + int i=0, linepos=0; + int item_n=-1; + + strcpy(#txt_path, file_path); + ReadFile(0, 4096, #txt_data, #txt_path); + if (!txt_data) || (strncmp(#txt_data, "notes", 5)!=0) + { + notify("'Notes\nData file does not exists or is not valid' -tE"); + return 0; + } + else + { + i+=5; //skip "notes" indefinier + while (txt_data[i]) + { + if (txt_data[i]=='\n') { + item_n++; + i+=2; + if (txt_data[i]=='-') lines[item_n].state=false; else lines[item_n].state=true; + i+=2; + linepos = 0; + continue; + } + if (linepos=0) edit_box_mouse stdcall (#edit_box); + break; + + case evButton: + btn = GetButtonID(); + if (CLOSE_BTN == btn) EventExitApp(); + if (DELETE_BTN == btn) + { + notes.DeleteCurrentNode(); + notes.DrawList(); + DeleteBtn.active = 0; + break; + } + if (btn>=CHECKBOX_ID) //checkboxes + { + notes.lines[btn-CHECKBOX_ID].state ^= 1; + notes.DrawList(); + break; + } + break; + + case evKey: + GetKeys(); + if (SCAN_CODE_ESC == key_scancode) EventExitApp(); + if (SCAN_CODE_DOWN == key_scancode) { EventActivateLine(notes.list.cur_y+1); break; } + if (SCAN_CODE_UP == key_scancode) { EventActivateLine(notes.list.cur_y-1); break; } + if (notes.list.cur_y>=0) edit_box_key stdcall (#edit_box); + break; + + case evReDraw: + draw_window(); + } +} + + +void DrawCloseButton(dword x,y,w,h) +{ + DrawRectangle(x,y,w,h,0xC96832); + DrawRectangle3D(x+1,y+1,w-2,h-2,0xE6A37F,0xDD8452); + PutPixel(x+w-1, y+1, 0xE08C5E); + DefineButton(x+1,y+1,w-1,h-1,CLOSE_BTN+BT_HIDE,0); + WriteTextB(-6+w/2+x,h/2-4+y,0x80,0xFFFfff,"x"); +} + +void draw_window() +{ + int i; + notes.list.SetSizes(1, HEADER_HEIGHT, 270, RED_LINE_X*LINES_COUNT, RED_LINE_X); + DefineAndDrawWindow(100,100,notes.list.w+1,notes.list.h+HEADER_HEIGHT+4,0x01,0,0,0x01fffFFF); + //DefineDragableWindow(100, 100, notes.list.w+1, notes.list.h+HEADER_HEIGHT+4); + GetProcessInfo(#Form, SelfInfo); + DrawRectangle3D(0,0,Form.width,TITLE_H-1,0xBB6535, 0xCD6F3B); + DrawRectangle3D(1,1,Form.width-2,TITLE_H-3,0xEFBFA4, 0xDD8452); + DrawBar(2,2,Form.width-3,TITLE_H-4,0xE08C5E); + WriteText(9,TITLE_H/2-6,0x90,0xA9613A,WINDOW_CAPTION); + WriteTextB(7,TITLE_H/2-7,0x90,0xFFFfff,WINDOW_CAPTION); + _PutImage(1, TITLE_H, 292,EDGE_H, #edge); + PutPixel(notes.list.x+RED_LINE_X, notes.list.y-1, COL_RED_LINE); + ECX-=1; $int 0x40; + DrawCloseButton(Form.width-23,4,16,16); + DrawRectangle(0,TITLE_H,Form.width,Form.height-HEADER_HEIGHT+EDGE_H,0xBBBBBB); + for (i=0; lists[i]!=0; i++) DrawBar(1,Form.height-i-1, Form.width-1, 1, lists[i]); + edit_box.width = notes.list.w-RED_LINE_X-8; + edit_box.left = notes.list.x+RED_LINE_X+4; + + notes.DrawList(); +} + +void DrawEditBox_Notes() +{ + edit_box.pos = edit_box.offset = edit_box.shift = 0; + edit_box.size = strlen(edit_box.text); + edit_box.top = notes.list.cur_y*notes.list.item_h+4+notes.list.y; + edit_box_draw stdcall(#edit_box); +} + +//===================================================// +// // +// EVENTS // +// // +//===================================================// + +void EventActivateLine(int line_n) +{ + int old; + if (line_n<0) || (line_n>notes.list.count) return; + DeleteBtn.active = 0; + //redraw lines + notes.list.cur_y = line_n; + edit_box.text = notes.DrawLine(notes.list.cur_y, notes.list.item_h); + notes.DrawList(); + DrawEditBox_Notes(); +} + + +void EventExitApp() +{ + notes.SaveTxt(); + ExitProcess(); +} + +void EventDrawDeleteButton() +{ + notes.DrawLine(notes.list.cur_y, notes.list.item_h); + DeleteBtn.Draw(notes.list.x+notes.list.w, notes.list.cur_y*notes.list.item_h+notes.list.y, notes.list.item_h); + edit_box.top=-20; + DeleteBtn.active = 1; +} + +void EventSelectItem() +{ + int id; + id = mouse.y-notes.list.y/notes.list.item_h; + if (DeleteBtn.active) && (mouse.x>notes.list.x+notes.list.w-DeleteBtn.width) return; + if (id!=notes.list.cur_y) && (id