Subversion Repositories Kolibri OS

Rev

Rev 9645 | Rev 9659 | Go to most recent revision | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 9645 Rev 9648
Line 26... Line 26...
26
    CB := Clipboard, Languages,
26
    CB := Clipboard, Languages,
27
    ChangeLog, Scroll, CheckBox,
27
    ChangeLog, Scroll, CheckBox,
28
    RW, Ini, EB := EditBox, Tabs, Toolbar, SB := StatusBar;
28
    RW, Ini, EB := EditBox, Tabs, Toolbar, SB := StatusBar;
Line 29... Line 29...
29
 
29
 
30
CONST
30
CONST
Line 31... Line 31...
31
    HEADER = "CEdit (16-jan-2022)";
31
    HEADER = "CEdit (18-jan-2022)";
32
 
32
 
Line 33... Line 33...
33
    ShellFilter = "";
33
    ShellFilter = "";
Line 167... Line 167...
167
    menuCRLF = 142;
167
    menuCRLF = 142;
168
    menuCR = 143;
168
    menuCR = 143;
Line 169... Line 169...
169
 
169
 
Line -... Line 170...
-
 
170
    maxTexts = 32;
-
 
171
 
-
 
172
	SHIFT = Menu.SHIFT;
Line 170... Line 173...
170
    maxTexts = 32;
173
	CTRL  = Menu.CTRL;
171
 
174
 
172
 
175
 
173
VAR
176
VAR
Line 197... Line 200...
197
    new_searchText, searchText, replaceText, gotoText: T.tString;
200
    new_searchText, searchText, replaceText, gotoText: T.tString;
198
    cs, whole: BOOLEAN;
201
    cs, whole: BOOLEAN;
Line 199... Line 202...
199
 
202
 
Line 200... Line -...
200
    replaced: INTEGER;
-
 
201
 
-
 
202
    mainTID: INTEGER;
203
    replaced: INTEGER;
203
 
204
 
204
    context, menuFile, menuEdit, menuSearch, menuEncoding,
205
    context, menuFile, menuEdit, menuSearch, menuEncoding,
Line 205... Line 206...
205
    menuView, menuLanguage, menuProgram, menuTools,
206
    menuView, menuLanguage, menuProgram, menuTools,
Line 206... Line 207...
206
    subCurLine, subIndent, subCase, subBookmark, subEOL: Menu.tMenu;
207
    subCurLine, subIndent, subCase, subBookmark, subEOL: Menu.tMenu;
Line 207... Line 208...
207
 
208
 
Line 208... Line -...
208
    mainMenu: Menu.tMain;
-
 
209
 
-
 
210
    menuActive: BOOLEAN;
209
    mainMenu: Menu.tMain;
211
 
210
 
Line 212... Line 211...
212
    toolbar: Toolbar.tToolbar;
211
    menuActive: BOOLEAN;
Line 922... Line 921...
922
    Menu.close(menuTools);
921
    Menu.close(menuTools);
923
    Menu.close(context)
922
    Menu.close(context)
924
END CloseMenu;
923
END CloseMenu;
Line 925... Line -...
925
 
-
 
926
 
-
 
927
PROCEDURE MenuItemClick (menu: Menu.tMenu; id: INTEGER);
-
 
928
VAR
-
 
929
	msg: ARRAY 2 OF INTEGER;
-
 
930
BEGIN
-
 
931
	msg[0] := id;
-
 
932
	msg[1] := 8;
-
 
933
    K.SendIPC(mainTID, msg)
-
 
934
END MenuItemClick;
-
 
935
 
924
 
936
 
925
 
937
PROCEDURE goto;
926
PROCEDURE goto;
938
VAR
927
VAR
939
    gotoVal: INTEGER;
928
    gotoVal: INTEGER;
Line 1112... Line 1101...
1112
		script := temp
1101
		script := temp
1113
	END
1102
	END
1114
END setScript;
1103
END setScript;
Line 1115... Line 1104...
1115
 
1104
 
1116
 
1105
 
1117
PROCEDURE receiveIPC;
-
 
1118
VAR
1106
PROCEDURE ClickMenu;
1119
	scrollIPC: BOOLEAN;
1107
VAR
1120
	item: List.tItem;
-
 
1121
BEGIN
-
 
1122
	scrollIPC := FALSE;
-
 
1123
    IF IPC[0] = mainTID THEN
-
 
1124
    	IF IPC[2] = Scroll.ScrollIPC THEN
-
 
1125
    		Scroll.receiveIPC(IPC, scrollIPC)
-
 
1126
    	END;
-
 
1127
    	IF ~scrollIPC THEN
-
 
1128
    		IPC[2] := 0
-
 
1129
    	END
1108
	item: List.tItem;
1130
    ELSE
-
 
1131
    	IF ~Menu.isSender(IPC[0]) THEN
-
 
1132
   			IPC[2] := 0
-
 
1133
    	ELSE
1109
BEGIN
1134
    		IF IPC[2] < 0 THEN
1110
	IF Menu.MenuItem < 0 THEN
1135
    			item := List.getItem(mainMenu, (-IPC[2] - mainMenuBtn) MOD mainMenu.count);
1111
		item := List.getItem(mainMenu, (-Menu.MenuItem - mainMenuBtn) MOD mainMenu.count);
1136
    			IF item # NIL THEN
1112
		IF item # NIL THEN
1137
    				ShowMenu(item(Menu.tMainItem).menu)
1113
			ShowMenu(item(Menu.tMainItem).menu)
1138
    			END;
-
 
1139
    			IPC[2] := 0
-
 
1140
    		END
1114
		END;
1141
    	END
-
 
1142
    END;
1115
		Menu.SetItem(0)
