Subversion Repositories Kolibri OS

Rev

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: