Initial Commit
285
Aide.bas
Normal file
@ -0,0 +1,285 @@
|
|||||||
|
$ACCELERATOR ghAccTable
|
||||||
|
GUI "Color_Tab", PIXELS, ICON, 6666
|
||||||
|
|
||||||
|
$include "raedit.inc"
|
||||||
|
|
||||||
|
CONST fWidth = 900
|
||||||
|
CONST fHeight = 600
|
||||||
|
CONST nTabs = 20
|
||||||
|
|
||||||
|
GLOBAL ghMainFrm AS CONTROL
|
||||||
|
GLOBAL ghMainTab AS CONTROL
|
||||||
|
GLOBAL ghStatus AS CONTROL
|
||||||
|
|
||||||
|
GLOBAL ghTab[nTabs] AS HWND
|
||||||
|
GLOBAL ghEdit[nTabs] AS HWND
|
||||||
|
|
||||||
|
SET gTabPage$[nTabs]
|
||||||
|
"<Untitled.bas>"
|
||||||
|
END SET
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
ENUM
|
||||||
|
mnuNew = 9000
|
||||||
|
mnuOpen
|
||||||
|
mnuSave
|
||||||
|
mnuCut
|
||||||
|
mnuCopy
|
||||||
|
mnuPaste
|
||||||
|
mnuUNDO
|
||||||
|
mnuREDO
|
||||||
|
mnuSELECTALL
|
||||||
|
mnuAbout
|
||||||
|
mnuEXIT
|
||||||
|
ID_TAB
|
||||||
|
ID_EDIT1
|
||||||
|
END ENUM
|
||||||
|
|
||||||
|
'================================================================
|
||||||
|
SUB FORMLOAD()
|
||||||
|
IF FINDFIRSTINSTANCE(BCX_CLASSNAME$) THEN PostQuitMessage(0)
|
||||||
|
SET sAccel[] AS ACCEL
|
||||||
|
FCONTROL OR FVIRTKEY, ASC("N"), mnuNew,
|
||||||
|
FCONTROL OR FVIRTKEY, ASC("O"), mnuOpen,
|
||||||
|
FCONTROL OR FVIRTKEY, ASC("S"), mnuSave,
|
||||||
|
FCONTROL OR FVIRTKEY, ASC("Q"), mnuEXIT
|
||||||
|
END SET
|
||||||
|
|
||||||
|
GLOBAL AS HACCEL ghAccTable
|
||||||
|
ghAccTable = CreateAcceleratorTable(sAccel, 4)
|
||||||
|
|
||||||
|
InstallRAEdit(BCX_hInstance, FALSE)
|
||||||
|
|
||||||
|
ghMainFrm = BCX_FORM("AIDE Demo", 0, 0, fWidth, fHeight)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
DIM rc AS RECT
|
||||||
|
GetClientRect (ghMainFrm, &rc)
|
||||||
|
AdjustWindowRect (&rc, 0, 0)
|
||||||
|
|
||||||
|
ghMainTab = BCX_TAB(ghMainFrm, ID_TAB, 1, ghTab, gTabPage$, 0, 0, fWidth, fHeight-26,NULL)
|
||||||
|
BCX_SET_FONT(ghMainTab, "Verdana", 9)
|
||||||
|
|
||||||
|
ghEdit[0] = BCX_CONTROL("RAEdit", ghTab[0], "This is Page ", 6000, rc.left,rc.top,rc.right-rc.left-8,rc.bottom-rc.top-46, _
|
||||||
|
WS_CHILD OR WS_VISIBLE OR WS_BORDER OR ES_LEFT OR ES_MULTILINE OR STYLE_AUTOSIZELINENUM OR STYLE_NOLINENUMBER OR STYLE_DRAGDROP)
|
||||||
|
|
||||||
|
RaConfigEditor(ghEdit[0])
|
||||||
|
|
||||||
|
SetupMenu(ghMainFrm)
|
||||||
|
|
||||||
|
ghStatus = BCX_STATUS("Ready", ghMainFrm)
|
||||||
|
|
||||||
|
'Generate a WM_SIZE message
|
||||||
|
MoveWindow(ghMainFrm, 0, 0, fWidth, fHeight, TRUE) 'Force a WM_SIZE
|
||||||
|
|
||||||
|
CENTER(ghMainFrm)
|
||||||
|
SHOW(ghMainFrm)
|
||||||
|
|
||||||
|
' SetFocus(ghEdit[0])
|
||||||
|
|
||||||
|
END SUB
|
||||||
|
|
||||||
|
|
||||||
|
SUB SetupMenu(parent as HWND)
|
||||||
|
GLOBAL AS HMENU MainMenu, FileMenu, EditMenu, HelpMenu
|
||||||
|
MainMenu = CreateMenu()
|
||||||
|
FileMenu = CreateMenu()
|
||||||
|
EditMenu = CreateMenu()
|
||||||
|
HelpMenu = CreateMenu()
|
||||||
|
|
||||||
|
InsertMenu(MainMenu, 0, MF_POPUP, FileMenu, "&File")
|
||||||
|
AppendMenu(FileMenu, MF_STRING, mnuNew, E"New\tCtrl-N")
|
||||||
|
AppendMenu(FileMenu, MF_STRING, mnuOpen, E"Open\tCtrl-O")
|
||||||
|
AppendMenu(FileMenu, MF_STRING, mnuSave, E"Save\tCtrl-S")
|
||||||
|
AppendMenu(FileMenu, MF_SEPARATOR, 0, NULL)
|
||||||
|
AppendMenu(FileMenu, MF_STRING, mnuEXIT, E"Exit\tAlt-F4")
|
||||||
|
|
||||||
|
Insertmenu(MainMenu, 1, MF_POPUP, EditMenu, "&Edit")
|
||||||
|
AppendMenu(EditMenu, MF_STRING, mnuCut, E"Cut\tCtrl-X")
|
||||||
|
AppendMenu(EditMenu, MF_STRING, mnuCopy, E"Copy\tCtrl-C")
|
||||||
|
AppendMenu(EditMenu, MF_STRING, mnuPaste, E"Paste\tCtrl-V")
|
||||||
|
AppendMenu(EditMenu, MF_SEPARATOR, 0, NULL)
|
||||||
|
AppendMenu(EditMenu, MF_STRING, mnuSELECTALL, E"Select All\tCtrl-A")
|
||||||
|
AppendMenu(EditMenu, MF_SEPARATOR, 0, NULL)
|
||||||
|
AppendMenu(EditMenu, MF_STRING, mnuUNDO, E"Undo\tCtrl-Z")
|
||||||
|
AppendMenu(EditMenu, MF_STRING, mnuREDO, E"Redo\tCtrl-Y")
|
||||||
|
|
||||||
|
Insertmenu(MainMenu, 2, MF_POPUP, HelpMenu, "Help")
|
||||||
|
AppendMenu(HelpMenu, MF_STRING, mnuAbout, "About")
|
||||||
|
|
||||||
|
SetMenu(parent, MainMenu)
|
||||||
|
|
||||||
|
END SUB
|
||||||
|
|
||||||
|
FUNCTION GetTabLabelText$(index AS INTEGER)
|
||||||
|
DIM AS TCITEM tabItem
|
||||||
|
DIM tabLabel$
|
||||||
|
|
||||||
|
tabItem.mask = TCIF_TEXT
|
||||||
|
tabItem.pszText = tabLabel
|
||||||
|
tabItem.cchTextMax = sizeof(tabLabel)
|
||||||
|
|
||||||
|
TabCtrl_GetItem(ghMainTab, index, &tabItem)
|
||||||
|
|
||||||
|
FUNCTION = TRIM$(tabLabel)
|
||||||
|
END FUNCTION
|
||||||
|
|
||||||
|
SUB SetTabLabelText(fname$, index AS INTEGER)
|
||||||
|
DIM AS TCITEM tabItem
|
||||||
|
|
||||||
|
tabItem.mask=TCIF_TEXT
|
||||||
|
tabItem.pszText = BCXSPLITPATH$(fname$,FNAME OR FEXT)
|
||||||
|
tabItem.cchTextMax = BCXSTRSIZE
|
||||||
|
|
||||||
|
TabCtrl_SetItem(ghMainTab, index, &tabItem)
|
||||||
|
END SUB
|
||||||
|
'================================================================
|
||||||
|
|
||||||
|
BEGIN EVENTS
|
||||||
|
SELECT CASE CBMSG
|
||||||
|
|
||||||
|
CASE WM_SHOWWINDOW
|
||||||
|
' RaNewEdit()
|
||||||
|
|
||||||
|
CASE WM_COMMAND
|
||||||
|
SELECT CASE CBCTL
|
||||||
|
CASE mnuOpen
|
||||||
|
dim fname$
|
||||||
|
|
||||||
|
IF TRIM$(GetTabLabelText(TabCtrl_GetCurSel(ghMainTab))) <> "<Untitled.bas>" THEN
|
||||||
|
RaNewEdit()
|
||||||
|
END IF
|
||||||
|
|
||||||
|
fname$ = RaLoadFile(ghEdit[TabCtrl_GetCurSel(ghMainTab)])
|
||||||
|
|
||||||
|
IF *fname$ THEN
|
||||||
|
SetTabLabelText(fname$, TabCtrl_GetCurSel(ghMainTab))
|
||||||
|
END IF
|
||||||
|
|
||||||
|
CASE mnuNew
|
||||||
|
RaNewEdit()
|
||||||
|
|
||||||
|
CASE mnuCut
|
||||||
|
RaCut(ghEdit[TabCtrl_GetCurSel(ghMainTab)])
|
||||||
|
|
||||||
|
CASE mnuCopy
|
||||||
|
RaCopy(ghEdit[TabCtrl_GetCurSel(ghMainTab)])
|
||||||
|
|
||||||
|
CASE mnuPaste
|
||||||
|
RaPaste(ghEdit[TabCtrl_GetCurSel(ghMainTab)])
|
||||||
|
|
||||||
|
CASE mnuSELECTALL
|
||||||
|
RaSelectAll(ghEdit[TabCtrl_GetCurSel(ghMainTab)])
|
||||||
|
|
||||||
|
CASE mnuUNDO
|
||||||
|
RaUndo(ghEdit[TabCtrl_GetCurSel(ghMainTab)])
|
||||||
|
|
||||||
|
CASE mnuREDO
|
||||||
|
RaRedo(ghEdit[TabCtrl_GetCurSel(ghMainTab)])
|
||||||
|
|
||||||
|
CASE mnuEXIT
|
||||||
|
PostMessage(hWnd, WM_CLOSE, 0, 0)
|
||||||
|
|
||||||
|
END SELECT
|
||||||
|
|
||||||
|
CASE WM_SIZE
|
||||||
|
DIM cxClient%
|
||||||
|
DIM cyClient%
|
||||||
|
DIM rc AS RECT
|
||||||
|
|
||||||
|
cxClient=LOWORD(lParam)
|
||||||
|
cyClient=HIWORD(lParam)
|
||||||
|
|
||||||
|
MoveWindow(ghMainTab, 0, 2, cxClient+1, cyClient-22, TRUE)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
GetClientRect (ghMainTab, &rc)
|
||||||
|
AdjustWindowRect (&rc, 0, 0)
|
||||||
|
FOR INTEGER i = 0 to sizeof(ghEdit)/sizeof(ghEdit[0])
|
||||||
|
IF ghEdit[i] THEN
|
||||||
|
SetWindowPos(ghEdit[i], NULL, rc.left, rc.top+2, (rc.right - rc.left)-8, (rc.bottom - rc.top)-24, SWP_NOZORDER OR SWP_NOMOVE )
|
||||||
|
END IF
|
||||||
|
NEXT
|
||||||
|
|
||||||
|
SendMessage(ghStatus, WM_SIZE, 0, 0)
|
||||||
|
|
||||||
|
CASE WM_NOTIFY
|
||||||
|
DIM LPNMHDR AS NMHDR*
|
||||||
|
DIM PageNo AS LONG
|
||||||
|
DIM bm, buff$
|
||||||
|
DIM AS RASELCHANGE PTR lpRASELCHANGE = (RASELCHANGE PTR)lParam
|
||||||
|
|
||||||
|
LPNMHDR = (NMHDR*)lParam
|
||||||
|
|
||||||
|
IF LPNMHDR->code >= TCN_LAST && LPNMHDR->code <= TCN_FIRST THEN
|
||||||
|
SELECT CASE LPNMHDR->code
|
||||||
|
CASE TCN_SELCHANGE
|
||||||
|
PageNo = TabCtrl_GetCurSel(ghMainTab)
|
||||||
|
SetFocus(ghEdit[PageNo])
|
||||||
|
END SELECT
|
||||||
|
END IF
|
||||||
|
|
||||||
|
IF LPNMHDR->hwndFrom = ghEdit[TabCtrl_GetCurSel(ghMainTab)] THEN
|
||||||
|
|
||||||
|
IF LPNMHDR->code = EN_SELCHANGE THEN
|
||||||
|
' Update statusbar
|
||||||
|
SPRINT buff,"Line:", lpRASELCHANGE->line+1, ", Column:", lpRASELCHANGE->chrg.cpMin - lpRASELCHANGE->cpLine+1
|
||||||
|
SetWindowText(ghStatus, buff)
|
||||||
|
END IF
|
||||||
|
|
||||||
|
IF lpRASELCHANGE->seltyp = SEL_OBJECT THEN
|
||||||
|
' Bookmark clicked
|
||||||
|
bm=SendMessage(ghEdit[TabCtrl_GetCurSel(ghMainTab)],REM_GETBOOKMARK, lpRASELCHANGE->line,0)
|
||||||
|
SELECT CASE bm
|
||||||
|
CASE 1
|
||||||
|
' Collapse
|
||||||
|
SendMessage(ghEdit[TabCtrl_GetCurSel(ghMainTab)],REM_COLLAPSE, lpRASELCHANGE->line,0)
|
||||||
|
CASE 2
|
||||||
|
' Expand
|
||||||
|
SendMessage(ghEdit[TabCtrl_GetCurSel(ghMainTab)],REM_EXPAND, lpRASELCHANGE->line,0)
|
||||||
|
END SELECT
|
||||||
|
ELSE
|
||||||
|
' Selection changed
|
||||||
|
IF lpRASELCHANGE->fchanged THEN
|
||||||
|
' Update block bookmarks
|
||||||
|
SendMessage(ghEdit[TabCtrl_GetCurSel(ghMainTab)],REM_SETBLOCKS,0,0)
|
||||||
|
END IF
|
||||||
|
END IF
|
||||||
|
END IF
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
CASE WM_CLOSE
|
||||||
|
DestroyWindow(hWnd)
|
||||||
|
|
||||||
|
|
||||||
|
CASE WM_DESTROY
|
||||||
|
PostQuitMessage(0)
|
||||||
|
|
||||||
|
|
||||||
|
Case WM_CONTEXTMENU
|
||||||
|
DIM AS POINT pt
|
||||||
|
If wParam=(WPARAM)ghTab[TabCtrl_GetCurSel(ghMainTab)] Then
|
||||||
|
pt.x = LOWORD(lParam)
|
||||||
|
pt.y = HIWORD(lParam)
|
||||||
|
TrackPopupMenu( GetSubMenu( GetMenu(hWnd), 1 ), TPM_LEFTALIGN or TPM_RIGHTBUTTON, pt.x, pt.y, 0, hWnd, 0 )
|
||||||
|
EndIf
|
||||||
|
|
||||||
|
|
||||||
|
CASE WM_GETMINMAXINFO
|
||||||
|
DIM AS LPMINMAXINFO mm = cast(LPMINMAXINFO,lParam)
|
||||||
|
DIM AS UINT wDpi = GetDpiForWindow(hWnd)
|
||||||
|
DIM AS DOUBLE scalingFactor = (double)wDpi / 96
|
||||||
|
DIM AS POINT defDims
|
||||||
|
|
||||||
|
defDims.x = fWidth + wDpi + scalingFactor '+ (fWidth * scalingFactor)
|
||||||
|
defDims.y = fHeight + wDpi + scalingFactor '+ (fHeight * scalingFactor)
|
||||||
|
|
||||||
|
mm->ptMinTrackSize = defDims
|
||||||
|
|
||||||
|
END SELECT
|
||||||
|
END EVENTS
|
||||||
|
|
15
Aide.rc
Normal file
@ -0,0 +1,15 @@
|
|||||||
|
#include <windows.h>
|
||||||
|
#include "raedit.h"
|
||||||
|
|
||||||
|
IDI_ICON ICON DISCARDABLE "resource/demo.ico"
|
||||||
|
IDB_RAEDITBUTTON BITMAP DISCARDABLE "resource/Button.bmp"
|
||||||
|
IDC_HSPLITTCUR CURSOR DISCARDABLE "resource/SplitH.cur"
|
||||||
|
IDB_BOOKMARK BITMAP DISCARDABLE "resource/Bookmark.bmp"
|
||||||
|
IDC_SELECTCUR CURSOR DISCARDABLE "resource/Select.cur"
|
||||||
|
IDB_LINENUMBER BITMAP DISCARDABLE "resource/Linenumber.bmp"
|
||||||
|
IDB_EXPAND BITMAP DISCARDABLE "resource/Expand.bmp"
|
||||||
|
IDB_COLLAPSE BITMAP DISCARDABLE "resource/Collapse.bmp"
|
||||||
|
IDB_LOCK BITMAP DISCARDABLE "resource/Lock.bmp"
|
||||||
|
RC_KEYWORDS RCDATA DISCARDABLE "resource/keywords.txt"
|
||||||
|
RC_WINAPI RCDATA DISCARDABLE "resource/winapi.txt"
|
||||||
|
|
319
lib/RAEdit.h
Normal file
@ -0,0 +1,319 @@
|
|||||||
|
#pragma once
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
extern "C" {
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#include <windows.h>
|
||||||
|
#include <commctrl.h>
|
||||||
|
#include <richedit.h>
|
||||||
|
|
||||||
|
#pragma pack(push, 1)
|
||||||
|
|
||||||
|
// Default colors
|
||||||
|
#define BCKCLR 0x00C0F0F0
|
||||||
|
#define TXTCLR 0x00000000
|
||||||
|
#define SELBCKCLR 0x00800000
|
||||||
|
#define SELTXTCLR 0x00FFFFFF
|
||||||
|
#define CMNTCLR 0x02008000
|
||||||
|
#define STRCLR 0x00A00000
|
||||||
|
#define OPRCLR 0x000000A0
|
||||||
|
#define HILITE1 0x00F0C0C0
|
||||||
|
#define HILITE2 0x00C0F0C0
|
||||||
|
#define HILITE3 0x00C0C0F0
|
||||||
|
#define SELBARCLR 0x00C0C0C0
|
||||||
|
#define SELBARPEN 0x00808080
|
||||||
|
#define LNRCLR 0x00800000
|
||||||
|
#define NUMCLR 0x00808080
|
||||||
|
#define CMNTBCK 0x00C0F0F0
|
||||||
|
#define STRBCK 0x00C0F0F0
|
||||||
|
#define NUMBCK 0x00C0F0F0
|
||||||
|
#define OPRBCK 0x00C0F0F0
|
||||||
|
#define CHANGEDCLR 0x0000F0F0
|
||||||
|
#define CHANGESAVEDCLR 0x0000F000
|
||||||
|
|
||||||
|
// Window styles
|
||||||
|
#define STYLE_NOSPLITT 0x0001 // No splitt button
|
||||||
|
#define STYLE_NOLINENUMBER 0x0002 // No linenumber button
|
||||||
|
#define STYLE_NOCOLLAPSE 0x0004 // No expand/collapse buttons
|
||||||
|
#define STYLE_NOHSCROLL 0x0008 // No horizontal scrollbar
|
||||||
|
#define STYLE_NOVSCROLL 0x0010 // No vertical scrollbar
|
||||||
|
#define STYLE_NOHILITE 0x0020 // No color hiliting
|
||||||
|
#define STYLE_NOSIZEGRIP 0x0040 // No size grip
|
||||||
|
#define STYLE_NODBLCLICK 0x0080 // No action on double clicks
|
||||||
|
#define STYLE_READONLY 0x0100 // Text is locked
|
||||||
|
#define STYLE_NODIVIDERLINE 0x0200 // Blocks are not divided by line
|
||||||
|
#define STYLE_NOBACKBUFFER 0x0400 // Drawing directly to screen DC
|
||||||
|
#define STYLE_NOSTATE 0x0800 // No state indicator
|
||||||
|
#define STYLE_DRAGDROP 0x1000 // Drag & Drop support, app must load ole
|
||||||
|
#define STYLE_SCROLLTIP 0x2000 // Scrollbar tooltip
|
||||||
|
#define STYLE_HILITECOMMENT 0x4000 // Comments are hilited
|
||||||
|
#define STYLE_AUTOSIZELINENUM 0x8000 // Line number column autosizes
|
||||||
|
|
||||||
|
// Styles used with REM_SETSTYLEEX message
|
||||||
|
#define STYLEEX_LOCK 0x0001 // Show lock button
|
||||||
|
#define STYLEEX_BLOCKGUIDE 0x0002 // Show block guiders
|
||||||
|
#define STILEEX_LINECHANGED 0x0004 // Show line changed state
|
||||||
|
#define STILEEX_STRINGMODEFB 0x0008 // FreeBasic
|
||||||
|
#define STILEEX_STRINGMODEC 0x0010 // C/C++
|
||||||
|
|
||||||
|
// Edit modes
|
||||||
|
#define MODE_NORMAL 0 // Normal
|
||||||
|
#define MODE_BLOCK 1 // Block select
|
||||||
|
#define MODE_OVERWRITE 2 // Overwrite
|
||||||
|
|
||||||
|
// REM_COMMAND commands
|
||||||
|
#define CMD_LEFT 1
|
||||||
|
#define CMD_RIGHT 2
|
||||||
|
#define CMD_LINE_UP 3
|
||||||
|
#define CMD_LINE_DOWN 4
|
||||||
|
#define CMD_PAGE_UP 5
|
||||||
|
#define CMD_PAGE_DOWN 6
|
||||||
|
#define CMD_HOME 7
|
||||||
|
#define CMD_END 8
|
||||||
|
#define CMD_INSERT 9
|
||||||
|
#define CMD_DELETE 10
|
||||||
|
#define CMD_BACKSPACE 11
|
||||||
|
// REM_COMMAND modifyers
|
||||||
|
#define CMD_ALT 256
|
||||||
|
#define CMD_CTRL 512
|
||||||
|
#define CMD_SHIFT 1024
|
||||||
|
|
||||||
|
// Private edit messages
|
||||||
|
#define REM_RAINIT (WM_USER+9999) // wParam=0, lParam=pointer to controls DIALOG struct
|
||||||
|
#define REM_BASE (WM_USER+1000)
|
||||||
|
#define REM_SETHILITEWORDS (REM_BASE+0) // wParam=Color, lParam=lpszWords
|
||||||
|
#define REM_SETFONT (REM_BASE+1) // wParam=nLineSpacing, lParam=lpRAFONT
|
||||||
|
#define REM_GETFONT (REM_BASE+2) // wParam=0, lParam=lpRAFONT
|
||||||
|
#define REM_SETCOLOR (REM_BASE+3) // wParam=0, lParam=lpRACOLOR
|
||||||
|
#define REM_GETCOLOR (REM_BASE+4) // wParam=0, lParam=lpRACOLOR
|
||||||
|
#define REM_SETHILITELINE (REM_BASE+5) // wParam=Line, lParam=Color
|
||||||
|
#define REM_GETHILITELINE (REM_BASE+6) // wParam=Line, lParam=0
|
||||||
|
#define REM_SETBOOKMARK (REM_BASE+7) // wParam=Line, lParam=Type
|
||||||
|
#define REM_GETBOOKMARK (REM_BASE+8) // wParam=Line, lParam=0
|
||||||
|
#define REM_CLRBOOKMARKS (REM_BASE+9) // wParam=0, lParam=Type
|
||||||
|
#define REM_NXTBOOKMARK (REM_BASE+10) // wParam=Line, lParam=Type
|
||||||
|
#define REM_PRVBOOKMARK (REM_BASE+11) // wParam=Line, lParam=Type
|
||||||
|
#define REM_FINDBOOKMARK (REM_BASE+12) // wParam=BmID, lParam=0
|
||||||
|
#define REM_SETBLOCKS (REM_BASE+13) // wParam=[lpLINERANGE], lParam=0
|
||||||
|
#define REM_ISLINE (REM_BASE+14) // wParam=Line, lParam=lpszDef
|
||||||
|
#define REM_GETWORD (REM_BASE+15) // wParam=BuffSize, lParam=lpBuff
|
||||||
|
#define REM_COLLAPSE (REM_BASE+16) // wParam=Line, lParam=0
|
||||||
|
#define REM_COLLAPSEALL (REM_BASE+17) // wParam=0, lParam=0
|
||||||
|
#define REM_EXPAND (REM_BASE+18) // wParam=Line, lParam=0
|
||||||
|
#define REM_EXPANDALL (REM_BASE+19) // wParam=0, lParam=0
|
||||||
|
#define REM_LOCKLINE (REM_BASE+20) // wParam=Line, lParam=TRUE/FALSE
|
||||||
|
#define REM_ISLINELOCKED (REM_BASE+21) // wParam=Line, lParam=0
|
||||||
|
#define REM_HIDELINE (REM_BASE+22) // wParam=Line, lParam=TRUE/FALSE
|
||||||
|
#define REM_ISLINEHIDDEN (REM_BASE+23) // wParam=Line, lParam=0
|
||||||
|
#define REM_AUTOINDENT (REM_BASE+24) // wParam=0, lParam=TRUE/FALSE
|
||||||
|
#define REM_TABWIDTH (REM_BASE+25) // wParam=nChars, lParam=TRUE/FALSE (Expand tabs)
|
||||||
|
#define REM_SELBARWIDTH (REM_BASE+26) // wParam=nWidth, lParam=0
|
||||||
|
#define REM_LINENUMBERWIDTH (REM_BASE+27) // wParam=nWidth, lParam=0
|
||||||
|
#define REM_MOUSEWHEEL (REM_BASE+28) // wParam=nLines, lParam=0
|
||||||
|
#define REM_SUBCLASS (REM_BASE+29) // wParam=0, lParam=lpWndProc
|
||||||
|
#define REM_SETSPLIT (REM_BASE+30) // wParam=nSplit, lParam=0
|
||||||
|
#define REM_GETSPLIT (REM_BASE+31) // wParam=0, lParam=0
|
||||||
|
#define REM_VCENTER (REM_BASE+32) // wParam=0, lParam=0
|
||||||
|
#define REM_REPAINT (REM_BASE+33) // wParam=0, lParam=TRUE/FALSE (Paint Now)
|
||||||
|
#define REM_BMCALLBACK (REM_BASE+34) // wParam=0, lParam=lpBmProc
|
||||||
|
#define REM_READONLY (REM_BASE+35) // wParam=0, lParam=TRUE/FALSE
|
||||||
|
#define REM_INVALIDATELINE (REM_BASE+36) // wParam=Line, lParam=0
|
||||||
|
#define REM_SETPAGESIZE (REM_BASE+37) // wParam=nLines, lParam=0
|
||||||
|
#define REM_GETPAGESIZE (REM_BASE+38) // wParam=0, lParam=0
|
||||||
|
#define REM_GETCHARTAB (REM_BASE+39) // wParam=nChar, lParam=0
|
||||||
|
#define REM_SETCHARTAB (REM_BASE+40) // wParam=nChar, lParam=nValue
|
||||||
|
#define REM_SETCOMMENTBLOCKS (REM_BASE+41) // wParam=lpStart, lParam=lpEnd
|
||||||
|
#define REM_SETWORDGROUP (REM_BASE+42) // wParam=0, lParam=nGroup (0-15)
|
||||||
|
#define REM_GETWORDGROUP (REM_BASE+43) // wParam=0, lParam=0
|
||||||
|
#define REM_SETBMID (REM_BASE+44) // wParam=nLine, lParam=nBmID
|
||||||
|
#define REM_GETBMID (REM_BASE+45) // wParam=nLine, lParam=0
|
||||||
|
#define REM_ISCHARPOS (REM_BASE+46) // wParam=CP, lParam=0, returns 1 if comment block, 2 if comment, 3 if string
|
||||||
|
#define REM_HIDELINES (REM_BASE+47) // wParam=nLine, lParam=nLines
|
||||||
|
#define REM_SETDIVIDERLINE (REM_BASE+48) // wParam=nLine, lParam=TRUE/FALSE
|
||||||
|
#define REM_ISINBLOCK (REM_BASE+49) // wParam=nLine, lParam=lpRABLOCKDEF
|
||||||
|
#define REM_TRIMSPACE (REM_BASE+50) // wParam=nLine, lParam=fLeft
|
||||||
|
#define REM_SAVESEL (REM_BASE+51) // wParam=0, lParam=0
|
||||||
|
#define REM_RESTORESEL (REM_BASE+52) // wParam=0, lParam=0
|
||||||
|
#define REM_GETCURSORWORD (REM_BASE+53) // wParam=BuffSize, lParam=lpBuff, Returns line number
|
||||||
|
#define REM_SETSEGMENTBLOCK (REM_BASE+54) // wParam=nLine, lParam=TRUE/FALSE
|
||||||
|
#define REM_GETMODE (REM_BASE+55) // wParam=0, lParam=0
|
||||||
|
#define REM_SETMODE (REM_BASE+56) // wParam=nMode, lParam=0
|
||||||
|
#define REM_GETBLOCK (REM_BASE+57) // wParam=0, lParam=lpBLOCKRANGE
|
||||||
|
#define REM_SETBLOCK (REM_BASE+58) // wParam=0, lParam=lpBLOCKRANGE
|
||||||
|
#define REM_BLOCKINSERT (REM_BASE+59) // wParam=0, lParam=lpText
|
||||||
|
#define REM_LOCKUNDOID (REM_BASE+60) // wParam=TRUE/FALSE, lParam=0
|
||||||
|
#define REM_ADDBLOCKDEF (REM_BASE+61) // wParam=0, lParam=lpRABLOCKDEF
|
||||||
|
#define REM_CONVERT (REM_BASE+62) // wParam=nType, lParam=0
|
||||||
|
#define REM_BRACKETMATCH (REM_BASE+63) // wParam=0, lParam=lpDef {[(,}]),_
|
||||||
|
#define REM_COMMAND (REM_BASE+64) // wParam=nCommand, lParam=0
|
||||||
|
#define REM_CASEWORD (REM_BASE+65) // wParam=cp, lParam=lpWord
|
||||||
|
#define REM_GETBLOCKEND (REM_BASE+66) // wParam=Line, lParam=0
|
||||||
|
#define REM_SETLOCK (REM_BASE+67) // wParam=TRUE/FALSE, lParam=0
|
||||||
|
#define REM_GETLOCK (REM_BASE+68) // wParam=0, lParam=0
|
||||||
|
#define REM_GETWORDFROMPOS (REM_BASE+69) // wParam=cp, lParam=lpBuff
|
||||||
|
#define REM_SETNOBLOCKLINE (REM_BASE+70) // wParam=Line, lParam=TRUE/FALSE
|
||||||
|
#define REM_ISLINENOBLOCK (REM_BASE+71) // wParam=Line, lParam=0
|
||||||
|
#define REM_SETALTHILITELINE (REM_BASE+72) // wParam=Line, lParam=TRUE/FALSE
|
||||||
|
#define REM_ISLINEALTHILITE (REM_BASE+73) // wParam=Line, lParam=0
|
||||||
|
#define REM_SETCURSORWORDTYPE (REM_BASE+74) // wParam=nType, lParam=0
|
||||||
|
#define REM_SETBREAKPOINT (REM_BASE+75) // wParam=nLine, lParam=TRUE/FALSE
|
||||||
|
#define REM_NEXTBREAKPOINT (REM_BASE+76) // wParam=nLine, lParam=0
|
||||||
|
#define REM_GETLINESTATE (REM_BASE+77) // wParam=nLine, lParam=0
|
||||||
|
#define REM_SETERROR (REM_BASE+78) // wParam=nLine, lParam=nErrID
|
||||||
|
#define REM_GETERROR (REM_BASE+79) // wParam=nLine, lParam=0
|
||||||
|
#define REM_NEXTERROR (REM_BASE+80) // wParam=nLine, lParam=0
|
||||||
|
#define REM_CHARTABINIT (REM_BASE+81) // wParam=0, lParam=0
|
||||||
|
#define REM_LINEREDTEXT (REM_BASE+82) // wParam=nLine, lParam=TRUE/FALSE
|
||||||
|
#define REM_SETSTYLEEX (REM_BASE+83) // wParam=nStyleEx, lParam=0
|
||||||
|
#define REM_GETUNICODE (REM_BASE+84) // wParam=0, lParam=0
|
||||||
|
#define REM_SETUNICODE (REM_BASE+85) // wParam=TRUE/FALSE, lParam=0
|
||||||
|
#define REM_SETCHANGEDSTATE (REM_BASE+86) // wParam=TRUE/FALSE, lParam=0
|
||||||
|
#define REM_SETTOOLTIP (REM_BASE+87) // wParam=n (1-6), lParam=lpText
|
||||||
|
#define REM_HILITEACTIVELINE (REM_BASE+88) // wParam=0, lParam=nColor
|
||||||
|
#define REM_GETUNDO (REM_BASE+89) // wParam=nSize, lParam=lpMem
|
||||||
|
#define REM_SETUNDO (REM_BASE+90) // wParam=nSize, lParam=lpMem
|
||||||
|
#define REM_GETLINEBEGIN (REM_BASE+91) // wParam=nLine, lParam=0
|
||||||
|
|
||||||
|
// Convert types
|
||||||
|
#define CONVERT_TABTOSPACE 0
|
||||||
|
#define CONVERT_SPACETOTAB 1
|
||||||
|
#define CONVERT_UPPERCASE 2
|
||||||
|
#define CONVERT_LOWERCASE 3
|
||||||
|
|
||||||
|
// Line hiliting
|
||||||
|
#define STATE_HILITEOFF 0
|
||||||
|
#define STATE_HILITE1 1
|
||||||
|
#define STATE_HILITE2 2
|
||||||
|
#define STATE_HILITE3 3
|
||||||
|
#define STATE_HILITEMASK 3
|
||||||
|
|
||||||
|
// Bookmarks
|
||||||
|
#define STATE_BMOFF 0x00
|
||||||
|
#define STATE_BM1 0x10
|
||||||
|
#define STATE_BM2 0x20
|
||||||
|
#define STATE_BM3 0x30
|
||||||
|
#define STATE_BM4 0x40
|
||||||
|
#define STATE_BM5 0x50
|
||||||
|
#define STATE_BM6 0x60
|
||||||
|
#define STATE_BM7 0x70
|
||||||
|
#define STATE_BM8 0x80
|
||||||
|
#define STATE_BMMASK 0x0F0
|
||||||
|
|
||||||
|
// Line states
|
||||||
|
#define STATE_LOCKED 0x00000100
|
||||||
|
#define STATE_HIDDEN 0x00000200
|
||||||
|
#define STATE_COMMENT 0x00000400
|
||||||
|
#define STATE_DIVIDERLINE 0x00000800
|
||||||
|
#define STATE_SEGMENTBLOCK 0x00001000
|
||||||
|
#define STATE_NOBLOCK 0x00002000
|
||||||
|
#define STATE_ALTHILITE 0x00004000
|
||||||
|
#define STATE_BREAKPOINT 0x00008000
|
||||||
|
#define STATE_BLOCKSTART 0x00010000
|
||||||
|
#define STATE_BLOCK 0x00020000
|
||||||
|
#define STATE_BLOCKEND 0x00040000
|
||||||
|
#define STATE_REDTEXT 0x00080000
|
||||||
|
#define STATE_COMMENTNEST 0x00100000
|
||||||
|
#define STATE_CHANGED 0x00200000
|
||||||
|
#define STATE_CHANGESAVED 0x00400000
|
||||||
|
#define STATE_GARBAGE 0x80000000
|
||||||
|
|
||||||
|
// Character table types
|
||||||
|
#define CT_NONE 0
|
||||||
|
#define CT_CHAR 1
|
||||||
|
#define CT_OPER 2
|
||||||
|
#define CT_HICHAR 3
|
||||||
|
#define CT_CMNTCHAR 4
|
||||||
|
#define CT_STRING 5
|
||||||
|
#define CT_CMNTDBLCHAR 6
|
||||||
|
#define CT_CMNTINITCHAR 7
|
||||||
|
|
||||||
|
// Find
|
||||||
|
#define FR_IGNOREWHITESPACE 0x8000000
|
||||||
|
|
||||||
|
struct tagRAFONT {
|
||||||
|
HFONT hFont; // Code edit normal
|
||||||
|
HFONT hIFont; // Code edit italics
|
||||||
|
HFONT hLnrFont; // Line numbers
|
||||||
|
};
|
||||||
|
typedef struct tagRAFONT RAFONT;
|
||||||
|
|
||||||
|
struct tagRACOLOR {
|
||||||
|
COLORREF bckcol; // Back color
|
||||||
|
COLORREF txtcol; // Text color
|
||||||
|
COLORREF selbckcol; // Sel back color
|
||||||
|
COLORREF seltxtcol; // Sel text color
|
||||||
|
COLORREF cmntcol; // Comment color
|
||||||
|
COLORREF strcol; // String color
|
||||||
|
COLORREF oprcol; // Operator color
|
||||||
|
COLORREF hicol1; // Line hilite 1
|
||||||
|
COLORREF hicol2; // Line hilite 2
|
||||||
|
COLORREF hicol3; // Line hilite 3
|
||||||
|
COLORREF selbarbck; // Selection bar
|
||||||
|
COLORREF selbarpen; // Selection bar pen
|
||||||
|
COLORREF lnrcol; // Line numbers color
|
||||||
|
COLORREF numcol; // Numbers & hex color
|
||||||
|
COLORREF cmntback; // Comment back color
|
||||||
|
COLORREF strback; // String back color
|
||||||
|
COLORREF numback; // Numbers & hex back color
|
||||||
|
COLORREF oprback; // Operator back color
|
||||||
|
COLORREF changed; // Line changed indicator
|
||||||
|
COLORREF changesaved; // Line saved chane indicator
|
||||||
|
};
|
||||||
|
typedef struct tagRACOLOR RACOLOR;
|
||||||
|
|
||||||
|
struct tagRASELCHANGE {
|
||||||
|
NMHDR nmhdr;
|
||||||
|
CHARRANGE chrg; // Current selection
|
||||||
|
WORD seltyp; // SEL_TEXT or SEL_OBJECT
|
||||||
|
DWORD line; // Line number
|
||||||
|
DWORD cpLine; // Character position of first character
|
||||||
|
HANDLE lpLine; // Pointer to line
|
||||||
|
DWORD nlines; // Total number of lines
|
||||||
|
DWORD nhidden; // Total number of hidden lines
|
||||||
|
BOOL fchanged; // TRUE if changed since last
|
||||||
|
DWORD npage; // Page number
|
||||||
|
DWORD nWordGroup; // Hilite word group(0-15)
|
||||||
|
};
|
||||||
|
typedef struct tagRASELCHANGE RASELCHANGE;
|
||||||
|
|
||||||
|
#define BD_NONESTING 0x01 // Set to true for non nested blocks
|
||||||
|
#define BD_DIVIDERLINE 0x02 // Draws a divider line
|
||||||
|
#define BD_INCLUDELAST 0x04 // lpszEnd line is also collapsed
|
||||||
|
#define BD_LOOKAHEAD 0x08 // Look 500 lines ahead for the ending
|
||||||
|
#define BD_SEGMENTBLOCK 0x10 // Segment block, collapse till next segmentblock
|
||||||
|
#define BD_COMMENTBLOCK 0x20 // Comment block
|
||||||
|
#define BD_NOBLOCK 0x40 //
|
||||||
|
#define BD_ALTHILITE 0x80 // Adds 1 to the current word group for syntax coloring.
|
||||||
|
|
||||||
|
struct tagRABLOCKDEF {
|
||||||
|
LPTSTR lpszStart; // Block start
|
||||||
|
LPTSTR lpszEnd; // Block end
|
||||||
|
LPTSTR lpszNot1; // Dont hide line containing this or set to NULL
|
||||||
|
LPTSTR lpszNot2; // Dont hide line containing this or set to NULL
|
||||||
|
DWORD flag; // High word is WordGroup(0-15)
|
||||||
|
};
|
||||||
|
typedef struct tagRABLOCKDEF RABLOCKDEF;
|
||||||
|
|
||||||
|
struct tagLINERANGE {
|
||||||
|
DWORD lnMin; // Starting line
|
||||||
|
DWORD lnMax; // Ending line
|
||||||
|
};
|
||||||
|
typedef struct tagLINERANGE LINERANGE;
|
||||||
|
|
||||||
|
struct tagBLOCKRANGE {
|
||||||
|
DWORD lnMin; // Starting line
|
||||||
|
DWORD clMin; // Starting column
|
||||||
|
DWORD lnMax; // Ending line
|
||||||
|
DWORD clMax; // Ending column
|
||||||
|
};
|
||||||
|
typedef struct tagBLOCKRANGE BLOCKRANGE;
|
||||||
|
|
||||||
|
void WINAPI InstallRAEdit(HINSTANCE hInst, BOOL fGlobal);
|
||||||
|
void WINAPI UnInstallRAEdit(void);
|
||||||
|
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
#pragma pack(pop)
|
11
raedit.h
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
#define IDI_ICON 6666
|
||||||
|
#define IDB_RAEDITBUTTON 100
|
||||||
|
#define IDC_HSPLITTCUR 101
|
||||||
|
#define IDB_BOOKMARK 102
|
||||||
|
#define IDC_SELECTCUR 103
|
||||||
|
#define IDB_LINENUMBER 104
|
||||||
|
#define IDB_EXPAND 105
|
||||||
|
#define IDB_COLLAPSE 106
|
||||||
|
#define IDB_LOCK 107
|
||||||
|
#define RC_KEYWORDS 108
|
||||||
|
#define RC_WINAPI 109
|
188
raedit.inc
Normal file
@ -0,0 +1,188 @@
|
|||||||
|
#include "lib/RAEdit.h"
|
||||||
|
#include "raEdit.h"
|
||||||
|
$PRAGMA lib "lib/libRAEditC.a"
|
||||||
|
|
||||||
|
SUB RaNewEdit()
|
||||||
|
DIM pn
|
||||||
|
DIM AS RECT rc
|
||||||
|
|
||||||
|
pn = TabCtrl_GetItemCount(ghMainTab)
|
||||||
|
|
||||||
|
GetClientRect (ghMainTab, &rc)
|
||||||
|
AdjustWindowRect (&rc, 0, 0)
|
||||||
|
|
||||||
|
IF pn THEN
|
||||||
|
BCX_ADDTAB(ghMainTab, pn, "<Untitled.bas>")
|
||||||
|
ghEdit[pn] = BCX_CONTROL("RAEdit", ghTab[pn], "This is Page ", pn+6000, rc.left,rc.top,rc.right-rc.left-8,rc.bottom-rc.top-46, _
|
||||||
|
WS_CHILD OR WS_VISIBLE OR WS_BORDER OR ES_LEFT OR ES_MULTILINE OR STYLE_AUTOSIZELINENUM OR STYLE_NOLINENUMBER OR STYLE_DRAGDROP)
|
||||||
|
END IF
|
||||||
|
|
||||||
|
RaConfigEditor(ghEdit[pn])
|
||||||
|
|
||||||
|
END SUB
|
||||||
|
|
||||||
|
SUB RaConfigEditor(hEDT as HWND)
|
||||||
|
|
||||||
|
' Set Editor Font
|
||||||
|
BCX_SET_FONT(hEDT, "Consolas", 12)
|
||||||
|
|
||||||
|
' Enable Line Numbers
|
||||||
|
CheckDlgButton(hEDT,-2,TRUE)
|
||||||
|
SendMessage(hEDT, WM_COMMAND, -2, 0)
|
||||||
|
|
||||||
|
' Highlite Active Line in Editor
|
||||||
|
SendMessage(hEDT, REM_HILITEACTIVELINE, 0, 2)
|
||||||
|
|
||||||
|
' Set the comment character
|
||||||
|
SendMessage(hEDT, REM_SETCHARTAB, ASC(";"), CT_OPER)
|
||||||
|
SendMessage(hEDT, REM_SETCHARTAB, ASC("'"), CT_CMNTCHAR)
|
||||||
|
|
||||||
|
|
||||||
|
' Enable Block Guides
|
||||||
|
SendMessage(hEDT, REM_SETSTYLEEX, STYLEEX_BLOCKGUIDE,0)
|
||||||
|
|
||||||
|
' Set up tabbing; 4 spaces, also convert to spaces on load?
|
||||||
|
SendMessage(hEDT, CONVERT_TABTOSPACE, 0, 0)
|
||||||
|
SendMessage(hEDT, REM_TABWIDTH, 4, TRUE)
|
||||||
|
|
||||||
|
' SendMEssage(RAEdit, REM_CONVERT, CONVERT_UPPERCASE, 0)
|
||||||
|
|
||||||
|
SendMessage(hEDT, REM_SETSTYLEEX, STILEEX_STRINGMODEFB, 0)
|
||||||
|
|
||||||
|
' Set Colors and Keywords
|
||||||
|
RaSetColors(hEDT)
|
||||||
|
RaLoadKeyWords(hEDT)
|
||||||
|
|
||||||
|
' Set Folding Words, minimal list
|
||||||
|
' [$] is a placeholder, [!] disable folding if following word is at eol?
|
||||||
|
' Optional Number or define at end of function call specifies the type of styling
|
||||||
|
RaSetBlocks(hEDT,"begin events", "end events",0)
|
||||||
|
RaSetBlocks(hEDT,"begin dialog", "end dialog",0)
|
||||||
|
RaSetBlocks(hEDT,"begin modal dialog", "end dialog",0)
|
||||||
|
RaSetBlocks(hEDT,"%private %public Function $","end Function")
|
||||||
|
RaSetBlocks(hEDT,"if $! then", "EndIf|End If")
|
||||||
|
RaSetBlocks(hEDT,"with $", "end with")
|
||||||
|
RaSetBlocks(hEDT,"select case !end select","End Select")
|
||||||
|
RaSetBlocks(hEDT,"%private %public sub $","end sub")
|
||||||
|
RaSetBlocks(hEDT,"enum", "end enum",0)
|
||||||
|
RaSetBlocks(hEDT,"while $ !wend", "wend",0)
|
||||||
|
RaSetBlocks(hEDT,"type!as","End Type",0)
|
||||||
|
RaSetBlocks(hEDT,"do!loop","Loop",0)
|
||||||
|
RaSetBlocks(hEDT,"while $ !wend","wend",0)
|
||||||
|
RaSetBlocks(hEDT,"for $ !next","next",0)
|
||||||
|
|
||||||
|
SetFocus(hEDT)
|
||||||
|
END SUB
|
||||||
|
' Sets keyword blocks for folding
|
||||||
|
Function RaSetBlocks OPTIONAL (hEDT as HWND, start_block AS STRING, end_block AS STRING, flag AS INTEGER = 0) AS INTEGER
|
||||||
|
DIM AS RABLOCKDEF blockdef
|
||||||
|
SendMessage(hEDT, REM_SETBLOCKS,0,0)
|
||||||
|
WITH blockdef
|
||||||
|
.lpszStart = start_block
|
||||||
|
.lpszEnd = end_block
|
||||||
|
.lpszNot1 = 0
|
||||||
|
.lpszNot2 = 0
|
||||||
|
.flag = flag
|
||||||
|
END WITH
|
||||||
|
|
||||||
|
FUNCTION = SendMessage(hEDT, REM_ADDBLOCKDEF, 0, &blockdef)
|
||||||
|
END FUNCTION
|
||||||
|
|
||||||
|
Function RaLoadKeyWords(hEDT AS HWND) As INTEGER
|
||||||
|
DIM AS INTEGER r
|
||||||
|
DIM AS DWORD rcSize
|
||||||
|
|
||||||
|
r = SendMessage(hEDT, REM_SETHILITEWORDS, 0xc48a4c, (LPCSTR)GetResource(RC_KEYWORDS, RT_RCDATA, &rcSize))
|
||||||
|
r = SendMessage(hEDT, REM_SETHILITEWORDS, 0x5f5fce, (LPCSTR)GetResource(RC_WINAPI, RT_RCDATA, &rcSize))
|
||||||
|
|
||||||
|
FUNCTION = r
|
||||||
|
End Function
|
||||||
|
|
||||||
|
' Configure color scheme for RAEdit object
|
||||||
|
SUB RaSetColors(hEDT as HWND)
|
||||||
|
DIM AS RACOLOR colors
|
||||||
|
|
||||||
|
WITH colors
|
||||||
|
.bckcol = QBCOLOR(0) ' Back color
|
||||||
|
.txtcol = QBCOLOR(11) ' Text color
|
||||||
|
.selbckcol = 0xd89f62 ' Sel back color
|
||||||
|
.seltxtcol = SELTXTCLR ' Sel text color
|
||||||
|
.cmntcol = QBCOLOR(24) ' Comment color
|
||||||
|
.strcol = RGB(0,193,0) ' String color
|
||||||
|
.oprcol = 0x5f5fce ' Operator color
|
||||||
|
.hicol1 = HILITE1 ' Line hilite 1 [ current line color option 1 ]
|
||||||
|
.hicol2 = 0x303030 ' Line hilite 2 [ current line color option 2 ]
|
||||||
|
.hicol3 = HILITE3 ' Line hilite 3 [ current line color option 3 ]
|
||||||
|
.selbarbck = RGB(20,20,20) ' Line numbers panel background
|
||||||
|
.selbarpen = SELBARPEN ' Selection bar pen
|
||||||
|
.lnrcol = 0xffffff ' Line numbers color
|
||||||
|
.numcol = 0x5f5fce ' Numbers & hex color
|
||||||
|
.cmntback = QBCOLOR(0) ' Comment back color
|
||||||
|
.strback = QBCOLOR(0) ' String back color
|
||||||
|
.numback = QBCOLOR(0) ' Numbers & hex back color
|
||||||
|
.oprback = QBCOLOR(0) ' Operator back color
|
||||||
|
.changed = CHANGEDCLR ' Line changed indicator
|
||||||
|
.changesaved = CHANGESAVEDCLR ' Line saved chane indicator
|
||||||
|
END WITH
|
||||||
|
|
||||||
|
SendMessage(hEDT, REM_SETCOLOR, 0, &colors)
|
||||||
|
END SUB
|
||||||
|
|
||||||
|
' Loads file into RAEdit object
|
||||||
|
FUNCTION RaLoadFile(edt AS HWND) AS STRING
|
||||||
|
DIM RetStr$
|
||||||
|
DIM AS CHARRANGE chrg
|
||||||
|
RetStr$ = GetFileName$("Open File...", "BCX Files|*.BAS;*.INC;*.bi;*.bci")
|
||||||
|
IF Len(RetStr$) THEN
|
||||||
|
EDITLOADFILE(edt, RetStr$)
|
||||||
|
chrg.cpMin = 0
|
||||||
|
chrg.cpMax = 0
|
||||||
|
SendMessage(edt, EM_EXSETSEL, 0, &chrg)
|
||||||
|
SendMessage(edt, EM_SCROLLCARET, 0, 0)
|
||||||
|
SendMessage(edt, REM_HILITEACTIVELINE, 0, 2)
|
||||||
|
SetFocus(edt)
|
||||||
|
END IF
|
||||||
|
FUNCTION = RetStr$
|
||||||
|
END FUNCTION
|
||||||
|
|
||||||
|
SUB RaGotoLine(hEDT as HWND, Line AS INTEGER)
|
||||||
|
Dim chrg As CHARRANGE
|
||||||
|
DIM GotoLine
|
||||||
|
|
||||||
|
GotoLine = SendMessage(hEDT, EM_LINEINDEX, Line, 0)
|
||||||
|
chrg.cpMin = GotoLine
|
||||||
|
chrg.cpMax = GotoLine
|
||||||
|
|
||||||
|
SendMessage(hEDT, EM_EXSETSEL, 0, &chrg)
|
||||||
|
SendMessage(hEDT, EM_SCROLLCARET, 0, 0)
|
||||||
|
END SUB
|
||||||
|
|
||||||
|
SUB RaCut(hEDT as HWND)
|
||||||
|
SendMessage(hEDT, WM_CUT, 0, 0)
|
||||||
|
SetFocus(hEDT)
|
||||||
|
END SUB
|
||||||
|
|
||||||
|
SUB RaCopy(hEDT as HWND)
|
||||||
|
SendMessage(hEDT, WM_COPY, 0, 0)
|
||||||
|
SetFocus(hEDT)
|
||||||
|
END SUB
|
||||||
|
|
||||||
|
SUB RaPaste(hEDT as HWND)
|
||||||
|
SendMessage(hEDT, WM_PASTE, 0, 0)
|
||||||
|
SetFocus(hEDT)
|
||||||
|
END SUB
|
||||||
|
|
||||||
|
SUB RaSelectAll(hEDT as HWND)
|
||||||
|
SendMessage(hEDT, EM_SETSEL, 0, -1)
|
||||||
|
SetFocus(hEDT)
|
||||||
|
END SUB
|
||||||
|
|
||||||
|
SUB RaUndo(hEDT as HWND)
|
||||||
|
SendMessage(hEDT, EM_UNDO, 0, 0)
|
||||||
|
SetFocus(hEDT)
|
||||||
|
END SUB
|
||||||
|
|
||||||
|
SUB RaRedo(hEDT as HWND)
|
||||||
|
SendMessage(hEDT, EM_REDO, 0, 0)
|
||||||
|
SetFocus(hEDT)
|
||||||
|
END SUB
|
BIN
resource/Bookmark.bmp
Normal file
After Width: | Height: | Size: 690 B |
BIN
resource/Button.bmp
Normal file
After Width: | Height: | Size: 1.4 KiB |
BIN
resource/Collapse.bmp
Normal file
After Width: | Height: | Size: 206 B |
BIN
resource/Expand.bmp
Normal file
After Width: | Height: | Size: 206 B |
BIN
resource/Linenumber.bmp
Normal file
After Width: | Height: | Size: 206 B |
BIN
resource/Lock.bmp
Normal file
After Width: | Height: | Size: 206 B |
BIN
resource/Select.cur
Normal file
After Width: | Height: | Size: 326 B |
BIN
resource/SplitH.cur
Normal file
After Width: | Height: | Size: 326 B |
BIN
resource/SplitV.cur
Normal file
After Width: | Height: | Size: 326 B |
BIN
resource/demo.ico
Normal file
After Width: | Height: | Size: 15 KiB |
604
resource/keywords.txt
Normal file
@ -0,0 +1,604 @@
|
|||||||
|
accelerator
|
||||||
|
asm
|
||||||
|
bcx$
|
||||||
|
bcx_resource
|
||||||
|
bcxversion
|
||||||
|
catch
|
||||||
|
ccode
|
||||||
|
class
|
||||||
|
comment
|
||||||
|
compiler
|
||||||
|
cpp
|
||||||
|
define
|
||||||
|
dll
|
||||||
|
else
|
||||||
|
elseif
|
||||||
|
endclass
|
||||||
|
endif
|
||||||
|
endtry
|
||||||
|
file$
|
||||||
|
filetest
|
||||||
|
fill
|
||||||
|
fsstatic
|
||||||
|
genfree
|
||||||
|
header
|
||||||
|
hscroll
|
||||||
|
if
|
||||||
|
ifdef
|
||||||
|
ifndef
|
||||||
|
ifnotbcx
|
||||||
|
include
|
||||||
|
iprint_off
|
||||||
|
iprint_on
|
||||||
|
lcc$
|
||||||
|
leanandmean
|
||||||
|
library
|
||||||
|
linker
|
||||||
|
mt
|
||||||
|
multithread
|
||||||
|
namespace
|
||||||
|
noini
|
||||||
|
nolibmain
|
||||||
|
nolibrary
|
||||||
|
nomain
|
||||||
|
nowin
|
||||||
|
onentry
|
||||||
|
onexit
|
||||||
|
optimizeroff
|
||||||
|
optimizeron
|
||||||
|
pack
|
||||||
|
pelles
|
||||||
|
pelles$
|
||||||
|
pp
|
||||||
|
pragma
|
||||||
|
prj
|
||||||
|
prjuse
|
||||||
|
project
|
||||||
|
rems
|
||||||
|
resource
|
||||||
|
source
|
||||||
|
test
|
||||||
|
trace
|
||||||
|
try
|
||||||
|
turbo
|
||||||
|
typedef
|
||||||
|
vscroll
|
||||||
|
warnings
|
||||||
|
warnings_on
|
||||||
|
warnings_off
|
||||||
|
zap
|
||||||
|
abs
|
||||||
|
acos
|
||||||
|
acosh
|
||||||
|
addressof
|
||||||
|
alias
|
||||||
|
and
|
||||||
|
andalso
|
||||||
|
ansitowide
|
||||||
|
appactivate
|
||||||
|
append
|
||||||
|
appexename$
|
||||||
|
appexepath$
|
||||||
|
argc
|
||||||
|
argv
|
||||||
|
argv$
|
||||||
|
as
|
||||||
|
asc
|
||||||
|
ascending
|
||||||
|
asin
|
||||||
|
asinh
|
||||||
|
atanh
|
||||||
|
atn
|
||||||
|
auto
|
||||||
|
band
|
||||||
|
bcx_arc
|
||||||
|
bcx_bitmap
|
||||||
|
bcx_blackrect
|
||||||
|
bcx_bmpbutton
|
||||||
|
bcx_bmpheight
|
||||||
|
bcx_bmpwidth
|
||||||
|
bcx_button
|
||||||
|
bcx_checkbox
|
||||||
|
bcx_circle
|
||||||
|
bcx_colordlg
|
||||||
|
bcx_combobox
|
||||||
|
bcx_control
|
||||||
|
bcx_cursor
|
||||||
|
bcx_datepick
|
||||||
|
bcx_dialog
|
||||||
|
bcx_edit
|
||||||
|
bcx_ellipse
|
||||||
|
bcx_floodfill
|
||||||
|
bcx_fontdlg
|
||||||
|
bcx_form
|
||||||
|
bcx_get
|
||||||
|
bcx_get_text$
|
||||||
|
bcx_get_updown
|
||||||
|
bcx_getpixel
|
||||||
|
bcx_grayrect
|
||||||
|
bcx_group
|
||||||
|
bcx_hinstance
|
||||||
|
bcx_icon
|
||||||
|
bcx_input
|
||||||
|
bcx_label
|
||||||
|
bcx_line
|
||||||
|
bcx_lineto
|
||||||
|
bcx_listbox
|
||||||
|
bcx_listview
|
||||||
|
bcx_loadbmp
|
||||||
|
bcx_loadimage
|
||||||
|
bcx_mdialog
|
||||||
|
bcx_mdichild
|
||||||
|
bcx_mdiclass
|
||||||
|
bcx_mdiclient
|
||||||
|
bcx_olepicture
|
||||||
|
bcx_polybezier
|
||||||
|
bcx_polygon
|
||||||
|
bcx_polyline
|
||||||
|
bcx_popconsolesize
|
||||||
|
bcx_preset
|
||||||
|
bcx_print
|
||||||
|
bcx_progressbar
|
||||||
|
bcx_pset
|
||||||
|
bcx_pushconsolesize
|
||||||
|
bcx_put
|
||||||
|
bcx_radio
|
||||||
|
bcx_rectangle
|
||||||
|
bcx_repeat
|
||||||
|
bcx_resize
|
||||||
|
bcx_resource
|
||||||
|
bcx_richedit
|
||||||
|
bcx_roundrect
|
||||||
|
bcx_scalex
|
||||||
|
bcx_scaley
|
||||||
|
bcx_set_edit_color
|
||||||
|
bcx_set_font
|
||||||
|
bcx_set_form_color
|
||||||
|
bcx_set_label_color
|
||||||
|
bcx_set_text
|
||||||
|
bcx_setclientsize
|
||||||
|
bcx_setcolor
|
||||||
|
bcx_setconsolesize
|
||||||
|
bcx_setsplitpos
|
||||||
|
bcx_slider
|
||||||
|
bcx_splitter
|
||||||
|
bcx_status
|
||||||
|
bcx_str
|
||||||
|
bcx_stricmp
|
||||||
|
bcx_tab
|
||||||
|
bcx_thread
|
||||||
|
bcx_threadend
|
||||||
|
bcx_threadkill
|
||||||
|
bcx_threadresume
|
||||||
|
bcx_threadsuspend
|
||||||
|
bcx_threadwait
|
||||||
|
bcx_tile
|
||||||
|
bcx_toolbar
|
||||||
|
bcx_treeview
|
||||||
|
bcx_updown
|
||||||
|
bcx_whiterect
|
||||||
|
bcxfont
|
||||||
|
bcxlib
|
||||||
|
bcxpath$
|
||||||
|
bcxsplitpath$
|
||||||
|
begin
|
||||||
|
bel$
|
||||||
|
bff$
|
||||||
|
bin$
|
||||||
|
bin2dec
|
||||||
|
binary
|
||||||
|
bnot
|
||||||
|
bool$
|
||||||
|
bor
|
||||||
|
bs$
|
||||||
|
bstr
|
||||||
|
by
|
||||||
|
byref
|
||||||
|
byte_at
|
||||||
|
c_declare
|
||||||
|
call
|
||||||
|
callback
|
||||||
|
case
|
||||||
|
cbctl
|
||||||
|
cbctlmsg
|
||||||
|
cbhndl
|
||||||
|
cbhwnd
|
||||||
|
cblparam
|
||||||
|
cbmsg
|
||||||
|
cbool
|
||||||
|
cbwparam
|
||||||
|
cdbl
|
||||||
|
center
|
||||||
|
chdir
|
||||||
|
chdrive
|
||||||
|
chr$
|
||||||
|
cint
|
||||||
|
class
|
||||||
|
clear
|
||||||
|
clipboard_gettext$
|
||||||
|
clipboard_gettextsize
|
||||||
|
clipboard_reset
|
||||||
|
clipboard_settext
|
||||||
|
clng
|
||||||
|
close
|
||||||
|
closedialog
|
||||||
|
cls
|
||||||
|
color
|
||||||
|
color_bg
|
||||||
|
color_fg
|
||||||
|
com
|
||||||
|
comboboxloadfile
|
||||||
|
command$
|
||||||
|
comset
|
||||||
|
concat
|
||||||
|
console
|
||||||
|
const
|
||||||
|
containedin
|
||||||
|
control
|
||||||
|
copyfile
|
||||||
|
cos
|
||||||
|
cosh
|
||||||
|
cosl
|
||||||
|
cpad$
|
||||||
|
cr$
|
||||||
|
createregint
|
||||||
|
createregstring
|
||||||
|
crlf$
|
||||||
|
csng
|
||||||
|
csrlin
|
||||||
|
curdir$
|
||||||
|
cursorx
|
||||||
|
cursory
|
||||||
|
cvd
|
||||||
|
cvi
|
||||||
|
cvl
|
||||||
|
cvs
|
||||||
|
data
|
||||||
|
data$
|
||||||
|
date$
|
||||||
|
declare
|
||||||
|
decr
|
||||||
|
del$
|
||||||
|
delay
|
||||||
|
delete
|
||||||
|
deleteregkey
|
||||||
|
descending
|
||||||
|
dialog
|
||||||
|
dim
|
||||||
|
do
|
||||||
|
doevents
|
||||||
|
double
|
||||||
|
download
|
||||||
|
dpi
|
||||||
|
dq$
|
||||||
|
drawtransbmp
|
||||||
|
dsplit
|
||||||
|
dynamic
|
||||||
|
each
|
||||||
|
editloadfile
|
||||||
|
ejectpage
|
||||||
|
else
|
||||||
|
elseif
|
||||||
|
enc$
|
||||||
|
end
|
||||||
|
endif
|
||||||
|
enum
|
||||||
|
environ$
|
||||||
|
eof
|
||||||
|
eof$
|
||||||
|
esc$
|
||||||
|
events
|
||||||
|
exist
|
||||||
|
exit
|
||||||
|
exp
|
||||||
|
export
|
||||||
|
extern
|
||||||
|
extract$
|
||||||
|
false
|
||||||
|
ff$
|
||||||
|
filelocked
|
||||||
|
fill
|
||||||
|
fillarray
|
||||||
|
findfirst$
|
||||||
|
findfirstinstance
|
||||||
|
findintype
|
||||||
|
findnext$
|
||||||
|
finput
|
||||||
|
fix
|
||||||
|
flush
|
||||||
|
for
|
||||||
|
for_each
|
||||||
|
formload
|
||||||
|
fprint
|
||||||
|
frac
|
||||||
|
free
|
||||||
|
freefile
|
||||||
|
freeglobals
|
||||||
|
function
|
||||||
|
fwrite
|
||||||
|
genfree$
|
||||||
|
get$
|
||||||
|
getattr
|
||||||
|
getbmp
|
||||||
|
getbvalue
|
||||||
|
getc
|
||||||
|
getdrive
|
||||||
|
getfilename$
|
||||||
|
getgvalue
|
||||||
|
getresource
|
||||||
|
getrvalue
|
||||||
|
gettextsize
|
||||||
|
global
|
||||||
|
gosub
|
||||||
|
goto
|
||||||
|
gui
|
||||||
|
hex$
|
||||||
|
hex2dec
|
||||||
|
hide
|
||||||
|
hiword
|
||||||
|
hypot
|
||||||
|
icompare
|
||||||
|
icon
|
||||||
|
if
|
||||||
|
iif
|
||||||
|
iif$
|
||||||
|
imod
|
||||||
|
in
|
||||||
|
inchr
|
||||||
|
incr
|
||||||
|
infobox
|
||||||
|
inkey
|
||||||
|
inkey$
|
||||||
|
inp
|
||||||
|
input
|
||||||
|
inputbox$
|
||||||
|
inputbuffer
|
||||||
|
inputnumber
|
||||||
|
inpw
|
||||||
|
ins$
|
||||||
|
instat
|
||||||
|
instr
|
||||||
|
instrrev
|
||||||
|
int
|
||||||
|
integer
|
||||||
|
iremove
|
||||||
|
iremove$
|
||||||
|
ireplace
|
||||||
|
ireplace$
|
||||||
|
is
|
||||||
|
isfalse
|
||||||
|
isfile
|
||||||
|
isfolder
|
||||||
|
ishidden
|
||||||
|
isodate$
|
||||||
|
isptr
|
||||||
|
isreadonly
|
||||||
|
issystem
|
||||||
|
istrue
|
||||||
|
iszero
|
||||||
|
iterate
|
||||||
|
join$
|
||||||
|
keypress
|
||||||
|
kill
|
||||||
|
lcase$
|
||||||
|
lccpath$
|
||||||
|
ldouble
|
||||||
|
left$
|
||||||
|
leftstr
|
||||||
|
len
|
||||||
|
lf$
|
||||||
|
lib
|
||||||
|
like
|
||||||
|
line
|
||||||
|
listboxloadfile
|
||||||
|
load_dll
|
||||||
|
loadfile$
|
||||||
|
loadlibrary
|
||||||
|
loc
|
||||||
|
local
|
||||||
|
locate
|
||||||
|
lof
|
||||||
|
log
|
||||||
|
log10
|
||||||
|
long
|
||||||
|
longestline
|
||||||
|
loop
|
||||||
|
loword
|
||||||
|
lpad$
|
||||||
|
lprint
|
||||||
|
ltrim$
|
||||||
|
macro
|
||||||
|
main
|
||||||
|
max
|
||||||
|
mcase$
|
||||||
|
mdigui
|
||||||
|
memsize
|
||||||
|
method
|
||||||
|
mid$
|
||||||
|
min
|
||||||
|
mkd$
|
||||||
|
mkdir
|
||||||
|
mki$
|
||||||
|
mkl$
|
||||||
|
mks$
|
||||||
|
mod
|
||||||
|
modal
|
||||||
|
modstyle
|
||||||
|
msgbox
|
||||||
|
nest
|
||||||
|
new
|
||||||
|
next
|
||||||
|
next_each
|
||||||
|
nextlinelen
|
||||||
|
not
|
||||||
|
nothing
|
||||||
|
notzero
|
||||||
|
now$
|
||||||
|
nul$
|
||||||
|
object
|
||||||
|
object
|
||||||
|
oct$
|
||||||
|
on
|
||||||
|
open
|
||||||
|
optional
|
||||||
|
or
|
||||||
|
or
|
||||||
|
osversion
|
||||||
|
outp
|
||||||
|
output
|
||||||
|
outpw
|
||||||
|
overloaded
|
||||||
|
panel
|
||||||
|
pause
|
||||||
|
peek$
|
||||||
|
pellespath$
|
||||||
|
pixels
|
||||||
|
playwav
|
||||||
|
poke
|
||||||
|
popcolors
|
||||||
|
pos
|
||||||
|
pow
|
||||||
|
powl
|
||||||
|
preserve
|
||||||
|
print
|
||||||
|
printer
|
||||||
|
private
|
||||||
|
program
|
||||||
|
property
|
||||||
|
propget
|
||||||
|
propset
|
||||||
|
ptr
|
||||||
|
pushcolors
|
||||||
|
put$
|
||||||
|
qbcolor
|
||||||
|
qsort
|
||||||
|
qsortidx
|
||||||
|
randomize
|
||||||
|
raw
|
||||||
|
read
|
||||||
|
read$
|
||||||
|
rec
|
||||||
|
reccount
|
||||||
|
reclen
|
||||||
|
record
|
||||||
|
redim
|
||||||
|
refresh
|
||||||
|
regint
|
||||||
|
register
|
||||||
|
regstring$
|
||||||
|
rem
|
||||||
|
remain$
|
||||||
|
remove
|
||||||
|
remove$
|
||||||
|
rename
|
||||||
|
repeat
|
||||||
|
repeat$
|
||||||
|
replace
|
||||||
|
replace$
|
||||||
|
retain$
|
||||||
|
return
|
||||||
|
reverse$
|
||||||
|
rewind
|
||||||
|
rgb
|
||||||
|
right$
|
||||||
|
rightstr
|
||||||
|
rmdir
|
||||||
|
rnd
|
||||||
|
round
|
||||||
|
rpad$
|
||||||
|
rtrim$
|
||||||
|
run
|
||||||
|
savebmp
|
||||||
|
scanerror
|
||||||
|
screen
|
||||||
|
searchpath$
|
||||||
|
seek
|
||||||
|
select
|
||||||
|
set
|
||||||
|
set_bcx_bitmap
|
||||||
|
set_bcx_bitmap2
|
||||||
|
set_bcx_bmpbutton
|
||||||
|
set_bcx_icon
|
||||||
|
setattr
|
||||||
|
setdialogscale
|
||||||
|
seteof
|
||||||
|
setformcolor
|
||||||
|
setwindowrtftext
|
||||||
|
sgn
|
||||||
|
shared
|
||||||
|
sharedset
|
||||||
|
shell
|
||||||
|
show
|
||||||
|
sin
|
||||||
|
single
|
||||||
|
sinh
|
||||||
|
sinl
|
||||||
|
sizeof
|
||||||
|
sleep
|
||||||
|
sound
|
||||||
|
space$
|
||||||
|
spc$
|
||||||
|
split
|
||||||
|
sprint
|
||||||
|
sqr
|
||||||
|
sqrt
|
||||||
|
sqrtl
|
||||||
|
static
|
||||||
|
stdcall
|
||||||
|
step
|
||||||
|
str$
|
||||||
|
strarray
|
||||||
|
strim$
|
||||||
|
string
|
||||||
|
string$
|
||||||
|
strptr
|
||||||
|
strtoken$
|
||||||
|
sub
|
||||||
|
swap
|
||||||
|
sysdir$
|
||||||
|
sysstr
|
||||||
|
tab$
|
||||||
|
tally
|
||||||
|
tan
|
||||||
|
tanh
|
||||||
|
tanl
|
||||||
|
tempdir$
|
||||||
|
tempfilename$
|
||||||
|
textmode
|
||||||
|
then
|
||||||
|
this
|
||||||
|
time$
|
||||||
|
timer
|
||||||
|
to
|
||||||
|
trim$
|
||||||
|
true
|
||||||
|
type
|
||||||
|
ubound
|
||||||
|
ucase$
|
||||||
|
uncom
|
||||||
|
union
|
||||||
|
until
|
||||||
|
unwrap$
|
||||||
|
using$
|
||||||
|
val
|
||||||
|
vbs_addcode
|
||||||
|
vbs_eval_num
|
||||||
|
vbs_eval_str$
|
||||||
|
vbs_reset
|
||||||
|
vbs_run_script
|
||||||
|
vbs_start
|
||||||
|
vbs_stop
|
||||||
|
vchr$
|
||||||
|
verify
|
||||||
|
vt$
|
||||||
|
wend
|
||||||
|
while
|
||||||
|
widetoansi$
|
||||||
|
windir$
|
||||||
|
with
|
||||||
|
wrap$
|
||||||
|
write
|
||||||
|
xfor
|
||||||
|
xnext
|
||||||
|
xor
|
||||||
|
|