1143
    IF ~scrollIPC THEN
1116
	END;
1144
	    CASE IPC[2] OF
1117
    CASE Menu.MenuItem OF
1145
	    |0:
1118
    |0:
1146
	    |menuCut:       T.key(text, ORD("X"), FALSE, TRUE)
1119
    |menuCut:       T.key(text, ORD("X"), FALSE, TRUE)
1147
	    |menuCopy:      T.key(text, ORD("C"), FALSE, TRUE)
1120
    |menuCopy:      T.key(text, ORD("C"), FALSE, TRUE)
Line 1248... Line 1221...
1248
	    |menuBoard:
1221
    |menuBoard:
1249
	        K.Run("/sys/develop/board", "")
1222
        K.Run("/sys/develop/board", "")
1250
	    |menuSysFunc:
1223
    |menuSysFunc:
1251
	        K.Run("/sys/docpack", "f")
1224
        K.Run("/sys/docpack", "f")
1252
	    |menuColors..menuMaxColors:
1225
    |menuColors..menuMaxColors:
1253
	        Ini.selectSection(IPC[2] - menuColors)
1226
        Ini.selectSection(Menu.MenuItem - menuColors)
1254
	    |menuMoveUp:
1227
    |menuMoveUp:
1255
	    	T.MoveLines(text, FALSE)
1228
    	T.MoveLines(text, FALSE)
1256
	    |menuMoveDown:
1229
    |menuMoveDown:
1257
			T.MoveLines(text, TRUE)
1230
		T.MoveLines(text, TRUE)
1258
	    |menuDuplicate:
1231
    |menuDuplicate:
Line 1266... Line 1239...
1266
		|menuUpper:
1239
	|menuUpper:
1267
			T.chCase(text, TRUE)
1240
		T.chCase(text, TRUE)
1268
		|menuLower:
1241
	|menuLower:
1269
			T.chCase(text, FALSE)
1242
		T.chCase(text, FALSE)
1270
	    END;
1243
    END;
1271
    	IPC[0] := 0;
-
 
1272
    	IPC[1] := 0
-
 
1273
    END
-
 
1274
END receiveIPC;
-
 
1275
 
-
 
1276
 
-
 
1277
PROCEDURE MenuKeyDown (menu: Menu.tMenu; key: INTEGER): BOOLEAN;
-
 
1278
VAR
-
 
1279
    menuItem: INTEGER;
-
 
1280
    shift, ctrl: BOOLEAN;
-
 
1281
BEGIN
-
 
1282
    menuItem := -1;
1244
    Menu.SetItem(0)
1283
    K.getKBState(shift, ctrl);
-
 
1284
    IF ctrl THEN
-
 
1285
        CASE key DIV 65536 OF
-
 
1286
        |17: menuItem := menuClose
-
 
1287
        |21: menuItem := menuRedo
-
 
1288
        |30: menuItem := menuSelectAll
-
 
1289
        |32: menuItem := menuDuplicate
-
 
1290
        |33,
-
 
1291
         35: menuItem := menuFind
-
 
1292
        |34: menuItem := menuGoto
-
 
1293
        |44: menuItem := menuUndo
-
 
1294
        |45: menuItem := menuCut
-
 
1295
        |46: menuItem := menuCopy
-
 
1296
        |47: menuItem := menuPaste
-
 
1297
        |24: menuItem := menuOpen
-
 
1298
        |31: menuItem := menuSave
-
 
1299
        |49: menuItem := menuNew
-
 
1300
        |67: menuItem := menuBuild
-
 
1301
        |83: menuItem := menuRemove
-
 
1302
        |22: menuItem := menuUpper
-
 
1303
        |38: menuItem := menuLower
-
 
1304
        |60: menuItem := menuToggleBookmark
-
 
1305
        |72: menuItem := menuMoveUp
-
 
1306
        |80: menuItem := menuMoveDown
-
 
1307
        ELSE
-
 
1308
        END
-
 
1309
    ELSE
-
 
1310
        IF key DIV 65536 = 83 THEN
-
 
1311
            menuItem := menuDelete
-
 
1312
        ELSIF key DIV 65536 = 67 THEN
-
 
1313
            menuItem := menuRun
-
 
1314
        ELSIF key DIV 65536 = 15 THEN
-
 
1315
            menuItem := menuIncInd
-
 
1316
        ELSIF (key DIV 65536 = 14) & shift THEN
-
 
1317
            menuItem := menuDecInd
-
 
1318
        ELSIF key DIV 65536 = 60 THEN
-
 
1319
        	IF shift THEN
-
 
1320
        		menuItem := menuPrevBookmark
-
 
1321
        	ELSE
-
 
1322
        		menuItem := menuNextBookmark
-
 
1323
        	END
-
 
1324
        END
-
 
1325
    END;
-
 
1326
    IF menuItem # -1 THEN
-
 
1327
        IF Menu.isEnabled(menu, menuItem) THEN
-
 
1328
            MenuItemClick(menu, menuItem)
-
 
1329
        ELSE
-
 
1330
            menuItem := -1
-
 
1331
        END
-
 
1332
    END
-
 
1333
    RETURN menuItem # -1
-
 
1334
END MenuKeyDown;
1245
END ClickMenu;
Line 1335... Line 1246...
1335
 
1246
 
1336
 
1247
 
1337
PROCEDURE CreateContextMenu (): Menu.tMenu;
1248
PROCEDURE CreateContextMenu (): Menu.tMenu;
Line 1346... Line 1257...
1346
    Menu.AddMenuItem(menu, menuCopy,      "copy         ctrl-C");
1257
    Menu.AddMenuItem(menu, menuCopy,      "copy         ctrl-C");
