Rev 9050 | Rev 9073 | Go to most recent revision | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 9050 | Rev 9060 | ||
---|---|---|---|
Line 26... | Line 26... | ||
26 | CB := Clipboard, Languages, |
26 | CB := Clipboard, Languages, |
27 | ChangeLog, Scroll, |
27 | ChangeLog, Scroll, |
28 | RW, Ini, box_lib, Icons, Tabs; |
28 | RW, Ini, box_lib, Icons, Tabs; |
Line 29... | Line 29... | ||
29 | 29 | ||
30 | CONST |
30 | CONST |
Line 31... | Line 31... | ||
31 | header = "CEdit (10-jul-2021)"; |
31 | header = "CEdit (12-jul-2021)"; |
32 | 32 | ||
Line 33... | Line 33... | ||
33 | ShellFilter = ""; |
33 | ShellFilter = ""; |
Line 426... | Line 426... | ||
426 | canvas := G.CreateCanvas(cliWidth - (LEFT + RIGHT + 1), cliHeight - (TOP + BOTTOM)); |
426 | canvas := G.CreateCanvas(cliWidth - (LEFT + RIGHT + 1), cliHeight - (TOP + BOTTOM)); |
427 | Tabs.setArea(tabs, LEFT, TOP - Tabs.tabHeight, cliWidth - (LEFT + RIGHT + 1), Tabs.tabHeight); |
427 | Tabs.setArea(tabs, LEFT, TOP - Tabs.tabHeight, cliWidth - (LEFT + RIGHT + 1), Tabs.tabHeight); |
428 | G.SetFont(canvas, font); |
428 | G.SetFont(canvas, font); |
429 | T.setCanvas(canvas); |
429 | T.setCanvas(canvas); |
430 | T.resize(canvas.width, canvas.height); |
430 | T.resize(canvas.width, canvas.height); |
431 | Scroll.resize(vScroll, vScroll.xSize, canvas.height - scrollWidth*2 + 1); |
431 | Scroll.resize(vScroll, vScroll.xSize, canvas.height - scrollWidth*2 + 2); |
432 | Scroll.resize(hScroll, canvas.width - scrollWidth*2, hScroll.ySize); |
432 | Scroll.resize(hScroll, canvas.width - scrollWidth*2, hScroll.ySize); |
433 | END resize; |
433 | END resize; |
Line 434... | Line 434... | ||
434 | 434 | ||
435 | 435 | ||
436 | PROCEDURE SearchPanel (left, top: INTEGER); |
436 | PROCEDURE SearchPanel (left, top: INTEGER); |
437 | VAR |
437 | VAR |
- | 438 | y, right, bottom, color: INTEGER; |
|
438 | y, right, bottom, color: INTEGER; |
439 | BEGIN |
439 | BEGIN |
440 | DEC(top, Tabs.tabHeight); |
440 | right := left + EditBox_Width + SEARCH_PADDING*2; |
441 | right := left + EditBox_Width + SEARCH_PADDING*2; |
441 | bottom := top + 395 + btnHeight + SEARCH_PADDING; |
442 | bottom := top + 395 + btnHeight + SEARCH_PADDING; |
442 | color := K.borderColor; |
443 | color := K.borderColor; |
Line 569... | Line 570... | ||
569 | drawToolbarBtn(btnRun, x); |
570 | drawToolbarBtn(btnRun, x); |
570 | INC(x, toolBtnSize + 5); |
571 | INC(x, toolBtnSize + 5); |
Line 571... | Line 572... | ||
571 | 572 | ||
Line 572... | Line 573... | ||
572 | toolbarIcons; |
573 | toolbarIcons; |
573 | 574 | ||
574 | K.CreateButton(btnUp, LEFT + canvas.width - 1, TOP, scrollWidth - 1, scrollWidth, K.btnColor, 0X); |
575 | K.CreateButton(btnUp, LEFT + canvas.width - 1, TOP - 1, scrollWidth - 1, scrollWidth, K.btnColor, 0X); |
575 | K.DrawText69(LEFT + canvas.width - 1 + (scrollWidth - 6) DIV 2, TOP + (scrollWidth - 9) DIV 2, K.btnTextColor, 18X); |
576 | K.DrawText69(LEFT + canvas.width - 1 + (scrollWidth - 6) DIV 2, TOP + (scrollWidth - 9) DIV 2, K.btnTextColor, 18X); |
Line 576... | Line 577... | ||
576 | K.CreateButton(btnDown, LEFT + canvas.width - 1, TOP + canvas.height - scrollWidth - 1, scrollWidth - 1, scrollWidth, K.btnColor, 0X); |
577 | K.CreateButton(btnDown, LEFT + canvas.width - 1, TOP + canvas.height - scrollWidth - 1, scrollWidth - 1, scrollWidth, K.btnColor, 0X); |
577 | K.DrawText69(LEFT + canvas.width - 1 + (scrollWidth - 6) DIV 2, TOP + canvas.height - scrollWidth + (scrollWidth - 9) DIV 2, K.btnTextColor, 19X); |
578 | K.DrawText69(LEFT + canvas.width - 1 + (scrollWidth - 6) DIV 2, TOP + canvas.height - scrollWidth + (scrollWidth - 9) DIV 2, K.btnTextColor, 19X); |
578 | 579 | ||
579 | K.CreateButton(btnLeft, LEFT, TOP + canvas.height - 1, scrollWidth, scrollWidth - 1, K.btnColor, 0X); |
580 | K.CreateButton(btnLeft, LEFT, TOP + canvas.height - 1, scrollWidth, scrollWidth - 1, K.btnColor, 0X); |
Line 580... | Line 581... | ||
580 | K.DrawText69(LEFT + (scrollWidth - 6) DIV 2, TOP + canvas.height - 1 + (scrollWidth - 9) DIV 2 + 1, K.btnTextColor, 1BX); |
581 | K.DrawText69(LEFT + (scrollWidth - 6) DIV 2, TOP + canvas.height - 1 + (scrollWidth - 9) DIV 2 + 1, K.btnTextColor, 1BX); |
581 | K.CreateButton(btnRight, LEFT + canvas.width - scrollWidth - 1, TOP + canvas.height - 1, scrollWidth, scrollWidth - 1, K.btnColor, 0X); |
582 | K.CreateButton(btnRight, LEFT + canvas.width - scrollWidth - 1, TOP + canvas.height - 1, scrollWidth, scrollWidth - 1, K.btnColor, 0X); |
Line 582... | Line 583... | ||
582 | K.DrawText69(LEFT + canvas.width - scrollWidth - 1 + (scrollWidth - 6) DIV 2, TOP + canvas.height - 1 + (scrollWidth - 9) DIV 2 + 1, K.btnTextColor, 1AX); |
583 | K.DrawText69(LEFT + canvas.width - scrollWidth - 1 + (scrollWidth - 6) DIV 2, TOP + canvas.height - 1 + (scrollWidth - 9) DIV 2 + 1, K.btnTextColor, 1AX); |
583 | 584 | ||
584 | K.PutPixel(LEFT + canvas.width + scrollWidth - 2, TOP, K.winColor); |
585 | K.PutPixel(LEFT + canvas.width + scrollWidth - 2, TOP - 1, K.winColor); |
Line 785... | Line 786... | ||
785 | K.CreateButton(btnYes, left + 10, top + 35, btnWidth, btnHeight, K.btnColor, "yes"); |
786 | K.CreateButton(btnYes, left + 10, top + 35, btnWidth, btnHeight, K.btnColor, "yes"); |
786 | K.CreateButton(btnNo, left + 20 + btnWidth, top + 35, btnWidth, btnHeight, K.btnColor, "no"); |
787 | K.CreateButton(btnNo, left + 20 + btnWidth, top + 35, btnWidth, btnHeight, K.btnColor, "no"); |
787 | END Confirm; |
788 | END Confirm; |
Line 788... | Line 789... | ||
788 | 789 | ||
789 | 790 | ||
790 | PROCEDURE closeFile (conf: BOOLEAN); |
791 | PROCEDURE closeFile (conf: BOOLEAN; n: INTEGER); |
791 | VAR |
792 | VAR |
792 | i: INTEGER; |
793 | i: INTEGER; |
793 | BEGIN |
794 | BEGIN |
794 | IF text.modified & conf THEN |
795 | IF text.modified & conf THEN |
795 | Confirm |
796 | Confirm |
796 | ELSE |
797 | ELSE |
797 | Tabs.delete(tabs, curText); |
798 | Tabs.delete(tabs, n); |
798 | FOR i := curText + 1 TO textsCount - 1 DO |
799 | FOR i := n + 1 TO textsCount - 1 DO |
799 | texts[i - 1] := texts[i] |
800 | texts[i - 1] := texts[i] |
800 | END; |
801 | END; |
801 | DEC(textsCount); |
802 | DEC(textsCount); |
802 | IF curText = textsCount THEN |
803 | IF (curText = textsCount) OR (n < curText) THEN |
803 | DEC(curText) |
804 | DEC(curText) |
804 | END; |
805 | END; |
805 | IF curText >= 0 THEN |
806 | IF curText >= 0 THEN |
Line 998... | Line 999... | ||
998 | WHILE (textsCount > 0) & cont DO |
999 | WHILE (textsCount > 0) & cont DO |
999 | IF text.modified THEN |
1000 | IF text.modified THEN |
1000 | Confirm; |
1001 | Confirm; |
1001 | cont := FALSE |
1002 | cont := FALSE |
1002 | ELSE |
1003 | ELSE |
1003 | closeFile(FALSE); |
1004 | closeFile(FALSE, curText); |
1004 | repaint |
1005 | repaint |
1005 | END |
1006 | END |
1006 | END |
1007 | END |
1007 | END close; |
1008 | END close; |
Line 1055... | Line 1056... | ||
1055 | repaint |
1056 | repaint |
1056 | |menuSaveAll: |
1057 | |menuSaveAll: |
1057 | saveAll; |
1058 | saveAll; |
1058 | repaint |
1059 | repaint |
1059 | |menuClose: |
1060 | |menuClose: |
1060 | closeFile(TRUE) |
1061 | closeFile(TRUE, curText) |
1061 | |menuFolder: |
1062 | |menuFolder: |
1062 | K.Run("/rd/1/File Managers/Eolite", text.fileName) |
1063 | K.Run("/rd/1/File Managers/Eolite", text.fileName) |
1063 | |menuExit: |
1064 | |menuExit: |
1064 | close |
1065 | close |
1065 | |menuUndo: |
1066 | |menuUndo: |
Line 1143... | Line 1144... | ||
1143 | BEGIN |
1144 | BEGIN |
1144 | menuItem := -1; |
1145 | menuItem := -1; |
1145 | getKBState; |
1146 | getKBState; |
1146 | IF (T.CTRL IN shift) THEN |
1147 | IF (T.CTRL IN shift) THEN |
1147 | CASE key DIV 65536 OF |
1148 | CASE key DIV 65536 OF |
- | 1149 | |17: menuItem := menuClose |
|
1148 | |21: menuItem := menuRedo |
1150 | |21: menuItem := menuRedo |
1149 | |30: menuItem := menuSelectAll |
1151 | |30: menuItem := menuSelectAll |
1150 | |33: menuItem := menuSearch |
1152 | |33: menuItem := menuSearch |
1151 | |34: menuItem := menuGoto |
1153 | |34: menuItem := menuGoto |
1152 | |44: menuItem := menuUndo |
1154 | |44: menuItem := menuUndo |
Line 1205... | Line 1207... | ||
1205 | Menu.AddMenuItem(menu, menuSave, "save ctrl-S"); |
1207 | Menu.AddMenuItem(menu, menuSave, "save ctrl-S"); |
1206 | Menu.AddMenuItem(menu, menuSaveAs, "save as"); |
1208 | Menu.AddMenuItem(menu, menuSaveAs, "save as"); |
1207 | Menu.AddMenuItem(menu, menuSaveAll, "save all"); |
1209 | Menu.AddMenuItem(menu, menuSaveAll, "save all"); |
1208 | Menu.AddMenuItem(menu, menuFolder, "folder"); |
1210 | Menu.AddMenuItem(menu, menuFolder, "folder"); |
1209 | Menu.delimiter(menu); |
1211 | Menu.delimiter(menu); |
1210 | Menu.AddMenuItem(menu, menuClose, "close"); |
1212 | Menu.AddMenuItem(menu, menuClose, "close ctrl-W"); |
1211 | Menu.delimiter(menu); |
1213 | Menu.delimiter(menu); |
1212 | Menu.AddMenuItem(menu, menuExit, "exit"); |
1214 | Menu.AddMenuItem(menu, menuExit, "exit"); |
1213 | RETURN Menu.create(menu, MenuItemClick, MenuKeyDown) |
1215 | RETURN Menu.create(menu, MenuItemClick, MenuKeyDown) |
1214 | END CreateMenuFile; |
1216 | END CreateMenuFile; |
Line 1420... | Line 1422... | ||
1420 | msState: SET; |
1422 | msState: SET; |
1421 | scroll: INTEGER; |
1423 | scroll: INTEGER; |
1422 | err: INTEGER; |
1424 | err: INTEGER; |
1423 | fileName, filePath: RW.tFileName; |
1425 | fileName, filePath: RW.tFileName; |
1424 | cliWidth, cliHeight: INTEGER; |
1426 | cliWidth, cliHeight: INTEGER; |
1425 | resized: BOOLEAN; |
1427 | resized, middle: BOOLEAN; |
1426 | firstClickX, firstClickY, time: INTEGER; |
1428 | firstClickX, firstClickY, time: INTEGER; |
1427 | BEGIN |
1429 | BEGIN |
1428 | K.GetSystemColors; |
1430 | K.GetSystemColors; |
1429 | Icons.get(icons, grayIcons); |
1431 | Icons.get(icons, grayIcons); |
1430 | modified := FALSE; |
1432 | modified := FALSE; |
Line 1478... | Line 1480... | ||
1478 | END |
1480 | END |
1479 | END; |
1481 | END; |
1480 | OD := OpenDlg.Create(draw_window, OpenDlg.topen, filePath, ""); |
1482 | OD := OpenDlg.Create(draw_window, OpenDlg.topen, filePath, ""); |
1481 | insert(0, text); |
1483 | insert(0, text); |
Line 1482... | Line 1484... | ||
1482 | 1484 | ||
1483 | vScroll := Scroll.create(scrollWidth, canvas.height - scrollWidth*2 + 1); |
1485 | vScroll := Scroll.create(scrollWidth, canvas.height - scrollWidth*2 + 2); |
1484 | hScroll := Scroll.create(canvas.width - scrollWidth*2, scrollWidth); |
1486 | hScroll := Scroll.create(canvas.width - scrollWidth*2, scrollWidth); |
1485 | T.resize(canvas.width, canvas.height); |
1487 | T.resize(canvas.width, canvas.height); |
1486 | T.SetPos(text, 0, 0); |
1488 | T.SetPos(text, 0, 0); |
1487 | confirm := FALSE; |
1489 | confirm := FALSE; |
Line 1524... | Line 1526... | ||
1524 | getKBState; |
1526 | getKBState; |
1525 | IF confirm THEN |
1527 | IF confirm THEN |
1526 | IF key DIV 65536 = 28 THEN (* Enter *) |
1528 | IF key DIV 65536 = 28 THEN (* Enter *) |
1527 | save(text); |
1529 | save(text); |
1528 | IF ~text.modified THEN |
1530 | IF ~text.modified THEN |
1529 | closeFile(FALSE) |
1531 | closeFile(FALSE, curText) |
1530 | END; |
1532 | END; |
1531 | repaint |
1533 | repaint |
1532 | END; |
1534 | END; |
1533 | key := -1 |
1535 | key := -1 |
1534 | END; |
1536 | END; |
Line 1539... | Line 1541... | ||
1539 | notFound := ~T.findNext(text, ~box_lib.check_box_get_value(BKW)) |
1541 | notFound := ~T.findNext(text, ~box_lib.check_box_get_value(BKW)) |
1540 | ELSE |
1542 | ELSE |
1541 | notFound := ~T.findNext(text, box_lib.check_box_get_value(BKW)) |
1543 | notFound := ~T.findNext(text, box_lib.check_box_get_value(BKW)) |
1542 | END |
1544 | END |
1543 | END |
1545 | END |
- | 1546 | ELSIF key DIV 65536 = 60 THEN (* F2 *) |
|
- | 1547 | key := -1; |
|
- | 1548 | IF T.CTRL IN shift THEN |
|
- | 1549 | T.toggleLabel(text) |
|
- | 1550 | ELSE |
|
- | 1551 | T.gotoLabel(text, ~(T.SHIFT IN shift)) |
|
- | 1552 | END |
|
1544 | ELSIF key DIV 65536 = 67 THEN (* F9 *) |
1553 | ELSIF key DIV 65536 = 67 THEN (* F9 *) |
1545 | key := -1; |
1554 | key := -1; |
1546 | IF T.CTRL IN shift THEN |
1555 | IF T.CTRL IN shift THEN |
1547 | Script(buildScript) |
1556 | Script(buildScript) |
1548 | ELSE |
1557 | ELSE |
Line 1553... | Line 1562... | ||
1553 | IF search THEN |
1562 | IF search THEN |
1554 | Search |
1563 | Search |
1555 | END |
1564 | END |
1556 | ELSIF (key DIV 65536 = 55) & (key DIV 256 MOD 256 = 52) THEN |
1565 | ELSIF (key DIV 65536 = 55) & (key DIV 256 MOD 256 = 52) THEN |
1557 | key := -1 (* PrtScn *) |
1566 | key := -1 (* PrtScn *) |
- | 1567 | ELSIF (T.CTRL IN shift) & (key DIV 65536 = 15) THEN (* ctrl+Tab *) |
|
- | 1568 | key := -1; |
|
- | 1569 | curText := (curText + 1) MOD textsCount; |
|
- | 1570 | Tabs.switch(tabs, curText); |
|
- | 1571 | Switch(texts[curText]); |
|
- | 1572 | draw_window |
|
1558 | ELSIF (T.CTRL IN shift) & (key DIV 65536 = 33) THEN |
1573 | ELSIF (T.CTRL IN shift) & (key DIV 65536 = 33) THEN |
1559 | key := -1; |
1574 | key := -1; |
1560 | IF ~search THEN |
1575 | IF ~search THEN |
1561 | Search |
1576 | Search |
1562 | END; |
1577 | END; |
1563 | EditBox_SetFocus(FindEdit, TRUE); |
1578 | EditBox_SetFocus(FindEdit, TRUE); |
1564 | EditBox_SetFocus(ReplaceEdit, FALSE); |
1579 | EditBox_SetFocus(ReplaceEdit, FALSE); |
1565 | EditBox_SetFocus(GotoEdit, FALSE); |
1580 | EditBox_SetFocus(GotoEdit, FALSE) |
1566 | ELSIF (T.CTRL IN shift) & (key DIV 65536 = 34) THEN |
1581 | ELSIF (T.CTRL IN shift) & (key DIV 65536 = 34) THEN |
1567 | key := -1; |
1582 | key := -1; |
1568 | IF ~search THEN |
1583 | IF ~search THEN |
1569 | Search |
1584 | Search |
1570 | END; |
1585 | END; |
Line 1602... | Line 1617... | ||
1602 | |83: key := 46 |
1617 | |83: key := 46 |
1603 | |59, 60, 62..66, 68, 87, 88: key := -1 (* F1, F2, F4..F8, F10, F11, F12 *) |
1618 | |59, 60, 62..66, 68, 87, 88: key := -1 (* F1, F2, F4..F8, F10, F11, F12 *) |
1604 | ELSE |
1619 | ELSE |
1605 | IF (T.CTRL IN shift) THEN |
1620 | IF (T.CTRL IN shift) THEN |
1606 | CASE key DIV 65536 OF |
1621 | CASE key DIV 65536 OF |
- | 1622 | |17: closeFile(TRUE, curText); |
|
- | 1623 | key := -2 |
|
1607 | |21: T.redo(text); |
1624 | |21: T.redo(text); |
1608 | key := -1 |
1625 | key := -1 |
1609 | |22: key := ORD("U") |
1626 | |22: key := ORD("U") |
1610 | |24: key := -1; |
1627 | |24: key := -1; |
1611 | open |
1628 | open |
Line 1627... | Line 1644... | ||
1627 | ELSE |
1644 | ELSE |
1628 | T.input(text, E.cp866[key DIV 256 MOD 256]); |
1645 | T.input(text, E.cp866[key DIV 256 MOD 256]); |
1629 | key := -1 |
1646 | key := -1 |
1630 | END |
1647 | END |
1631 | END; |
1648 | END; |
1632 | IF key # -1 THEN |
1649 | IF key >= 0 THEN |
1633 | T.key(text, key, shift) |
1650 | T.key(text, key, shift) |
1634 | END |
1651 | END |
1635 | END; |
1652 | END; |
- | 1653 | IF key # -2 THEN |
|
1636 | repaint |
1654 | repaint |
- | 1655 | END |
|
1637 | |3: |
1656 | |3: |
1638 | btn := K.ButtonCode(); |
1657 | btn := K.ButtonCode(middle); |
1639 | CASE btn OF |
- | |
1640 | |Tabs.btnID .. Tabs.btnID + maxTexts - 1: |
1658 | IF (Tabs.btnID <= btn) & (btn <= Tabs.btnID + maxTexts - 1) THEN |
1641 | DEC(btn, Tabs.btnID); |
1659 | DEC(btn, Tabs.btnID); |
- | 1660 | IF middle THEN |
|
- | 1661 | IF texts[btn].modified THEN |
|
- | 1662 | curText := btn; |
|
- | 1663 | Tabs.switch(tabs, btn); |
|
- | 1664 | Switch(texts[btn]); |
|
- | 1665 | draw_window; |
|
- | 1666 | END; |
|
- | 1667 | closeFile(TRUE, btn) |
|
- | 1668 | ELSE |
|
1642 | curText := btn; |
1669 | curText := btn; |
1643 | Tabs.switch(tabs, btn); |
1670 | Tabs.switch(tabs, btn); |
1644 | Switch(texts[btn]); |
1671 | Switch(texts[btn]); |
1645 | draw_window |
1672 | draw_window |
- | 1673 | END; |
|
- | 1674 | btn := 0 |
|
- | 1675 | ELSE |
|
- | 1676 | IF middle THEN |
|
- | 1677 | btn := 0 |
|
- | 1678 | END |
|
- | 1679 | END; |
|
- | 1680 | CASE btn OF |
|
1646 | |Tabs.btnID - 1: Tabs.scroll(tabs, -1); switch := TRUE; repaint |
1681 | |Tabs.btnID - 1: Tabs.scroll(tabs, -1); switch := TRUE; repaint |
1647 | |Tabs.btnID - 2: Tabs.scroll(tabs, +1); switch := TRUE; repaint |
1682 | |Tabs.btnID - 2: Tabs.scroll(tabs, +1); switch := TRUE; repaint |
Line 1648... | Line 1683... | ||
1648 | 1683 | ||
Line 1661... | Line 1696... | ||
1661 | |btnProgram: |
1696 | |btnProgram: |
1662 | ShowMenu(menuProgram) |
1697 | ShowMenu(menuProgram) |
1663 | |btnTools: |
1698 | |btnTools: |
1664 | ShowMenu(menuTools) |
1699 | ShowMenu(menuTools) |
1665 | |btnNo: |
1700 | |btnNo: |
1666 | closeFile(FALSE); |
1701 | closeFile(FALSE, curText); |
1667 | repaint |
1702 | repaint |
1668 | |btnYes: |
1703 | |btnYes: |
1669 | save(text); |
1704 | save(text); |
1670 | IF ~text.modified THEN |
1705 | IF ~text.modified THEN |
1671 | closeFile(FALSE) |
1706 | closeFile(FALSE, curText) |
1672 | END; |
1707 | END; |
1673 | repaint |
1708 | repaint |
1674 | |btnClose: |
1709 | |btnClose: |
1675 | close |
1710 | close |
1676 | |btnNew: |
1711 | |btnNew: |