;My IDE version 2 ;Version 0 and 1 were doing too much ;this version we focus on being just a text editor ;and then just add special features as desired ;- includes XIncludeFile "dialogs\myini.pbi" XIncludeFile "dialogs\bitmaps.pbi" XIncludeFile "MyIDEVars.pbi" XIncludeFile "PBMacros.pbi" XIncludeFile "GenMacros.pbi" XIncludeFile "DBCCode.pbi" XIncludeFile "Compress.pbi" If InitSound()=0 MessageRequester("Initialization Error","Unable to use sounds",#MB_ICONSTOP) End EndIf ;Debug Str(?EndPacker - ?UnPacker ) ;- Main Window If OpenWindow(#WINDOW, 0, 0, 500, 400, MyTittle,#WindowFlags) If CreateMenu(#MENU, WindowID(#WINDOW)) ;{ MenuTitle("&File") MenuItem(#MENU_New,"&New"+Chr(9)+"Ctrl+n") AddKeyboardShortcut(#Window,#PB_Shortcut_Control | #PB_Shortcut_N,#MENU_NEW) MenuItem(#MENU_Open,"&Open"+Chr(9)+"Ctrl+o") AddKeyboardShortcut(#Window,#PB_Shortcut_Control | #PB_Shortcut_O,#MENU_OPEN) MenuItem(#MENU_Save,"&Save"+Chr(9)+"Ctrl+s") AddKeyboardShortcut(#Window,#PB_Shortcut_Control | #PB_Shortcut_S,#MENU_Save) MenuItem(#MENU_SaveAS,"save &As") MenuItem(#MENU_SaveALL,"Save All") MenuBar() MenuItem(#MENU_Close,"&Close") MenuItem(#MENU_CloseAll,"Close All") MenuBar() MenuItem(#MENU_Quit,"E&xit"+Chr(9)+"Alt+F4") AddKeyboardShortcut(#Window,#PB_Shortcut_Alt | #PB_Shortcut_F4,#MENU_Quit) MenuTitle("&Edit") MenuItem(#MENU_Cut,"Cu&t"+Chr(9)+"Ctrl+x") AddKeyboardShortcut(#Window,#PB_Shortcut_Control | #PB_Shortcut_X,#MENU_CUT) MenuItem(#MENU_Copy,"&Copy"+Chr(9)+"Ctrl+c") AddKeyboardShortcut(#Window,#PB_Shortcut_Control | #PB_Shortcut_C,#MENU_Copy) MenuItem(#MENU_Paste,"&Paste"+Chr(9)+"Ctrl+v") AddKeyboardShortcut(#Window,#PB_Shortcut_Control | #PB_Shortcut_V,#MENU_Paste) MenuItem(#MENU_SELALL,"Select &All"+Chr(9)+"Ctrl+a") AddKeyboardShortcut(#Window,#PB_Shortcut_Control | #PB_Shortcut_A,#MENU_SELALL) MenuItem(#MENU_Undo,"&Undo"+Chr(9)+"Ctrl+z") AddKeyboardShortcut(#Window,#PB_Shortcut_Control | #PB_Shortcut_Z,#MENU_Undo) MenuTitle("&Search") MenuItem(#MENU_SEARCH,"&Search") MenuShortcut(#WINDOW,#MENU_SAGAIN,"Search &Again",F3) MenuItem(#MENU_Replace,"&Replace") MenuShortcut(#WINDOW,#MENU_RAGAIN,"Replace Again",F4) MenuTitle("&Debug") MenuItem(#Menu_DebugOff,"Debug Off") MenuItem(#Menu_DebugOn,"Debug On") MenuBar() MenuItem(#Menu_ClearBreak,"Clear all Break Points") MenuItem(#Menu_SetBreak,"Set Break Point") MenuItem(#Menu_ClearLog,"Clear Log Points") MenuItem(#Menu_SetLog,"Set Log Point") MenuItem(#Menu_ClearSync,"Clear Sync Points") MenuItem(#Menu_SetSync,"Set Sync Point") MenuBar() MenuItem(#Menu_LogFunction,"Log All Functions") MenuItem(#Menu_ObjSync,"Sync All Objects") MenuItem(#Menu_BreakSync,"Sync All Break Points") MenuItem(#Menu_LogSync,"Sync All Log Points") MenuItem(#Menu_ClearAll,"Clear All Debug Points") MenuBar() MenuItem(#Menu_ViewLog,"View Log") MenuTitle("&Compile") MenuShortcut(#WINDOW,#MENU_Compile,"&Compile",F5) MenuShortcut(#WINDOW,#MENU_Execute,"&Execute",F6) MenuShortcut(#WINDOW,#MENU_Build,"&Make Exe",F7) MenuShortcut(#WINDOW,#MENU_Final,"&Final Exe with Media",F8) ;PreBuilt Includes options removed ;because they do not save time and introduce errors ;MenuBar() ;MenuItem(#Menu_UseMacro,"Use Prebuilt Includes") ;MenuItem(#Menu_BuildMacro,"Rebuild Includes") MenuBar() MenuItem(#MENU_Directives,"&Directives") MenuItem(#MENU_Package,"&Make Pack File") MenuTitle("&Tools") MenuItem(#Menu_Tools,"Configure &Tools") ;Preview and Edit removed. context provided via tool setups MenuItem(#Menu_Preview,"&Preview Media"+Chr(9)+"Ctrl+p") AddKeyboardShortcut(#Window,#PB_Shortcut_Control | #PB_Shortcut_P,#MENU_Preview) MenuItem(#Menu_Edit,"&Edit Media"+Chr(9)+"Ctrl+e") AddKeyboardShortcut(#Window,#PB_Shortcut_Control | #PB_Shortcut_E,#MENU_Edit) MenuItem(#Menu_Browse,"&Browse Media"+Chr(9)+"Ctrl+b") AddKeyboardShortcut(#Window,#PB_Shortcut_Control | #PB_Shortcut_B,#MENU_Browse) MenuItem(#Menu_Color,"Insert &Color") MenuBar() MenuTitle("&Window") MenuItem(#MENU_ShowProject,"&Hide Project Window"+Chr(9)+"Ctrl+j") AddKeyboardShortcut(#Window,#PB_Shortcut_Control | #PB_Shortcut_J,#MENU_ShowProject) MenuItem(#MENU_TileV,"Tile &Virtically") MenuItem(#MENU_TileH,"Tile &Horizontally") MenuItem(#MENU_Cascade,"&Cascade") MenuItem(#MENU_Arrange,"&Auto arrange") MenuItem(#MENU_Previous,"&Previous") MenuItem(#MENU_Next,"&Next") MenuTitle("Help") MenuShortCut( #WINDOW , #MENU_HELP , "&Darkbasic Help" , F1 ) MenuShortCut( #WINDOW , #MENU_MORE , "&IDE Help" , F2 ) MenuItem(#MENU_ABOUT,"&About") MenuBar() MenuItem(#Menu_SCI,"&Scintilla") If CreateGadgetList(WindowID(#WINDOW)) MainTop=MenuHeight() MainHeight=WindowHeight(#WINDOW)-MainTop If CreateToolBar(#TOOLBAR, WindowID(#WINDOW)) MainHeight - ToolBarHeight(#TOOLBAR) MainTop +ToolBarHeight(#TOOLBAR) ;- Toolbar ToolBarNewButton(#MENU_NEW) ToolbarOpenButton(#MENU_OPEN) ToolBarSaveButton(#MENU_SAVE) ToolBarDeleteButton(#MENU_CLOSE) ToolBarSeparator() ToolBarCutButton(#MENU_CUT) ToolBarCopyButton(#MENU_COPY) ToolBarPasteButton(#MENU_Paste) ToolBarSeparator() ToolBarFindButton(#MENU_Search) ToolBarSeparator() ToolBarImageButton(#MENU_DebugOn, ImageID(#Icon_DebugOn),#PB_ToolBar_Toggle) ToolBarImageButton(#MENU_DebugOff,ImageID(#Icon_DebugOff),#PB_ToolBar_Toggle) SetToolBarButtonState(#ToolBar, #MENU_DebugOn, 0) SetToolBarButtonState(#ToolBar, #MENU_DebugOff, 1) SetMenuItemState(#MENU,#MENU_DEBUGOFF,1) ToolBarSeparator() ToolBarImageButton(#MENU_Compile, ImageID(#Icon_Compile)) ToolBarImageButton(#MENU_execute, ImageID(#Icon_Run)) ToolBarImageButton(#MENU_Build, ImageID(#Icon_Build)) ToolBarImageButton(#MENU_Final, ImageID(#Icon_Final)) ToolBarPropertiesButton(#MENU_Directives) ;ToolBarImageButton(#MENU_Directives, ImageID(#Icon_Copt)) ToolBarSeparator() ToolBarImageButton(#MENU_Refresh, ImageID(#Icon_Refresh)) DisableToolBarButton(#ToolBar,#Menu_Refresh,1) AddKeyboardShortcut(#Window,#PB_Shortcut_Control | #PB_Shortcut_R,#MENU_Refresh) ToolBarSeparator() ToolBarImageButton(#MENU_HideProject,ImageID(#Icon_Project),#PB_ToolBar_Toggle) SetToolBarButtonState(#ToolBar,#MENU_HideProject,1) SetMenuItemState(#MENU,#Menu_ShowProject,1) ToolBarImageButton(#MENU_Previous,ImageID(#Icon_Left)) ToolBarImageButton(#MENU_Next, ImageID(#Icon_Right)) ToolBarSeparator() ToolBarImageButton(#MENU_Help, ImageID(#Icon_Help)) ;tips ToolBarToolTip(#Toolbar,#MENU_New,"Create a new code module") ToolBarToolTip(#Toolbar,#MENU_Open,"Open existing code module") ToolBarToolTip(#Toolbar,#MENU_Save,"Save code module") ToolBarToolTip(#Toolbar,#MENU_Close,"Close Current File") ToolBarToolTip(#Toolbar,#MENU_CUT,"Cut Text") ToolBarToolTip(#Toolbar,#MENU_COPY,"Copy Text") ToolBarToolTip(#Toolbar,#MENU_Paste,"Paste Text") ToolBarToolTip(#Toolbar,#MENU_Search,"Search Text") ToolBarToolTip(#Toolbar,#MENU_DebugOn, "Activate Debugger") ToolBarToolTip(#Toolbar,#MENU_DebugOff,"Deactivate Debugger") ToolBarToolTip(#Toolbar,#MENU_Compile,"Compile project") ToolBarToolTip(#Toolbar,#MENU_execute,"Execute Project") ToolBarToolTip(#Toolbar,#MENU_Build,"Buile project EXE") ToolBarToolTip(#Toolbar,#MENU_Final,"Build Project EXE including Media") ToolBarToolTip(#Toolbar,#MENU_Directives,"Compiler Options") ToolBarToolTip(#ToolBar,#MENU_Refresh,"Refresh Targets in Project Window") ToolBarToolTip(#Toolbar,#MENU_HideProject,"Hide Project Window") ToolBarToolTip(#Toolbar,#MENU_Previous,"Show Previous Window") ToolBarToolTip(#Toolbar,#MENU_Next,"Show Next Window") ToolBarToolTip(#Toolbar,#MENU_Help,"Show DarkBasic Help") EndIf MainWidth=WindowWidth(#WINDOW) MDIGadget(#GADGET_MDI, 0, 0, 0, 0, 6, #MENU_FirstMDI, #PB_MDI_AutoSize) RemoveKeyboardShortcut(#WINDOW,#PB_Shortcut_Tab ) RemoveKeyboardShortcut(#Window,#PB_Shortcut_Tab|#PB_Shortcut_Shift ) EndIf Else End EndIf Else End EndIf ;} ;- MDI Procedures ;These are procedures used for managing the main window ;All child window procedures will be sorted into own .pbi Procedure about(parent, text.s, big.l) ;use big for scale of the text box Offset.l=Big-165 ;field delimiter nf.s = Chr(8) ;fields about.s = StringField(text, 1, nf) name.s = StringField(text, 2, nf) corp.s = StringField(text, 3, nf) txt.s = StringField(text, 4, nf) url.s = StringField(text, 5, nf) lnk.s = StringField(text, 6, nf) flags = #PB_Window_ScreenCentered | #PB_Window_SystemMenu win = OpenWindow(#PB_Any, 0, 0, 420, 305+Offset, name, flags) If win EnableWindow_(WindowID(parent), #False) StickyWindow(win, #True) ResizeWindow(win, #PB_Ignore, WindowY(win) - 50, #PB_Ignore, #PB_Ignore) If CreateGadgetList(WindowID(win)) img1 = CreateImage(#PB_Any, 420, 70) fnt1 = LoadFont(#PB_Any, "", 10) fnt2 = LoadFont(#PB_Any, "", 16) If StartDrawing(ImageOutput(img1)) DrawingMode(#PB_2DDrawing_Transparent) ;header background gradient For x = 0 To 419 LineXY(x, 0, x, 60, RGB(x / 2.5, x / 2.5, 255)) LineXY(x, 60, x, 70, RGB(225- x / 5, 225 - x / 5, 255)) Next x ;header icon ;res.s = "shell32.dll" ;ndx = 130 res.s = ProgramFilename() ndx = 0 ExtractIconEx_(res, ndx, 0, @icon, 1) If icon DrawImage(icon, 10, 5, 48, 48) DestroyIcon_(icon) Else ExtractIconEx_("shell32.dll", 130, 0, @icon, 1) If icon DrawImage(icon, 10, 5, 48, 48) DestroyIcon_(icon) EndIf EndIf ;header about field If fnt1 DrawingFont(FontID(fnt1)) EndIf DrawText(70, 10, about, RGB(255, 255, 255)) ;header program name field If fnt2 DrawingFont(FontID(fnt2)) EndIf DrawText(70, 28, name, RGB(255, 255, 255)) ;header company name field If fnt1 DrawingFont(FontID(fnt1)) EndIf DrawText(400 - TextWidth(corp), 35, corp, RGB(255, 255, 255)) StopDrawing() EndIf ImageGadget(#PB_Any, 0, 0, 0, 0, ImageID(img1)) ;text icon img2 = CreateImage(#PB_Any, 32, 32) If StartDrawing(ImageOutput(img2)) Box(0, 0, 32, 32, GetSysColor_(15)) ;res.s = "shell32.dll" ;ndx = 166 ;ndx = 55 res.s = ProgramFilename() ndx = 0 ExtractIconEx_(res, ndx, 0, @icon, 1) If icon DrawImage(icon, 0, 0, 32, 32) DestroyIcon_(icon) Else ExtractIconEx_("shell32.dll", 55, 0, @icon, 1) If icon DrawImage(icon, 0, 0, 32, 32) DestroyIcon_(icon) EndIf EndIf StopDrawing() EndIf ImageGadget(#PB_Any, 20, 100, 0, 0, ImageID(img2)) ;text ;TextGadget(#PB_Any, 70, 100, 330, 145, txt) TextGadget(#PB_Any, 70, 80, 330, Big, txt) ;divider line img3 = CreateImage(#PB_Any, 410, 2) If StartDrawing(ImageOutput(img3)) Line(0, 0, 420, 0, RGB(160, 160, 160)) Line(0, 1, 420, 0, RGB(255, 255, 255)) StopDrawing() EndIf ImageGadget(#PB_Any, 0, 250+Offset, 0, 0, ImageID(img3)) ;online link If Len(url) lnk1 = HyperLinkGadget(#PB_Any, 20, 265+Offset, 200, 24, url, RGB(0, 0, 255), #PB_HyperLink_Underline) SetGadgetColor(lnk1, #PB_Gadget_FrontColor, RGB(0, 0, 255)) EndIf ;ok button btn1 = ButtonGadget(#PB_Any, 330, 268+Offset, 80, 24, "OK", #PB_Button_Default) SetActiveGadget(btn1) EndIf Repeat event = WaitWindowEvent() Select event Case #PB_Event_Gadget Select EventGadget() Case lnk1 RunProgram(lnk) exit = #True Case btn1 exit = #True EndSelect Case #PB_Event_CloseWindow exit = #True EndSelect Until exit CloseWindow(win) EndIf EnableWindow_(WindowID(parent), #True) SetActiveWindow(parent) EndProcedure Procedure WrapAbout(parent,comp$,desc$,ver$,cwt$,link$) ;next field nf.s = Chr(8) ;next line nl.s = Chr(13) + Chr(10) AppName.s=GetFilePart(ProgramFilename()) ;about field txt.s = "About " + nf ;program name field txt + "'" + AppName + "'" + nf ;company field txt + comp$ + nf ;main text field txt + "'" + AppName + "' "+desc$ + nl + nl build$=FormatDate("%YYYY %MM %DD",#PB_Compiler_Date ) txt + "Ver. "+ver$+", date "+build$ + nl txt + nl + "Copyright (c)"+cwt$ + nl txt + "WARNING: This PROGRAM is NOT protected"+nl+" by copyright law or international treaties."+ nl +nl txt + "About box box created by"+nl+" Stig h. Johansen And Utopiomania.com" + nf ;online link field txt + "Visit '" + comp$ + "' online" + nf txt + link$ about(parent, txt, 135) EndProcedure ;- Update Tools Menu Procedure ToolMenu() hMenu=MenuID(#MENU) hSub=GetSubMenu_(hMenu,5) max.l=GetMenuItemCount_(hSub)-6 ;0-4 are reserved for the real menu ;5 is menubar() While max>TotalTools hMenu=MenuID(#MENU) hSub=GetSubMenu_(hMenu,5) RemoveMenu_(hSub,#Menu_Tool1 + (max-1),#MF_BYCOMMAND) max-1 Wend If TotalTools For N=1 To TotalTools hMenu=MenuID(#MENU) hSub=GetSubMenu_(hMenu,5) If N>max AppendMenu_(hSub,#MF_STRING,#Menu_Tool1+(n-1),Tool(n)\MenuName) Else SetMenuItemText(#MENU,#Menu_Tool1+(n-1),Tool(n)\MenuName) EndIf Next N EndIf EndProcedure Procedure LoadTools() ;load tools from INI file TotalTools= INI_ReadInteger("Settings","Tools",0 ) If TotalTools For N=1 To TotalTools sect$="Tool"+Str(N) Tool(N)\FullName= INI_ReadString(sect$, "FullName", "mspaint.exe") Tool(N)\MenuName= INI_ReadString(sect$, "MenuName", "Paint") Tool(N)\Pars= INI_ReadString(sect$, "Pars", "") Tool(N)\OpenExt= INI_ReadString(sect$, "Opens", "") Tool(n)\NewExt= INI_ReadString(sect$, "NewExt", "") Tool(n)\RClick= INI_ReadInteger(sect$, "RClick", 0) Tool(n)\Change= INI_ReadInteger(sect$, "Change", 0) Tool(n)\CLine= INI_ReadInteger(sect$, "CLine", 0) Tool(n)\CAll= INI_ReadInteger(sect$, "CAll", 0) Tool(n)\Paste= INI_ReadInteger(sect$, "Paste", 0) Tool(n)\AppWait= INI_ReadInteger(sect$, "Wait", 0) Tool(n)\MenuIndex=INI_ReadInteger(sect$, "Index", 0) Tool(n)\UID=N Next N Else ;load default tools ;autoload all Waffle's Public Tools ;AddNotePad found.l=0 For n=1 To TotalTools If FindString(UCase(Tool(n)\FullName),"NOTEPAD.EXE",1) found=1 Break EndIf Next n If found=0 If TotalTools<20 TotalTools + 1 Tool(TotalTools)\NewFlag=1 Tool(TotalTools)\FullName="notepad.exe" Tool(TotalTools)\MenuName="NotePad" Tool(TotalTools)\Pars="" Tool(TotalTools)\OpenExt="txt" Tool(TotalTools)\NewExt="" Tool(TotalTools)\RClick=0 Tool(TotalTools)\Change=0 Tool(TotalTools)\CLine=0 Tool(TotalTools)\CAll=0 Tool(TotalTools)\Paste=0 Tool(TotalTools)\AppWait=0 Tool(TotalTools)\MenuIndex=TotalTools EndIf EndIf ;add Calculator found.l=0 For n=1 To TotalTools If FindString(UCase(Tool(n)\FullName),"CALC.EXE",1) found=1 Break EndIf Next n If found=0 If TotalTools<20 TotalTools + 1 Tool(TotalTools)\NewFlag=1 Tool(TotalTools)\FullName="calc.exe" Tool(TotalTools)\MenuName="Calculator" Tool(TotalTools)\Pars="" Tool(TotalTools)\OpenExt="" Tool(TotalTools)\NewExt="" Tool(TotalTools)\RClick=0 Tool(TotalTools)\Change=0 Tool(TotalTools)\CLine=0 Tool(TotalTools)\CAll=0 Tool(TotalTools)\Paste=0 Tool(TotalTools)\AppWait=0 Tool(TotalTools)\MenuIndex=TotalTools EndIf EndIf ;AddMSPaint found.l=0 For n=1 To TotalTools If FindString(UCase(Tool(n)\FullName),"MSPAINT.EXE",1) found=1 Break EndIf Next n If found=0 If TotalTools<20 TotalTools + 1 Tool(TotalTools)\NewFlag=1 Tool(TotalTools)\FullName="mspaint.exe" Tool(TotalTools)\MenuName="Paint Brush" Tool(TotalTools)\Pars="" Tool(TotalTools)\OpenExt="bmp,jpg,gif" Tool(TotalTools)\NewExt="" Tool(TotalTools)\RClick=0 Tool(TotalTools)\Change=0 Tool(TotalTools)\CLine=0 Tool(TotalTools)\CAll=0 Tool(TotalTools)\Paste=0 Tool(TotalTools)\AppWait=0 Tool(TotalTools)\MenuIndex=TotalTools EndIf EndIf ;AddMSSoundRec found.l=0 For n=1 To TotalTools If FindString(UCase(Tool(n)\FullName),"SNDREC32.EXE",1) found=1 Break EndIf Next n If found=0 If TotalTools<20 TotalTools + 1 Tool(TotalTools)\NewFlag=1 Tool(TotalTools)\FullName="sndrec32.exe" Tool(TotalTools)\MenuName="Sound Recorder" Tool(TotalTools)\Pars="" Tool(TotalTools)\OpenExt="wav" Tool(TotalTools)\NewExt="" Tool(TotalTools)\RClick=0 Tool(TotalTools)\Change=0 Tool(TotalTools)\CLine=0 Tool(TotalTools)\CAll=0 Tool(TotalTools)\Paste=0 Tool(TotalTools)\AppWait=0 Tool(TotalTools)\MenuIndex=TotalTools EndIf EndIf ;AddWaffleMat found.l=0 For n=1 To TotalTools If FindString(UCase(Tool(n)\FullName),"WAFFLEMAT.EXE",1) found=1 Break EndIf Next n If found=0 If TotalTools<20 TotalTools + 1 Tool(TotalTools)\NewFlag=1 Tool(TotalTools)\FullName=runpath+"wafflemat.exe" Tool(TotalTools)\MenuName="Waffle Matrix Ed" Tool(TotalTools)\Pars="" Tool(TotalTools)\OpenExt="wmt" Tool(TotalTools)\NewExt="" Tool(TotalTools)\RClick=0 Tool(TotalTools)\Change=0 Tool(TotalTools)\CLine=0 Tool(TotalTools)\CAll=0 Tool(TotalTools)\Paste=0 Tool(TotalTools)\AppWait=0 Tool(TotalTools)\MenuIndex=TotalTools EndIf EndIf ;AddWaffleViewer found.l=0 For n=1 To TotalTools If FindString(UCase(Tool(n)\FullName),"XVIEWER3.EXE",1) found=1 Break EndIf Next n If found=0 If TotalTools<20 TotalTools + 1 Tool(TotalTools)\NewFlag=1 Tool(TotalTools)\FullName=runpath+"xviewer3.exe" Tool(TotalTools)\MenuName="Waffle Model Viewer" Tool(TotalTools)\Pars="" Tool(TotalTools)\OpenExt="x,3ds" Tool(TotalTools)\NewExt="" Tool(TotalTools)\RClick=0 Tool(TotalTools)\Change=0 Tool(TotalTools)\CLine=0 Tool(TotalTools)\CAll=0 Tool(TotalTools)\Paste=0 Tool(TotalTools)\AppWait=0 Tool(TotalTools)\MenuIndex=TotalTools EndIf If TotalTools<20 TotalTools + 1 Tool(TotalTools)\NewFlag=1 Tool(TotalTools)\FullName=runpath+"xviewer3.exe" Tool(TotalTools)\MenuName="Waffle Model Adder" Tool(TotalTools)\Pars="-P %P" Tool(TotalTools)\OpenExt="" Tool(TotalTools)\NewExt="" Tool(TotalTools)\RClick=0 Tool(TotalTools)\Change=0 Tool(TotalTools)\CLine=0 Tool(TotalTools)\CAll=0 Tool(TotalTools)\Paste=0 Tool(TotalTools)\AppWait=0 Tool(TotalTools)\MenuIndex=TotalTools EndIf EndIf EndIf ToolMenu() EndProcedure Procedure.l SetupTool(Index) If Index=0 ProcedureReturn 0 EndIf If Index > 20 MessageBox_(WindowID(#WINDOW),"Maximum number of tools limited to 20. Please delete one before adding more.",MyTittle,#MB_ICONSTOP) ProcedureReturn 0 EndIf reply.l=0 win=OpenWindow(#PB_Any, 344, 210, 354, 156, "Tool settings", #PB_Window_TitleBar | #PB_Window_ScreenCentered ) If win If CreateGadgetList(WindowID(win)) If Tool(Index)\FullName BFN.l=ButtonGadget(#PB_Any, 100, 10, 100, 20, GetFilePart(Tool(Index)\FullName)) oldFN.s=Tool(Index)\FullName Else BFN.l=ButtonGadget(#PB_Any, 100, 10, 100, 20, "FileName") EndIf GadgetToolTip(BFN, "Filename of tool") If Tool(Index)\MenuName SMN.l=StringGadget(#PB_Any, 100, 40, 100, 20, Tool(Index)\MenuName) oldMN.s=Tool(Index)\MenuName Else SMN.l=StringGadget(#PB_Any, 100, 40, 100, 20, "Menu"+Str(Index)) EndIf GadgetToolTip(SMN, "Name in menu") SCL.l=StringGadget(#PB_Any, 100, 70, 100, 20, Tool(Index)\Pars) GadgetToolTip(SCL, "Commanline options used for tool") TextGadget(#PB_Any, 10, 10, 50, 20, "FileName") TextGadget(#PB_Any, 10, 40, 70, 20, "Menu Name") TextGadget(#PB_Any, 10, 70, 70, 20, "Commandline") CRC.l=CheckBoxGadget(#PB_Any, 10, 100, 90, 20, "Context Open") GadgetToolTip(CRC, "Check to open files under cursor") SetGadgetState(CRC,Tool(Index)\RClick) SRC.l=StringGadget(#PB_Any, 100, 100, 100, 20, Tool(Index)\OpenExt) GadgetToolTip(SRC, "File types to open if under cursor") CCL.l=CheckBoxGadget(#PB_Any, 210, 10, 100, 20, "Copy current line") GadgetToolTip(CCL, "Copy current line to clipboard") SetGadgetState(CCL,Tool(Index)\CLine) CCA.l=CheckBoxGadget(#PB_Any, 210, 40, 100, 20, "Copy All") GadgetToolTip(CCA, "Copy document to clipboard") SetGadgetState(CCA,Tool(Index)\CAll) CPC.l=CheckBoxGadget(#PB_Any, 210, 70, 100, 20, "Paste Clipboard") GadgetToolTip(CPC, "Copy clipboard to document") SetGadgetState(CPC,Tool(Index)\Paste) CWE.l=CheckBoxGadget(#PB_Any, 210, 100, 90, 20, "Wait for Exit") GadgetToolTip(CWE, "Wait tool to exit before continue") SetGadgetState(CWE,Tool(Index)\AppWait) BOK.l=ButtonGadget(#PB_Any, 310, 10, 40, 30, "OK") GadgetToolTip(BOK, "Save changes") BCX.l=ButtonGadget(#PB_Any, 310, 120, 40, 30, "Cancel") GadgetToolTip(BCX, "Cancel Changes") BHP.l=ButtonGadget(#PB_Any, 310, 50, 40, 30, "Help") GadgetToolTip(BHP, "IDE Tool Help") CCE.l=CheckBoxGadget(#PB_Any, 10, 130, 70, 20, "Change Ext") GadgetToolTip(CCE, "Change file extension") SetGadgetState(CCE,Tool(Index)\Change) SCE.l=StringGadget(#PB_Any, 100, 130, 100, 20, Tool(Index)\NewExt) GadgetToolTip(SCE, "Replacement File Extension") TextGadget(#PB_Any, 210, 130, 30, 20, "Index") SMI.l=StringGadget(#PB_Any, 240, 130, 30, 20, Str(Index)) GadgetToolTip(SMI, "Order for menu display") BDI.l=ButtonGadget(#PB_Any, 270, 130, 30, 20, "Def") GadgetToolTip(BDI, "Restore default Index value") ; make as popup window StickyWindow(win,1) DisableWindow(#Window,1) Repeat WE=WaitWindowEvent() If WE=#PB_Event_Gadget Select EventGadget() Case BFN ;browse for tool If oldfn oldfn=OpenFileRequester("Browse for Tool",oldfn,EXEPattern,0) If oldfn="" oldfn=Tool(Index)\FullName EndIf Else oldfn=OpenFileRequester("Browse for Tool",RunPath+"*.exe",EXEPattern,0) EndIf If oldfn SetGadgetText(BFN,GetFilePart(oldfn)) If oldmn="" temp.s=GetFilePart(oldfn) temp=Left(temp,Len(temp)-Len(GetExtensionPart(temp))-1) SetGadgetText(SMN,temp) EndIf EndIf Case BOK ;save changes Tool(index)\FullName= oldfn Tool(Index)\MenuName= GetGadgetText(SMN) Tool(Index)\Pars= GetGadgetText(SCL) Tool(Index)\OpenExt= GetGadgetText(SRC) Tool(Index)\NewExt= GetGadgetText(SCE) Tool(Index)\RClick= GetGadgetState(CRC) Tool(Index)\Change= GetGadgetState(CCE) Tool(Index)\CLine= GetGadgetState(CCL) Tool(Index)\CAll= GetGadgetState(CCA) Tool(Index)\Paste= GetGadgetState(CPC) Tool(Index)\AppWait= GetGadgetState(CWE) Tool(Index)\MenuIndex=Val(GetGadgetText(SMI)) reply=1 Break Case BCX ;cancel changes If Index>TotalTools CopyStructA2B(@Tool(0),@Tool(Index),ToolStruct) EndIf Break Case BHP ;help ShowMyHelp(win,"#ToolSetup") Case BDI ;default index SetGadgetText(SMI,Str(Index)) EndSelect EndIf Until WE=#PB_Event_CloseWindow ;done StickyWindow(win,0) DisableWindow(#Window,0) EndIf CloseWindow(win) EndIf ProcedureReturn reply EndProcedure Procedure FillLIG(LIG) For N=1 To TotalTools msg$=Tool(N)\MenuName+Chr(10) msg$=msg$+Tool(N)\FullName+Chr(10) msg$=msg$+Tool(N)\Pars Tool(N)\MenuIndex=N If Tool(N)\DelFlag=0 If Tool(N)\IconID AddGadgetItem(LIG,N-1,msg$,ImageID(Tool(N)\IconID)) SetGadgetItemData(LIG,N-1,Tool(N)\UID) Else ;CallDebugger ExtractIconEx_(Tool(N)\FullName, 0, 0, @icon, 1) If icon Tool(N)\IconID=CreateImage(#PB_Any,32,32) StartDrawing(ImageOutput(Tool(N)\IconID)) DrawImage(icon, 0, 0,32,32) DestroyIcon_(icon) StopDrawing() AddGadgetItem(LIG,N-1,msg$,ImageID(Tool(N)\IconID)) SetGadgetItemData(LIG,N-1,Tool(N)\UID) Else AddGadgetItem(LIG,N-1,msg$) SetGadgetItemData(LIG,N-1,Tool(N)\UID) EndIf EndIf EndIf Next N EndProcedure Procedure ManageTools() win=OpenWindow(#PB_Any, 269, 244, 478, 283, "Waffle's IDE User Tools", #PB_Window_TitleBar | #PB_Window_ScreenCentered ) If win If CreateGadgetList(WindowID(win)) LIG.l=ListIconGadget(#PB_Any, 10, 10, 410, 270, "Menu", 100,#PB_ListIcon_GridLines | #PB_ListIcon_FullRowSelect) AddGadgetColumn(LIG,1,"FileName",100) AddGadgetColumn(LIG,2,"Commandline",100) BAdd.l=ButtonGadget(#PB_Any, 430, 10, 40, 30, "Add") GadgetToolTip(BAdd, "Add a new Tool") BDel.l=ButtonGadget(#PB_Any, 430, 50, 40, 30, "Del") GadgetToolTip(BDel, "Delete Existing Tool") BEdit.l=ButtonGadget(#PB_Any, 430, 90, 40, 30, "Edit") GadgetToolTip(BEdit, "Edit Tool Settings") BWAF.l=ButtonGadget(#PB_Any, 430, 130, 40, 30, "Default") GadgetToolTip(BWAF, "Add Waffle's Default Tools") BHelp.l=ButtonGadget(#PB_Any, 430, 170, 40, 30, "Help") GadgetToolTip(BHelp, "IDE Tool Help") BCanX.l=ButtonGadget(#PB_Any, 430, 210, 40, 30, "Cancel") GadgetToolTip(BCanX, "Cancel Changes") BOK.l=ButtonGadget(#PB_Any, 430, 250, 40, 30, "OK", #PB_Button_Default) GadgetToolTip(BOK, "Save Changes") ; populate the LIG If TotalTools FillLIG(LIG) EndIf ; make as popup window StickyWindow(win,1) DisableWindow(#Window,1) DelFlag.l=0 NewFlag.l=0 Repeat WE=WaitWindowEvent() If WE=#PB_Event_Gadget Select EventGadget() Case BAdd StickyWindow(win,0) If SetupTool(TotalTools + 1) NewFlag=1 TotalTools + 1 Tool(TotalTools)\NewFlag=1 Tool(TotalTools)\UID=GetTickCount_() ExtractIconEx_(Tool(TotalTools)\FullName, 0, 0, @icon, 1) If icon Tool(TotalTools)\IconID=CreateImage(#PB_Any,32,32) StartDrawing(ImageOutput(Tool(TotalTools)\IconID)) DrawImage(icon, 0, 0,32,32) DestroyIcon_(icon) StopDrawing() EndIf If Tool(TotalTools)\MenuIndex < TotalTools S.l=Tool(TotalTools)\MenuIndex If S<1 S=1 Tool(TotalTools)\MenuIndex=1 EndIf For N=S To TotalTools - 1 Tool(N)\MenuIndex=N+1 Next N EndIf SortStructuredArray(Tool(),0, OffsetOf(ToolStruct\MenuIndex), #PB_Sort_Long, 1, TotalTools) ClearGadgetItemList(LIG) FillLIG(LIG) EndIf StickyWindow(win,1) Case BDel DelFlag.l=1 GS.l=GetGadgetState(LIG) For N=1 To TotalTools If Tool(N)\UID=GetGadgetItemData(LIG,GS) RemoveGadgetItem(LIG,GS) Tool(N)\DelFlag=1 ForceFreeImage(Tool(N)\IconID) CopyStructA2B(@Tool(TotalTools),@Tool(N),ToolStruct) CopyStructA2B(@Tool(0),@Tool(TotalTools),ToolStruct) TotalTools-1 Break EndIf Next N Case BEdit GS.l=GetGadgetState(LIG) If GS>-1 For TID=1 To TotalTools If Tool(TID)\UID=GetGadgetItemData(LIG,GS) oldindex=Tool(TID)\MenuIndex StickyWindow(win,0) If SetupTool(TID) If Tool(TID)\MenuIndex <> oldindex If Tool(TID)\OldIndex = 0 Tool(TID)\OldIndex=oldindex EndIf If Tool(TID)\MenuIndex<1 Tool(TID)\MenuIndex EndIf If Tool(TID)\MenuIndex0 hMenu=MenuID(#MENU) hSub=GetSubMenu_(hMenu,0) If MenuChanged=0 ;insert the new sub menu here .... MID=CreatePopupMenu(#PB_Any) MenuItem(#MENU_FILE1,"First File") InsertMenu_(hSub,6,#MF_POPUP|#MF_BYPOSITION ,MenuID(MID),"Recent Files") MenuChanged=1 EndIf hsub2=GetSubMenu_(hsub,6) max=GetMenuItemCount_(hSub2) For n=1 To TotalPFiles If n>max AppendMenu_(hSub2,#MF_STRING,#MENU_FILE1+(n-1),PrevName(n)) Else SetMenuItemText(#MENU,#MENU_FILE1+(n-1),PrevName(n)) EndIf Next n EndIf EndProcedure Procedure ShiftRecentFiles() For N=10 To 1 Step -1 PrevFile(N)=PrevFile(N-1) PrevName(N)=PrevName(N-1) INI_WriteString( "Files","File"+Str(N),PrevFile(N)) Next N TotalPFiles + 1 If TotalPFiles>10 INI_WriteInteger( "Settings","Files",10 ) TotalPFiles=10 Else INI_WriteInteger( "Settings","Files",TotalPFiles ) EndIf UpdateRecentFiles() EndProcedure Procedure SwopFiles(FN.s) ;this checks if FN matches the list LFN$=LCase(FN) If GetFilePart(FN)=FN MessageBox_(WindowID(#WINDOW),"Invalid swop file"+Chr(10)+FN,"Waffle IDE Error",#MB_ICONSTOP) CallDebugger For N=1 To 10 If LFN$=LCase(GetFilePart(PrevFile(N))) ;now move to first list PrevFile(0)=PrevFile(N) PrevName(0)=PrevName(N) ;now shift up to fill gap For F=N To 1 Step -1 PrevFile(F)=PrevFile(F-1) PrevName(F)=PrevName(F-1) INI_WriteString( "Files","File"+Str(F),PrevFile(F)) Next F UpdateRecentFiles() ProcedureReturn EndIf Next N ;filenot found MessageBox_(WindowID(#WINDOW),"Swop file not found"+Chr(10)+FN,"Waffle IDE Error",#MB_ICONSTOP) PrevFile(0)=FN PrevName(0)=GetFilePart(FN) ShiftRecentFiles() Else For N=1 To 10 If LFN$=LCase(PrevFile(N)) ;now move to first list PrevFile(0)=PrevFile(N) PrevName(0)=PrevName(N) ;now shift up to fill gap For F=N To 1 Step -1 PrevFile(F)=PrevFile(F-1) PrevName(F)=PrevName(F-1) INI_WriteString( "Files","File"+Str(F),PrevFile(F)) Next F UpdateRecentFiles() ProcedureReturn EndIf Next N ;filenot found PrevFile(0)=FN PrevName(0)=GetFilePart(FN) ShiftRecentFiles() EndIf EndProcedure Procedure LoadPrevFiles() ;this loads filenames from INI file ;if any are present, we update the menu TotalPFiles=INI_ReadInteger( "Settings","Files",0 ) If TotalPFiles>10 INI_WriteInteger("Settings","Files",10) TotalPFiles=10 EndIf For F=1 To 10 PrevFile(F)= INI_ReadString("Files","File"+Str(F),"") PrevName(F)= GetFilePart(PrevFile(F)) Next F If TotalPFiles UpdateRecentFiles() EndIf EndProcedure Procedure LoadINI() LoadPrevFiles() LoadTools() If DBCHelpFile="" DBCHelpFile=INI_ReadString("Settings","DBCHelp","") If DBCHelpFile="" DBCHelpFile=OpenFileRequester("Browse for DBC Help File",RunPath+"menu.htm",HTMLPattern,0) If DBCHelpFile INI_WriteString("Settings","DBCHelp",DBCHelpFile) EndIf EndIf Else INI_WriteString("Settings","DBCHelp",DBCHelpFile) EndIf If Compiler="" Compiler=INI_ReadString("Settings","Compiler","") If Compiler="" Compiler=OpenFileRequester("Browse for DBC Compiler",GetPathPart(DBCHelpFile)+"DB.exe",EXEPattern,0) If Compiler INI_WriteString("Settings","Compiler",Compiler) EndIf EndIf Else INI_WriteString("Settings","Compiler",Compiler) EndIf EndProcedure Procedure ShowDirectives() win.l=OpenWindow(#PB_Any, 252, 146, 536, 258, "Compiler Directives", #PB_Window_TitleBar | #PB_Window_WindowCentered ) If win If CreateGadgetList(WindowID(win)) EDir.l=CheckBoxGadget(#PB_Any, 20, 120, 100, 20, "Enable Directives") GadgetToolTip(EDir, "Enable the use of Compiler Directives") UIcon.l=CheckBoxGadget(#PB_Any, 20, 90, 70, 20, "Use Icon") GadgetToolTip(UIcon, "Change Icon used (requires ResHack)") Browse.l=ButtonGadget(#PB_Any, 130, 90, 140, 20, "Browse") GadgetToolTip(Browse, "Search for Icon to use") FTC.l=ListViewGadget(#PB_Any, 300, 60, 170, 150) GadgetToolTip(FTC, "List of files to compress") AddFTC.l=ButtonGadget(#PB_Any, 300, 220, 50, 20, "Add") GadgetToolTip(AddFTC, "Add additional files to compress") DelFTC.l=ButtonGadget(#PB_Any, 420, 220, 50, 20, "Remove") GadgetToolTip(DelFTC, "Remove files from compression") DCT.l=CheckBoxGadget(#PB_Any, 30, 140, 80, 20, "CompilerTime") GadgetToolTip(DCT, "Store date/time information") DCS.l=CheckBoxGadget(#PB_Any, 30, 160, 80, 20, "CompilerBuild") GadgetToolTip(DCS, "Store compilier build mode (exe or final)") DCC.l=CheckBoxGadget(#PB_Any, 30, 220, 90, 20, "CompilerCustom") GadgetToolTip(DCC, "Add custom settings") VCD.l=ListViewGadget(#PB_Any, 130, 120, 140, 90) GadgetToolTip(VCD, "Custom Variables to add to build") AddCD.l=ButtonGadget(#PB_Any, 130, 220, 40, 20, "Add") GadgetToolTip(AddCD, "Add a new directive") DelCD.l=ButtonGadget(#PB_Any, 230, 220, 40, 20, "Del") GadgetToolTip(DelCD, "Delete a directive") CMode.l=ComboBoxGadget(#PB_Any, 300, 30, 170, 20) AddGadgetItem(CMode,-1,"No Compression") AddGadgetItem(CMode,-1,"Compress on EXE build only") AddGadgetItem(CMode,-1,"Compress on Final builds") AddGadgetItem(CMode,-1,"Compress on ALL builds") AddGadgetItem(CMode,-1,"Make Run Time Compression") AddGadgetItem(CMode,-1,"Make Stripped Compression") AddGadgetItem(CMode,-1,"Make Compressed Patch") GadgetToolTip(CMode, "Set Compression Mode") EditCD.l=ButtonGadget(#PB_Any, 180, 220, 40, 20, "Edit") GadgetToolTip(EditCD, "Edit a directive setting") OK.l=ButtonGadget(#PB_Any, 490, 20, 40, 40, "OK") GadgetToolTip(OK, "Save changes") Help.l=ButtonGadget(#PB_Any, 490, 70, 40, 40, "Help") GadgetToolTip(Help, "Request Help") Cancel.l=ButtonGadget(#PB_Any, 490, 200, 40, 40, "Cancel") GadgetToolTip(Cancel, "Cancel Changes") ;new additions UEXE.l=CheckBoxGadget(#PB_Any, 20, 30, 100, 20, "EXE Name") GadgetToolTip(UEXE, "Use Custom EXE name") UEXEName.l=StringGadget(#PB_Any, 130, 30, 140, 20, "") GadgetToolTip(UEXEName, "EXE name for build mode") UCL.l=CheckBoxGadget(#PB_Any, 20, 60, 90, 20, "Command Line") GadgetToolTip(UCL, "Use commandline during testing") UCLText.l=StringGadget(#PB_Any, 130, 60, 140, 20, "") GadgetToolTip(UCLText, "Command Line to use during testing") Frame3DGadget(#PB_Any, 10, 10, 270, 240, "Compiler Directives") UDebug.l=CheckBoxGadget(#PB_Any, 30, 180, 90, 20, "CompilerDebug") GadgetToolTip(UDebug, "Save Debug Settings") AutoPack.l=CheckBoxGadget(#PB_Any, 30, 200, 90, 20, "CompilerPack") GadgetToolTip(AutoPack, "Save Compression Settings") Frame3DGadget(#PB_Any, 290, 10, 190, 240, "Compression Options") Pack.l=ButtonGadget(#PB_Any, 360, 220, 50, 20, "Pack") GadgetToolTip(Pack, "Make a compressed file now") StickyWindow(win,1) DisableWindow(#Window,1) ;- Load Directives PFN.s=Left(MDIWindow()\FullName,Len(MDIWindow()\FullName)-Len(GetExtensionPart(MDIWindow()\FullName))) PFN=PFN+"dir" If OpenPreferences(pfn)=0 CreatePreferences(Pfn) EndIf PreferenceGroup("Compiler") SetGadgetState(EDir,ReadPreferenceLong("Enable",0)) SetGadgetState(DCT,ReadPreferenceLong("Time",0)) SetGadgetState(DCS,ReadPreferenceLong("Build",0)) SetGadgetState(DCC,ReadPreferenceLong("Custom",0)) ;new options SetGadgetState(UEXE,ReadPreferenceLong("UseEXE",0)) SetGadgetText(UEXEName,ReadPreferenceString("EXEName","")) SetGadgetState(UCL,ReadPreferenceLong("UseCL",0)) SetGadgetText(UCLText,ReadPreferenceString("CommandLine","")) SetGadgetState(UDebug,ReadPreferenceLong("SaveDebug",0)) SetGadgetState(AutoPack,ReadPreferenceLong("AutoPack",0)) If GetGadgetState(UEXE)=0 DisableGadget(UEXEName,1) EndIf If GetGadgetState(UCL)=0 DisableGadget(UCLText,1) EndIf DCount.l=ReadPreferenceLong("Count",0) If DCount PreferenceGroup("Custom") For N=1 To DCount AddGadgetItem(VCD,-1,ReadPreferenceString("Dir"+Str(N),"Custom"+Str(N)+"(1)=1")) Next N EndIf If GetGadgetState(EDir)=0 DisableGadget(DCT,1) DisableGadget(DCS,1) DisableGadget(DCC,1) DisableGadget(VCD,1) DisableGadget(AddCD,1) DisableGadget(DelCD,1) DisableGadget(EditCD,1) DisableGadget(UDebug,1) DisableGadget(AutoPack,1) ElseIf GetGadgetState(DCC)=0 DisableGadget(VCD,1) DisableGadget(AddCD,1) DisableGadget(DelCD,1) DisableGadget(EditCD,1) EndIf PreferenceGroup("Icon") SetGadgetState(UIcon,ReadPreferenceLong("Use",0)) IFN.s=ReadPreferenceString("Icon","") If IFN="" SetGadgetText(Browse,"Browse") Else SetGadgetText(Browse,GetFilePart(IFN)) EndIf If GetGadgetState(UIcon)=0 DisableGadget(Browse,1) EndIf PreferenceGroup("Compress") SetGadgetState(CMode,ReadPreferenceLong("Mode",0)) FCount.l=ReadPreferenceLong("Count",0) If FCount For N=1 To FCount AddElement(FileList()) FileList()=ReadPreferenceString("File"+Str(N),"File"+Str(N)) AddGadgetItem(FTC,-1,GetFilePart(FileList())) Next N EndIf If GetGadgetState(CMode)=0 DisableGadget(FTC,1) DisableGadget(AddFTC,1) DisableGadget(DelFTC,1) DisableGadget(Pack,1) EndIf Repeat WE=WaitWindowEvent() If WE=#PB_Event_Gadget Select EventGadget() Case UIcon DisableGadget(Browse,1-GetGadgetState(UIcon)) Case Browse If IFN="" FN.s=OpenFileRequester("Browse for Icon",GetPathPart(PFN)+"Icon.ico","Icons (*.ico)|*.ico|All Files *.*|*.*",0) Else FN=OpenFileRequester("Browse for Icon",IFN,"Icons (*.ico)|*.ico|All Files *.*|*.*",0) EndIf If FN IFN=FN SetGadgetText(Browse,GetFilePart(IFN)) EndIf Case UEXE DisableGadget(UEXEName,1-GetGadgetState(UEXE)) Case UCL DisableGadget(UCLText,1-GetGadgetState(UCL)) Case EDir IIf(GetGadgetState(EDir),DM=0,DM=1) DisableGadget(DCT,DM) DisableGadget(DCS,DM) DisableGadget(DCC,DM) DisableGadget(UDebug,DM) DisableGadget(AutoPack,DM) If DM=0 DM=1-GetGadgetState(DCC) EndIf DisableGadget(VCD,DM) DisableGadget(AddCD,DM) DisableGadget(DelCD,DM) DisableGadget(EditCD,DM) Case DCC DM=1-GetGadgetState(DCC) DisableGadget(VCD,DM) DisableGadget(AddCD,DM) DisableGadget(DelCD,DM) DisableGadget(EditCD,DM) Case AddCD FN.s=InputRequester("Compiler Directives","Add New Directive","CompilerCustom(1)=1") If FN AddGadgetItem(VCD,-1,FN) EndIf Case DelCD Item=GetGadgetState(VCD) If Item>=0 RemoveGadgetItem(VCD,Item) EndIf Case EditCD Item=GetGadgetState(VCD) If Item>=0 FN.s=InputRequester("Compiler Directives","Edit Directive",GetGadgetItemText(VCD,Item)) If FN SetGadgetItemText(VCD,Item,FN) EndIf EndIf Case CMode ;change enable settings IIF(GetGadgetState(CMode),DM=0,DM=1) DisableGadget(FTC,DM) DisableGadget(AddFTC,DM) DisableGadget(DelFTC,DM) DisableGadget(Pack,DM) Case AddFTC FN.s=OpenFileRequester("Browse for file to compress",GetPathPart(PFN)+"*.*",EXEPattern,2,#PB_Requester_MultiSelection) While FN LastElement(FileList()) AddElement(FileList()) FileList()=FN AddGadgetItem(FTC,-1,GetFilePart(FN)) FN=NextSelectedFileName() Wend Case DelFTC Item=GetGadgetState(FTC) If Item>=0 SelectElement(FileList(),Item) Debug "Erasing "+FileList() DeleteElement(FileList()) RemoveGadgetItem(FTC,Item) EndIf Case Pack ;- Dir Pack Button StickyWindow(win,0) DisableWindow(win,1) LastElement(FileList()) AddElement(FileList()) If GetGadgetState(UEXE) ;FileList()=GetGadgetText(UEXEName) FileList()=GetPathPart(MDIWindow()\FullName)+GetGadgetText(UEXEName) Else FileList()=Left(MDIWindow()\FullName,Len(MDIWindow()\FullName)-Len(GetExtensionPart(MDIWindow()\FullName)))+"exe" EndIf ;CallDebugger ;Compress("P"+Left(MDIWindow()\FullName,Len(MDIWindow()\FullName)-Len(GetExtensionPart(MDIWindow()\FullName)))+"exe",GetGadgetState(CMode)) Compress(NewFileName(FileList(),"P"+GetFilePart(FileList())),GetGadgetState(CMode),1) LastElement(FileList()) DeleteElement(FileList()) StickyWindow(win,1) DisableWindow(win,0) Case OK ;save settings and exit PreferenceGroup("Compiler") WritePreferenceLong("Enable",GetGadgetState(EDir)) WritePreferenceLong("UseEXE",GetGadgetState(UEXE)) WritePreferenceLong("UseCL",GetGadgetState(UCL)) WritePreferenceLong("SaveDebug",GetGadgetState(UDebug)) WritePreferenceString("EXEName",GetGadgetText(UEXEName)) WritePreferenceString("CommandLine",GetGadgetText(UCLText)) WritePreferenceLong("Time",GetGadgetState(DCT)) WritePreferenceLong("Build",GetGadgetState(DCS)) WritePreferenceLong("AutoPack",GetGadgetState(AutoPack)) WritePreferenceLong("Custom",GetGadgetState(DCC)) DCount=CountGadgetItems(VCD) WritePreferenceLong("Count",DCount) If DCount PreferenceGroup("Custom") For N=1 To DCount WritePreferenceString("Dir"+Str(N),GetGadgetItemText(VCD,N-1)) Next N EndIf PreferenceGroup("Icon") WritePreferenceLong("Use",GetGadgetState(UIcon)) WritePreferenceString("Icon",IFN) PreferenceGroup("Compress") WritePreferenceLong("Mode",GetGadgetState(CMode)) FCount=CountList(FileList()) WritePreferenceLong("Count",FCount) If FCount ResetList(FileList()) For N=1 To FCount NextElement(FileList()) WritePreferenceString("File"+Str(N),FileList()) ;writePreferenceString("File"+Str(N),GetGadgetItemText(FTC,N-1)) Next N EndIf Break Case Help ShowMyHelp(win,"#Directives") Case Cancel Break EndSelect EndIf ForEver DisableWindow(#Window,0) ClosePreferences() CloseWindow(win) ClearList(FileList()) EndIf EndIf EndProcedure ;- Main Loop LoadINI() PC=CountProgramParameters() If PC PC-1 For N=0 To PC FN.s=FN+ProgramParameter(N) If N -1 Anchor.l = SCI_GetAnchor(MDIWindow()\EditorGadget) SCI_SetTargetStart(MDIWindow()\EditorGadget,start-1) L=SCI_LineFromPosition(MDIWindow()\EditorGadget,Anchor)+1 Anchor=SCI_PositionFromLine(MDIWindow()\EditorGadget,L)-1 SCI_SetTargetEnd(MDIWindow()\EditorGadget,Anchor) SCI_ReplaceTarget(MDIWindow()\EditorGadget,Len(RText),@RText) current=Anchor Else Break EndIf ForEver SCI_SetSel(MDIWindow()\EditorGadget,oldpos,oldpos) SCI_SetCurrentPos(MDIWindow()\EditorGadget,oldpos) EndIf EndIf EndIf Case #Menu_SetBreak WinID=GetGadgetState(#Gadget_MDI) If WinID FindLinkList(MDIWindow(),MDIWindow()\WindowID = WinID ) If ValidIndex( MDIWindow() ) If MDIWindow()\MDIType=#MDI_CODE L=SCI_LineFromPosition(MDIWindow()\EditorGadget,SCI_GetCurrentPos(MDIWindow()\EditorGadget)) msg.s="Break "+Chr(34)+Str(L+1)+" "+MDIWindow()\FileName+Chr(34)+NLChar SCI_InsertText(MDIWindow()\EditorGadget,SCI_Positionfromline(MDIWindow()\EditorGadget,L),@msg) EndIf EndIf EndIf Case #Menu_ClearLog WinID=GetGadgetState(#Gadget_MDI) If WinID FindLinkList(MDIWindow(),MDIWindow()\WindowID = WinID ) If ValidIndex( MDIWindow() ) If MDIWindow()\MDIType=#MDI_CODE oldpos=SCI_GetCurrentPos(MDIWindow()\EditorGadget) RText.s="" SText.s="`LOGPOINT" current.l = 0 Repeat SCI_SetAnchor(MDIWindow()\EditorGadget, current) SCI_SearchAnchor(MDIWindow()\EditorGadget) start.l = SCI_SearchNext(MDIWindow()\EditorGadget, 0, @SText) If start <> -1 Anchor.l = SCI_GetAnchor(MDIWindow()\EditorGadget) SCI_SetTargetStart(MDIWindow()\EditorGadget,start-1) L=SCI_LineFromPosition(MDIWindow()\EditorGadget,Anchor)+6 Anchor=SCI_PositionFromLine(MDIWindow()\EditorGadget,L)-1 SCI_SetTargetEnd(MDIWindow()\EditorGadget,Anchor) SCI_ReplaceTarget(MDIWindow()\EditorGadget,Len(RText),@RText) current=Anchor Else Break EndIf ForEver SCI_SetSel(MDIWindow()\EditorGadget,oldpos,oldpos) SCI_SetCurrentPos(MDIWindow()\EditorGadget,oldpos) EndIf EndIf EndIf Case #Menu_SetLog WinID=GetGadgetState(#Gadget_MDI) If WinID FindLinkList(MDIWindow(),MDIWindow()\WindowID = WinID ) If ValidIndex( MDIWindow() ) If MDIWindow()\MDIType=#MDI_CODE ;create log point L=SCI_LineFromPosition(MDIWindow()\EditorGadget,SCI_GetCurrentPos(MDIWindow()\EditorGadget)) msg.s="`LOGPOINT"+NLChar msg=msg+"`MSG$=GET CLIPBOARD$()"+NLChar msg=msg+"MSG$="+Chr(34)+" "+Str(L)+" "+MDIWindow()\FileName+Chr(34)+NLChar msg=msg+"MSG$=MSG$+CHR$(10)"+NLChar msg=msg+"WRITE TO CLIPBOARD MSG$"+NLChar msg=msg+"`ENDLOGPOINT" SCI_InsertText(MDIWindow()\EditorGadget,SCI_Positionfromline(MDIWindow()\EditorGadget,L),@msg) EndIf EndIf EndIf Case #Menu_SetSync WinID=GetGadgetState(#Gadget_MDI) If WinID FindLinkList(MDIWindow(),MDIWindow()\WindowID = WinID ) If ValidIndex( MDIWindow() ) If MDIWindow()\MDIType=#MDI_CODE ;create Sync point L=SCI_LineFromPosition(MDIWindow()\EditorGadget,SCI_GetCurrentPos(MDIWindow()\EditorGadget)) msg.s="`SYNCPOINT"+NLChar msg=msg+"SYNC"+NLChar SCI_InsertText(MDIWindow()\EditorGadget,SCI_Positionfromline(MDIWindow()\EditorGadget,L),@msg) EndIf EndIf EndIf Case #Menu_ClearSync WinID=GetGadgetState(#Gadget_MDI) If WinID FindLinkList(MDIWindow(),MDIWindow()\WindowID = WinID ) If ValidIndex( MDIWindow() ) If MDIWindow()\MDIType=#MDI_CODE oldpos=SCI_GetCurrentPos(MDIWindow()\EditorGadget) RText.s="" SText.s="`SYNCPOINT" current.l = 0 Repeat SCI_SetAnchor(MDIWindow()\EditorGadget, current) SCI_SearchAnchor(MDIWindow()\EditorGadget) start.l = SCI_SearchNext(MDIWindow()\EditorGadget, 0, @SText) If start <> -1 Anchor.l = SCI_GetAnchor(MDIWindow()\EditorGadget) SCI_SetTargetStart(MDIWindow()\EditorGadget,start-1) L=SCI_LineFromPosition(MDIWindow()\EditorGadget,Anchor)+2 Anchor=SCI_PositionFromLine(MDIWindow()\EditorGadget,L)-1 SCI_SetTargetEnd(MDIWindow()\EditorGadget,Anchor) SCI_ReplaceTarget(MDIWindow()\EditorGadget,Len(RText),@RText) current=Anchor Else Break EndIf ForEver SCI_SetSel(MDIWindow()\EditorGadget,oldpos,oldpos) SCI_SetCurrentPos(MDIWindow()\EditorGadget,oldpos) EndIf EndIf EndIf Case #Menu_LogFunction MenuToggle(#Menu,#MENU_LogFunction) Case #Menu_ObjSync MenuToggle(#Menu,#Menu_ObjSync) Case #Menu_BreakSync MenuToggle(#Menu,#Menu_BreakSync) Case #Menu_LogSync MenuToggle(#Menu,#Menu_LogSync) Case #Menu_ClearAll ;resets all checks .... ;SetMenuItemState(#Menu,#MENU_LogFunction,0) SetMenuItemState(#Menu,#Menu_ObjSync,0) SetMenuItemState(#Menu,#Menu_BreakSync,0) SetMenuItemState(#Menu,#Menu_LogSync,0) ;still needs to clear other debug options ForEach MDIWindow() If MDIWindow()\MDIType=#MDI_CODE ;reserve position data oldpos=SCI_GetCurrentPos(MDIWindow()\EditorGadget) ;clear sync points RText.s="" SText.s="`SYNCPOINT" current.l = 0 Repeat SCI_SetAnchor(MDIWindow()\EditorGadget, current) SCI_SearchAnchor(MDIWindow()\EditorGadget) start.l = SCI_SearchNext(MDIWindow()\EditorGadget, 0, @SText) If start <> -1 Anchor.l = SCI_GetAnchor(MDIWindow()\EditorGadget) SCI_SetTargetStart(MDIWindow()\EditorGadget,start-1) L=SCI_LineFromPosition(MDIWindow()\EditorGadget,Anchor)+2 Anchor=SCI_PositionFromLine(MDIWindow()\EditorGadget,L)-1 SCI_SetTargetEnd(MDIWindow()\EditorGadget,Anchor) SCI_ReplaceTarget(MDIWindow()\EditorGadget,Len(RText),@RText) current=Anchor Else Break EndIf ForEver ;clear Logpoints RText.s="" SText.s="`LOGPOINT" current.l = 0 Repeat SCI_SetAnchor(MDIWindow()\EditorGadget, current) SCI_SearchAnchor(MDIWindow()\EditorGadget) start.l = SCI_SearchNext(MDIWindow()\EditorGadget, 0, @SText) If start <> -1 Anchor.l = SCI_GetAnchor(MDIWindow()\EditorGadget) SCI_SetTargetStart(MDIWindow()\EditorGadget,start-1) L=SCI_LineFromPosition(MDIWindow()\EditorGadget,Anchor)+6 Anchor=SCI_PositionFromLine(MDIWindow()\EditorGadget,L)-1 SCI_SetTargetEnd(MDIWindow()\EditorGadget,Anchor) SCI_ReplaceTarget(MDIWindow()\EditorGadget,Len(RText),@RText) current=Anchor Else Break EndIf ForEver ; Clear Break Points RText.s="" SText.s="Break" current.l = 0 Repeat SCI_SetAnchor(MDIWindow()\EditorGadget, current) SCI_SearchAnchor(MDIWindow()\EditorGadget) start.l = SCI_SearchNext(MDIWindow()\EditorGadget, 0, @SText) If start <> -1 Anchor.l = SCI_GetAnchor(MDIWindow()\EditorGadget) SCI_SetTargetStart(MDIWindow()\EditorGadget,start-1) L=SCI_LineFromPosition(MDIWindow()\EditorGadget,Anchor)+1 Anchor=SCI_PositionFromLine(MDIWindow()\EditorGadget,L)-1 SCI_SetTargetEnd(MDIWindow()\EditorGadget,Anchor) SCI_ReplaceTarget(MDIWindow()\EditorGadget,Len(RText),@RText) current=Anchor Else Break EndIf ForEver ;restore position SCI_SetSel(MDIWindow()\EditorGadget,oldpos,oldpos) SCI_SetCurrentPos(MDIWindow()\EditorGadget,oldpos) EndIf Next MDIWindow() Case #Menu_ViewLog WinID=GetGadgetState(#Gadget_MDI) If WinID FindLinkList(MDIWindow(),MDIWindow()\WindowID = WinID ) If ValidIndex( MDIWindow() ) If MDIWindow()\MDIType=#MDI_CODE ViewLog() EndIf EndIf EndIf ;- Tools Menu Case #Menu_Tools ManageTools() ;menu options removed because of redundant with tool ;added back in because of options Case #Menu_Preview ;CallDebugger WinID=GetGadgetState(#Gadget_MDI) FindLinkList(MDIWindow(),MDIWindow()\WindowID = WinID ) If ValidIndex( MDIWindow() ) If MDIWindow()\MDIType=#MDI_CODE ;obtain the filename ProjectPath=GetPathPart(MDIWindow()\FullName) POS.l=SCI_GetCurrentPos(MDIWindow()\EditorGadget) LN.l=SCI_LineFromPosition(MDIWindow()\EditorGadget,POS) LN$=Space(SCI_Linelength(MDIWindow()\EditorGadget,LN)+1) SCI_GetLine(MDIWindow()\EditorGadget,LN,@LN$) P1.l=FindString(LN$,Chr(34),1) If P1 P2.l=FindString(LN$,Chr(34),P1+1) If P2 FN$=MidTo(LN$,P1+1,P2-1) If FileSize(FN$)<1 If FileSize(GetPathPart(MDIWindow()\FullName)+FN$)<1 FN$="" Else FN$=GetPathPart(MDIWindow()\FullName)+FN$ EndIf EndIf If FN$ TEXT$=UCase(GetExtensionPart(FN$)) ;scan for tool FC.l=0 If TotalTools For T=1 To TotalTools If FindString(UCase(Tool(T)\OpenExt),TEXT$,1) FC=T If Tool(T)\Change=0 Break EndIf EndIf Next T If FC=0 msg$="You do not have a tool for opening files like"+Chr(10) msg$=msg$+FN$+Chr(10)+"Do you wish to select one?" If MessageBox_(WindowID(#WINDOW),msg$,MyTittle,#MB_ICONQUESTION | #MB_YESNO)=#IDYES ManageTools() EndIf Else If Tool(FC)\Change If Tool(FC)\NewExt FN$=NewExtension(FN$,Tool(FC)\NewExt) EndIf EndIf FN$=FN$+" " If Tool(FC)\AppWait RunProgram(Tool(FC)\FullName,Chr(34)+FN$+Tool(FC)\Pars+Chr(34),ProjectPath,#PB_Program_Wait) Else RunProgram(Tool(FC)\FullName,Chr(34)+FN$+Tool(FC)\Pars+Chr(34),ProjectPath) EndIf EndIf Else msg$="You do not have a tool for opening files like"+Chr(10) msg$=msg$+FN$+Chr(10)+"Do you wish to select one?" If MessageBox_(WindowID(#WINDOW),msg$,MyTittle,#MB_ICONQUESTION | #MB_YESNO)=#IDYES ManageTools() EndIf EndIf EndIf EndIf EndIf EndIf EndIf Case #Menu_Edit WinID=GetGadgetState(#Gadget_MDI) FindLinkList(MDIWindow(),MDIWindow()\WindowID = WinID ) If ValidIndex( MDIWindow() ) If MDIWindow()\MDIType=#MDI_CODE ;obtain the filename ProjectPath=GetPathPart(MDIWindow()\FullName) POS.l=SCI_GetCurrentPos(MDIWindow()\EditorGadget) LN.l=SCI_LineFromPosition(MDIWindow()\EditorGadget,POS) LN$=Space(SCI_Linelength(MDIWindow()\EditorGadget,LN)+1) SCI_GetLine(MDIWindow()\EditorGadget,LN,@LN$) P1.l=FindString(LN$,Chr(34),1) If P1 P2.l=FindString(LN$,Chr(34),P1+1) If P2 FN$=MidTo(LN$,P1+1,P2-1) If FileSize(FN$)<1 If FileSize(GetPathPart(MDIWindow()\FullName)+FN$)<1 FN$="" Else FN$=GetPathPart(MDIWindow()\FullName)+FN$ EndIf EndIf If FN$ TEXT$=UCase(GetExtensionPart(FN$)) ;scan for tool FC.l=0 If TotalTools For T=1 To TotalTools If FindString(UCase(Tool(T)\OpenExt),TEXT$,1) FC=T If Tool(T)\Change=1 Break EndIf EndIf Next T If FC=0 msg$="You do not have a tool for opening files like"+Chr(10) msg$=msg$+FN$+Chr(10)+"Do you wish to select one?" If MessageBox_(WindowID(#WINDOW),msg$,MyTittle,#MB_ICONQUESTION | #MB_YESNO)=#IDYES ManageTools() EndIf Else If Tool(FC)\Change If Tool(FC)\NewExt FN$=NewExtension(FN$,Tool(FC)\NewExt) EndIf EndIf ;If Tool(FC)\Pars FN$=FN$+" " ;EndIf If Tool(FC)\AppWait RunProgram(Tool(FC)\FullName,Chr(34)+FN$+Tool(FC)\Pars+Chr(34),ProjectPath,#PB_Program_Wait) Else RunProgram(Tool(FC)\FullName,Chr(34)+FN$+Tool(FC)\Pars+Chr(34),ProjectPath) EndIf EndIf Else msg$="You do not have a tool for opening files like"+Chr(10) msg$=msg$+FN$+Chr(10)+"Do you wish to select one?" If MessageBox_(WindowID(#WINDOW),msg$,MyTittle,#MB_ICONQUESTION | #MB_YESNO)=#IDYES ManageTools() EndIf EndIf EndIf EndIf EndIf EndIf EndIf Case #Menu_Browse ;browse for a filename WinID=GetGadgetState(#Gadget_MDI) If WinID FindLinkList(MDIWindow(),MDIWindow()\WindowID = WinID ) If ValidIndex( MDIWindow() ) If MDIWindow()\MDIType=#MDI_CODE FN.s=OpenFileRequester("Browse for Media",GetPathPart(MDIWindow()\Fullname)+"*.*",MediaPattern,3) If FN TPath.s=GetPathPart(FN) If LCase(GetPathPart(MDIWindow()\Fullname))=LCase(Left(TPath,Len(GetPathPart(MDIWindow()\Fullname)))) FN=Right(FN,Len(FN)-Len(GetPathPart(MDIWindow()\Fullname))) EndIf FN=Chr(34)+FN+Chr(34) SCI_ReplaceSel(MDIWindow()\EditorGadget,@FN) EndIf EndIf EndIf EndIf Case #Menu_Color WinID=GetGadgetState(#Gadget_MDI) If WinID FindLinkList(MDIWindow(),MDIWindow()\WindowID = WinID ) If ValidIndex( MDIWindow() ) If MDIWindow()\MDIType=#MDI_CODE AColor.l=ColorRequester() If AColor>-1 msg.s="RGB("+Str(Red(AColor))+","+Str(Green(AColor))+","+Str(Blue(AColor))+")" SCI_ReplaceSel(MDIWindow()\EditorGadget,@msg) EndIf EndIf EndIf EndIf ;- Arrange Menus Case #Menu_Refresh If ProjectMDI\MDIType=#MDI_Project WinID=GetGadgetState(#Gadget_MDI) If WinID FindLinkList(MDIWindow(),MDIWindow()\WindowID = WinID ) UpdateProjectWindow() EndIf EndIf Case #Menu_HideProject If GetToolBarButtonState(#ToolBar,#MENU_HideProject) ToolBarToolTip(#Toolbar,#MENU_HideProject,"Show Project Window") SetMenuItemState(#Menu,#MENU_ShowProject,1) If ProjectMDI\MDIType=#MDI_Project MinimizeWindow(ProjectMDI\WindowID) EndIf Else ToolBarToolTip(#Toolbar,#MENU_HideProject,"Hide Project Window") SetMenuItemState(#Menu,#MENU_ShowProject,0) ShowProjectWindow() DisableToolBarButton(#ToolBar,#MENU_Refresh,0) EndIf Case #Menu_ShowProject MenuToggle(#MENU,#MENU_ShowProject) SetToolBarButtonState(#ToolBar,#MENU_HideProject,GetMenuItemState(#MENU,#MENU_ShowProject)) If GetMenuItemState(#MENU,#MENU_ShowProject) ToolBarToolTip(#Toolbar,#MENU_HideProject,"Show Project Window") If ProjectMDI\MDIType=#MDI_Project MinimizeWindow(ProjectMDI\WindowID) EndIf Else ToolBarToolTip(#Toolbar,#MENU_HideProject,"Hide Project Window") ShowProjectWindow() DisableToolBarButton(#ToolBar,#MENU_Refresh,0) EndIf Case #MENU_TileV TileVertically(#Gadget_MDI) Case #MENU_TileH TileHorizontally(#Gadget_MDI) Case #MENU_Cascade Cascade(#Gadget_MDI) Case #MENU_Arrange Arrange(#Gadget_MDI) Case #MENU_Previous PrevWindow(#Gadget_MDI) Case #MENU_Next NextWindow(#Gadget_MDI) ;- Help Menu Case #MENU_HELP ;DBC ;check for context WinID=GetGadgetState(#Gadget_MDI) FindLinkList(MDIWindow(),MDIWindow()\WindowID = WinID ) If ValidIndex( MDIWindow() ) If MDIWindow()\MDIType=#MDI_CODE If MDIWindow()\TipLink If FindString(MDIWindow()\TipLink,"#",1) ShowWeb(0,MDIWindow()\TipLink) Else ShowWeb(1,MDIWindow()\TipLink) EndIf Else ShowWeb(1,DBCHelpFile) EndIf Else ShowWeb(1,DBCHelpFile) EndIf Else ShowWeb(1,DBCHelpFile) EndIf Case #MENU_MORE ;IDE ;check for context WinID=GetGadgetState(#Gadget_MDI) FindLinkList(MDIWindow(),MDIWindow()\WindowID = WinID ) If ValidIndex( MDIWindow() ) If MDIWindow()\MDIHelp ShowWeb(0,HelpFile+MDIWindow()\MDIHelp) Else ShowWeb(0,HelpFile) EndIf Else ShowWeb(0,HelpFile) EndIf Case #MENU_ABOUT WrapAbout(#Window,"ArconRPG.com","Waffle's Dark Basic Classic IDE","2.0","March 2008","www.archonrpg.com") Case #MENU_SCI txt.s="License for "+Chr(8)+" Scintilla And SciTE"+Chr(8) txt=txt+"by Neil Hodgson"+Chr(8) txt=txt+"Copyright 1998-2003 All Rights Reserved"+Chr(13)+Chr(10)+Chr(13)+Chr(10) txt=txt+"Permission to use, copy, modify, and distribute this software and its " txt=txt+"documentation for any purpose and without fee is hereby granted, " txt=txt+"provided that the above copyright notice appear in all copies and that " txt=txt+"both that copyright notice and this permission notice appear in " txt=txt+"supporting documentation."+Chr(13)+Chr(10)+Chr(13)+Chr(10) txt=txt+"NEIL HODGSON DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS " txt=txt+"SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY " txt=txt+"AND FITNESS, IN NO EVENT SHALL NEIL HODGSON BE LIABLE FOR ANY " txt=txt+"SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES " txt=txt+"WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, " txt=txt+"WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER " txt=txt+"TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE " txt=txt+"OR PERFORMANCE OF THIS SOFTWARE."+Chr(8) txt=txt+"Email Neil Hodgson "+Chr(8)+"" about(#Window,txt,250) ;- Customized Menu Options Default If EventMenuID<=#Menu_Tool20 ;Using a custom Tool UseTool.l=EventMenuID-#Menu_Color WinID=GetGadgetState(#Gadget_MDI) FindLinkList(MDIWindow(),MDIWindow()\WindowID = WinID ) If ValidIndex( MDIWindow() ) If MDIWindow()\MDIType<>#MDI_CODE WinID=0 EndIf Else WinID=0 EndIf ;settings If Tool(UseTool)\CLine If WinID POS.l=SCI_GetCurrentPos(MDIWindow()\EditorGadget) LN.l=SCI_LineFromPosition(MDIWindow()\EditorGadget,POS) POS=SCI_PositionFromLine(MDIWindow()\EditorGadget,LN) PEnd.l=SCI_PositionFromLine(MDIWindow()\EditorGadget,LN+1)-1 SCI_SetSel(MDIWindow()\EditorGadget,POS,PEnd) SCI_Copy(MDIWindow()\EditorGadget) Else ClearClipboard() EndIf EndIf If Tool(UseTool)\CAll If WinID SCI_SelectAll(MDIWindow()\EditorGadget) SCI_Copy(MDIWindow()\EditorGadget) Else ClearClipboard() EndIf EndIf FN$="" If Tool(UseTool)\RClick If WinID ;locate if a file under cursor POS.l=SCI_GetCurrentPos(MDIWindow()\EditorGadget) LN.l=SCI_LineFromPosition(MDIWindow()\EditorGadget,POS) LN$=Space(SCI_Linelength(MDIWindow()\EditorGadget,LN)+1) SCI_GetLine(MDIWindow()\EditorGadget,LN,@LN$) P1.l=FindString(LN$,Chr(34),1) If P1 P2.l=FindString(LN$,Chr(34),P1+1) If P2 FN$=MidTo(LN$,P1+1,P2-1) If FileSize(FN$)<1 If FileSize(GetPathPart(MDIWindow()\FullName)+FN$)<1 FN$="" Else FN$=GetPathPart(MDIWindow()\FullName)+FN$ EndIf EndIf If FN$ TEXT$=UCase(GetExtensionPart(FN$)) If Tool(UseTool)\RClick If FindString(UCase(Tool(UseTool)\OpenExt),TEXT$,1) If Tool(UseTool)\Change If Tool(UseTool)\NewExt FN$=NewExtension(FN$,Tool(UseTool)\NewExt) EndIf EndIf FN$=FN$+" " Else FN$="" EndIf Else FN$="" EndIf EndIf EndIf EndIf EndIf EndIf PAR$=Tool(UseTool)\Pars FP.l=FindString(UCase(PAR$),"%P",1) If FP RemoveText(PAR$,fp,2) If ValidIndex(MDIWindow()) If MDIWindow()\MDIType=#MDI_CODE InsertText(PAR$,GetPathPart(MDIWindow()\FullName),fp) EndIf EndIf EndIf If Tool(UseTool)\AppWait RunProgram(Tool(UseTool)\FullName,FN$+PAR$,RunPath,#PB_Program_Wait) If Tool(UseTool)\Paste If WinID SCI_Paste(MDIWindow()\EditorGadget) EndIf EndIf Else RunProgram(Tool(UseTool)\FullName,FN$+PAR$,RunPath) EndIf ElseIf EventMenuID<#MENU_FirstMDI ;Opening a recent file UseFile.l=EventMenuID-#MENU_SCI Debug Str(UseFile)+" Using "+PrevFile(UseFile) FindLinkList( MDIWindow() , UCase(MDIWindow()\FullName) = UCase(PrevFile(UseFile)) ) If ValidIndex(MDIWindow() ) ;SetActiveWindow(MDIWindow()\WindowID) SetGadgetState(#Gadget_MDI,MDIWindow()\WindowID) Else FN.s=PrevFile(UseFile) ProjectPath=GetPathPart(FN) SwopFiles(PrevFile(UseFile)) OpenCodeWindow(FN) EndIf Else ;Switching to a new child window ;this is automatic, and no need to check .... UseWindow.l=EventMenuID-#MENU_FirstMDI EndIf EndSelect ;- Gadget Event .. RightClick Case #PB_Event_Gadget ;determine window FindLinkList(MDIWindow(),MDIWindow()\WindowID = WinID ) If ValidIndex( MDIWindow() ) If MDIWindow()\MDIType=#MDI_WEB HandleWebGadget(EventGadget() ) ElseIf MDIWindow()\MDIType=#MDI_Project HandleProjectWindow(EventGadget() ) ElseIf MDIWindow()\MDIType=#MDI_CODE If EventType()=#PB_EventType_RightClick Debug "Rightclick - this is dissabled by scintilla :(" ;{ check for a FN$ that can be opened POS.l=SCI_GetCurrentPos(MDIWindow()\EditorGadget) LN.l=SCI_LineFromPosition(MDIWindow()\EditorGadget,POS) LN$=Space(SCI_Linelength(MDIWindow()\EditorGadget,LN)+1) SCI_GetLine(MDIWindow()\EditorGadget,LN,@LN$) P1.l=FindString(LN$,Chr(34),1) FN$="" If P1 P2.l=FindString(LN$,Chr(34),P1+1) If P2 FN$=MidTo(LN$,P1+1,P2-1) If FileSize(FN$)<1 If FileSize(GetPathPart(MDIWindow()\FullName)+FN$)<1 FN$="" Else FN$=GetPathPart(MDIWindow()\FullName)+FN$ EndIf EndIf EndIf EndIf If FN$ If TotalTools TEXT$=UCase(GetExtensionPart(FN$)) For T=1 To TotalTools If Tool(T)\RClick If FindString(UCase(Tool(T)\OpenExt),TEXT$,1) ;prepare to open file If Tool(T)\Change If Tool(T)\NewExt FN$=NewExtension(FN$,Tool(T)\NewExt) EndIf EndIf FN$=FN$+" " RunProgram(Tool(T)\FullName,FN$+Tool(T)\Pars,RunPath) Break EndIf EndIf Next T EndIf EndIf ;} EndIf EndIf EndIf ;- Repaint Case #PB_Event_Repaint Case #PB_Event_CloseWindow ;- CloseWindow FindLinkList(MDIWindow(),MDIWindow()\WindowID = WinID ) If ValidIndex( MDIWindow() ) If MDIWindow()\MDIType=#MDI_CODE If CheckCodeWindow()=0 If SCI_GetModify(MDIWindow()\EditorGadget)=0 SwopFiles(MDIwindow()\FullName) EndIf CloseCodeWindow() EndIf ElseIf MDIWindow()\MDIType=#MDI_Project SetToolBarButtonState(#ToolBar,#MENU_HideProject,1) ToolBarToolTip(#Toolbar,#MENU_HideProject,"Show Project Window") SetMenuItemState(#Menu,#MENU_ShowProject,1) SaveProjectWindow() ProjectMDI\MDIType=#False CloseCodeWindow() DisableToolBarButton(#ToolBar,#MENU_Refresh,1) Else CloseCodeWindow() EndIf Else ;must be for the main window cancel.l=0 ForEach MDIWindow() If MDIWindow()\MDIType=#MDI_Code If SCI_GetModify(MDIWindow()\EditorGadget)=0 SwopFiles(MDIwindow()\FullName) EndIf Cancel=CheckCodeWindow() ElseIf MDIWindow()\MDIType=#MDI_Project SaveProjectWindow() EndIf Next If Cancel=0 Break EndIf EndIf Case #PB_Event_SizeWindow ;- ResizeWindow FindLinkList(MDIWindow(),MDIWindow()\WindowID = WinID ) If ValidIndex( MDIWindow() ) If GetWindowState( MDIWindow()\WindowID )=#PB_Window_Minimize If MDIWindow()\MDIType=#MDI_Project ;set flags to prepare to re-show window ToolBarToolTip(#Toolbar,#MENU_HideProject,"Show Project Window") SetMenuItemState(#Menu,#MENU_ShowProject,1) Debug "project minimized detected" EndIf Else If MDIWindow()\MDIType=#MDI_CODE ResizeCodeWindow() ElseIf MDIWindow()\MDIType=#MDI_WEB ResizeWebWindow() ElseIf MDIWindow()\MDIType=#MDI_Project ;ensure flags are set to hide window ToolBarToolTip(#Toolbar,#MENU_HideProject,"Hide Project Window") SetMenuItemState(#Menu,#MENU_ShowProject,0) ResizeProjectWindow() EndIf EndIf EndIf ;- Idle Event (10 secs?) Case 0 FindLinkList(MDIWindow(),MDIWindow()\WindowID = WinID ) If ProjectMDI\MDIType=#MDI_Project If GetTickCount_()-1000>LastTick.l UpdateProjectWindow() LastTick=GetTickCount_() ;Debug "Tick "+Str(LastTick) EndIf EndIf EndSelect ForEver