1347
    Menu.AddMenuItem(menu, menuPaste,     "paste        ctrl-V");
1258
    Menu.AddMenuItem(menu, menuPaste,     "paste        ctrl-V");
1348
    Menu.AddMenuItem(menu, menuDelete,    "delete");
1259
    Menu.AddMenuItem(menu, menuDelete,    "delete");
1349
    Menu.delimiter(menu);
1260
    Menu.delimiter(menu);
1350
    Menu.AddMenuItem(menu, menuSelectAll, "select all   ctrl-A");
1261
    Menu.AddMenuItem(menu, menuSelectAll, "select all   ctrl-A");
1351
    RETURN Menu.create(menu, MenuItemClick, MenuKeyDown)
1262
    RETURN Menu.create(menu)
1352
END CreateContextMenu;
1263
END CreateContextMenu;
Line 1353... Line 1264...
1353
 
1264
 
1354
 
1265
 
Line 1365... Line 1276...
1365
    Menu.AddMenuItem(menu, menuFolder,  "folder");
1276
    Menu.AddMenuItem(menu, menuFolder,  "folder");
1366
    Menu.delimiter(menu);
1277
    Menu.delimiter(menu);
1367
    Menu.AddMenuItem(menu, menuClose,   "close       ctrl-W");
1278
    Menu.AddMenuItem(menu, menuClose,   "close       ctrl-W");
1368
    Menu.delimiter(menu);
1279
    Menu.delimiter(menu);
1369
    Menu.AddMenuItem(menu, menuExit,    "exit");
1280
    Menu.AddMenuItem(menu, menuExit,    "exit");
1370
    RETURN Menu.create(menu, MenuItemClick, MenuKeyDown)
1281
    RETURN Menu.create(menu)
1371
END CreateMenuFile;
1282
END CreateMenuFile;
Line 1372... Line 1283...
1372
 
1283
 
1373
 
1284
 
Line 1390... Line 1301...
1390
    Menu.child(menu, subCurLine);
1301
    Menu.child(menu, subCurLine);
1391
    Menu.AddMenuItem(menu, menuIndent,    "indent");
1302
    Menu.AddMenuItem(menu, menuIndent,    "indent");
1392
    Menu.child(menu, subIndent);
1303
    Menu.child(menu, subIndent);
1393
    Menu.AddMenuItem(menu, menuCase,      "case");
1304
    Menu.AddMenuItem(menu, menuCase,      "case");
1394
    Menu.child(menu, subCase);
1305
    Menu.child(menu, subCase);
1395
    RETURN Menu.create(menu, MenuItemClick, MenuKeyDown)
1306
    RETURN Menu.create(menu)
1396
END CreateMenuEdit;
1307
END CreateMenuEdit;
Line 1397... Line 1308...
1397
 
1308
 
1398
 
1309
 
Line 1406... Line 1317...
1406
    Menu.AddMenuItem(menu, menuFindPrev, "find previous    shift-F3");
1317
    Menu.AddMenuItem(menu, menuFindPrev, "find previous    shift-F3");
1407
    Menu.AddMenuItem(menu, menuGoto,     "go to line       ctrl-G");
1318
    Menu.AddMenuItem(menu, menuGoto,     "go to line       ctrl-G");
1408
    Menu.delimiter(menu);
1319
    Menu.delimiter(menu);
1409
    Menu.AddMenuItem(menu, menuBookmark, "bookmark");
1320
    Menu.AddMenuItem(menu, menuBookmark, "bookmark");
1410
    Menu.child(menu, subBookmark);
1321
    Menu.child(menu, subBookmark);
1411
    RETURN Menu.create(menu, MenuItemClick, MenuKeyDown)
1322
    RETURN Menu.create(menu)
1412
END CreateMenuSearch;
1323
END CreateMenuSearch;
Line 1413... Line 1324...
1413
 
1324
 
1414
 
1325
 
Line 1422... Line 1333...
1422
    Menu.AddMenuItem(menu, menuCP866,   E.names[E.CP866]);
1333
    Menu.AddMenuItem(menu, menuCP866,   E.names[E.CP866]);
1423
    Menu.AddMenuItem(menu, menuWin1251, E.names[E.W1251]);
1334
    Menu.AddMenuItem(menu, menuWin1251, E.names[E.W1251]);
1424
    Menu.delimiter(menu);
1335
    Menu.delimiter(menu);
1425
    Menu.AddMenuItem(menu, menuEOL,     "EOL");
1336
    Menu.AddMenuItem(menu, menuEOL,     "EOL");
1426
    Menu.child(menu, subEOL);
1337
    Menu.child(menu, subEOL);
1427
    RETURN Menu.create(menu, MenuItemClick, MenuKeyDown)
1338
    RETURN Menu.create(menu)
1428
END CreateMenuEncoding;
1339
END CreateMenuEncoding;
Line 1429... Line 1340...
1429
 
1340
 
1430
 
1341
 
Line 1434... Line 1345...
1434
BEGIN
1345
BEGIN
1435
    menu := List.create(NIL);
1346
    menu := List.create(NIL);
1436
    Menu.AddMenuItem(menu, menuCRLF, RW.eolNames[RW.EOL_CRLF]);
1347
    Menu.AddMenuItem(menu, menuCRLF, RW.eolNames[RW.EOL_CRLF]);
1437
    Menu.AddMenuItem(menu, menuLF,   RW.eolNames[RW.EOL_LF]);
1348
    Menu.AddMenuItem(menu, menuLF,   RW.eolNames[RW.EOL_LF]);
1438
    Menu.AddMenuItem(menu, menuCR,   RW.eolNames[RW.EOL_CR]);
