REM OxyEdit -v3 REM autor:Vidlanovic Zlatko Aurel 2011 //////////////////////////////////////////////// def buffer[32766]:ISTRING def tbuffer[32766]:ISTRING DEF abscript[32766]:STRING DEF srcline[1000]:STRING DEF countl,CRpos,scifontsize:INT DEF scired:string DEF sciblue[16000]:Istring DEF scidblue[16000]:Istring DEF scibrown[16000]:Istring DEF keyword:string DEF exepath:string DEF dotpos:INT DEF LBitems[2000]:INT DEF LBitem:INT DEF bold:INT Gosub oxykeywords 'scidblue=LCASE$(scidblue) 'API FUCTIONS ------------------------------------------------------------------- DECLARE IMPORT, _GetOpenFileName ALIAS GetOpenFileNameA(pOpenfilename AS OPENFILENAME),INT DECLARE IMPORT, SetDlgItemTextA(win:window,id:int,text:memory) DECLARE IMPORT, LoadLibrary alias LoadLibraryA( lp:string ),uint DECLARE IMPORT, FreeLibrary( hnd:int) DECLARE IMPORT, PostQuitMessage(nExitCode AS INT) DECLARE IMPORT,SetWindowPos(hwnd AS INT,hWndInsertAfter AS INT,x AS INT,y AS INT,cx AS INT,cy AS INT,wFlags AS INT),INT 'DECLARE "user32.dll",ScreenToClient(hwnd:int,xy:POINT),int DECLARE "kernel32",Beep(dwFreq:INT,dwDuration:INT),INT 'DECLARE "kernel32",Sleep(dwMilliseconds:INT) declare "user32",DestroyWindow(wnd:uint),int 'for tab control--------------------- 'CONST TCM_INSERTITEM = 0x1307 'CONST TCN_SELCHANGE = -550-1 'CONST TCM_GETCURSEL = 4875 UINT tc def tabcount,tempTab,lastTab:int 'def tabFile[30]:string 'def tabName[30]:string CONST TCM_FIRST = 0x1300 CONST TCM_SETITEM = (TCM_FIRST + 6) CONST TCM_DELETEITEM = (TCM_FIRST + 8) CONST TCM_INSERTITEM = 0x1307 Const TCM_SETCURFOCUS = 0x1330 CONST TCN_SELCHANGE = -550-1 CONST TCM_GETCURSEL = 4875 CONST TCM_SETCURSEL = 0x130C const TCIF_TEXT=1 TYPE TC_ITEM def mask:int def res1:int def res2:int def pszText:POINTER def cchTextMax:int def iImage:int def lParam:int ENDTYPE DECLARE import,GetCursorPos(pPoint:POINTAPI),INT DECLARE import,ScreenToClient(hwnd:INT, lpPoint:POINTAPI),INT INT hittab :hittab = -1 INT loadtext=0 'DEfine Linked List for STRING variable -------------------------------------------- TYPE tabType STRING tabName STRING tabValue ENDTYPE ' create STRING LIST tabList=ListCreate() POINTER tabVar SETTYPE tabVar,tabType 'tabVar=ListAdd(tabList,NEW(tabType,1)) '-------------------------------------------------------------------------------- DEF tempstr[7]:STRING DEF tempstring:STRING INT red red = RGB( 255, 0, 0 ) const IDC_SCI = 24 const SCE_IB_DEFAULT = 0 const SCE_IB_LINECOMMENT = 1 const SCE_IB_BLOCKCOMMENT = 2 const SCE_IB_NUMBER = 3 const SCE_IB_KEYWORD = 4 const SCE_IB_TYPE = 5 const SCE_IB_SETID = 6 const SCE_IB_PREPROCESSOR = 7 const SCE_IB_STRING = 8 const SCE_IB_OPERATOR = 9 const SCE_IB_IDENTIFIER = 10 const SCE_IB_LABEL = 11 const SCE_IB_ASM = 12 const SCLEX_ABASIC = 40 const SCI_SETLEXER = 4001 const SCI_STYLESETFORE = 2051 const SCI_STYLESETBACK = 2052 const SCI_STYLECLEARALL = 2050 const SCI_SETKEYWORDS = 4005 const SCI_STYLESETFONT = 2056 const SCI_STYLESETSIZE = 2055 const SCI_STYLESETBOLD = 2053 const SCI_SETMARGINWIDTHN = 2242 const SCI_SETMARGINTYPEN = 2240 const SCI_SETMARGINSENSITIVEN = 2246 const SCI_SETSELBACK = 2068 const SCI_GOTOLINE = 2024 const SCI_GETLINE = 2153 const SCI_GETLINECOUNT = 2154 const SCI_GETCURLINE= 2027 const SCI_SCROLLCARET=2169 const SCI_GOTOPOS=2025 Const SCI_GETTEXT = 2182 Const SCI_SETTEXT = 2181 const SCI_GETTEXTLENGTH = 2183 const SCI_CLEAR=2180 const SCI_CLEARALL=2004 const SCI_BRACEBADLIGHT=2352 const SCI_BRACEHIGHLIGHT=2351 const SCI_BRACEMATCH=2353 const SCI_GETSELECTIONEND=2145 const SCI_SETSELECTIONEND=2144 const SCI_SETCARETLINEVISIBLE=2096 const SCI_SETCARETFORE = 2069 const SCI_SETCARETLINEBACK = 2098 const SCI_SCROLLCARET=2169 const SCI_UNDO = 2176 const SCI_CUT = 2177 const SCI_COPY = 2178 const SCI_PASTE = 2179 '------------------------------- const SCI_GETSELECTIONSTART=2143 const SCI_GETSELECTIONEND=2145 const SCI_SETANCHOR=2026 const SCI_SEARCHANCHOR=2366 const SCI_SETCURRENTPOS=2141 const SCFIND_REGEXP=0x00200000 const SCFIND_WHOLEWORD=2 const SCFIND_MATCHCASE=4 const SCI_SEARCHNEXT=2367 const SCI_SEARCHPREV=2368 Const SCI_REPLACESEL = 2170 'Sci MARKERS ------------------- const SC_MARGIN_SYMBOL = 0 const SC_MARGIN_NUMBER = 1 const SCI_SETMARGINMASKN = 2244 Const SCI_SETFOLDMARGINCOLOUR = 2290 const SC_MASK_FOLDERS = 0xFE000000 const SC_MARKNUM_FOLDEROPEN = 31 const SC_MARKNUM_FOLDER = 30 const SCI_MARKERDEFINE = 2040 const SCI_MARKERSETFORE = 2041 const SCI_MARKERSETBACK = 2042 const SCI_MARKERADD = 2043 const SCI_MARKERDELETE = 2044 const SCI_MARKERDELETEALL = 2045 const SCI_MARKERGET = 2046 const SCI_MARKERNEXT = 2047 const MARKER_MAX = 31 const SC_MARK_CIRCLE = 0 const SC_MARK_ROUNDRECT = 1 const SC_MARK_ARROW = 2 const SC_MARK_SMALLRECT = 3 const SC_MARK_SHORTARROW = 4 Const SC_MARK_EMPTY = 5 Const SC_MARK_ARROWDOWN = 6 Const SC_MARK_MINUS = 7 Const SC_MARK_PLUS = 8 Const SC_MARK_VLINE = 9 Const SC_MARK_LCORNER = 10 Const SC_MARK_TCORNER = 11 Const SC_MARK_BOXPLUS = 12 Const SC_MARK_BOXPLUSCONNECTED = 13 Const SC_MARK_BOXMINUS = 14 Const SC_MARK_BOXMINUSCONNECTED = 15 Const SC_MARK_LCORNERCURVE = 16 Const SC_MARK_TCORNERCURVE = 17 Const SC_MARK_CIRCLEPLUS = 18 Const SC_MARK_CIRCLEPLUSCONNECTED = 19 Const SC_MARK_CIRCLEMINUS = 20 Const SC_MARK_CIRCLEMINUSCONNECTED = 21 Const SC_MARK_BACKGROUND = 22 Const SC_MARK_DOTDOTDOT = 23 ' Window Styles ///////////////////////////////////////////////////////////////// CONST WS_OVERLAPPED = 0x0 CONST WS_POPUP = 0x80000000 CONST WS_CHILD = 0x40000000 CONST WS_MINIMIZE = 0x20000000 CONST WS_VISIBLE = 0x10000000 CONST WS_DISABLED = 0x8000000 CONST WS_CLIPSIBLINGS = 0x4000000 CONST WS_CLIPCHILDREN = 0x2000000 CONST WS_MAXIMIZE = 0x1000000 CONST WS_CAPTION = 0xC00000 :' WS_BORDER | WS_DLGFRAME CONST WS_BORDER = 0x800000 CONST WS_DLGFRAME = 0x400000 CONST WS_VSCROLL = 0x200000 CONST WS_HSCROLL = 0x100000 CONST WS_SYSMENU = 0x80000 CONST WS_THICKFRAME = 0x40000 CONST WS_GROUP = 0x20000 CONST WS_TABSTOP = 0x10000 CONST ES_AUTOHSCROLL = 0x80 CONST WS_MINIMIZEBOX = 0x20000 CONST WS_MAXIMIZEBOX = 0x10000 CONST WS_TILED = WS_OVERLAPPED CONST WS_ICONIC = WS_MINIMIZE CONST WS_SIZEBOX = WS_THICKFRAME CONST WS_OVERLAPPEDWINDOW = (WS_OVERLAPPED | WS_CAPTION | WS_SYSMENU | WS_THICKFRAME | WS_MINIMIZEBOX | WS_MAXIMIZEBOX) CONST WS_TILEDWINDOW = WS_OVERLAPPEDWINDOW ' Common Window Styles CONST WS_POPUPWINDOW = (WS_POPUP | WS_BORDER | WS_SYSMENU) CONST WS_CHILDWINDOW = (WS_CHILD) ' Extended Window Styles CONST WS_EX_DLGMODALFRAME = 0x1 CONST WS_EX_NOPARENTNOTIFY = 0x4 CONST WS_EX_TOPMOST = 0x8 CONST WS_EX_ACCEPTFILES = 0x10 CONST WS_EX_TRANSPARENT = 0x20 'richedit mouse event mask//////////////////////////////////////////////////// CONST ES_SUNKEN = &h4000 SETID "EN_MSGFILTER",&H700 SETID "ENM_MOUSEEVENTS",&H20000 SETID "WM_RBUTTONDOWN",&H204 CONST EM_SETBKGNDCOLOR = (0x400 + 67) CONST WM_SETTEXT = 0xC 'filePath_buttons DEF fpButton[8]:INT 'for saving file def hFile:BFILE:'binary file def htext:MEMORY : ' memory variable def hsize:int def hzero:char TYPE NMHDR DEF hwndFrom:INT DEF idFrom:UINT DEF code:UINT ENDTYPE TYPE MSGFILTER DEF nmhdr:NMHDR DEF msg:UINT DEF wParam:UINT DEF lParam:UINT ENDTYPE 'use to get context menu x,y coord TYPE POINT DEF xcm:int DEF ycm:int ENDTYPE '////////////////////////////////////////////////////////////////////// DEF cnameisvalid:INT DEF linepos:INT STRING gotoline$="" INT linenumber=0 DEF error:INT DEF errortype:STRING def hwndopen:INT def hwndcaption,temp$,temp1$,temp2$,final$,capfinal$:string def lgw1,lgw2,lgw3,lgw4,lgw5,lgw6,lgw7,lline,strlen,capsize,textlen:INT def poscoma1,poscoma2:INT def hwnd,hwndtrue,hwndxtrue,hwndytrue,hwndwtrue,hwndhtrue:int 'true=1:false=0 def hwndx,hwndy,hwndw,hwndh:int 'font size----------------- def fheight,fweight:INT def hwndfont$:STRING 'wincolor------------------ def rcolor,gcolor,bcolor:INT 'win style def winstyle$:string def winstyle:int 'controls --------------------- def controltype:string 'button def buttonx,buttony,buttonw,buttonh:INT def editx,edity,editw,edith:INT def editflat:INT def combox,comboy,combow,comboh:INT '-------------------------------- def cntx,cnty,cntw,cnth,cntID:INT '------------------------------ DEF screen,va:int def form:int def linenum:int def vc,zero,stop1:INT def CountWords,clearx,cleary:Int Def WC : Int def Pos : Int DEF linsub[1000]:INT 'def linsub1,linsub2,linsub3,linsub4,linsub5,linsub6,linsub7,linsub8,linsub9,linsub10:INT 'def linsub11,linsub12,linsub13,linsub14,linsub15,linsub16,linsub17,linsub18,linsub19,linsub20:INT def st,setwcol:string def strAString:string def GW1,GW2,GW3,GW4,GW5,GW6,GW7,GW8,GW9,GW10,GW11,GW12,GW13,GW14,GW15,GW16,GW17:string def tts1,tts2,tts3,tts4,tts5,tts6:string def sign$:string def Count:Int Def SPos:Int def EPos:Int def Indx:int 'integer & float variable 'string variable 'float variable '~~~~~~~~~~~~~~~~~~~~~~~~~ DEF wl,wt,ww,wh:INT DEF ibx,iby,obx,oby:INT DEF valinb1,valinb2,valinb3,valinb4,valinb5:FLOAT DEF tpx,tpy,bpx,bpy,bwd,bhi:INT DEF circx,circy,circr:INT DEF lx,ly,ex,ey,rl,rt,rw,rh,px,py,vx,vy:INT DEF tcolor:INT tcolor=rgb(0,0,0) DEF leftt$,top$,wide$,high$:string DEF b1name,b2name,b3name,b4name,b5name,b6name,b7name,b8name,b9name,b10name:String 'define varname integer '~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~1 DEF ass,ln:string '%%%%%%%%%%%%%%%%%%%%%%%%%% DEF w1,w2:WINDOW '---------------------------------------------------------------------------- DEF findDialog:DIALOG CREATEDIALOG findDialog,0,0,318,136,0x80C80080,0,"Find...",&FindDialogProc CONTROL findDialog,@SYSBUTTON,"Find",240,24,70,22,@TABSTOP,5 CONTROL findDialog,@EDIT,"",10,25,220,20,@TABSTOP,2 CONTROL findDialog,@STATIC,"Search for:",10,8,70,20,0x5000010B,6 CONTROL findDialog,@CHECKBOX,"Find word",14,55,90,20,0x50000003,12 CONTROL findDialog,@CHECKBOX,"Find match",14,75,90,20,0x50000003,13 CONTROL findDialog,@CHECKBOX,"Whole only",14,95,90,20,0x50000003,16 CONTROL findDialog,@CHECKBOX,"Match only",14,115,90,20,0x50000003,15 '----------------------------------------------------------------------------- DEF cent:INT DEF start:INT def smax:INT def starts:INT DEF filename,filter:STRING DEF file1:FILE 'toolbar definition------- def left,top,width,height:int DEF tbArray[17]:UINT tbArray = 12,13,14,0,15,16,17,18,0,19,0,20,21,22,23,24,25 left=0 top=0 width=400 height=24 '--------------------------- DEF capmain$:string capmain$="OxyEdit::" DEF run,run1:INT vc=0 stop1=0 linenum=0 run1=0 DEF panes[3]:INT 'choose filter //////////////////////////////////////// 'filter = "Oxygen Basic files|*.o2bas|All Files|*.*||" filter = "Related Files (*.*)|*.o2bas;*.bas;*.inc|All Files|*.*||" filtertext = "Text files|*.txt|All Files|*.*||" '///////////////////////////////////////////////////////////////////////////////////////////////// DEF sciLw,sciTw,sciWidth,sciHeight:INT sciLw = 15 sciTw = 50 sciWidth = 600 sciHeight = 400 '------------------------------------------- DEF txtHeight ,MeHeight,Lw,Tw,winL,winT :INT DEF txtWidth,MeWidth :INT txtWidth = 592 txtHeight = 300 MeHeight = 480 MeWidth = 640 Lw = 170 Tw = 60 winL=0 winT=0 def iconic:UINT 'icon1= LOADIMAGE("c:\\images\\prog.ico",@imgicon) '---------------------------------------------------------------------------------------- OPENWINDOW w1,winL,winT,MeWidth,MeHeight,@caption|@minbox|@maxbox|@size,0,capmain$,&main iconic = LOADIMAGE(getstartpath+"\o2.ico",@imgicon) SETICON w1 , iconic '--------------------------------------------------------------------------------------- BEGINMENU w1 MENUTITLE "&File" MENUITEM "New",0,11 MENUITEM "Open",0,7 MENUITEM "Save",0,6 MENUITEM "Quit",0,1 MENUTITLE "&Edit" MENUITEM "Undo",0,2 MENUITEM "Cut",0,3 MENUITEM "Copy",0,4 MENUITEM "Paste",0,5 MENUTITLE "&Compile" MENUITEM "Compile",0,8 MENUTITLE "&Build" MENUITEM "Build+Run",0,22 MENUTITLE "&Help" MENUITEM "Help",0,9 MENUITEM "About",0,10 MENUTITLE "&Option" MENUITEM "SetFont 8",0,30 MENUITEM "SetFont 9",0,31 MENUITEM "SetFont 10",0,32 MENUITEM "SetFont 12",0,33 MENUITEM "BrownYellow",0,34 MENUITEM "BlueWhite",0,35 MENUITEM "StyleDark",0,36 MENUITEM "DLBlue",0,37 MENUITEM "DLGray",0,38 ENDMENU def hbitmap:UINT hbitmap = LOADIMAGE(GETSTARTPATH + "ascitb.bmp",@IMGBITMAP| @IMGMAPCOLORS) IF LOADTOOLBAR(w1,hbitmap,98,tbArray,17,@TBTOP | @TBNORESIZE |@TBFROMHANDLE | @TBTRANSPARENT | @TBTOOLTIPS) 'tooltips-------------------------------------------------- CONTROLCMD w1,98,@TBSETTIP,12,"New File" CONTROLCMD w1,98,@TBSETTIP,13,"Open File" CONTROLCMD w1,98,@TBSETTIP,14,"Save File" CONTROLCMD w1,98,@TBSETTIP,15,"Undo" CONTROLCMD w1,98,@TBSETTIP,16,"Cut" CONTROLCMD w1,98,@TBSETTIP,17,"Copy" CONTROLCMD w1,98,@TBSETTIP,18,"Paste" CONTROLCMD w1,98,@TBSETTIP,19,"Compile" CONTROLCMD w1,98,@TBSETTIP,20,"Run" CONTROLCMD w1,98,@TBSETTIP,21,"Web Site" CONTROLCMD w1,98,@TBSETTIP,22,"Info" CONTROLCMD w1,98,@TBSETTIP,23,"Find" CONTROLCMD w1,98,@TBSETTIP,24,"Print" CONTROLCMD w1,98,@TBSETTIP,25,"Help" '------------------------------------------------------------ CONTROLCMD w1,98, @TBENABLEBUTTON,19,0 ENDIF CONTROLCMD w1,98, @TBSETBITMAPSIZE, 16,16 'GETCLIENTSIZE w1,left,top,width,height height = CONTROLCMD(w1,98,@TBGETBUTTONHEIGHT) + 3 'num width + 999 strech toolbar to end of window on resizing SETSIZE w1,left,top,width,height,98 '---------------------------------------------------------------- form=0 SetWindowColor w1,rgb(231,221,231) Line w1,0,30,2024,30,rgb(150,150,180) Line w1,0,31,2024,31,rgb(250,250,250) Line w1,0,25,400,25,rgb(140,140,150) Line w1,400,0,400,26,rgb(140,140,150) CONTROLCMD w1, 1, @RTSETMARGINS, 10,0 SETCONTROLCOLOR w1, 1,rgb(200,0,0), RGB(252,253,255) 'SHOWWINDOW(w1,@swhide,1) SETCAPTION w1,capmain$ SETFONT w1,"Courier New",10, 400,0,1 'Listbox------------------------------------------------------------------------ CONTROL w1,@LISTBOX,"",4,60,200,340,0x50B00140|@CTLISTNOTIFY,3 'int lno=@CTLISTNOTIFY 'MESSAGEBOX 0,STR$(lno),"LB msg" SETCONTROLCOLOR w1, 3, rgb(0,0,0),rgb(250,250,250) SETFONT w1,"Consolas",10, 500,0,3 'function rect box RECT w1,4,36,160,24,rgb(131,121,141),rgb(231,221,231) PSET w1,4,36,rgb(231,221,231):PSET w1,163,36,rgb(231,221,231) '***************TAB CONTROL************************************************* 'crete tab control tc=CONTROLEX(w1,"SysTabControl32","",170,38,456,24,@TCS_HOTTRACK,0,50) SETFONT w1,"MS Sans serif",8,400,0,50 tabcount= -1 CreateNewTab() '*************************************************************************** 'Add a status bar-------------------------------------------------------------- CONTROL w1,@STATUS,"Status Window",0,0,0,0,0,2 'get the windows client size and set up 4 panes for the status window GETCLIENTSIZE w1,left,top,width,height panes = width - 150,width - 80,width - 20 CONTROLCMD w1,2,@SWSETPANES,3,panes 'set the initial pane text 'stattext = USING("& #### ####","Client size",width,height) CONTROLCMD w1,2,@SWSETPANETEXT,0,"Location:" CONTROLCMD w1,2,@SWSETPANETEXT,1,"Lines:" CONTROLCMD w1,2,@SWSETPANETEXT,2,"Load:" SETFONT w1,"MS Sans Serif",8,400,0:BackPen w1,rgb(231,221,231) Move w1,10,40:Print w1,"Function Panel" 'go to line button CONTROL w1,@SYSBUTTON,"GoTo -->",404,2,56,24,0x50000000,28 SETFONT w1,"MS Sans Serif",8,400,0,28 CONTROLEX(w1,"EDIT","",464,3,50,23,ES_SUNKEN,@EXCLIENTEDGE,30) SETFONT w1,"MS Sans Serif",8,400,0,30 '------------------------------------------------------------------------------- run = 1 WAITUNTIL run = 0 'DeleteTabControl(tc) CLOSEWINDOW w1 'FreeLibrary(hlibsci) deleteimage iconic,@IMGICON 'if program window is open waituntil w2=0 FreeLib "SciLexer.dll" PostQuitMessage(0) END '------------------------------------------- SUB main SELECT @CLASS CASE @IDCLOSEWINDOW if w2=0 then run = 0 CASE @IDCREATE CENTERWINDOW w1 'Editor control--------------------------------------------------------------------- CONTROL w1,@RICHEDIT,"",180,45,400,44,@CTEDITMULTI|@CTEDITAUTOH|@VSCROLL|@HSCROLL|ES_SUNKEN,1 Showwindow w1,@swhide,1 def hlibsci,hsci:int hlibsci = LoadLibrary("SciLexer.dll") hsci=ControlEx(w1,"Scintilla","",sciLw,sciTw,sciWidth,sciHeight,ES_SUNKEN,@EXCLIENTEDGE,IDC_SCI) 'SendMessage w1, EM_SETBKGNDCOLOR,0, RGB(243,242,214),1 SENDMESSAGE(w1, SCI_SETLEXER, SCLEX_ABASIC, 1, IDC_SCI) SENDMESSAGE(w1, SCI_STYLESETFORE, SCE_IB_DEFAULT,100, IDC_SCI) SENDMESSAGE(w1, SCI_STYLESETBACK,32,rgb(250,250,250), IDC_SCI) 'SENDMESSAGE(w1, SCI_STYLESETBACK,32,rgb(230,242,214), IDC_SCI) SENDMESSAGE(w1, SCI_STYLECLEARALL, 0, 1, IDC_SCI) scifontsize=9 For i = 0 to 12 SENDMESSAGE (w1, SCI_STYLESETFONT, i, "Consolas", IDC_SCI) SENDMESSAGE (w1, SCI_STYLESETSIZE, i, 9, IDC_SCI) Next i SENDMESSAGE(w1, SCI_SETKEYWORDS, 0,scired, IDC_SCI ):'red SENDMESSAGE(w1, SCI_SETKEYWORDS, 1, sciblue , IDC_SCI ):'blue SENDMESSAGE(w1, SCI_SETKEYWORDS, 2, scidblue ,IDC_SCI):'darkred SENDMESSAGE(w1, SCI_SETKEYWORDS, 3,scibrown, IDC_SCI ):'brown '<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< ' Margins //////////////////////////////////////////////////////// 'set number margin (for numnbers) SendMessage(w1, SCI_SETMARGINTYPEN, 0, SC_MARGIN_NUMBER,IDC_SCI) SendMessage(w1, SCI_SETMARGINWIDTHN, 0, 46,IDC_SCI) 'set color of caret line SENDMESSAGE w1,SCI_SETCARETLINEBACK,rgb(225,225,245),0,IDC_SCI 'SENDMESSAGE (w1,SCI_SETCARETFORE,rgb(0,200,0),0,IDC_SCI) 'Set caret line visible SENDMESSAGE (w1,SCI_SETCARETLINEVISIBLE,1,0,IDC_SCI) 'set symbol margin (for markers) SendMessage(w1, SCI_SETMARGINTYPEN, 1, SC_MARGIN_SYMBOL,IDC_SCI) SendMessage(w1, SCI_SETMARGINWIDTHN, 1, 14,IDC_SCI) 'define markers SendMessage(w1, SCI_MARKERDEFINE,0,SC_MARK_CIRCLE,IDC_SCI ) 'SendMessage(w1, SCI_MARKERDEFINE,1,SC_MARK_ROUNDRECT,IDC_SCI ) SendMessage(w1, SCI_MARKERDEFINE,2,SC_MARK_ARROW,IDC_SCI) 'SendMessage(w1, SCI_MARKERDEFINE,12,SC_MARK_BOXPLUS,IDC_SCI) 'set marker 0 - circle - backcolor 'SendMessage(w1, SCI_MARKERSETBACK, 0, RGB(0,150,0),IDC_SCI) 'set marker 1 - roundrect - backcolor 'SendMessage(w1, SCI_MARKERSETBACK, 1, RGB(0,0,255),IDC_SCI) 'set marker 2 - arrow - backcolor SendMessage(w1, SCI_MARKERSETBACK,2, RGB(0,180,0),IDC_SCI) 'SendMessage(w1, SCI_MARKERADD, 0,2,IDC_SCI) 'SendMessage(w1, SCI_MARKERSETBACK,12, RGB(255,0,0),IDC_SCI) 'set marker to first position (zero position/empty editor/)show red arrow marker 'SendMessage(w1, SCI_MARKERADD, 0,2,IDC_SCI) '<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< SENDMESSAGE(w1, SCI_STYLESETFORE, SCE_IB_LINECOMMENT,rgb(0,120,0), IDC_SCI ) SENDMESSAGE(w1, SCI_STYLESETFORE, SCE_IB_BLOCKCOMMENT, rgb(0,120,0), IDC_SCI ) SENDMESSAGE(w1, SCI_STYLESETFORE, SCE_IB_NUMBER,RGB(0,0,0), IDC_SCI) SENDMESSAGE(w1, SCI_STYLESETFORE, SCE_IB_KEYWORD,RGB(200,0,0), IDC_SCI) SENDMESSAGE(w1, SCI_STYLESETFORE, SCE_IB_TYPE,RGB(0,0,200), IDC_SCI) :'keywords SENDMESSAGE(w1, SCI_STYLESETFORE, SCE_IB_SETID,rgb(160,0,0), IDC_SCI ):'orange/to dark blue SENDMESSAGE(w1, SCI_STYLESETFORE, SCE_IB_PREPROCESSOR,rgb(220,0,0), IDC_SCI) SENDMESSAGE(w1, SCI_STYLESETFORE, SCE_IB_STRING, 0x880088, IDC_SCI ) SENDMESSAGE(w1, SCI_STYLESETFORE, SCE_IB_OPERATOR,rgb(0,0,180), IDC_SCI) SENDMESSAGE(w1, SCI_STYLESETFORE, SCE_IB_IDENTIFIER, 0x000000, IDC_SCI ) SENDMESSAGE(w1, SCI_STYLESETFORE, SCE_IB_LABEL,rgb(0,0,0), IDC_SCI) SENDMESSAGE(w1, SCI_STYLESETFORE, SCE_IB_ASM, 0x555555, IDC_SCI ) CENTERWINDOW w1 'CONTROLCMD w1, 1, @RTSETEVENTMASK, @ENM_MOUSEEVENTS '------------------------------------------------------------------------------------ CASE @IDSIZE IF CONTROLEXISTS(w1,IDC_SCI) GetClientSize w1,winL,winT,MeWidth,MeHeight 'txtHeight = MeHeight - 10 'txtWidth = MeWidth - 10 Line w1,0,30,2024,30,rgb(182,182,192) SETSIZE w1,winL+208,winT+Tw,MeWidth-(206) , MeHeight-(84) ,IDC_SCI ENDIF IF CONTROLEXISTS(w1,1) 'GetClientSize w1,winL,winT,MeWidth,MeHeight SETSIZE w1,winL+Lw,winT+(MeHeight-84),MeWidth-(176) ,54 ,1 ENDIF IF CONTROLEXISTS(w1,50) 'GetClientSize w1,winL,winT,MeWidth,MeHeight SETSIZE w1,170,38,MeWidth-(176) ,24 ,50 ENDIF 'Tell the status window we are sizing IF CONTROLEXISTS(w1,2) CONTROLCMD w1,2,@SWRESIZE 'GETCLIENTSIZE w1,left,top,width,height ENDIF 'Listbox IF CONTROLEXISTS(w1,3) GetClientSize w1,winL,winT,MeWidth,MeHeight SETSIZE w1,4,winT+60,200, MeHeight-84 ,3 ENDIF '------------------------------------------------------------------------------ '------------------------------------------------------------------------------ CASE @IDCONTROL 'select LB item IF @CONTROLID = 3 IF @notifycode=@LBNDBLCLK 'press enter key pos=GETSELECTED(w1,3) For n=0 TO pos IF pos = n fnpos=LBitems[pos] Setfocus w1,IDC_SCI SendMessage(w1,SCI_GOTOLINE,fnpos,0,IDC_SCI) ENDIF Next n pos=0 ENDIF ENDIF IF @CONTROLID = 50 IF @NOTIFYCODE = @TCN_SELCHANGE IF loadtext=1 THEN autosave() FindTab() ENDIF IF @NOTIFYCODE = @NMRCLICK POINT cursor GetCursorPos(cursor) ScreenToClient(tc, cursor) hittab = tcHitTest(w1,50,cursor.x,cursor.y) tcSetSelectedTab(w1,50,hittab) IF hittab > -1 CONTEXTMENU w1,cursor.x+160, cursor.y+48 MENUITEM "Close", 0, 26 MENUITEM "Cancel", 0, 27 ENDMENU ENDIF ENDIF ENDIF 'new /////////////////////////////////////////////////////////////////// IF @CONTROLID = 12 IF @Notifycode=0 SendMessage w1, EM_SETBKGNDCOLOR,0, RGB(243,242,214),1 autosave():ClearFnPanel() GW1="": GW2="":GW3="":GW4="": GW5="":GW6="":GW7="":GW8="" SendMessage(w1,SCI_CLEARALL,0,0,IDC_SCI) buffer="":loadtext=0 start = 0 starts = 0 linenum = 0 smax=0 lgw1=0:lgw2=0:lgw3=0:lgw4=0:lgw5=0:lgw6=0:lline=0:strlen=0:capsize=0 temp$="":hwndcaption="":final$="" GW1="": GW2="":GW3="":GW4="":GW5="":GW6="":GW7="":GW8="" '---------------------------------- CreateNewTab() If loadtext=0 then CONTROLCMD w1,98, @TBENABLEBUTTON,19,0 '--------------------------------- Endif ENDIF 'open IF @CONTROLID = 13 If @notifycode=0 'SendMessage w1, EM_SETBKGNDCOLOR,0, RGB(243,242,214),1 start = 0 starts = 0 linenum = 0 filename="" filename = FILEREQUEST("Load file",w1,1,filter,"o2bas") IF( Openfile(hFile,filename,"R") = 0): ' open a >1MB file hsize=0 hsize = Len(hFile) Allocmem htext,hsize,1 hzero=0 Writemem htext,hsize,hzero Read hFile,htext SendMessage(w1, SCI_SetText, 0, htext,IDC_SCI) Freemem htext Closefile hFile ENDIF buffer="" buffer = getcontroltext(w1,IDC_SCI) CONTROLCMD w1, 1, @RTSetSelection, 0,-1 CONTROLCMD w1, 1, @RTDeleteSel Setcontroltext w1,1,buffer: buffer="" 'set window title with filename ' filename string not changed SETCAPTION w1,capmain$ + filename 'add to status bar full qualified file path CONTROLCMD w1,2,@SWSETPANETEXT,0,"Location:"+filename smax=SendMessage(w1, SCI_GETLINECOUNT,0,0,IDC_SCI) 'add number of lines into status bar CONTROLCMD w1,2,@SWSETPANETEXT,1,"Lines:"+str$(smax) 'linenum=0 'ClearFnPanel() 'fn_parser() If len(filename)>0 loadtext=1 FindNewTab() Endif 'add 1 if source is loaded CONTROLCMD w1,2,@SWSETPANETEXT,2,"Load:"+str$(loadtext) If len(filename)>0 then CONTROLCMD w1,98, @TBENABLEBUTTON,19,1 Endif ENDIF 'save /////////////////////////////////////////////////////////////////// IF @CONTROLID = 14 If @notifycode = 0 filename = FILEREQUEST("Save file",w1,0,filter,"o2bas") 'filename = filerequest("Save File",win,0);dosave If(len(filename) > 0) hsize=0 hsize = SendMessage(w1, SCI_GETTEXTLENGTH, 0, 0,IDC_SCI) Allocmem htext,1,hsize+1 SendMessage(w1,SCI_GETTEXT,hsize+1,htext,IDC_SCI) Openfile(hFile, filename, "W") Write hFile,htext Freemem htext Closefile hFile Endif buffer = getcontroltext(w1,IDC_SCI) Setcontroltext w1,1,buffer IF len(buffer)>0 CONTROLCMD w1,98, @TBENABLEBUTTON,19,1 loadtext=1 'getfilepath IF LEN(filename)>0 THEN FindNewTab() ENDIF Endif ENDIF 'undo,cut,copy,paste IF @CONTROLID = 15 If @notifycode = 0 SendMessage(w1,SCI_UNDO,0,0,IDC_SCI) Endif ENDIF IF @CONTROLID = 16 If @notifycode = 0 SendMessage(w1,SCI_CUT,0,0,IDC_SCI) Endif ENDIF IF @CONTROLID = 17 If @notifycode = 0 SendMessage(w1,SCI_COPY,0,0,IDC_SCI) Endif ENDIF IF @CONTROLID = 18 If @notifycode = 0 SendMessage(w1,SCI_PASTE,0,0,IDC_SCI) Endif ENDIF 'COMPILE -------------------------------------------------------------------------------- IF @CONTROLID = 19 If @notifycode = 0 'if (form = 1)&(w2=1) then return error=0 'SendMessage w1, EM_SETBKGNDCOLOR,0, RGB(243,242,214),1 GW1="": GW2="":GW3="":GW4="": GW5="":GW6="":GW7="":GW8="" starts = 0 start = 0 linenum = 0 smax=0 buffer="" buffer = getcontroltext(w1,IDC_SCI) CONTROLCMD w1, 1, @RTSetSelection, 0,-1 CONTROLCMD w1, 1, @RTDeleteSel Setcontroltext w1,1,buffer autosave() '------------------------------------------------------------------------ 'IF buffer<>"" SYSTEM Getstartpath+"gxo2.exe","-c"+filename 'ENDIF '------------------------------------------------------------------------ ENDIF ENDIF 'RUN------------------------------------------------------------------------ IF @CONTROLID = 20 If @notifycode = 0 exepath="":dotpos=0 dotpos=INSTR(filename,".") exepath=Mid$(filename,1,dotpos-1) exepath=exepath + ".exe" 'MESSAGEBOX 0,"path:"+exepath,"OK" System exepath Endif ENDIF 'forum IF @CONTROLID = 21 If @notifycode = 0 SYSTEM "iexplore.exe" ,"http://www.oxygenbasic.org" Endif ENDIF 'about IF @CONTROLID = 22 If @notifycode = 0 about$="OXYGEN OxyEdit "+chr$(10) about$=about$+"Programmers editor for Oxygen Basic"+chr$(10) about$=about$+"version : 4 "+chr$(10) about$=about$+"author :Vidlanovic Zlatko Aurel " MessageBox 0,about$,"About OxyEdit ",64 ENDIF ENDIF 'Find--------------------------------------------------------------------------- IF @CONTROLID =23 If @notifycode = 0 'MESSAGEBOX 0,"FindDialog","Open" ShowDialog findDialog ENDIF ENDIF 'help IF @CONTROLID = 25 If @notifycode = 0 System Getstartpath+"oxygen_help.chm" Endif ENDIF 'GoTo Line --> IF @CONTROLID = 28 If @notifycode = 0 gotoline$ = GETCONTROLTEXT(w1,30):linenumber=VAL(gotoline$) IF linenumber > 0 linenumber=linenumber-1 Setfocus w1,IDC_SCI SendMessage(w1,SCI_GOTOLINE,linenumber,0,IDC_SCI) ENDIF Endif ENDIF '------------------------------------------------------------------------- CASE @IDERASEBACKGROUND 'skining & drawing toolbar IF CONTROLEXISTS(w1,98) 'GETSIZE w1,left,top,400,height,98 RECT w1,0,0,400,height,RGB(231,227,239),rgb(231,227,239) ENDIF '---------------------------------------------------------------------------- CASE @IDMENUPICK SELECT @MENUNUM CASE 1:'Quit run=0 CASE 2:'Undo CONTROLCMD w1,1,@RTUNDO CASE 3:'Cut CONTROLCMD w1,1,@RTCUT CASE 4:'Copy CONTROLCMD w1,1,@RTCOPY CASE 5:'Paste CONTROLCMD w1,1,@RTPASTE 'CONTEXTMENU CONTROLS CASE 51 'CONTROLCMD w1,1,@RTCUT CASE 52 'CONTROLCMD w1,1,@RTCOPY CASE 53 'CONTROLCMD w1,1,@RTPASTE 'SETFONT w1,"Courier New",10, 400,0,1 CASE 54 CONTROLCMD w1, 1, @RTSetSelection, 0,-1 CASE 6:'SAVE---------------------------------------------------------------------- filename = FILEREQUEST("Save file",w1,0,filter,"o2bas") 'filename = filerequest("Save File",win,0);dosave If(len(filename) > 0) hsize=0 hsize = SendMessage(w1, SCI_GETTEXTLENGTH, 0, 0,IDC_SCI) Allocmem htext,1,hsize+1 SendMessage(w1,SCI_GETTEXT,hsize+1,htext,IDC_SCI) Openfile(hFile, filename, "W") Write hFile,htext Freemem htext Closefile hFile Endif buffer = getcontroltext(w1,IDC_SCI) Setcontroltext w1,1,buffer IF len(buffer)>0 CONTROLCMD w1,98, @TBENABLEBUTTON,19,1 loadtext=1 IF LEN(filename)>0 THEN FindNewTab() ENDIF CASE 7:'OPEN---------------------------------------------------------------------- SendMessage w1, EM_SETBKGNDCOLOR,0, RGB(243,242,214),1 CONTROLCMD w1, 1, @RTSetSelection, 0,-1 CONTROLCMD w1, 1, @RTDeleteSel start = 0 starts = 0 linenum = 0 filename="" filename = FILEREQUEST("Load file",w1,1,filter,"o2bas") IF( Openfile(hFile,filename,"R") = 0): ' open a >1MB file hsize=0 hsize = Len(hFile) Allocmem htext,hsize,1 hzero=0 Writemem htext,hsize,hzero Read hFile,htext 'SendMessage(w1,SCI_CLEARALL,0,0,IDC_SCI) 'SetDlgItemTextA(w1,1,htext) SendMessage(w1, SCI_SetText, 0, htext,IDC_SCI) Freemem htext Closefile hFile ENDIF 'colorcoment() SETCAPTION w1,capmain$ + filename CONTROLCMD w1,2,@SWSETPANETEXT,0,"Location:"+filename 'print lines of code CONTROLCMD w1,2,@SWSETPANETEXT,1,"Lines:"+str$(smax) 'linenum=0 If len(filename)>0 then loadtext=1 'move w1,20,32 'print w1,"Load: ",loadtext," " CONTROLCMD w1,2,@SWSETPANETEXT,2,"Load:"+str$(loadtext) 'set window title with filename ' filename string not changed SETCAPTION w1,capmain$ + filename 'add to status bar full qualified file path CONTROLCMD w1,2,@SWSETPANETEXT,0,"Location:"+filename smax=SendMessage(w1, SCI_GETLINECOUNT,0,0,IDC_SCI) 'add number of lines into status bar CONTROLCMD w1,2,@SWSETPANETEXT,1,"Lines:"+str$(smax) 'linenum=0 If len(filename)>0 loadtext=1 FindNewTab() ENDIF CONTROLCMD w1,2,@SWSETPANETEXT,2,"Load:"+str$(loadtext) ClearFnPanel() fn_parser() If len(filename)>0 then CONTROLCMD w1,98, @TBENABLEBUTTON,19,1 '------------------------------------------------------------------------------------------- CASE 8:'Compile Script 'let GW1="": let GW2="":let GW3="":let GW4="":let GW5="":let GW6="":let GW7="":let GW8="" starts = 0 start = 0 linenum = 0 autosave() '------------------------------------------------------------------------ SYSTEM Getstartpath+"gxo2.exe","-c"+filename '------------------------------------------------------------------------ CASE 22:'Run exepath="":dotpos=0 dotpos=INSTR(filename,".") exepath=Mid$(filename,1,dotpos-1) exepath=exepath + ".exe" System exepath '------------------------------------------------------------------------ CASE 9:'help System Getstartpath+"oxygen_help.chm" '------------------------------------------------------------------------ CASE 10:'about editor---------------------------------------------------- about$="OXYGEN OxyEdit "+chr$(10) about$=about$+"Programmers editor for Oxygen Basic"+chr$(10) about$=about$+"version : 2 "+chr$(10) about$=about$+"author :Vidlanovic Zlatko Aurel " MessageBox 0,about$,"About OxyEdit ",64 CASE 11:'New ClearFnPanel():SendMessage w1, EM_SETBKGNDCOLOR,0, RGB(243,242,214),1 GW1="": GW2="":GW3="":GW4="": GW5="":GW6="":GW7="":GW8="" CONTROLCMD w1, 1, @RTSetSelection, 0,-1 CONTROLCMD w1, 1, @RTDeleteSel SendMessage(w1,SCI_CLEARALL,0,0,IDC_SCI) buffer="" start = 0 starts = 0 linenum = 0 smax=0 '--------------------------------- CreateNewTab() '--------------------------------- CASE 26:'Close TAB----------------------------------- IF hittab > -1 tcDeleteTab w1, 50,hittab tempTab=tcGetTabCount(w1,50) tcSetSelectedTab(w1,50,tempTab-1) FindTab() ReOpenFile() 'ClearFnPanel() 'fn_parser() ENDIF 'MessageBox w1,"HIT-TAB:"+str$(hittab),"HIT" tempTab=tcGetTabCount(w1,50) 'MessageBox w1,"TEMP-TAB:"+str$(tempTab),"TABCOUNT" IF tempTab=0 & hittab = 0 SendMessage(w1,SCI_CLEARALL,0,0,IDC_SCI) ClearTabList() CreateNewTab() ENDIF CASE 27:'Cancel '\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ CASE 30:'setfont 8 scifontsize=8 For i = 0 to 12 SENDMESSAGE (w1, SCI_STYLESETFONT, i, "Courier New", IDC_SCI) SENDMESSAGE (w1, SCI_STYLESETSIZE, i, scifontsize, IDC_SCI) Next i CASE 31:'setfont 9 scifontsize=9 For i = 0 to 12 SENDMESSAGE (w1, SCI_STYLESETFONT, i, "Courier New", IDC_SCI) SENDMESSAGE (w1, SCI_STYLESETSIZE, i, scifontsize, IDC_SCI) Next i CASE 32:'setfont 10 scifontsize=10 For i = 0 to 12 SENDMESSAGE (w1, SCI_STYLESETFONT, i, "Courier New", IDC_SCI) SENDMESSAGE (w1, SCI_STYLESETSIZE, i, scifontsize, IDC_SCI) Next i CASE 33:'setfont 12 scifontsize=12 For i = 0 to 12 SENDMESSAGE (w1, SCI_STYLESETFONT, i, "Courier New", IDC_SCI) SENDMESSAGE (w1, SCI_STYLESETSIZE, i, scifontsize, IDC_SCI) Next i '................................................................................ CASE 34:'set brown-Lightyellow SENDMESSAGE(w1, SCI_STYLESETFORE, SCE_IB_DEFAULT,100, IDC_SCI) SENDMESSAGE(w1, SCI_STYLESETBACK,32,rgb(243,242,214), IDC_SCI) SETCONTROLCOLOR w1, 3,rgb(250,250,245),rgb(160,120,60) style_softwhite() CASE 35:'set blue-softwhite SENDMESSAGE(w1, SCI_STYLESETFORE, SCE_IB_DEFAULT,100, IDC_SCI) SENDMESSAGE(w1, SCI_STYLESETBACK,32,rgb(250,250,250), IDC_SCI) SETCONTROLCOLOR w1, 3, rgb(250,250,250),rgb(70,70,160) style_softwhite() CASE 36:'set back as DARK SENDMESSAGE(w1, SCI_STYLESETFORE, SCE_IB_DEFAULT,100, IDC_SCI) SENDMESSAGE(w1, SCI_STYLESETBACK,32,rgb(35,35,98), IDC_SCI) SETCONTROLCOLOR w1, 3, rgb(220,240,250),rgb(45,45,98) style_dark() CASE 37:'set back as lightblue SENDMESSAGE(w1, SCI_STYLESETFORE, SCE_IB_DEFAULT,100, IDC_SCI) SENDMESSAGE(w1, SCI_STYLESETBACK,32,rgb(240,240,248), IDC_SCI) SETCONTROLCOLOR w1, 3, rgb(0,0,0),rgb(240,240,248) bold=1 style_softwhite() CASE 38:'set back as lightgray SENDMESSAGE(w1, SCI_STYLESETFORE, SCE_IB_DEFAULT,100, IDC_SCI) SENDMESSAGE(w1, SCI_STYLESETBACK,32,rgb(235,235,235), IDC_SCI) 'SCI_STYLESETBOLD For i = 0 to 12 SENDMESSAGE (w1, SCI_STYLESETFONT, i, "Courier New", IDC_SCI) SENDMESSAGE (w1, SCI_STYLESETSIZE, i, scifontsize, IDC_SCI) SENDMESSAGE (w1, SCI_STYLESETBOLD, i, scifontsize, IDC_SCI) Next i bold=1 SETCONTROLCOLOR w1, 3, rgb(0,0,0),rgb(235,235,235) style_softwhite() '\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ ENDSELECT ENDSELECT RETURN ENDSUB '>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> SUB fn_parser smax = CONTROLCMD ( w1, 1, @RTGETLINECOUNT ) 'CONTROLCMD w1,2,@SWSETPANETEXT,1,"Lines:"+str$(smax) FOR start = linenum TO smax 'MessageBox 0,"Start:"+str$(start),"SMAX_SCI" wait 1 Pos=0 EPos=0 SPos=0 WC=0 Count=0 'abscript[start] = CONTROLCMD ( w1, 1, @RTGETLINE, start):'get source line CONTROLCMD ( w1, 1, @RTGETLINE,start,abscript[start]) 'MESSAGEBOX 0,Str$(LEN(abscript[start])),"Source Line" 'get word count in line abscript[start]=MID$(abscript[start],1,LEN(abscript[start])-2) abscript[start]=Ltrim$(abscript[start]) 'Gosub wcount WC = 1 Pos = InStr(abscript[start], " ",1) While Pos > 0 WC = WC + 1 Pos = InStr(abscript[start], " ",pos+1) ENDWHILE 'CountWords = WC 'EXTRACT WORDS PARSER---------------------------------------------------- IF wc>0 SPos = 1 EPos = InStr(abscript[start], " ",SPos) - 1 If EPos <= 0 Then EPos = Len(abscript[start]) GW1 = RTrim$(LTrim$(Mid$(abscript[start], SPos, EPos - SPos + 1))) ENDIF IF wc>1 SPos=EPos+2 EPos = InStr(abscript[start], " ",SPos) - 1 If EPos <= 0 Then EPos = Len(abscript[start]) GW2 = RTrim$(LTrim$(Mid$(abscript[start], SPos, EPos - SPos + 1))) ENDIF IF wc>2 SPos=EPos+2 EPos = InStr(abscript[start], " ",SPos) - 1 If EPos <= 0 Then EPos = Len(abscript[start]) GW3 = RTrim$(LTrim$(Mid$(abscript[start], SPos, EPos - SPos + 1))) ENDIF 'Select keyword FUNCTION------------------------------------------------- GW1=UCASE$(GW1) 'FUNCTION IF GW1 = "SUB" AddString w1,3,"SUB:" + GW2 LBitems[LBitem]=start LBitem=LBitem+1 ENDIF '<---------------------- IF GW1 = "FUNCTION" IF (GW2 <> "=") AddString w1,3,"FN:" + GW2 LBitems[LBitem]=start LBitem=LBitem+1 ENDIF ENDIF IF GW1 = "CLASS" IF (GW2 <> "=") AddString w1,3,"CLASS:" + GW2 LBitems[LBitem]=start LBitem=LBitem+1 ENDIF ENDIF IF GW1 = "METHOD" IF (GW2 <> "=") AddString w1,3,"METHOD:" + GW2 LBitems[LBitem]=start LBitem=LBitem+1 ENDIF ENDIF NEXT start 'MESSAGEBOX 0,"LB_ITEMS:"+str$(LBitem),"OK" LBitem=0 GW1="":GW2="":GW3="" RETURN ENDSUB '>>>>> END FN PARSER >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> SUB style_softwhite SENDMESSAGE(w1, SCI_STYLECLEARALL, 0, 1, IDC_SCI) For i = 0 to 12 SENDMESSAGE (w1, SCI_STYLESETFONT, i, "Consolas", IDC_SCI) SENDMESSAGE (w1, SCI_STYLESETSIZE, i, scifontsize, IDC_SCI) IF bold = 1 THEN SENDMESSAGE (w1, SCI_STYLESETBOLD, 5, scifontsize, IDC_SCI) Next i 'IF bold=1 then SENDMESSAGE (w1, SCI_STYLESETBOLD, i, scifontsize, IDC_SCI) SENDMESSAGE(w1, SCI_SETKEYWORDS, 0, scired , IDC_SCI ):'red SENDMESSAGE(w1, SCI_SETKEYWORDS, 1, sciblue , IDC_SCI ):'blue SENDMESSAGE(w1, SCI_SETKEYWORDS, 2, scidblue ,IDC_SCI):'darkblue SENDMESSAGE(w1, SCI_SETKEYWORDS, 3,scibrown, IDC_SCI ):'brown SendMessage(w1,SCI_SETMARGINWIDTHN,0,40,IDC_SCI) SENDMESSAGE(w1, SCI_STYLESETFORE, SCE_IB_LINECOMMENT,RGB(0,120,0), IDC_SCI ) SENDMESSAGE(w1, SCI_STYLESETFORE, SCE_IB_BLOCKCOMMENT, rgb(0,120,0), IDC_SCI ) SENDMESSAGE(w1, SCI_STYLESETFORE, SCE_IB_NUMBER,RGB(0,0,0), IDC_SCI) SENDMESSAGE(w1, SCI_STYLESETFORE, SCE_IB_KEYWORD,RGB(200,0,0), IDC_SCI) SENDMESSAGE(w1, SCI_STYLESETFORE, SCE_IB_TYPE,RGB(0,0,190), IDC_SCI) IF bold=1 THEN SENDMESSAGE(w1, SCI_STYLESETFORE, SCE_IB_TYPE,RGB(0,0,180), IDC_SCI) SENDMESSAGE(w1, SCI_STYLESETFORE, SCE_IB_SETID,rgb(160,0,0), IDC_SCI ):'orange/to dark blue SENDMESSAGE(w1, SCI_STYLESETFORE, SCE_IB_PREPROCESSOR,rgb(220,0,0), IDC_SCI) SENDMESSAGE(w1, SCI_STYLESETFORE, SCE_IB_STRING, 0x880088, IDC_SCI ) SENDMESSAGE(w1, SCI_STYLESETFORE, SCE_IB_OPERATOR,rgb(0,0,180), IDC_SCI) SENDMESSAGE(w1, SCI_STYLESETFORE, SCE_IB_IDENTIFIER, 0x000000, IDC_SCI ) SENDMESSAGE(w1, SCI_STYLESETFORE, SCE_IB_LABEL,rgb(0,0,0), IDC_SCI) SENDMESSAGE(w1, SCI_STYLESETFORE, SCE_IB_ASM, 0x555555, IDC_SCI ) IF bold = 1 then bold=0 ENDSUB '----------------------------------------------------------------------- SUB style_dark SENDMESSAGE(w1, SCI_STYLECLEARALL, 0, 1, IDC_SCI) For i = 0 to 12 SENDMESSAGE (w1, SCI_STYLESETFONT, i, "Courier New", IDC_SCI) SENDMESSAGE (w1, SCI_STYLESETSIZE, i, scifontsize, IDC_SCI) IF bold = 1 THEN SENDMESSAGE (w1, SCI_STYLESETBOLD, 5, scifontsize, IDC_SCI) Next i 'IF bold=1 then SENDMESSAGE (w1, SCI_STYLESETBOLD, i, scifontsize, IDC_SCI) SENDMESSAGE(w1, SCI_SETKEYWORDS, 0, scired , IDC_SCI ):'red SENDMESSAGE(w1, SCI_SETKEYWORDS, 1, sciblue , IDC_SCI ):'blue SENDMESSAGE(w1, SCI_SETKEYWORDS, 2, scidblue ,IDC_SCI):'darkblue SENDMESSAGE(w1, SCI_SETKEYWORDS, 3,scibrown, IDC_SCI ):'brown SendMessage(w1,SCI_SETMARGINWIDTHN,0,40,IDC_SCI) SENDMESSAGE(w1, SCI_STYLESETFORE, SCE_IB_LINECOMMENT,RGB(40,120,0), IDC_SCI ) :'line comment SENDMESSAGE(w1, SCI_STYLESETFORE, SCE_IB_BLOCKCOMMENT, rgb(0,120,0), IDC_SCI ):'block comment SENDMESSAGE(w1, SCI_STYLESETFORE, SCE_IB_NUMBER,RGB(190,190,0), IDC_SCI) :'number SENDMESSAGE(w1, SCI_STYLESETFORE, SCE_IB_KEYWORD,RGB(200,160,60), IDC_SCI) :' sys keyword SENDMESSAGE(w1, SCI_STYLESETFORE, SCE_IB_TYPE,RGB(0,160,190), IDC_SCI) :' command keywords IF bold=1 THEN SENDMESSAGE(w1, SCI_STYLESETFORE, SCE_IB_TYPE,RGB(0,0,180), IDC_SCI) SENDMESSAGE(w1, SCI_STYLESETFORE, SCE_IB_SETID,rgb(160,0,0), IDC_SCI ):'orange/to dark blue SENDMESSAGE(w1, SCI_STYLESETFORE, SCE_IB_PREPROCESSOR,rgb(220,0,0), IDC_SCI) SENDMESSAGE(w1, SCI_STYLESETFORE, SCE_IB_STRING, 0x880088, IDC_SCI ) SENDMESSAGE(w1, SCI_STYLESETFORE, SCE_IB_OPERATOR,rgb(180,180,180), IDC_SCI) SENDMESSAGE(w1, SCI_STYLESETFORE, SCE_IB_IDENTIFIER, rgb(120,100,0), IDC_SCI ) :'other SENDMESSAGE(w1, SCI_STYLESETFORE, SCE_IB_LABEL,rgb(0,0,0), IDC_SCI) SENDMESSAGE(w1, SCI_STYLESETFORE, SCE_IB_ASM, 0x555555, IDC_SCI ) IF bold = 1 then bold=0 ENDSUB '----------------------------------------------------------------------- SUB ClearFnPanel INT itempos,i itempos=GETSTRINGCOUNT (w1,3) For i=itempos to 0 step -1 DELETESTRING w1,3,i Next i RETURN ENDSUB '////NEW WINDOW ///////////////////////////////////////////////////////// SUB newwindow 'caption of window 'open new window ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, OPENWINDOW w2,0,0,400,300,@minbox,0,"Magic Small",&mainsub ',,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, 'Setfocus w2 'form = 1 'If form=1 then return 'waituntil w2=0 'Gosub resetvars RETURN ENDSUB '**************************************************************** SUB mainsub IF @CLASS = @IDCLOSEWINDOW ' closes the window and sets w1 = 0 CLOSEWINDOW w2 ENDIF IF @class = @IDcreate Centerwindow w2 Endif RETURN ENDSUB 'autosave--------------------------------------------------------- SUB autosave 'filename = FILEREQUEST("Save file",w1,0,filter,"aon") If(len(filename) > 0) hsize=0 hsize = SendMessage(w1, SCI_GETTEXTLENGTH, 0, 0,IDC_SCI) Allocmem htext,1,hsize+1 SendMessage(w1,SCI_GETTEXT,hsize+1,htext,IDC_SCI) Openfile(hFile, filename, "W") Write hFile,htext Freemem htext Closefile hFile Endif RETURN ENDSUB '//// ENDSUB for NEW WINDOW //////////////////////////////////////////////////////////////////////////// sub oxykeywords 'plava sciblue="enum operator dim const local static global declare function sub method end if then else elseif endif " sciblue=sciblue+"endsel do while enddo endwhile wend exit continue operation operations select case for to step next " sciblue=sciblue+"goto gosub methods return block scope indexbase lib library extern that this " sciblue=sciblue+"readstate writestate deff type val ltrim rtrim lcase ucase space left mid instr " sciblue=sciblue+"asc len chr str hex print ellipse " sciblue=sciblue+"with " sciblue=sciblue+"noinit " sciblue=sciblue+"byval " sciblue=sciblue+"byref " sciblue=sciblue+"economy " sciblue=sciblue+"fpu " sciblue=sciblue+"cpu " sciblue=sciblue+"noprec " sciblue=sciblue+"include " sciblue=sciblue+"define " sciblue=sciblue+"typedef " sciblue=sciblue+"includepath " sciblue=sciblue+"lookahead " sciblue=sciblue+"view " sciblue=sciblue+"endv " sciblue=sciblue+"version " sciblue=sciblue+"getmemory " sciblue=sciblue+"freememory " sciblue=sciblue+"getprocaddress " sciblue=sciblue+"copy0 " sciblue=sciblue+"copy00 " sciblue=sciblue+"copyn " sciblue=sciblue+"copy " sciblue=sciblue+"mbox " sciblue=sciblue+"comparestr " '------------------------------------------------------------------------------------------------------- sciblue=sciblue+"alias macro as " sciblue=sciblue+"incl " sciblue=sciblue+"semicolon " sciblue=sciblue+"indexers " sciblue=sciblue+"retn " sciblue=sciblue+"offset " sciblue=sciblue+"skip " sciblue=sciblue+"with " sciblue=sciblue+"dataspace " sciblue=sciblue+"data " sciblue=sciblue+"o2 " sciblue=sciblue+"bind " sciblue=sciblue+"defs " sciblue=sciblue+"def " sciblue=sciblue+"struct " sciblue=sciblue+"class " sciblue=sciblue+"var " sciblue=sciblue+"asm " sciblue=sciblue+"o2h " sciblue=sciblue+"librarypath " sciblue=sciblue+"file " sciblue=sciblue+"quote " sciblue=sciblue+"union " sciblue=sciblue+"leaf " sciblue=sciblue+"autodim " sciblue=sciblue+"minormajor " sciblue=sciblue+"alert " sciblue=sciblue+"pragma " sciblue=sciblue+"unique " sciblue=sciblue+"console " sciblue=sciblue+"elif " sciblue=sciblue+"fi " sciblue=sciblue+"ifdef " sciblue=sciblue+"ifndef " sciblue=sciblue+"undef " sciblue=sciblue+"undefine " sciblue=sciblue+"blockdepth " sciblue=sciblue+"new " sciblue=sciblue+"del " sciblue=sciblue+"terminate " sciblue=sciblue+"freestrings " sciblue=sciblue+"freelibs " sciblue=sciblue+"inherits " sciblue=sciblue+"of " sciblue=sciblue+"from " sciblue=sciblue+"has " sciblue=sciblue+"export " sciblue=sciblue+"external " sciblue=sciblue+"com " sciblue=sciblue+"virtual " sciblue=sciblue+"endselect " sciblue=sciblue+"load " sciblue=sciblue+"and " sciblue=sciblue+"or " sciblue=sciblue+"xor " sciblue=sciblue+"stdcall " sciblue=sciblue+"cdecl " sciblue=sciblue+"ms64 " sciblue=sciblue+"pascal " sciblue=sciblue+"not " sciblue=sciblue+"once " sciblue=sciblue+"public " sciblue=sciblue+"private " sciblue=sciblue+"strptr " 'C like ------------------------------------------------------------------------------------------------ scibrown=scibrown+"void " scibrown=scibrown+"byte " scibrown=scibrown+"astring " scibrown=scibrown+"pstring " scibrown=scibrown+"bstring " scibrown=scibrown+"char " scibrown=scibrown+"zstring " scibrown=scibrown+"wstring " scibrown=scibrown+"bstring2 " scibrown=scibrown+"zstring2 " scibrown=scibrown+"asciiz " scibrown=scibrown+"short " scibrown=scibrown+"int " scibrown=scibrown+"integer " scibrown=scibrown+"float " scibrown=scibrown+"single " scibrown=scibrown+"sys " scibrown=scibrown+"double " scibrown=scibrown+"quad " scibrown=scibrown+"word " scibrown=scibrown+"dword " scibrown=scibrown+"qword " scibrown=scibrown+"uint " scibrown=scibrown+"__int8 " scibrown=scibrown+"__int16 " scibrown=scibrown+"__int32 " scibrown=scibrown+"__int64 " scibrown=scibrown+"int8_t " scibrown=scibrown+"int16_t " scibrown=scibrown+"int32_t " scibrown=scibrown+"int64_t " scibrown=scibrown+"uint8_t " scibrown=scibrown+"uint16_t " scibrown=scibrown+"uint32_t " scibrown=scibrown+"uint64_t " scibrown=scibrown+"any " scibrown=scibrown+"sys " scibrown=scibrown+" bool " scibrown=scibrown+"signed " scibrown=scibrown+"unsigned " scibrown=scibrown+"string " scibrown=scibrown+"long " 'peter ->wFunc awinH.include ****************************************************************************** scidblue=scidblue+"wndproc setwindow setbutton seteditbox setlistbox setrichedit setcombobox settreeview setcheckbox " scidblue=scidblue+"setstatic setscrollbar setradiobutton settreeview setlistview " scidblue=scidblue+"loadfile setfont controlid notifycode " '********************************************************************************************************** 'API.---------------------------------------------------------------------------------------------------- sciblue=sciblue+"createwindowex updatewindow showwindow translatemessage dispatchmessage postquitmessage getmessage " sciblue=sciblue+"getclientrect sendmessage destroywindow movewindow enumchildwindows messagebox settimer registerclass " sciblue=sciblue+"beginpaint setbkcolor settextcolor drawtext endpaint queryperformancecounter setpixelformat " sciblue=sciblue+"choosepixelformat getcommandline getmodulehandle loadlibrary getexitcodeprocess exitprocess " sciblue=sciblue+"QueryPerformanceFrequency getactivewindow loadicon loadcursor defwindowproc postmessage " sciblue=sciblue+"defwindowproc getdc releasedc deleteobject validaterect loword hiword loadimage " 'Group: overoadable intrinsic functions--------------------------------------------------------------------- sciblue=sciblue+"news frees error nuls compile uncompile _mid rgb " sciblue=sciblue+"replace getfile putfile asc len chr str hex guidval guidtxt callback freelibrary basic " sciblue=sciblue+"sizeof " sciblue=sciblue+"offsetof " sciblue=sciblue+"spanof " sciblue=sciblue+"typeof " sciblue=sciblue+"recordof " sciblue=sciblue+"structureof " sciblue=sciblue+"encodingof " sciblue=sciblue+"prototypeof " sciblue=sciblue+"statusof " sciblue=sciblue+"termsof " sciblue=sciblue+"extentof " sciblue=sciblue+"unic " sciblue=sciblue+"wchr " sciblue=sciblue+"abs " sciblue=sciblue+"acos " sciblue=sciblue+"asin " sciblue=sciblue+"atan " sciblue=sciblue+"atn " sciblue=sciblue+"cos " sciblue=sciblue+"deg " sciblue=sciblue+"frac " sciblue=sciblue+"hypot " sciblue=sciblue+"lin " sciblue=sciblue+"log " sciblue=sciblue+"log2 " sciblue=sciblue+"log10 " sciblue=sciblue+"logn " sciblue=sciblue+"mod " sciblue=sciblue+"pi " sciblue=sciblue+"exp " sciblue=sciblue+"pow " sciblue=sciblue+"rad " sciblue=sciblue+"recip " sciblue=sciblue+"round " sciblue=sciblue+"sin " sciblue=sciblue+"sqr " sciblue=sciblue+"sqrt " sciblue=sciblue+"tan " sciblue=sciblue+"trunc " sciblue=sciblue+"string$ " RETURN ENDSUB SUB GetFileName String fname,sign1,name INT dotpos,bslashpos,nameLen 'MESSAGEBOX 0,"ShowFName::TABCOUNT->:"+str$(tabcount),"OK" 'IF tempTab fname=filename bslashpos=FieldCount(fname,chr$(92)) fname=Mid$(fname,bslashpos+1,LEN(fname)) sign1="." dotpos=INSTR(fname, sign1) nameLen=LEN(fname)-(LEN(fname)-dotpos) name=Mid$(fname,1,nameLen-1) temp$=name 'MESSAGEBOX 0,"ShowName->:"+temp$,"OK" 'ENDIF return ENDSUB Sub FieldCount(source As String,delimiter As String),Int Dim delpos,nexpos,count As Int 'delimiter=chr$(92) count=1 delpos=1 nexpos=InStr(source,delimiter) While nexpos delpos=nexpos nexpos=InStr(source,delimiter,delpos+1) count++ Wend Return delpos EndSub SUB SetTabText(hWnd:window,cntID:int,index:int,text:string) DEF tie:TC_ITEM tie.mask=TCIF_TEXT tie.pszText=text tie.cchTextMax=len(text) tie.iImage=-1 SendMessage(hwnd,TCM_SETITEM,index,&tie,cntID) return ENDSUB SUB ReOpenFile SendMessage(w1,SCI_CLEARALL,0,0,IDC_SCI) IF( Openfile(hFile,filename,"R") = 0): ' open a >1MB file hsize=0 hsize = Len(hFile) Allocmem htext,hsize,1 hzero=0 Writemem htext,hsize,hzero Read hFile,htext SendMessage(w1, SCI_SetText, 0, htext,IDC_SCI) Freemem htext Closefile hFile ENDIF ReLoadRichEdit() ClearFnPanel() fn_parser() RETURN ENDSUB SUB OpenRequestFile SendMessage(w1,SCI_CLEARALL,0,0,IDC_SCI) 'filename="" 'filename = FILEREQUEST("Load file",w1,1,filter,"txt") IF( Openfile(hFile,filename,"R") = 0): ' open a >1MB file hsize=0 hsize = Len(hFile) Allocmem htext,hsize,1 hzero=0 Writemem htext,hsize,hzero Read hFile,htext SendMessage(w1, SCI_SetText, 0, htext,IDC_SCI) Freemem htext Closefile hFile ENDIF 'tempTab = tcGetSelectedTab(w1,50) GetFileName() SetTabText(w1,50,tempTab,temp$) RETURN ENDSUB '-------------------------------------------- SUB CreateNewTab tabVar=ListAdd(tabList,NEW(tabType,1)) #tabVar.tabName="*New" #tabVar.tabValue="" tabcount=tcGetTabCount(w1,50) tcInsertTab(w1,50,tabcount,#tabVar.tabName) tcSetSelectedTab(w1,50,tabcount) RETURN ENDSUB '---------------------------------------------- SUB FindNewTab INT found,tempTab,tcount STRING tName tempTab = tcGetSelectedTab(w1,50) 'tcount=tcGetTabCount(w1,50) 'MESSAGEBOX 0,"TCOUNT->:"+str$(tempTab),"FindNewTab" found=0 PosInList = ListGetFirst(tabList) WHILE (PosInList <> 0) tabVar = ListGetData(PosInList) IF #tabVar.tabName = "*New" #tabVar.tabValue=filename found=1 GetFileName() SetTabText(w1,50,tempTab,temp$) 'set new tab name #tabVar.tabName=temp$ temp$="" ClearFnPanel() fn_parser() RETURN ENDIF PosInList = ListGetNext(PosInList) ENDWHILE IF found=0 'If tabname exists tName = tcGetTabText(w1,50,tempTab) 'MESSAGEBOX 0,"If tabname exists:"+tName,"FindNewTab" WHILE (PosInList <> 0) tabVar = ListGetData(PosInList) IF #tabVar.tabName = tName #tabVar.tabValue=filename found=1 'GetFileName() 'SetTabText(w1,50,tempTab,temp$) 'set new tab name '#tabVar.tabName=temp$ 'temp$="" ClearFnPanel() fn_parser() RETURN ENDIF PosInList = ListGetNext(PosInList) ENDWHILE ENDIF tName = tcGetTabText(w1,50,tempTab) GetFileName() '-> create new tab IF (found=0) & (tName <> temp$) 'get tab count tcount=tcGetTabCount(w1,50) GetFileName():'extract file name 'create new TAB tcInsertTab(w1,50,tcount,temp$) tcSetSelectedTab(w1,50,tcount) tabVar=ListAdd(tabList,NEW(tabType,1)) #tabVar.tabName=temp$ #tabVar.tabValue=filename tempTab = tcGetSelectedTab(w1,50) SetTabText(w1,50,tempTab,temp$) temp$="" 'ReLoadRichEdit() ClearFnPanel() fn_parser() '------------------------ ENDIF RETURN ENDSUB '----------------------------------------------- SUB FindTab INT found,tempTab STRING tName tempTab = tcGetSelectedTab(w1,50) tname=tcGetTabText(w1,50,tempTab) IF tName="*New" SendMessage(w1,SCI_CLEARALL,0,0,IDC_SCI) ENDIF found=0 IF tName<>"*New" PosInList = ListGetFirst(tabList) WHILE (PosInList <> 0) tabVar = ListGetData(PosInList) IF #tabVar.tabName = tName filename=#tabVar.tabValue found=1 ReOpenFile() RETURN ENDIF PosInList = ListGetNext(PosInList) ENDWHILE ENDIF '------------------- IF found=0 'MESSAGEBOX 0,"New File!","Message..." ENDIF RETURN ENDSUB '----------------------------------------------- SUB ClearTabList ListRemoveAll(tabList,TRUE) tabList=ListCreate() 'POINTER strVar SETTYPE tabVar,tabType 'RETURN ENDSUB '--------------------------------------------- SUB ReLoadRichEdit buffer="" buffer = getcontroltext(w1,IDC_SCI) CONTROLCMD w1, 1, @RTSetSelection, 0,-1 CONTROLCMD w1, 1, @RTDeleteSel Setcontroltext w1,1,buffer ENDSUB SUB FindDialogProc INT loc SELECT @class CASE @idinitdialog SetWindowPos(findDialog.hWnd,-1,0,0,0,0,0x1 | 0x2) /*HWND_TOPMOST=-1,SWP_NOSIZE | SWP_NOMOVE*/ CENTERWINDOW findDialog '__TooltipControl(findDialog,5,"Finds the next instance of string") '__TooltipControl(findDialog,6,"Replaces matching string with new string") '__TooltipControl(findDialog,7,"Replaces all matching strings with new string") SETSTATE findDialog,12,1 SETFOCUS findDialog,2 CASE @idclosewindow CLOSEDIALOG findDialog CASE @idcontrol IF @notifycode=0 SELECT @controlid '---------------------------------------------------------- CASE 5 'MESSAGEBOX 0,"Control","5" IF GETSTATE(findDialog,12) loc=SENDMESSAGE(w1,SCI_GETSELECTIONEND,0,0,IDC_SCI) ELSE loc=SENDMESSAGE(w1,SCI_GETSELECTIONSTART,0,0,IDC_SCI) ENDIF SENDMESSAGE w1,SCI_SETANCHOR,loc,0,IDC_SCI SENDMESSAGE w1,SCI_SETCURRENTPOS,loc,0,IDC_SCI SENDMESSAGE w1,SCI_SEARCHANCHOR,0,0,IDC_SCI temp=SCFIND_REGEXP IF GETSTATE(findDialog,16) THEN temp=SCFIND_WHOLEWORD IF GETSTATE(findDialog,15) THEN temp|=SCFIND_MATCHCASE IF GETSTATE(findDialog,12) loc=SENDMESSAGE(w1,SCI_SEARCHNEXT,temp,GETCONTROLTEXT(findDialog,2),IDC_SCI) ELSE loc=SENDMESSAGE(w1,SCI_SEARCHPREV,temp,GETCONTROLTEXT(findDialog,2),IDC_SCI) ENDIF IF loc>-1 SENDMESSAGE w1,SCI_SCROLLCARET,0,0,IDC_SCI ELSE SHOWWINDOW findDialog,@swhide MESSAGEBOX 0,"No matches found","Search" SHOWWINDOW findDialog,@swrestore ENDIF '------------------------------------------------------------------- CASE 6 SENDMESSAGE(w1,SCI_REPLACESEL,0,GETCONTROLTEXT(findDialog,4),IDC_SCI) '------------------------------------------------------------------- '------------------------------------------------------ CASE 12 : CASE& 13 SETSTATE findDialog,12,(@controlid=12) SETSTATE findDialog,13,(@controlid=13) ENABLECONTROL findDialog,16,GETSTATE(findDialog,12) ENDSELECT ENDIF ENDSELECT RETURN ENDSUB /* ## # OXYGEN TOOLS # # COMPILE basco="$(SciteDefaultHome)\gxo2" " -c $(FileNameExt)" # # BUILD basbo="$(SciteDefaultHome)\gxo2" " -a -c -m $(FileNameExt)" # RUN FROM SOURCE basgo="$(SciteDefaultHome)\gxo2" " $(FileNameExt)" */