1349
    Menu.AddMenuItem(menu, menuCR,   RW.eolNames[RW.EOL_CR]);
1439
    RETURN Menu.create(menu, MenuItemClick, MenuKeyDown)
1350
    RETURN Menu.create(menu)
1440
END CreateMenuEOL;
1351
END CreateMenuEOL;
Line 1441... Line 1352...
1441
 
1352
 
1442
 
1353
 
Line 1457... Line 1368...
1457
        Menu.AddMenuItem(menu, idx, colors.name);
1368
        Menu.AddMenuItem(menu, idx, colors.name);
1458
        INC(idx);
1369
        INC(idx);
1459
        colors := colors.next(Ini.tSection)
1370
        colors := colors.next(Ini.tSection)
1460
    END;
1371
    END;
Line 1461... Line 1372...
1461
 
1372
 
1462
    RETURN Menu.create(menu, MenuItemClick, MenuKeyDown)
1373
    RETURN Menu.create(menu)
Line 1463... Line 1374...
1463
END CreateMenuView;
1374
END CreateMenuView;
1464
 
1375
 
Line 1475... Line 1386...
1475
    Menu.AddMenuItem(menu, menuLua,    "Lua");
1386
    Menu.AddMenuItem(menu, menuLua,    "Lua");
1476
    Menu.AddMenuItem(menu, menuOberon, "Oberon");
1387
    Menu.AddMenuItem(menu, menuOberon, "Oberon");
1477
    Menu.AddMenuItem(menu, menuPascal, "Pascal");
1388
    Menu.AddMenuItem(menu, menuPascal, "Pascal");
1478
    Menu.delimiter(menu);
1389
    Menu.delimiter(menu);
1479
    Menu.AddMenuItem(menu, menuText,   "Text");
1390
    Menu.AddMenuItem(menu, menuText,   "Text");
1480
    RETURN Menu.create(menu, MenuItemClick, MenuKeyDown)
1391
    RETURN Menu.create(menu)
1481
END CreateMenuLanguage;
1392
END CreateMenuLanguage;
Line 1482... Line 1393...
1482
 
1393
 
1483
 
1394
 
Line 1492... Line 1403...
1492
    Menu.AddMenuItem(menu, menuRun,         "run           F9");
1403
    Menu.AddMenuItem(menu, menuRun,         "run           F9");
1493
    Menu.AddMenuItem(menu, menuRunScript,   "script");
1404
    Menu.AddMenuItem(menu, menuRunScript,   "script");
1494
    Menu.delimiter(menu);
1405
    Menu.delimiter(menu);
1495
    Menu.AddMenuItem(menu, menuDebug,       "debug");
1406
    Menu.AddMenuItem(menu, menuDebug,       "debug");
1496
    Menu.AddMenuItem(menu, menuDebugScript, "script");
1407
    Menu.AddMenuItem(menu, menuDebugScript, "script");
1497
    RETURN Menu.create(menu, MenuItemClick, MenuKeyDown)
1408
    RETURN Menu.create(menu)
1498
END CreateMenuProgram;
1409
END CreateMenuProgram;
Line 1499... Line 1410...
1499
 
1410
 
1500
 
1411
 
Line 1505... Line 1416...
1505
    menu := List.create(NIL);
1416
    menu := List.create(NIL);
1506
    Menu.AddMenuItem(menu, menuPipet,   "pipet");
1417
    Menu.AddMenuItem(menu, menuPipet,   "pipet");
1507
    Menu.AddMenuItem(menu, menuMagnify, "magnify");
1418
    Menu.AddMenuItem(menu, menuMagnify, "magnify");
1508
    Menu.AddMenuItem(menu, menuBoard,   "board");
1419
    Menu.AddMenuItem(menu, menuBoard,   "board");
1509
    Menu.AddMenuItem(menu, menuSysFunc, "system functions");
1420
    Menu.AddMenuItem(menu, menuSysFunc, "system functions");
1510
    RETURN Menu.create(menu, MenuItemClick, MenuKeyDown)
1421
    RETURN Menu.create(menu)
1511
END CreateMenuTools;
1422
END CreateMenuTools;
Line 1512... Line 1423...
1512
 
1423
 
1513
 
1424
 
Line 1518... Line 1429...
1518
    menu := List.create(NIL);
1429
    menu := List.create(NIL);
1519
    Menu.AddMenuItem(menu, menuMoveUp,    "move up     ctrl-Up");
1430
    Menu.AddMenuItem(menu, menuMoveUp,    "move up     ctrl-Up");
1520
    Menu.AddMenuItem(menu, menuMoveDown,  "move down   ctrl-Down");
1431
    Menu.AddMenuItem(menu, menuMoveDown,  "move down   ctrl-Down");
1521
    Menu.AddMenuItem(menu, menuDuplicate, "duplicate   ctrl-D");
1432
    Menu.AddMenuItem(menu, menuDuplicate, "duplicate   ctrl-D");
1522
    Menu.AddMenuItem(menu, menuRemove,    "remove      ctrl-Del");
1433
    Menu.AddMenuItem(menu, menuRemove,    "remove      ctrl-Del");
1523
    RETURN Menu.create(menu, MenuItemClick, MenuKeyDown)
1434
    RETURN Menu.create(menu)
1524
END CreateMenuCurLine;
1435
END CreateMenuCurLine;
Line 1525... Line 1436...
1525
 
1436
 
1526
 
1437
 
1527
PROCEDURE CreateMenuIndent(): Menu.tMenu;
1438
PROCEDURE CreateMenuIndent(): Menu.tMenu;
1528
VAR
1439
VAR
1529
    menu: List.tList;
1440
    menu: List.tList;
1530
BEGIN
1441
BEGIN
1531
    menu := List.create(NIL);
1442
    menu := List.create(NIL);
1532
    Menu.AddMenuItem(menu, menuIncInd, "increase    Tab");
1443
    Menu.AddMenuItem(menu, menuIncInd, "increase    Tab");
1533
    Menu.AddMenuItem(menu, menuDecInd, "decrease    shift-Bksp");
1444
    Menu.AddMenuItem(menu, menuDecInd, "decrease    shift-Bksp");
Line 1534... Line 1445...
1534
    RETURN Menu.create(menu, MenuItemClick, MenuKeyDown)
1445
    RETURN Menu.create(menu)
1535
END CreateMenuIndent;
1446
END CreateMenuIndent;
1536
 
1447
 
1537
 
1448
 
1538
PROCEDURE CreateMenuCase(): Menu.tMenu;
1449
PROCEDURE CreateMenuCase(): Menu.tMenu;
1539
VAR
1450
VAR
1540
    menu: List.tList;
1451
    menu: List.tList;
1541
BEGIN
1452
BEGIN
1542
    menu := List.create(NIL);
1453
    menu := List.create(NIL);
Line 1543... Line 1454...
1543
    Menu.AddMenuItem(menu, menuUpper, "UPPER    ctrl-U");
1454
    Menu.AddMenuItem(menu, menuUpper, "UPPER    ctrl-U");
1544
    Menu.AddMenuItem(menu, menuLower, "lower    ctrl-L");
1455
    Menu.AddMenuItem(menu, menuLower, "lower    ctrl-L");
Line 1552... Line 1463...
1552
BEGIN
1463
BEGIN
1553
    menu := List.create(NIL);
1464
    menu := List.create(NIL);
1554
    Menu.AddMenuItem(menu, menuToggleBookmark, "toggle      ctrl-F2");
1465
    Menu.AddMenuItem(menu, menuToggleBookmark, "toggle      ctrl-F2");
1555
    Menu.AddMenuItem(menu, menuNextBookmark,   "next        F2");
1466
    Menu.AddMenuItem(menu, menuNextBookmark,   "next        F2");
1556
    Menu.AddMenuItem(menu, menuPrevBookmark,   "previous    shift-F2");
1467
    Menu.AddMenuItem(menu, menuPrevBookmark,   "previous    shift-F2");
1557
    RETURN Menu.create(menu, MenuItemClick, MenuKeyDown)
1468
    RETURN Menu.create(menu)
1558
END CreateMenuBookmark;
1469
END CreateMenuBookmark;
Line -... Line 1470...
-
 
1470
 
-
 
1471
 
-
 
1472
PROCEDURE Shortcuts;
-
 
1473
BEGIN
-
 
1474
    Menu.AddShortcut(17 + CTRL,  menuClose);
-
 
1475
    Menu.AddShortcut(21 + CTRL,  menuRedo);
-
 
1476
    Menu.AddShortcut(30 + CTRL,  menuSelectAll);
-
 
1477
    Menu.AddShortcut(32 + CTRL,  menuDuplicate);
-
 
1478
    Menu.AddShortcut(33 + CTRL,  menuFind);
-
 
1479
    Menu.AddShortcut(35 + CTRL,  menuFind);
-
 
1480
    Menu.AddShortcut(34 + CTRL,  menuGoto);
-
 
1481
    Menu.AddShortcut(44 + CTRL,  menuUndo);
-
 
1482
    Menu.AddShortcut(45 + CTRL,  menuCut);
-
 
1483
    Menu.AddShortcut(46 + CTRL,  menuCopy);
-
 
1484
    Menu.AddShortcut(47 + CTRL,  menuPaste);
-
 
1485
    Menu.AddShortcut(24 + CTRL,  menuOpen);
-
 
1486
    Menu.AddShortcut(31 + CTRL,  menuSave);
-
 
1487
    Menu.AddShortcut(49 + CTRL,  menuNew);
-
 
1488
    Menu.AddShortcut(67 + CTRL,  menuBuild);
-
 
1489
    Menu.AddShortcut(83 + CTRL,  menuRemove);
-
 
1490
    Menu.AddShortcut(22 + CTRL,  menuUpper);
-
 
1491
    Menu.AddShortcut(38 + CTRL,  menuLower);
-
 
1492
    Menu.AddShortcut(60 + CTRL,  menuToggleBookmark);
-
 
1493
    Menu.AddShortcut(72 + CTRL,  menuMoveUp);
-
 
1494
    Menu.AddShortcut(80 + CTRL,  menuMoveDown);
-
 
1495
    Menu.AddShortcut(83,         menuDelete);
-
 
1496
    Menu.AddShortcut(67,         menuRun);
-
 
1497
    Menu.AddShortcut(15,         menuIncInd);
-
 
1498
    Menu.AddShortcut(14 + SHIFT, menuDecInd);
-
 
1499
    Menu.AddShortcut(60 + SHIFT, menuPrevBookmark);
-
 
1500
    Menu.AddShortcut(60,         menuNextBookmark);
-
 
1501
    Menu.AddShortcut(61 + SHIFT, menuFindPrev);
-
 
1502
    Menu.AddShortcut(61,         menuFindNext);
-
 
1503
END Shortcuts;
1559
 
1504
 
1560
 
1505
 
1561
PROCEDURE HideSearch;
1506
PROCEDURE HideSearch;
1562
BEGIN
1507
BEGIN
1563
    SetFocus(FindEdit, FALSE);
1508
    SetFocus(FindEdit, FALSE);
Line 1730... Line 1675...
1730
VAR
1675
VAR
1731
    btn: INTEGER;
1676
    btn: INTEGER;
1732
    middle, exit: BOOLEAN;
1677
    middle, exit: BOOLEAN;
1733
    menu: Menu.tMenu;
1678
    menu: Menu.tMenu;
1734
BEGIN
1679
BEGIN
-
 
1680
	exit := FALSE;
1735
    btn := K.ButtonCode(middle);
1681
    btn := K.ButtonCode(middle);
1736
    IF U.between(Tabs.btnID, btn, Tabs.btnID + maxTexts - 1) THEN
1682
    IF U.between(Tabs.btnID, btn, Tabs.btnID + maxTexts - 1) THEN
1737
        DEC(btn, Tabs.btnID);
1683
        DEC(btn, Tabs.btnID);
1738
        IF middle THEN
1684
        IF middle THEN
1739
            IF texts[btn].modified THEN
1685
            IF texts[btn].modified THEN
Line 1754... Line 1700...
1754
    	IF menu # NIL THEN
1700
    	IF menu # NIL THEN
1755
    		ShowMenu(menu);
1701
    		ShowMenu(menu);
1756
    		btn := 0
1702
    		btn := 0
1757
    	END
1703
    	END
1758
    END;
1704
    END;
1759
    CASE btn OF
-
 
1760
    |Tabs.btnLeft:  Tabs.scroll(tabs, -1); switch := TRUE; repaint
-
 
1761
    |Tabs.btnRight: Tabs.scroll(tabs, +1); switch := TRUE; repaint
-
 
Line -... Line 1705...
-
 
1705
 
1762
 
1706
    CASE btn OF
1763
    |0:
-
 
-
 
1707
    |0:
-
 
1708
    |Tabs.btnLeft, Tabs.btnRight:
-
 
1709
    	Tabs.scroll(tabs, btn);
1764
 
1710
    	switch := TRUE
1765
    |btnNo:
1711
    |btnNo:
1766
        exit := closing;
1712
        exit := closing;
1767
        closeFile(FALSE, curText);
1713
        closeFile(FALSE, curText);
1768
        repaint;
-
 
1769
        IF exit THEN
-
 
1770
            Close
-
 
1771
        END
1714
        repaint
1772
    |btnYes:
1715
    |btnYes:
1773
        exit := closing;
1716
        exit := closing;
1774
        save(text);
1717
        save(text);
1775
        IF ~text.modified THEN
1718
        IF ~text.modified THEN
1776
            closeFile(FALSE, curText)
1719
            closeFile(FALSE, curText)
1777
        END;
1720
        END;
1778
        repaint;
-
 
1779
        IF exit THEN
-
 
1780
            Close
-
 
1781
        END
1721
        repaint
1782
    |btnClose:
1722
    |btnClose:
1783
        Close
1723
    	exit := TRUE
1784
    |btnNew:
1724
    |btnNew:
1785
        NewFile;
-
 
1786
        repaint
1725
        NewFile
1787
    |btnOpen:
1726
    |btnOpen:
1788
        OpenDial
1727
        OpenDial
1789
    |btnSave:
1728
    |btnSave:
1790
        save(text);
-
 
1791
        repaint
1729
        save(text)
1792
    |btnSearch:
1730
    |btnSearch:
1793
        ShowSearchPanel(FALSE);
-
 
1794
        repaint
1731
        ShowSearchPanel(FALSE)
1795
    |btnCloseSearch:
1732
    |btnCloseSearch:
1796
        Search
1733
        Search
1797
    |btnHideSearch:
1734
    |btnHideSearch:
1798
        HideSearch
1735
        HideSearch
1799
    |btnUndo:
1736
    |btnUndo:
1800
        T.undo(text);
-
 
1801
        repaint
1737
        T.undo(text)
1802
    |btnRedo:
1738
    |btnRedo:
1803
        T.redo(text);
-
 
1804
        repaint
1739
        T.redo(text)
1805
    |btnUpper:
1740
    |btnUpper:
1806
        T.chCase(text, TRUE);
-
 
1807
        repaint
1741
        T.chCase(text, TRUE)
1808
    |btnLower:
1742
    |btnLower:
1809
        T.chCase(text, FALSE);
-
 
1810
        repaint
1743
        T.chCase(text, FALSE)
1811
    |btnBuild:
1744
    |btnBuild:
1812
        Script(buildScript)
1745
        Script(buildScript)
1813
    |btnRun:
1746
    |btnRun:
1814
        Script(runScript)
1747
        Script(runScript)
1815
    |btnFindNext:
1748
    |btnFindNext:
1816
        IF searchText # "" THEN
1749
        IF searchText # "" THEN
1817
            notFound := ~T.findNext(text, BKW.value);
1750
            notFound := ~T.findNext(text, BKW.value);
1818
            SetFocus(FindEdit, FALSE);
-
 
1819
            repaint
1751
            SetFocus(FindEdit, FALSE)
1820
        END
1752
        END
1821
    |btnReplace:
1753
    |btnReplace:
1822
        T.replace(text, replaceText, LENGTH(searchText));
1754
        T.replace(text, replaceText, LENGTH(searchText));
1823
        SetFocus(FindEdit, FALSE);
-
 
1824
        repaint
1755
        SetFocus(FindEdit, FALSE)
1825
    |btnReplaceAll:
1756
    |btnReplaceAll:
1826
        notFound := ~T.search(text, searchText, cs, whole);
1757
        notFound := ~T.search(text, searchText, cs, whole);
1827
        IF ~notFound THEN
1758
        IF ~notFound THEN
1828
            replaced := T.replaceAll(text, replaceText, LENGTH(searchText));
1759
            replaced := T.replaceAll(text, replaceText, LENGTH(searchText));
1829
        END;
1760
        END;
1830
        SetFocus(FindEdit, FALSE);
-
 
1831
        repaint
1761
        SetFocus(FindEdit, FALSE)
1832
    |btnGoto:
1762
    |btnGoto:
-
 
1763
        goto
-
 
1764
    END;
-
 
1765
 
-
 
1766
	IF exit THEN
-
 
1767
		Close
1833
        goto;
1768
	ELSE
1834
        repaint
1769
		repaint
1835
    END
1770
	END
Line 1882... Line 1817...
1882
            END
1817
            END
1883
        END;
1818
        END;
Line 1884... Line 1819...
1884
 
1819
 
1885
		Scroll.mouse(hScroll);
1820
		Scroll.mouse(hScroll);
-
 
1821
		Scroll.mouse(vScroll);
1886
		Scroll.mouse(vScroll);
1822
		msState := K.MouseState();
1887
        T.getScroll(text, scrollX, scrollY);
1823
        T.getScroll(text, scrollX, scrollY);
1888
        IF (hScroll.value # scrollX) OR (vScroll.value # scrollY) THEN
1824
        IF (hScroll.value # scrollX) OR (vScroll.value # scrollY) THEN
1889
			T.scroll(text, hScroll.value - scrollX, vScroll.value - scrollY);
1825
			T.scroll(text, hScroll.value - scrollX, vScroll.value - scrollY);
1890
        	repaint
1826
        	repaint
Line 1933... Line 1869...
1933
    resized := FALSE
1869
    resized := FALSE
1934
END MouseEvent;
1870
END MouseEvent;
Line 1935... Line 1871...
1935
 
1871
 
-
 
1872
 
-
 
1873
PROCEDURE Redraw (VAR resized: BOOLEAN; VAR width, height, cliWidth, cliHeight: INTEGER);
1936
 
1874
VAR
-
 
1875
	onClose: BOOLEAN;
-
 
1876
BEGIN
-
 
1877
	onClose := (Menu.MenuItem = menuClose) OR (Menu.MenuItem = menuExit);
-
 
1878
	IF ~onClose THEN
1937
PROCEDURE Redraw (VAR resized: BOOLEAN; VAR width, height, cliWidth, cliHeight: INTEGER);
1879
		ClickMenu
1938
BEGIN
1880
	END;
1939
	K.GetSystemColors;
1881
	K.GetSystemColors;
1940
	IF ~K.RolledUp() THEN
1882
	IF ~K.RolledUp() THEN
1941
		K.ClientSize(width, height);
1883
		K.ClientSize(width, height);
1942
		IF (width # cliWidth) OR (height # cliHeight) THEN
1884
		IF (width # cliWidth) OR (height # cliHeight) THEN
1943
			cliWidth := width;
1885
			cliWidth := width;
1944
			cliHeight := height;
1886
			cliHeight := height;
1945
			resize;
1887
			resize;
1946
			resized := TRUE
1888
			resized := TRUE
1947
		END;
1889
		END;
1948
		K.SetEventsMask({0, 1, 2, 5, 6, 31})
1890
		K.SetEventsMask({0, 1, 2, 5, 31})
1949
	ELSE
1891
	ELSE
1950
		SetCaption(text.fileName);
1892
		SetCaption(text.fileName);
1951
		K.SetEventsMask({0, 30, 31})
1893
		K.SetEventsMask({0, 30, 31})
1952
	END;
1894
	END;
1953
	draw_window;
1895
	draw_window;
1954
	IF SkinHeight # K.SkinHeight() THEN
1896
	IF SkinHeight # K.SkinHeight() THEN
-
 
1897
		SkinHeight := K.SkinHeight();
-
 
1898
		Redraw(resized, width, height, cliWidth, cliHeight)
-
 
1899
	END;
1955
		SkinHeight := K.SkinHeight();
1900
	IF onClose THEN
1956
		Redraw(resized, width, height, cliWidth, cliHeight)
1901
		ClickMenu
Line 1957... Line 1902...
1957
	END
1902
	END
1958
END Redraw;
1903
END Redraw;
1959
 
-
 
1960
 
1904
 
1961
PROCEDURE ScrollChange;
-
 
1962
BEGIN
1905
 
1963
	Scroll.change(hScroll);
1906
PROCEDURE ScrollChange;
1964
	Scroll.change(vScroll);
1907
BEGIN
1965
	T.scroll(text, ORD(hScroll.Inc) - ORD(hScroll.Dec), ORD(vScroll.Inc) - ORD(vScroll.Dec));
1908
	T.scroll(text, hScroll.btn, vScroll.btn);
1966
	IF menuActive THEN
1909
	IF menuActive THEN
Line 1983... Line 1926...
1983
    K.GetSystemColors;
1926
    K.GetSystemColors;
1984
    switch := FALSE;
1927
    switch := FALSE;
1985
    closing := FALSE;
1928
    closing := FALSE;
1986
    textsCount := 0;
1929
    textsCount := 0;
1987
    curText := 0;
1930
    curText := 0;
1988
    mainTID := K.ThreadID();
-
 
1989
    K.SetIPC(IPC);
-
 
1990
    Args.GetArg(0, AppPath);
1931
    Args.GetArg(0, AppPath);
1991
    Ini.load(AppPath);
1932
    Ini.load(AppPath);
1992
    leftButton := FALSE;
1933
    leftButton := FALSE;
1993
    resized := FALSE;
1934
    resized := FALSE;
1994
    K.ScreenSize(winWidth, winHeight);
1935
    K.ScreenSize(winWidth, winHeight);
Line 2008... Line 1949...
2008
    font := font1;
1949
    font := font1;
2009
    G.SetFont(canvas, font);
1950
    G.SetFont(canvas, font);
2010
    T.init(resetTimer);
1951
    T.init(resetTimer);
2011
    T.setCanvas(canvas);
1952
    T.setCanvas(canvas);
Line -... Line 1953...
-
 
1953
 
2012
 
1954
    Menu.init(resetTimer);
2013
    context := CreateContextMenu();
1955
    context := CreateContextMenu();
2014
    menuFile := CreateMenuFile();
1956
    menuFile := CreateMenuFile();
2015
    subCurLine := CreateMenuCurLine();
1957
    subCurLine := CreateMenuCurLine();
2016
    subIndent := CreateMenuIndent();
1958
    subIndent := CreateMenuIndent();
Line 2037... Line 1979...
2037
    Menu.AddMainItem(mainMenu, "encoding", menuEncoding);
1979
    Menu.AddMainItem(mainMenu, "encoding", menuEncoding);
2038
    Menu.AddMainItem(mainMenu, "view", menuView);
1980
    Menu.AddMainItem(mainMenu, "view", menuView);
2039
    Menu.AddMainItem(mainMenu, "language", menuLanguage);
1981
    Menu.AddMainItem(mainMenu, "language", menuLanguage);
2040
    Menu.AddMainItem(mainMenu, "program", menuProgram);
1982
    Menu.AddMainItem(mainMenu, "program", menuProgram);
2041
    Menu.AddMainItem(mainMenu, "tools", menuTools);
1983
    Menu.AddMainItem(mainMenu, "tools", menuTools);
-
 
1984
    Shortcuts;
Line 2042... Line 1985...
2042
 
1985
 
2043
    Toolbar.create(toolbar, LEFT_PADDING + 5, toolbarTop);
1986
    Toolbar.create(toolbar, LEFT_PADDING + 5, toolbarTop);
2044
    Toolbar.add(toolbar, btnNew,     2, "");
1987
    Toolbar.add(toolbar, btnNew,     2, "");
2045
    Toolbar.add(toolbar, btnOpen,    0, "");
1988
    Toolbar.add(toolbar, btnOpen,    0, "");
Line 2073... Line 2016...
2073
	IF textsCount = 0 THEN
2016
	IF textsCount = 0 THEN
2074
		K.Exit
2017
		K.Exit
2075
	END;
2018
	END;
2076
	SwitchTab(textsCount - 1);
2019
	SwitchTab(textsCount - 1);
Line 2077... Line -...
2077
 
-
 
2078
    Scroll.init(ScrollChange);
2020
 
2079
    Scroll.create(FALSE, canvas.width + 1, scrollWidth, scrollWidth, scrollWidth*3 DIV 2, hScroll);
2021
    Scroll.create(FALSE, canvas.width + 1, scrollWidth, scrollWidth, scrollWidth*3 DIV 2, ScrollChange, hScroll);
2080
    Scroll.create(TRUE, scrollWidth, canvas.height + 2, scrollWidth, scrollWidth*3 DIV 2, vScroll);
2022
    Scroll.create(TRUE, scrollWidth, canvas.height + 2, scrollWidth, scrollWidth*3 DIV 2, ScrollChange, vScroll);
2081
    T.resize(canvas.width, canvas.height);
2023
    T.resize(canvas.width, canvas.height);
2082
    confirm := FALSE;
2024
    confirm := FALSE;
2083
    notFound := FALSE;
2025
    notFound := FALSE;
2084
    menuFindClicked := FALSE;
2026
    menuFindClicked := FALSE;
Line 2092... Line 2034...
2092
    whole := FALSE;
2034
    whole := FALSE;
2093
    replaced := 0;
2035
    replaced := 0;
Line 2094... Line 2036...
2094
 
2036
 
Line 2095... Line 2037...
2095
	OD := OpenDlg.Create(draw_window, OpenDlg.topen, filePath, "");
2037
	OD := OpenDlg.Create(draw_window, OpenDlg.topen, filePath, "");
2096
 
-
 
2097
    K.SetEventsMask({0, 1, 2, 5, 6, 31});
2038
 
2098
    Menu.init(resetTimer);
2039
    K.SetEventsMask({0, 1, 2, 5, 31});
2099
    draw_window;
2040
    draw_window;
2100
    blink := Ini.blink;
2041
    blink := Ini.blink;
2101
	IF blink <= 0 THEN
2042
	IF blink <= 0 THEN
Line 2110... Line 2051...
2110
    	IF (CurrentTime - CursorTime > blink) & (blink > 0) & timerEnabled THEN
2051
    	IF (CurrentTime - CursorTime > blink) & (blink > 0) & timerEnabled THEN
2111
    		CursorTime := CurrentTime;
2052
    		CursorTime := CurrentTime;
2112
    		T.toggleCursor;
2053
    		T.toggleCursor;
2113
    		repaint
2054
    		repaint
2114
    	END;
2055
    	END;
-
 
2056
 
2115
        CASE K.EventTimeout(10) OF
2057
        CASE K.EventTimeout(10) OF
2116
        |0:
2058
        |0:
2117
        |1:	Redraw(resized, width, height, cliWidth, cliHeight)
2059
        |1:	Redraw(resized, width, height, cliWidth, cliHeight)
2118
        |2: KeyDown(K.GetKey())
2060
        |2: KeyDown(K.GetKey())
2119
        |3: BtnClick
2061
        |3: BtnClick
2120
        |6: MouseEvent(resized, firstClickX, firstClickY, time)
2062
        |6: MouseEvent(resized, firstClickX, firstClickY, time)
2121
        |7: receiveIPC
-
 
2122
        END
2063
        END
2123
    END
2064
    END
2124
END main;
2065
END main;