| HOME | BLL Forum | Bug and Suggestions | BLL Showcase | Download BLL |

  BLL Development Blog 992 6
BLL v4.21b Alpha 11
Your IP is
PHP v5.6
"It only Ends Ones.
Anything that happens Before that is Just Progress"

  Current: BLL v4.12b Alpha 11 363 0
19 January, 2017 170120 Day 350, v4.12b Alpha 11:
Add ABC.bll script to show the downside of the opengl: drawtext or opengl("drawtext")
Warn that opengl("setcolor") is going to crash BLL for you!
Advise users to use other BLL function to print out text in the application!

160720 Day 244, v2.61b Alpha 8:
Make the Editor 100% mouse free!
[Ctrl-Alt-Left/Right] Slide the Vertically slider Left/Right
[Ctrl-Alt-Up/Down] Slide the Horizontally slider Up/Down

160719 Day 243, v2.60h Alpha 8, Auto Complete v2.0:
I lose focus and break down, I use one class/Type for the functions
Then I copy the Type and use that for the subattributes
Then I change Auto_Complete[i].words to Auto_Complete[i].subwords
and That make my life little more easy
I even mix i with Auto_Complete_ext_n and realize Auto_Complete_ext don't work like that
I was thinking to erase all and rewrite the setup process for the [subattributes]
but 3 days where I forbid myself to do anything else I manage to make Auto Complete v2.0:
the same function can now have difference subattributes for example php, bmx and bll
You can also have always words and functions (words is stand alone Auto Complete words, function can have subattributes)
This mean you can setup your own Auto Complete for your own project!

160705 Day 232, v2.50c Alpha 8, Auto Complete v1.5:
Update Auto Complete to suggest the subattributes for the current function

160630 Day 227, v2.40k Alpha 8, Auto Complete v1.0:
I suppose to add wxTreeCtrl or wxPropertyGrid
But I was not motivated to do that.
I been insecure how to make a Auto Complete Function and I wasn't sure I could make one?
But rather doing what I supposed to do, I make a attempt to do the Auto Complete Function.

160620 Day 233, v2.30a Alpha 7:
New Functions: menu("setcolor", id, ink, paper), menu("ink", id, ink) and menu("paper", id, paper)
Set ink, paper before create the menuitem: menu("additem") to set the menu colors
Can now change the ink and the paper for the menu

160616 Day 230, v2.21a Alpha 7:
New Function: system("menuexecute", menuid)
Bug Fix: When running script and press: [Ctrl-F9] Full console it smack the file/function index splitter to zero

160612 Day 226, v2.20a Alpha 7:
New ERROR handeleing system
if in SYS.OnCreate(): it show Warning, after SYS.OnCreate() it show ERROR in Debug Mode
Warning/ERROR :: objectctrl("setsize", "subwindow_1001") :: "subwindow_1001" is not set!
button("new", 3, "", -1, "button3", 4, 44)
button("new", 3, "", -1, "button3", 4, 44)
listbox("new", 3, "", -1, "line1|line2", 1, 4, 74)
Warning :: button("new", 3) :: id: 3 is already registred for button()
Warning :: listbox("new", 3) :: id: 3 is already registred for button()

the button is recreated but the listbox is aborted!

160610 Day 224, v2.00a Alpha 7:
Bug Fix: Set selection to UPPER/lower case is acctually working now!
Add a menu keyboard shortcut: [Alt-O] ReplaceSelection to objectctrl (I has some function to rename)
Remove all wxWindow subfunction: free, show, enable, focus, setpos, setsize, ink, paper, settooltip, gettooltip, setfont, getfont, getfontsize, settext, gettext, update, refresh and isset
for: bitmapbutton, button, checkbox, combobox, gauge, input, label, link, listbox, panel, plopp, radiobox, radiobutton, scintilla, sizer, slider, splitter and tab
Start update all the samples scripts for BLL v2.00..

160609 Day 223, v1.77a Alpha 7:
Decide to name the new super function: "objectctrl"
Update all function("new", id, "name", parent)
if name == "" then it autogenerate the name: label("new", 500, "", -1) get name = "label_500"
I chose "label_500" over "label.500" because you can select the whole name!
to change the labeltext you can use: objectctrl("settext", 500, "NewText") or objectctrl("settext", "label_500", "NewText")
I add name so you could have a clue what it's manipulating, objectctrl("settext", 500, "NewText") don't really say what it is your doing
objectctrl("settext", "label_500", "NewText") is a slightly compromise to: label("settext", 500, "NewText")

160608 Day 222, v1.77a Alpha 7:
I learn about wxWindow.FindWindowByName and I decided to make one super function for all wxWindow subfunctions
Start building the new super function!
Try to name the new function: control, manage, manipulate, use, operate, direct, object
Function name object has been in my mind and I reserve object in the code already

160607 Day 221, v1.77a Alpha 7:
New Function: bitmapbutton, the third button in BLL
This function don't realy have any new functions, it's just a button without text
the problem was the picture for: "default|hover|focus|selected"
I make it work with: wxBitmapButton.bll

160605 Day 219, v1.76e Alpha 6:
New Function: system("list", "function") print out all wxWidget function that been created

160604 Day 218, v1.76a Alpha 6:
Because the user can now destroy the subwindow by clicking the close [X] Button in the frame
I needed to make the wxWidget deletable!
So now when the user create a new wxWidget it put it in a list,
it store the id and the function name and where the wxWidget is stored!
When the subwindow is closed the wxApp is Destroying the object, but the Type/Class
(the shell of the object) is still there, all empty, no id no data just nothingness!
So when I reCreate the subwindow it create a new instance of all the object in memory, as result I get a lot of empty shell object
So when I created the function list I could reCreate the deleted function in the old empty shell object again
Now I don't create a new storage for the reCreated wxWidget
This don't fix the memory leaking, when you destroy/free the wxWidget it's not freeing the memory correctly!
So when you reCreate the wxWidget it only alloc more memory!
This only reuse the old Type/Class and put wxWidget in the same declared memory!
All wxWidget object is now deletable!
This is such a big mind changing for BLL so I almost set BLL to become v2.00

160603 Day 217, v1.46a Alpha 6:
I sit 2 hour and looking for an Error in the engine code before I realized the Error I made was:
I create a new splitter and create 2 new panels, one of the panel had the same id as another panel that was already created,
so my object on the panel didn't work, because I put them on the original panel that was on a hidden subwindow!
To avoid doing this ever again!
I create a Error message that only shows in debug mode and when still in SYS.OnCreate():
It show the Error message if you trying to create a new function with and already registered id!

New Function: filectrl

160602 Day 216, v1.16a Alpha 5:
Clean the button code
New Function: radiobutton

160601 Day 215, v1.15a Alpha 4:
Bug Fix: [Shift-Ctrl-F3] Replacec All get stuck in a endless looop
New Function: radiobox
it started with my C:\BlitzMax\bin\bmk.exe stop working (the .exe get corrupted)
Lucky for me I can recompile, but I store a copy of it already! (Now I make a double copy of bmk.exe)
Then it become blackout and it destroy my project file: BLL.BLideUS
Then by mistake I try compile and start compile wrongly my modules!
So I had to recompile all wx.mod again
my .bat release compile script was working
But I forget HOWTO set up a Unmanaged solution Project
the Setup process didn't work so I had to write manually the filepath to each file in the project in the BLL.BLideUS file
Then I succeed to compile my project again
Now I learn that I need make a copy of BLL.BLideUS

160531 Day 214, v1.14a Alpha 4:
Clean the slider code
New Function: gauge the progressbar
Bug Fix: timer("do", 1, 1, 500) it now change the timer interval immediately
[Shift-Ctrl-S] When save project show projectname without filepath
Change event Function name: SYS.OnUpdateWindow(type) to SYS.OnWinUpdate(type)
The reason to change the name was: it was to long, I test OnUpdWin but I didn'tr like shorten like that!
Make New Editor Bookmark: 1: [OnUpdate], 9: [OnClose] and make 0: [OnCreate] have the same syntax!

160529 Day 213, v1.13b Alpha 4:
I was sitting and looking at the Youtube: "BLL 3, system events"
I realize that SYS.OnChangeWindow(index) and SYS.OnCloseWindow(index) is totally unnecessary!
So I remove the event functions: SYS.OnChangeWindow(index) and SYS.OnCloseWindow(index) and put them in:
function SYS.OnUpdateWindow(type)
--     type -1 main window is moved
--     type -2 main window is resized
--     type -3 editor vertical splitter is changed
--     type -4 tab window is changed
--     type -8 tab window is closed
--     type -9 subwindow closed
if type == -4 or type == -8 then SYS.subwindow = tabwindow id

160524 Day 212, v1.12d Alpha 4:
Update SYS.OnUpdateWindow(type) when function is called SYS.subwindow = subwindow id or -2 main window
New type -9 close subwindow SYS.subwindow = subwindow that is closing
Update subwindow with: center, minsize, maxsize, maximize, minimize, closebutton, hasflag, setstyle, setflag, createstatusbar and setstatustext.
Bugfig: Change subwindow("setpos") SetPosition with the move function, SetPosition make the subwindow flickering!
Remove all the scrollwindow functions, if you want to make the subwindow scrollable use a panel

160520 Day 211:
When you load text files it save the time when the file was last modified
When save it check if a newer file is saved on disk, if so then don't save/run script!
If you still want to save the file then you can [F12] Save file As..
Because you know what you are doing!
Now the editor don't save the file if it's not modified!

160514 Day 210, v1.11a Alpha 4:
When I experiment on subwindow.bll
I had two function for the event handeling of window and I didn't want to create one more for subwindow:
SYS.OnSplitter()           -- trigged by the editor splitter
SYS.OnResize()            -- trigged when main window was resized or moved
I wanted one function to all window events

This is how it look before:
function SYS.OnSplitter()
     SYS.OnResize()                 -- All the code was like this, no point have SYS.OnSplitter()

function SYS.OnResize()

I merge SYS.OnSplitter() and SYS.OnResize() to:
function SYS.OnUpdateWindow(id)
--     id == -1 then main window is moved
--     id == -2 then main window is resized
--     id == -3 then editor vertical splitter is changed
--     id > 0 then subwindow id trigger the event

160511 Day 209, v1.10a Alpha 4:
Update Function subwindow("icon", id, "file.png/ico"[, bitmapid][, bitmap])
Update Function window("icon", "file.png/ico"[, bitmapid][, bitmap])
Add that you can set Application/subwindow Icon with the bitmap function:
bitmap("new", 1, "toolbar")
window("icon", "", 1, 101) -- Set Application Icon from bitmap 1, subpic 101

160510 Day 208:
New Function: subwindow
Today I was unlucky, it become blackout just when I press [F5]
When the electrical was back on the subwindow.bll file was filled with zeros,
The file was open for writing when power off!

160508 Day 207, v1.02j Alpha 4:
Make one Function of [F1] Docs/HELP.txt, [Ctrl-Alt-B] data/BLL.ini, [Ctrl-Alt-F5] Current .ini
No point simplify Function [Shift-Ctrl-M] set Main File, [Ctrl-Alt-M] Jump to Main File and [Ctrl-Alt-J] Jump File
They are to specialized!
For the release I save the filenamepath in samples.BLLprj, with the root from the application directory (Not full filenamepath)
That make the editor to create a new file rather than look for the file in the list
Now when file is loaded to the editor it set full filepath to the files
if you had 2 file with same name but difrerence location and press F1 and F1 again it return to the first file with that name.

160507 Day 206:
Save [win] console_layout_pos and console_layout_side to dataBLL.ini and
Save [BLL] SYS.console_pos to bll file .ini before F5, F6, Ctrl-F6, F7, Ctrl-F7
Change Synatx in dataBLL.ini:
Build to build
Debug to debug
DONE cleaning the .bll script with the new language syntax

160506 Day 205:
Remove Function: set and get
Rename Function: set("output") to output("setpos")
Rename Function: get("outputsize") to output("setsize")

160505 Day 204:
Rename Function: set("editor") to window("seteditorsize")
Rename Function: get("viewportsize") to window("viewportsize")
Rename Function: get("window") to window("setpos")
Rename Function: get("windowsize") to window("setsize")
Rename Function: get("console") to console("setpos")
Rename Function: set("console") to console("setpos")
Rename Function: set("windowpos") to window("setpos")
Rename Function: set("windowsize") to window("setsize")
Rename Function: getpos to get
Rename Function: setpos to set

160504 Day 203:
data("getnum", "category", "key")
data("getstr", "category", "key")
data("getdouble", "category", "key")

160503 Day 202:
data("read") and data("readline") now rewrite existing line as it was just with the new information
Add so you can save double float number to the .ini
I more or less rewrite the set function and add a int field that keep what type the data is
the BLini engine try figure it out what type it is but if the data is nil then is set default type to int

data("setbuffert", "Category", "key", "value"[, "type"])
Write key = value in [Category] to Buffert, use: data("writebuffert") to write Buffert to file
default type nil try figure out what type shall be set, use: "int", "string", "double" to force set type
if "value" = ""/nil then default set "value" = 0, and that why you want to set your own type
data("writeline", "Category", "key", "string"/value[, "type"]) use type as data("setbuffert")
Add new attribute to: data("writebuffert", "erasenil/writenil")
If data("writebuffert", "erasenil") then remove all line that is nil or:
str = ""
int = 0
double = 0.0000000000000000
data("writebuffert", "writenil") keeps those lines in the .ini file

160502 Day 201:
New Function: data("getnum", "category", "key")* return number if been readed by read or readline
New Function: data("getstr", "category", "key")* return "string" if been readed by read or readline
  Day 151 to 200 266 0
160501 Day 200:
New Function: [Ctrl-Alt-F1] Read a tips
Bug Fix: tab("deletetab", id, tabpos, 1/0) now delete right tab
New function: system("mousepos"), is not really new, but it only return the inside window mouse position
Now it return the screen mouse position, not the Application inside position
Bug Fix: getpos("outputsize") now return the panel outputsize, simplicity rules!

160430 Day 199:
New Function: link, link is a www text link to open a web url in your default web browser
Unfortunate you can't set your own font, fontsize, ink and howerink, so I need to think about it if I keep it?
Compare to a label it can be tabbed and activated with Enter or Space key

160429 Day 198:
Function Update: set table String can now set arg[0] = "String"
make argv.bll sample example

Try to send an array to BLL
My goal was to catch them like this:
while arg and arg[1] do
    local a = table.remove(arg, 1)
    echo("arg["..argn.."] = "..a)
    argn = argn + 1
I struggle the whole day trying to build brl.reflection.mod v1.05 and zeke.maxluajit.mod
So far I still can't

160427 Day 197:
Bug Fix: data("writeline", "Cat", "key", "value") if add new key after category [Cat] add \r\n manually,
the old somehow stop working
BLini upgrade: Add to save HEX value with 0xFFFFFF
dollar = $FF0000
hex = 0x00FF00

data("readline", "test", "dollar")
data("readline", "test", "hex")
dollar = 16711680
hex = 0x00FF00

dollar is converted Int(dolar) and save as Int in the memory
hex is stored as a string in memory, but when you use it in BLL it's usable as a HEX number
It's up to you how you like to save your HEX values!
Bug Fix: Stop Lua now: Stop and Terminate Lua script, before acording to editor Lua script was still active

160424 Day 196:
I test a .php script in the "cpp" Lexer and it was better than the "php" Lexer
So I change "php" Lexer to use the "cpp" Lexer, You can still set your own "php" coloring in dataBLL.ini
Add .bmx Lexer, but I could only set: commentline, number, string, operator, default
I has something wrong with the "cpp" and the "bmx" Lexer.
Sometime when a .cpp or .bmx document is over 5500 lines of code the application crash.
Because of this I don't recomend use EDii/BLL editor to .php, .cpp and .bmx

160423 Day 195:
Try to set .php Lexer but I can't make it to works!
I can set (word to word4) but it only works if the word is first on the line!
default set everything and my default ink that normally set everything else is not even in use!
commentline only work for # not when I mix php and html code in the scintilla document the lexer totally mess it up.
Bug Fix: RightClick now show even if it's not standing on a word
Add rem to: .php, .bat, .c, .cpp, .h, .hpp, and .cxx
Add .cpp Lexer, It's a bug that refuse set the fontface, if it's .cpp lexer

160418 Day 194:
Add chipher to crypto("new", id, "chipher"):
aes128cbc, aes128ecb, aes128cfb1, aes128cfb8, aes128ofb, aes192cbc, aes192ecb, aes192cfb1,
aes192cfb8, aes192ofb, aes256cbc, aes256ecb, aes256cfb1, aes256cfb8, aes256ofb, descbc,
desecb, descfb, descob, desede, desedecbc, bfcbc, bfecb, bfcfb, bfofb

160417 Day 193:
if you drag/resize the window, it only remember the last time you window("setpos/setsize")
So now when window("fullscreen", 0) it save: x, y, width, height if in window mode!

160416 Day 192:
Improve the Error message system: combobox("len", 200), if id 200 is not set you now get a Error message like this:
ERROR :: combobox("len", 200) :: combobox id = 200 is not set!
If you set a id higher than 32766: button("new", 37000, -1, "Hello", 50, 100)
You now get an Error message:
ERROR :: button("new", 37000) :: id = 37000, id can MAX be: 32766

160412 Day 191:
Rewrite Jumpfile Function to 1 function, rewrite again and now use only one main If to do the whole Jumpfile check
Stand on a existing file and press [Ctrl-Alt-J] to create a Jump File.
[Ctrl-Alt-J] Now Jump between the current file and the Jumpfile even if you no longer stand on the filename!
New Function: [Shift-Ctrl-M] Set project current main File
New Function: [Ctrl-Alt-M] Jump to current main File
I create Jump to current File because: if you JumpFile around it forget where you came from!
My Motto is: less distraction is a better workflow!
I had to create a extra Jumpfile variable so I could save it to the .ini file

160411 Day 190:
New Function: [Ctrl-Alt-J] Jump to last current File

160410 Day 189:
New Function: scintilla("toupper", id), scintilla("tolower", id)

160409 Day 188:
Remove the original replaceall
Add Function: scintilla("replaceall") that is the same as BLL Editor replaceall function

160408 Day 187:
Update Function: checkbox("new", id, parent, "Info Text"[, value][, state]) Add attribute value
Function Update: timer("new", 1, -1, 30, "callfunction") add "callfunction"
You can now chose what function you want to call
if "callfunction" == nil then timer call function SYS.OnTimer(id) as normal
When I now call Lua function or table.function it check if the function is registred?
If not and not a SYS.function then show Error message: Can't find function "table.function/function"

160407 Day 186:
Rewrite Search/Replace and move into the scintilla class

160405 Day 185:
I Move lexer_word, lexer_word2... from [win] to the [ext] categorys
When I had it in [win] I only set keywords for .bll
If lexer has word, word2, word3 and so on you can now set the words and the color directly in the [ext] categorys.
When I use word, word2, word3... I can then categorise them like this:
Lua, system commands, editor commands, wxWidgets, Multimedia, Reserved words
I then try to set lexer to the console window and try out some batch lexer like TCL but it only set word,
if the word is in the beginning of the line, so I then look for another lexer that I am not goint to use!
I try Visual Basic's Lexer but I could not register the words
So I register a new Lexer and use Lua's configuration.
I then Upgrade the coloring to if a lexer type is not set then it set the default ink color.
so if you only use paper and ink then all is in that color!
I only put lexer to [console.Default].
New BLini Function: BLini.isNumSet([cat], variable) if set return 1 else return 0
BLini.GetNum([cat], variable) return int("0") if not set and 0 is Black!

160404 Day 184:
Search bug fix: reselect when last hit and print out it's the last
Add lexer: .bat
Add lexer searchword for the dataBLL.ini

160403 Day 183:
Function Update: toolbar

160401 Day 182:
Make crypto function to work

160331 Day 181:
When the editor start it load dataBLL.bll into memory and when user stop the BLL script,
it run SYS.RestoreToolbar() to restore the toolbar
If the Layout combobox is removed or if the combobox for default lexer for other ext is removed,
Then it run SYS.RestoreToolbar() from the dataBLL.bll stored into the memory

160330 Day 180:
Bug Fix: scintilla("setsize") and scintilla("setpos") the library function is currently not working!
when I call: scintilla("getsize") and scintilla("getpos") I get the size and position of the scintilla when it was created
So I added extra x, y, width and height variables that get stored when scintilla("setsize") and scintilla("setpos")

160329 Day 179:
Track down the end flickering bug when run stand Alone application
If autorun when close, it don't restore the Editor layout now!
Cleaning: dataprojectBLL.ini
I try to remove the dataBLL.ini when autorun,
but I need dataBLL.ini to set: autorun = "run_this_script_file"
New BLINI Function: !delay ms
to make ini script wait until !deletedir "BLL.$da" is done other wise it start:
start delete dir then create dir, if delete dir took to long time it delete the newly created dir too!
Check if icon and binBLL.exe exist when build Stand Alone project
Bug Fix:

160327 Day 178:
Bug Fix: If trying to set a picture that is Null, program just ignore now not crash the application

160326 Day 177:
F12 remove the restrictions and now goto filepath and set the current filename.
New Function: system("execute", "file.exe arg1 arg2 arg3")
Make the Right Click menu disable if program is autorunning

160325 Day 176:
New Function: system("autorun") return 0 editormode/1 if autorun
change: data("cat", "win") to data("read", "win", "global")
New Function: data("read", "win") read and store them in table win: win.key = value
Remove Function: data("nil", "win") you can: win = {}
Add Function: data("nil", "win") you can still: _G[variable] = {}, the function is nothing so I decide to keep it
Restore no wordwrap when stop script

160324 Day 175:
Now Stop Lua script automaticaly
[Ctrl=Alt-F5] now goto the .bll even if you never [Ctrl=Alt-F5] from the .bll file
Don't save SYS.profile = "Default" to .ini. If SYS.profile is not set then SYS.profile = "Default"
Upgrade [Ctrl-M] for .ini #
Start coloring the c, cpp, cxx and h Lexer

160323 Day 174:
New BLINI Function: data("cat") can read table variables now
Change the script file's .ini file so all default layout variables load into SYS. variables
Split the BLINI instance so the script create its own, to awoid mixing editor variables with script variables
When script start it clear all the BLINI variables
When not using "console":
Old declaration:
setpos("console", console, console_open, console_pos)

New declaration:
setpos("console", SYS.console, SYS.console_open, SYS.console_pos)
I split the console command from system to it's own function:
system("console", "clear") to console("clear")

160320 Day 173:
Set falesafe for [F8] and [F9] if search_output_open, output_open or console_open has a positive number
If not then restore to a default positive number
Remove Warnings from creating the bin/BLL.rc
add winres location for building stand alone application

160314 Day 172:
Rewrite the Ctrl-O Open File, now I don't create a new wxScintilla before I Request the File.
Little awkward when you get a empty wxScintilla Document before the Open File Dialog.
The reward of getting the latest wx.mod is that wxFileDropTarget now is working
I can now catch one or more file drag/drop to the EDii window
Restore the Application title after Stopping the BLL Script
wxFileDropTarget was the last function on my wishlist for make EDii.exe a texteditor replacement for me.
I create a clean BLL installation, so building and using BLL is now 2 different version.

160313 Day 171:

160310, 160311, 160312
I will start to thanks Henri from BlitzMax Community that help me do this Upgrade Installation.
I wanna thank Henri from the BlitzMax Community to help me with this Upgrade installation.

Upgrade MinGW from 4.7.1 to: TDM MinGW 64bit 5.1.0-2
Now all my BlitzMax mod's ar compiled to multithreaded version!
So now I finally use Brucey's latest wx.mod
the downside to the upgrade:
the BASS Library is broken now, so I Rem out all the BASS for now.
It's a bug in wxScintilla Lexer, So for the moment I turn the Lua Lexer of.
The Application icon.ico is now incompatible and the ResHacker say the same, No Application icon for now!
Old EDii.exe 3102Kb
New EDii.exe 3465Kb
The New EDii.exe has No Application icon, no BASS Library but is 363Kb bigger.

160309 Day 167:
Create: default_lexer and console_lexer combobox for setting the lexer in real time for the console and for
Default profiles for non registered .ext
Upgrade the layout profile combobox to update the new layout in real time.
Upgrade [Shift-Ctrl-F10] after switching the layout it execute the current layout profile

160307 Day 166:
[default] category in dataBLL.ini is the lexer for other extension that is not counter for
Make a white and a dark default profile

160306 Day 165:
Rename: setpos("window", x, y) to window("setpos", x, y)
Rename: setpos("windowsize", width, height) to window("setsize", width, height)
I managed to finally remove the menu info text in the statusbar

160305 Day 164:
New Functions: window("minsize", width, height), window("maxsize", width, height)
window("output", "minsize", width, height)

160303 Day 163:
Bug Fix: setpos("console", -1, -1, side) when change side it reset the vertical gravity to 0

160302 Day 162:
New Function: system("gravity", "horizontal", 1/0/-1) and system("gravity", "vertical", 1/0/-1)
default horizontal/vertical gravity set to output window

160302 Day 161:
Bug Fix: When console_layout_pos = 1 and console_layout_side = 0 the horizontal splitter only check the output not the search position
So when the output window was closed and I press Ctrl-F the search window didn't appear
Bug Fix: if close both the search and output window with F8, when pressing Alt-F only change window now not pop up the search window,
user still need to pop up window with F8

160301 Day 160:
Fix: [Ctrl-F] If you erase the Search and [Ctrl-F] it keep the search empty
Ended up almost rewrite the [Ctrl-F] code
I rewrite the timer code again today (it's the third time now)
I make this changes to the function names and order:
timer("start", id, ms, times) ---> timer("do", id, times)
timer("isrunning", id) ---> timer("gettimes", id)
timer("stop", id) ---> timer("do", id, 0)

I change order:
timer("new", id, ms, times) ---> timer("new", id, times, ms)
timer("start", id, ms, times) ---> timer("do", id, times, ms)
New: timer("do", id, times)
Old: timer("start", id, -1, times)

When timer("do", 1, 10) Before I OneShot the timer and every loop if counter > 0 Then restart OneShot timer
Now the timer is always on until the timer is 0 then the timer stop!
[Shift-Ctrl-F] Switch between Search/Replace

160229 Day 159:
Rewrite the timer function:
timer("new", id, ms, -1)

160228 Day 158:
Add BLL function: ecco
print/write don't force the console to redraw, echo force redraw, so echo is slower that print/write
write/print redraw the console when no application queue.
Example 1: user dragging a splitter and SYS.OnSplitter() the echo can slow down quite alot so use print/write to make it little faster!
Example 2: the BootUp Time talk for itself!
for i = 0, 1000 do
    echo("I am doing the loop: "..i)

BootUp Time = 5.21

for i = 0, 1000 do
    print("I am doing the loop: "..i)

BootUp Time = 0.489

Bug Fix: data("cat") now don't print out the log if log is empty!
Bug Fix: Print out ERROR message when attribute not found

160226 Day 157:
Rename cls() to clr() it's not clear screen its clear console..
Remove Change file on [Ctrl-R] Reload from disk
Bug fix: BASS("info") now return properly even if sound is not loaded

160225 Day 156:

160224 Day 155:
I had error checking only when the first initiate run and on SYS.OnCreate()
Now I extend the error checking to all event function call's
Run BLL Stop the script and show the Error message and mark the line of interest
Run StandAlone BLL Only show Error message but don't stop the application
BLL/BLX Release Ignore the Error message totaly

160227 Day 154:
Change all show/enable/hide default value -1 to 1
It's more logical:
listbox("enable", 400) -- enable listbox 400
than before:
listbox("enable", 400) -- This return the current value before
listbox("enable", 400, -1) -- So you need to write -1 to return the current value now!

160223 Day 153:
I catch the Lua Error Sting and extract the Line number and the error information:
Syntax Error :: line: 691, attempt to call global 'gfdgd' (a nil value)

160222 Day 152:
Make the right click menu so it created dynamically accordingly what and where the user right click

160211 Day 151:
Insert new horizontal splitter icon in Toolbar.png
New Function: [Ctrl-Alt-F10] Set all horizontal splitter to this size
  Day 101 to 150 361 0
160109 29 Days
Make the option for the console to be on the sides and the bottom of the window
the 3 first dats I try only switch the console/output window to the bottom/side window.
But after the 3 day I realize that if I switch the console to the output window down position,
the console is not on the bottom it's still on the side of the output window, so I revert the code back 3 days!
I had to make the console main window so it hold the whole width of the window,
this make more or less all code for the console/output window broken,
in 27 days I was writing on something that I was not sure that I could fix

160108 Day 121:
Bug Fix: Fix the flickering when [F9] close console
Bug Fix: Fix the flickering of file and index window when [F9]
Bug Fix: Fix setpos("console") so it open/close at right pixels
Can now search width "quotes"
Bug Fix: listbox("select") now set last entry if select is higher than last

160102 Day 120:
Rewrite the [Ctrl-F4] Search/Replace code.
Now it remember witch edit window has the focus: console or edit window
If console has selected text when Ctrl-F then new serch text is added and it continue search the text in the console
New menu Function: [Alt-F4] Toggle: (console/edit)/search
Bug Fix: [F9] Finally Make slider goto the newly set and bootup position correctly
New Function: [Alt-F9] Toggle: Toggle console/edit

160101 Day 119:
Make the option to Search/Replace in both console and the editor window.
It now search in the focused editor window.

151231 Day 118:
Make the [Alt-F] Jump to BLL indexing
Update the highlighting in the index list when [Ctrl-PageUp/PageDown] Goto previous/next function/index in code

151230 Day 117:
151229 Day 116:
151228 Day 115:
151227 Day 114:
I been trying to use wxWidgets destroy function when restart the script
I manage to make it work but when I use the destroy function it look like it put the destroy command in a queue
and when I press the F5 to restart the script sometime the script start before the destroy command get executed,
and when that happen application just get terminated without a clue!
So I restore the free function to all the BLL objects when the restart script.
I am going to try update the MinGW.4.7.1 to MinGW.5.1 some day and then I am going to try again
if I can use the wxWidgets destroy command again!

So I am back using the free command again, and when I restart the application is leaking a lot of memory
when I have the tab or panel in panel command in the script
If I restart the application by holding the F5 it terminate after around 120 restarts!

When tab("deletetab") I need to first see what kind of child it is
So far I see if it's a panel or scintilla, and if it's a panel it need to look if it contain children so I can kill them!

151226 Day 113:
Rename Function: system("enable", "main") to system("enable", "edit")
Rename Function: system("focus", "main") to system("focus", "edit")
Rename Function: system("setzoom", "main") to system("setzoom", "edit")

151225 Day 112:
Set icon in the menu
New Sub Function: menu("additem", id, menuid, "MnuItmTxt"[, "InfTxt"][, "normal/check/radio/sub"][, bitmapid][, index])
I can now set menu icon when adding the menuitem

151220 Day 111:
Bugg Fix: delete tab and window's
for Functions: tab("deletetab", id, index, 1/0)* and tab("deleteall", id, 1/0)
I learn that I can't set a BLL objet to Null because the list is static
I can only free all wxWidget object's inside the BLL object's not destroy them
The memory leak is when restarting the BLL script and so far I put that on ice..

151219 Day 110:
New Function: bitmap("getsize", id)**, bitmap("isok", id)*
panel("bitmap", id, bitmapid), panel("bitmap_setpos", id, x, y)**, panel("bitmap_show", id, show)*

151218 Day 109:
Update Function tab with new Errorcodes
New Function: tab("getfontsize", id)*, tab("setfont", id, "facename", size, encoding), tab("getfontsize", id)*
New Function: tab("bitmap", id, bitmapid), tab("tabimage", id, tab, index)
New Function: tab("setfont", id, "facename", size, encoding), tab("update", id)
Bugg Fix: tab("setsize", id, width, height)** don't do the resize. To make the tab redraw use: tab("update", id) this do a full screen tab draw and then restore the tab

151217 Day 108:
Update Function tab with new Errorcodes

151216 Day 107:
Update Function tab with new Errorcodes

151215 Day 106:
Update Function checkbox with new Errorcodes
New Function: checkbox("settooltip", id, "Tool Tip Text")*, checkbox("gettooltip", id, "selection")*
New Function: checkbox("getfontsize", id)*, checkbox("setfont", id, "facename", size, encoding), checkbox("getfontsize", id)*

151214 Day 105:
Update Function combobox with new Errorcodes
New Function: combobox("settooltip", id, "Tool Tip Text")*, combobox("gettooltip", id, "selection")*
New Function: combobox("getfontsize", id)*, combobox("setfont", id, "facename", size, encoding), combobox("getfontsize", id)*

151213 Day 104:
Update Function listbox with new Errorcodes
New Function: listbox("settooltip", id, "Tool Tip Text")*, listbox("gettooltip", id, "selection")*
New Function: listbox("getfontsize", id)*, listbox("setfont", id, "facename", size, encoding), listbox("getfontsize", id)*
Function Update: listbox("setsize", id[, width][, height])** now return width, height
Remove Function: listbox("getsize")

151211 Day 103:
Syntax change for cmd: gethomedir, getuserdesktopdir, getuserappdir, getuserdocumentsdir, getlaunchdir, getappdir
to: homedir, userdesktopdir, userappdir, userdocumentsdir, launchdir, appdir

I note that if I try call a none existing:
echo("line: "..listbox("select", 402))
if 402 don't exist it don't return a value and then the Lua scipt just stop!
So I need to go throu all function and add return values even if the object dosen't exist

151130 Day 102:
Bugg Fix: restore output window after script right after dragging the output slider while script was running
Bugg Fix: Save the right position of the console after dragging it in any mode

151117 Day 101:
Bugg Fix: scintilla("setlexer", 700, ext) now set full path to data/BLL.ini to read the Lexer data
  Day 51 to 100 2232 0
151116 Day 100:
New Function: listbox("paper/ink", color)
New Function: input("selecttext")
Bugg Fix: if listbox has no line then listbox("select") don't select line 0

Write BC.bll BLL Commander

151114 Day 99:
New Function: cmd, changedir, copy, copydir, createfile, currentdir, del, deletedir, filetype, filesize,
gethomedir, getuserappdir, getuserdesktopdir, getuserdocumentsdir, mkdir, move,
extractdir, extractext, extractfilename, stripdir, stripext,
readdir, nextfile, closedir
Publish first Alpha

151113 Day 98:
Save Include/Exclude the MinGW library files menu option in BLL.ini

151112 Day 97:
New Function: Include/Exclude the MinGW library files when building a standalone BLL.exe/BLX.exe project
Fix the F9 sliding for file/index splitter to keep its position when imploding
Fix so the search slider never become smaler that the min height

151111 Day 96:
I added: [Ctrl-Alt-F] Refresh SearchBAR
But since I probably fix the SearchBAR Not drawing correctly, we see if I remove the function?

151109 Day 95:
My next task been trying to make the console set it's real width as the Ctrl+Left/Right
When the console slide it had it's own way to slide.
I just goto the function and call the same function that Ctrl+Left/Right does.
Then I got the problem when Ctrl-F9 Make fullscreen console it colaps the file and the index sliders.
So I save the slider positions and when the slider colapse I restore them when F9
Still a bugg because I restore the position after it slide back, not when it start slide
(you can see that if you set: slider_speed = 20, or use a slow computer)

151023 Day 94:
Finnish tab("deletetab")
Update tab("deleteall", id, 1/0) it now remove tab and windows manually
Going to stop update samplesTAB.bll before it getting too complex

151022 Day 93:
Start Update: tab("deletetab", id, tabid, 1/0) So it delete tab and window/panel

Update samplesTAB.bll

151020 Day 92:
add the index function panel to program .ini and dataBLL.ini
Replace main, main_open with files, files_open (file/project file list panel)
and add: index and index_open (function index list panel)

151019 Day 91:
tab("deletetab", id, tabid) this only delete the tab not the content now, you need to manually delete the content that is on the tab
tab("deleteall", id) is not working when object on the tabs

Rename bll function: setpos("main", 0) to setpos("files") -- hide/setpos file tree window
Add bll function: setpos("index", 0) -- hide/setpos indexing window

151018 Day 90:
After a midlife depression and a severe heat stroke, I try come back and poke some more..
Been trying to bugfree the bll code of restart.bll, BLINI.bll, TAB.bll
Add bll sub function position: input("focus", id[, position]) -- default position -1 set cursor after last char
Add bll function: button("tooltip", id, "New popup tooltip helptext")

150326 Day 89:
New Editor Function Replace All
The Search/Replace bar is now working
Move Wordwrap to Search/Replace menu

150323 Day 88:
Bug Fix: can now edit/change the main: toolbar("new", -3)
Restore Editor Layout now restore the function window
I look at wxBitmapComboBox and decided for now I use the standard wxComboBox that behave and look more native

150321 Day 87:
Make FileTreeList and Function List show in 2 separare splitterwindows
F10 show/hide FileTreeList
F11 show/hide Function List

150320 Day 86:
ASC the function list
New BLL function: listbox/combobox("insert", id, line, "line 1|line 2|line 3") can now add multiple line in one command
Add: toolbar("addbutton", .. check), toolbar("check", id, toolid, state) for check/uncheck toolbar button
toolbar("addinput", id, child, "Help text") for adding input and combobox to the toolbar

150319 Day 85:
Add the attributes for the combobox

150317 Day 84:
Add ini: [Cetegory] to the indexing list
Bug Fix: "--#index# ... :" Check If the colon is inside the hashtags

150316 Day 83:
Add rem line to the: function and shortcut list
Much more easy to find the help topic you are looking for in the help file now
function and shortcut list look for: "--" follow with an "#" to "#" anywhere on the line
End Function

150315 Day 82:
Make Functionlist use wxBoxSizer
New BLL Function: checkbox
Change all attribute: enable, show to default -1 current value

150314 Day 81:
New function: [F11] Functionlist
Make Functionlist Toggle as FileTreeList
Filemenu button now Toggle Filelist/Functionlist

150313 Day 80:
Remove REM Lines: If "--[tab][enter]" Then around 60 lines it only remove "--" and keep the rest of the line
I could not figure out why it behave like that, I even restart the computer.
I had to remove that sequence first before I remove the rest of the REM Lines
Save Active Editor or the focused one
Convert to UPPER/lower case

150310 Day 79:
New Function: Cut, Copy and Paste to Clipboard. I don't use Scintilla's: Cut, Copy and Paste to Clipboard
So now I can bind them to the toolbar and have direct access in BLL

150310 Day 78:
If Search and Replace Window dosen't fit then it refit it's smallest position
If you drag Search and Replace to become smaller than minimum then it snap back to it's smallest position

150306 Day 77:
Make dataBLL.bll run SYS.OnCreate()
dataBLL.bll now make menu: SYS.CreateMenu(), toolbar: SYS.CreateToolbar()
Can now toggle current document/dataBLL.bll

I been trying figure how to include wxBoxSizer in the BLL, so far I only manage 1 horizontal sizer to work
to make a toolbar in the output window I can stretch it automatically.
I put the wxBoxSizer function on ice for a while!

150301 Day 76:
Search and Replace Window is now updated when sliding
When change file in filetree fi
Feel that I am done with tab's..


150226 Day 75:
It look like the Editor Search and Replace function is finally done.
I had to hide the Search text and checkboxes maybe done now?

150225 Day 74:
Bug Fix: Rewrite the Search and Replace Window code and how it start up
When the editor start up it building piece by piece and when I try recreate the Search and Replace Window to a window that is still growing,
I had to get some information about the finnish window to make it work properly.
the output window save's data in: .BLLprj
the save it's information in dataBLL.ini

150223 Day 73:
I learn that I need to set SetCaretLineVisible(1) so Current line set: SetCaretLineBackground
Bug Fix: old Find Text only use selcted text to search previous and next
Now it Findtext in the search text box and if its empty it ignore to search
Can now search with matchcase and whole word

150221 Day 72:
Bug fix: getpos("outputsize") get the height from the parent splitterwindow - SashPosition
Add scintilla event for the editor: Double Click to activate the Search and Replace Window
Make panel("setsize", 5000, -2, _h-_s, 0, 0) set the virtual size to 0 as default, if you don't have a virtual size it should be 0
Make the output wxPanel as an array, if Search and Replace Window then switch outputwindow to Search and Replace Window
Make Search window get it's own splitterwindow position

150217 Day 71:
Bug Fix: When I Create [F6] new Stand Alone .bll it update SYS.OnResize() but didn't update: the output splitter: _w, _h = getpos("outputsize")
this is the parent -1
When I hide the console output stop update
Then if console was hidden I set outputsize = consolesize
But when I consolesplitter.Unsplit(console) I had to consolesplitter.Initialize(output)
anyhow this took almost the whole day, not one of my best day I say
Henri from BlitzMax show me wxFlatNotebook so now I been replace all wxNotebook code with wxFlatNotebook
I can now set more color and style on the tab's
I remove BLL function: book
Remove all wxChoicebook code

150216 Day 70:
New BLL Function: system("delay", 2000), pause 2 secound
[Ctrl-Alt-F5] Open the .ini file, If you then press [F6] you open the .ini file externally
When I create a Stand Alone .bll [F6] and hide console at start then all the window get stuck at the initial size
For some reason the first splitter window I didn't manually change size to get stuck and block all it's children to grow in size
because they get the size of the parent's
Now when I set size: setpos("console", -2, -1, -1) is also set the main splitter window to the size of the window

150215 Day 69:
Start include Scintilla code
Rewrite code for: system("enable", "main", 0) you need to set enable = 0 to blackout the code
I know every flickering is something I did bad, so prepare I am hunting you down..
Bug Fix: local SB = window("statusbar")
window("statusbar") set statusbar and return 0
Now window("statusbar") = window("statusbar", -1) = return 1 if staturbar
I waste about 5 hour on this!

150212 Day 68:
Bug Fix: Switshing between files when full editor
Guess what I been fixing the scrolling window today to, ok today I learn: Unsplit(WindowToRemove)
I guess learning this make my life a bit easier?
setvirtualsize is just setting the minimum size
setvirtualsize set the minimum size of the panel before the scrollbar appear
OK Done with scrolling panel

150211 Day 67:
Rename BLL Function: background to page
Remove all manually handeling setting of the scrollbars
Now I get irritated again: My newly function: page is just a panel with some extra scrolling functions
I make panel call my page function and realized I don't need 2 function for that
function update: page is now panel and panel is no more
the scrolling panel have just 2 more attribute's: scrollrate and setvirtualtsize

150210 Day 66:
Make New BLL Function: background, it's a panel that can scroll

150209 Day 65:
Stop checking If SYS.basic == 1 in SYS.OnKeyDown()
You need to terminate Application without SYS.LoadINI(1) with the close button
If Script start from .ini then when script terminate reload .ini file
New BLL Function: user = system("textdialog", -1, "Login", "BLINI Username:", user, -1)
Bug Fix: When set Lexer it change ini file I had to reset the last .ini file
Function Update: [Ctrl-Alt-F5] Now toggle between .ini/.bll file
Function Update: [F1] Now toggle between HELP.txt/.bll file (I could not help myself)

150208 Day 64:
A bug in Lexer make bll lexer go all black, I get as usual irritaded I found a bug, but when I fix it I realise the bug was kind of handy!
So now when the BLL Script start I set Lexer to Null and make main Editor without any Lexer == all Black
You can still enable main Editor: system("enable", "main", 1) if you want to see the code in the Stand Alone Script
Bug Fix: if cursor is before the the end of the TAB's When Enter
And again the Sliding console is still messing with me
I stop using the real console.width and only check if console.width == consolewindow.width
Situation script window is smaller than console_open whan close if console hidden is equal to console open more than console_open and it start slide from the other way.
It is not a bug but it feels wrong

150207 Day 63:
Move the Argv again to reduse code
Function Update [Ctrl-Alt-F5]: .ini file replace .bll location and when [Ctrl-W] .bll get Selected again
I start get paniced here, a label set hes own color and BLIDE make a darker color background for visible text
I try change color scheme's move Layout files, then I do the last resort: restart computer
good that the label get fixed to because I was out of clue why it set wrongly color
Remake the Lexer so user can set lexer for their own filetype's
Create Lexer for .ini
Bug Fix: After .bll file read/write from ini, it now set back to read from "dataBLL.ini" when change Lexer

150206 Day 62:
Bug Fix: setpos("console", 0, -1, 0) Hide console at side 0
I Move check argv to before the main Frame was created so I could see if application is a Stand Alone Application then application don't
Set the Editor Layout posisioning it set the Stand Alone Application Layout posisioning from the start to avoid Editor flickering
When no Flickering it feel faster to startup, maybe only a illusion?

150205 Day 61:
wxChoicebook Have a Layout Glitch: When Resize the dropdownbox get stretch out
and I can't bind a event: SYS.OnChangeWindow() to it
I keep it for now but I'm feel annoyed about it!
Now you can open the .ini file: [Ctrl-Alt-F5] then [F5] Run the .ini file and the Editor try localize the .bll owner of the .ini file and run it
It reload the .ini file berore run the .bll file for better studdy the .ini file
I finally made: You can now run .Lua script

150204 Day 60:
I finally made: insert tab's when press Enter
I finally made: Keep Clipboard data when close application
I finally made: [Ctrl-M] Comment line
I finally made: [Ctrl-M] Comment selected lines
This all been on my todo list since start and I finally took time to do them!
Make paper_select actually work and make more brownish darker Select text background color

150203 Day 59:
I manage to Erase Object and the system can handle it and not crash. I am guessing there is no other way to store the object than in arrays
The problem is when erase object in the array, I can set the array object to Null but not erase it
hehe I sit 2 hour and could not understand why it did not select the tab as i told him to?
Then I found out that my hotKey: "Home" make select forst Tab and ignore my request select the last created Tab
Add BLL Function: book, there is a Resize bug I can't fix so thinking I am going to remove book lateron

150202 Day 58:
New Function: tab

150201 Day 57:
Finnish: splitter/panel

150130 Day 56:
Bugg Fix: You can now drag console to all side's now
Add parent to: slider
There is a wxWidget bugg: When: button("setpos", 100, 242, 66) it reset the size to a standard button size
I had to get the size and reset the size after setpos
Bugg Fix: Now Delete [Category] in the BLL Project File .BLLprj
Manage to:
splitter("new", 1000, -1) -- Create a new splitter and put it on output: -1
panel("new", 2000, 1000) -- sub window1
panel("new", 2001, 1000) -- sub window2
splitter("split", 1000, 2000, 2001, splitterpos, split) -- put subwindow in splitter
The Bugg is that when splitter("split") is set size = 20
Bugg Fix: splitter("split") set setsize parent size on itself

150127 Day 55:
Bugg Fix: getpos("console") If Left side then invert the x value
New BLL Functionality: panel("new", 1002, 1000, -1, -1, 32, 32, 0xFF0000)
If 1002 is already exist it get is's last position if -1
Remove: SYS.start=os.clock() From the start of the script and put it in basic.bll

150126 Day 54:
I been thinking that I need to create parent Object like: SplitterWindow and Panel
and to do so I need to add SplitterWindow or Panel and rewrite all the object howto add them to the parent
OK Here we go...
New BLL Function: panel("new")
Make button/plopp use parent
Move OnResize so it could feel if the output Window Resize to
Bugg Fix: getpos("console") return 0 if hide

150125 Day 53:
Reset the output window paper (background color) when start the script, no flickering
Update Stand Alone autorun = "dataMyApp"
If No ext Then Check for: "dataMyApp.blx" if no .blx Then Check for: "dataMyApp.bll" if still no File Then End the Application
New Editor Function: [Ctrl-Alt-F5] Open the ini file for current .bll file ([Ctrl-R] for Reload)
Bugg Fix: Add SYS.debug again when Script starts

150124 Day 52:
I Splitt the Cleaning Process into:
Clean all the Code
Remove REM --[[ ]], --[===[ ]===]
Remove REM Lines -- Remmarked Line
Trim Code Delete all none printable code before and after for every lines
Remove Spaces this remove some of the unnecessary extra spaces
This only remove some of the extra space so it not accidentally remove some of the text
(Remove Spaces can be better but that is just marginal)
[F7] Make Stand Alone and ONLY copy the RAW .bll file to data
[Ctrl-F7] Make Stand Alone and Clean all the Code Then make and copy the .blx file to data folder
Because of human error you can manually clean the code and copy the .blx to the data folder
If [Ctrl-F7] fale make the .blx file you still can do it manually!

I finnaly got LTE 1MB Internet after 13 painfully mounth of 2G mobile USB internet

150122 Day 51:
[F7] Make Stand Alone BLL.exe
[Ctrl-F7] Make Stand Alone BLX.exe
This Create the folder and the .exe with same name as the .bll file, then copy all nessecary files and folders, and last copy the folders: sound and images
Make Clean the Code
  Day 1 to 50 262 0
150121 Day 50:
The Console was not supose to Slide and Adding Sliding Functionallity to a code that was not suppose to Slide was little tricky
If output or console get full width I only show 1 of the windows the other window get removed and the X-axis get inverted
and if I change the console to the left the X-axis get mirroriced.
Plus the complication with Full Screen that have it's own life!
My goal was to have the output window as the constant (have the same size on both left and right side)
OK that sound stange! user set output window size (the constant)
If I do nothing and Switsh side then the console get the output width and output get the console width.

My Biggest problem was that the original code behave Wrongly when I start slide, and I make the new sliding code base on the old Wrongly code
So I had to rewrite all sliding code from the scratch so I could grasp the problem
In the end my simple goal to have a sliding console took more or less 3 days to complete!

I come across a odd thing I can't realy explain:
In SYS.LoadINI(0) I call setpos("editor") that restore the editor layout
In the end of the script I call: setpos("console", 1400, -1, -1)
If I press F5 to restart the script I see a blip at 1400 before the console jump back to the editor width
If I Then use: timer("new", 3, 17, 1) to call setpos("console", 1400, -1, -1) it set position to 1400
It look like the function setpos("editor") take 16ms to complete before I can set a new position again
I am going to ignore this ^^
Improve SetLexer when New file for easyer add new file
Make SYS.restart = SYS.restart + 1 for every restart (a easy restart counter no need of save to file)
Editor set console position when starts again

150120 Day 49:
Writing the Sliding code half day

150119 Day 48:
Writing the Sliding code

150118 Day 47:
I found out the secret refresh frame: MFrame.SetPosition(-1, -1)
That set window position at same position and redraw the frame
MFrame.Refresh() is the one that suppose to Redraw the Frame
Even if I know howto refresh it's something else wrong when I hide/show statusbar it's something that make the frame flickering to windows start size
so to avoid that: system("restart") after set: window("statusbar", 1/0)
It's a neat trick to: system("restart")
I could not help myself! I make a BLL Script that scroll the console Window and I like it so I build in one as default
You can change the scroll speed: [win] :: slider_speed = 150 (Lower Slower)
If you don't like the console scroll open/close Then set slider_speed = 3000 (he Then try scroll 3000px at a time)
When Sliding console the treelist is flickering TreeFiles.Freeze()/Thaw() is not Working
Sliding working in Full Screen Mode, [Shift-Ctrl-F9] Full console and Switching from Left/Right console

Typhoon again

150116 Day 46:
Bugg Fix: When Terminate output Window dont srink
BLL Function Update: halt("BLL") == halt()
Bugg Fix: When Strar BLL Script it first terminate all (You can [Ctrl-Left/Right] Now)
SYS.OnResize() Don't execute until SYS.OnCreate() is done, then SYS.OnResize() is called only ones!

150115 Day 45:
Update: lopp("new") So you can set gradient in "new" so no need to call: plopp("setgradient")
Could not help myself, I update BASS.BLL with the new plopp button
Bugg Found: Been sitting the whole day try figure out why window is flickering to windows original start position and size
when I system("restart"), After 5 hour I found out my test null.BLL script has no object,
If I add a button or a tabbed object it stop flickering

150114 Day 44:
I been trying track down memory leak today:
If I system("restart") a BLL Script that is empty no leak!
If I add: include "menubasic.BLL" it start leak when I system("restart")
Bugg Fix: Can: SYS.OnTimer(id) can now: system("restart")
I test restart with delay see if that make any difference: (No diff)
I restart 1000 time's:
8.3-4.9=3.4Mbytes = Leak ~3400bytes every restart
I am going to drop this for a rainy day...
Bugg Fix: system("restart") don't restore Editor position
I haha myself it toock ~37 minutes to convert the BLL's menu into BLL Script but took a day to make it work
for some reason unknown I could not reload the dataBLL.BLL
So I decided to save the menu in memory an reload menu's from memory when terminate the Script
I didn't like to reload menu from file every time BLL Script Stop
New BLL function: plopp a Gradient Button, I use BLHTML's name for the new button ;)

150113 Day 43:
Bugg Fix: If restart BLL Script while running don't Remove all object before SYS.OnClose is Done
Done for now with the menu/menubar function's
New BLL function: system("updateconsole"), Move to the end of the text, in the console
New BLL function: system("restart"), Restart the Application
I convert the BLL's menu into BLL Script: 19:30 -- 20:07, (37 minutes)

150112 Day 42:
Update all BLL Function's: You can now reset a function by function("new") again
The Problem begin with I make: include "smallmenu.BLL" and then I wanted to delete and make new menu
I try make menu("free") but realize that I want to reuse the same code again
it was little tricky with physical objects: label, button, input, listbox, slider
Instead to repaint the whole frame I hide object before I free it to avoid the repaint flickering.

150111 Day 41:
First prototype:
When I create menu I save a Copy of the menu
When the BLL Script Start I Remove the menu's one by one until No menu/menubar
When the BLL Script Stop I Append back all the Copy of the menu's
My Goal is to make the Menu with the BLL Scrit so I am going to rewrite it all again
But I can't rewrite it if the menu is not working..
With no menu I have no Key menu shortcuts anymore
Create: [192] = function() if SYS.key_17 == 1 then cls() end end,
in function SYS.OnKeyDown() so I can Stop the BLL Script with: [Ctrl-F5]
If user try check an none checkable item then wxWidgets Debug Alert tell the user that!
New BLL function: SYS.OnMenu(id)

150110 Day 40:
I had to sit down and Learn more about wxMenu and wxMenuBar

150109 Day 39:
Buggfix :: BASS("info") print ERROR message: BASS("type", id) :: Is Not Loaded, If sound not loaded
Buggfix :: Save Scriptfile before: [F6] Run StandAlone BLL and [F7] Build and Run BLX
New Function: Do you want to Exit the Application?
Fix the halt("BLL") and halt("app") to the Confirm Quit
halt("app") in Editor Mode it Ask: Are you Sure? In Stand Alone Script it just Quit
New BLL Function: label()
Don't Call: SYS.OnResize() until SYS.OnCreate() is Done
When Creating the Application it call SYS.OnResize() many time and if you change object
that is Created in SYS.OnCreate() you get the Error No Object!
Buggfix: data("setbuffert", "", "HEX", "$F5F6F7") now set as number
Layout Fix: Run Stand Alone Script Don't show info "Load File"

150107 Day 38:
New Function: [F6] Run StandAlone BLL
New Function: [F7] Build and Run BLX

150107 Day 37:
New BLL Function: data("setbuffert", "Category", "key", "value") and data("writebuffert")
New Function: Save/Restore Backup on all the .ini BLL Script files and dataBLL.ini
Can: [Ctrl-F8] Maximize output only (Can't restore in RunAlone Mode)

data("write", "Category", "key", "value") Read and then Write the whole .ini file for only update the "key" line
So I Update BLINI Module to write to Buffert then Write the whole Buffert to the .ini File
I admit I am not clever this took me 15 hour to complete 132 line of code (that is: impressive 8.8 line of code an hour)
I don't include this in my day count for make BLL!

150105 Day 36:
BLL Bugfix: halt("lua") now works as intended and function SYS.OnClose() is still called
New BLL Function: width, height = getpos("outputsize"), system("movemouse", x, y)
Remove BLL Function's: system("setpos", "main", width)*, system("setpos", "console", width)*, system("setpos", "output", height)*

150104 Day 35:
Bug Fix: BLINI:
BLHTML.WriteToFile("win", "ABCDE", 1)
BLHTML.WriteToFile("win", "ABC", 2)
When Write he only check line "ABC".Length and it match: "ABCDE" So he write ABCDE = 2 and I was confused ^^
New Function: [Ctrl-Shift-F9] Toggle Left/Right position for the console window, (I did the BLL Function first)
If Run from file then: system("debug", 0) always set to 0 (No Debugging)

150103 Day 34:
Update HELP.txt
New BLL Function: setpos("console", -1, -1, [0/1]), 0 Set console to the Left, 1 Set console to the Right

150101 Day 33:
Disable Main Editor and the Console when Start BLL Script
New BLL Function: system("enable/disable", "main") and system("enable/disable", "console")
Bug Fix: Fix the Flickering wheile restart the Application without stopping first
Make BLL Code for getting all the pressed Key's:
for i = 1, 127 do
  if _G.SYS["key_"..i] == 1 then print(i.." ") end
echo ""

It manage to register 7 pressed key's
I decide to keep both: SYS.KeyDown and SYS.KeyUp
If you don't use: SYS.KeyUp you could just remove it

141231 Day 32:
New BLL Function: listbox
Make the Key event funktions: SYS.KeyDown and SYS.KeyUp
SYS.[code] = 1 if key is pressed
SYS.KeyDown = KeyCode for key that get pressed
SYS.KeyUp = KeyCode for key that get released

141231 Day 31:
Change Move File Up/Down: [Ctrl-Up/Down] to [Alt-Up/Down] [Ctrl-Up/Down] Scroll text Up/Down and I don't want to change default shortcut's
Update BLL Function: add attribute: align: [left/center/right] to label:
label("new", 1, vol*100, 330, 105, 0xFFD5B4, 20, -1, "center")
Change all settext to only text
New BLL Function: system("title", "Application Tittle Text"), Set the Application Tittle
New BLL Function: system("extractfile", FileName, [path/file/name/ext])*, Return Chosen part of the FileName
Open New file, don't show old active Editor Ghost
New File Inherit active file's Layout
Change BLL Function: sound -> BASS and wave -> sound
sound is the main sound of BLL and BASS is a downloaded module: bass.dll from

Blackout, Typhoon, Super rain

141229 Day 30:
New BLL Function: timer("new", 1, 200) :: Run function SYS.OnTimer(id) every 200ms
New BLL Function: slider("new", ID, value, min, max, x, y, width, height)
When Stop BLL Now only Stop Sound and Timer
Update: slider

141228 Day 29:
New BLL Function: New Sound BASS Library, Can now do same as old SoundLibrary wave

141227 Day 28:
Change Status Bar New ShortCut to: [Ctrl-Alt-.]
basic.BLL now save the statusbar correctly
Change BLL Function: sound to wave
I am try make BLL function with the sound library: BASS
BASS More or less can play any sound file while my wave library can only play: .wav and .ogg
Make New Sound Library that play: .wav and .ogg

141226 Day 27:
Still Sick but can't keep my fingers away..
I get irritate that the editor save all changes so I make new BLL Function: setpos("editor")
Update: includeasic.BLL to handle:
SYS.LoadINI(0) -- Don't Load the .ini set Editor Layout positions: setpos("editor")
SYS.LoadINI(1) -- Load the .ini file
Buggfix: Do SYS.OnClose() When Run Stand Alone Application
Make new sound library
Make new BLL Function: sound

141217 Day 26:
5 Blackout Today
include "basic.BLL" now Check if file in: BLL If Not Then BLL Check if file in: BLLinclude
Move basic.BLL to: BLLincludeasic.BLL
When Application Start and resent files is reloaded: If File gone Then Skip Load that File
Fen Function: [Ctrl-F9] Full Console
Can set Console Window to now now (Hide the SplitterWindow border) setpos("console", 0)
setpos("output", 0) Is now Working


141215 Day 25:
2 Blackout Today
BLL.ini and the Pjroject file: .BLLprj now save console and BLL output window position
Buggfix: basic.BLL Now Load right value for: main, console and output
Change code to setpos("output", output, output_open)
Change so hide/Maximize output now hide splitter border
Restore Editor now use the new rewritten splittermain and splitteroutput function's
I don't know if I rewrite the code for splitterconsole: When hide console you can still dragg it
Console hidden is consolesplitter width-1 so it's border is still visible
I don't get irritate on the border on the right side

141214 Day 24:
Make 1 function for Load file or Project
Open New File now insert file at current position Not current position + 1
Change caretlinebackground to caretline_ink
I only need to save the Project when I want to make a change to the startup config
Close Program don't Save Project, user need to Save the project them self before terminate the application.
Save Project don't save the files only project data
Change so HELP.txt and BLL.ini get focus if created new

141213 Day 23:
After 7 day of no electrical after the typhoon Ruby my computer stand and flickering and when I restart the computer it shut itself down.
I almost start crying, I goto to my local computer shop and they only dust the memory and the computer was up and running again.
That is how you make yourself feel totaly incometent.
New BLL Function: echo("Line") == print("Line ")
Make the Splitterwindows go the whole way to hide the splitter border.
I learn howto Freeze the Splitter window to awoid flickering, really happy about that.
The Splitterwindow have their own life and I cant really change that. When I hide the Filepanel I switch position of the Main Editor and the Filepanel splitter
Fix the flickering when the Filepanel toggle to hidden.
I finally make the Main Editor Splitter how I wanted it, a dream come True..
Bugg Fix: If Filepannel is hidden while Fullscreen it enlarge if F10

141205 Day 22:
Make a new search system for faster walking the code
Properly remove the Temp Editor while ReCreate the ED list
New Function: [Ctrl-Up/Down] Move File Up/Down in the File Treelist.
The impressive part is I don't erase and AppendItem (Create a new Filenamelist) and it's made by 1 function (22 line of code)
If I delete, create new treefilelist then the tree flickering + it select the root item and I had to ReSelect curent file again
I am acctually impressed I made it. but now I am less impressed by the [Ctrl-Left/Right] Change file in the TreefileList

141204 Day 21:
New BLL Function: system("fullscreen" 1/0) 0 Window Mode, 1 Set FullScreen, set and return SYS.fullscreen
The BLL Script now save id in Full Screen or Not
Add [Ctrl-Shift-B] Open dataBLL.ini
Buggfix: If Open New File: The new page is already created! If user Cancel Open New File then focus new file then erase new page then refocus the old file ^^
(Don't want to write a whole new Loadfile for this)
Page is white while in: Open file Dialog because no Lexer is loaded..
Somehow I can't save the Editor in Full Screen, it litterary buggs out
HAHA hysterical laughter, I Make Save Project and Load project, been sitting hours and try figure out why the new editor don't draw all the slider graphics
I had to: ED[i].hide() before I ED[i].Free()
I was thinking if I just clear all ED from the memory then it's gone but no the graphics is still there from the old editor.
OK Load/Save/SaveAs Project is working..
I only need to say I got a Babysitter
Typhoon, but it didn't come..

141203 Day 20:
Clean the new tree file name code
Merge both make new file and make new BLL file to function create new editor function
If New file is Not save on disk Then OnClose don't include the file in: [resent]
Add new Function: [Ctrl-Shift-T] Create new txt
When delete file, Write only once: Change document: "ChangeTo.BLL"
Don't set lexer every time select file Only when load and SaveAs
When Load/SaveAs update Tree filename
If you try open a file that is already open then that file get focus
Function Updated: [F1] Help now Load New "dataHELP.txt" if loaded in tree file list then it get focused
If document is focused and it try to focus itself now it ignore that request
Buggfix: When remove file Then update the new active textdocument

141202 Day 19:
My wife go away I maybe have 4 to 5 days wife free days
Set [console] and [txt] Lexer
Filepanel can new/load/delete/remove files
Change so the filetree name is store in the editor class
Can remove files! That took more or less the whole day to figure out howto close files
I create a temprarly Editor class array that create a new array.
Adding the treename object to the editor class remove half the problem but I still need to delete the treename manually even if they get recreated in the editor class.
If file change to txt/[BLL/Lua] then it change the Lexer
[Ctrl-Left]/[Ctrl-Right] for change files, [Ctrl-Enter] for focus the Filetree
Buggfix: the Lexer open the folding collum and then it save it in open state automatically.
With the filecontrol done EDii almost become a texteditor alternative, but just almost..

141201 Day 18:
Application [X]-Button now save to .ini OnClose
Autorun BLL Script on Startup from .ini: [].runscript
Remove the $%@^%$ Winmode, Hopefully that solve the Windows positioning information for good?
Save Filepanel color: [win].file_ink and [win].file_paper to .ini
Set edit/console font/size from the .ini

141130 Day 17:
One Mystery solved: Learn howto set statusbar width
Moving Splitter Now ignore boot process
Can open 3 test editor
Make a treeobject for open files
Can step: previous/next between files

No electrical the whole day and then the rain the whole night..

141128 Day 16:
Standardize the BLL.ini [Win] Windows positioning as the file personal ini file [BOOT]
BLINI Buggfix: WritetoFile and key not found found and value = 0 Fix ERROR :: key = "0"

141127 Day 15:
Try update BLL Error hanldler
I try remove the splitterwindows double variables but realize I need both variables when data is saved.
Struggle more than nessesary to save the position information again.
Then I get stuck on statusbar on/off restart BLL Script:
SB = system("statusbar")
if SYS.sBAR ~= SB and SB == 1 then output = output + 23 end
Today I learn howto return 2 variables to Lua from Blitzmax
It look like Editor Mode and Run Script Mode window positioning is working now?

141126 Day 14:
New Lua Function: label
New Lua Function: label("ink", -1 0xFF0000) Sett all label to red
Update BLL ERROR System:
If function want a Int and the user write a String then the program just stop. So I had to read all field as String and look If it's a String or Not.
Exeption: [, color]
ERROR in label("new") :: Wrong number Inputs or Wrong types :: label("new", ID, "Text", x, y [, color])
If Not color then color = 0
How the system trying to read a Int input:
10 = 10
"10" = 10
"10a" = 10
"a10" = ERROR in label("new" y = "a10" Supose to be a Int (Input field: 5)
New Function: Last Searchword is saved in ini file for continue searthing after restart application

141124 Day 13:
BLINI Bugfix:
var = 0 fixed to: var = "0"
var = "" Get erased even if not in file
New Function: DeleteToFile, Delete Category
New Lua Function: data("delete", "Category")
Update Lua Function: system("icon", "file.png/ico")

141123 Day 12:
New Function: system("statusbar", 1) Show Statusbar
Remove from: SYS.OnClose():
if SYS.terminate == 1 then
  setpos("window", SYS.startx, SYS.starty)
  setpos("windowsize", SYS.startwidth, SYS.startheight)
  setpos("main", SYS.startmain)
  setpos("console", SYS.startconsole)
  setpos("window", SYS.startwindow)
  system("mode", SYS.startmode)

Now If Lua Script is terminated then Edit windows is automatic restored
New Function: If Lua Script is running it don't need to go editmode before stop is save position info from SYS.startXXX variables
Bugg Fix: Lua OnClose Save pos information correctlly when application quit
Think buggfix: I use MFrame.Destroy() instead of MFrame.Close(True) to avoid ERROR
Can set Program icon: system("icon", "png/ico", "file")
Make a BLL Heart ^^

141122 Day 11:
Todays discovery: EDii(MFrame.FindFocus()).EDiiMethod()
It mean the EDii that has keyboard focus is going to run EDiiMethod()
New Function: [Ctrl-L] Show/hide Linenumbers, [Ctrl-K] Show/hide Fold Text

141121 Day 10:
Add SYS Strings: SYS.[file, filename, and filepath], SYS.[path, ini]
data("file", SYS.ini..SYS.file..".ini") save unique .ini file for each BLL.script
Buggfix: If no map when try open file in BLINI Then until futher notice return do nothing
New Lua function: include "basic.Lua" Run BLL or Lua script from BLL*
New Editor Function: Find, Find Next, Find Previous, Find First, Find Last
New Editor Function: Goto Line
Bind: F1 to read dataHELP.txt
New Function: [Ctrl-Shift-W] Set WhiteSpace
ini save WhiteSpace information

141120 Day 9:
auto Create: SYS = {}
Before run BLL Application
New BLL SYS.OnFunctions and SYS.variables:
SYS.OnEvent(id) Call When a event ocure
SYS.OnClose() Call before Application terminate
SYS.OnCreate() Call after the BLL Script been loaded
Change BLL.ini is the new main .ini file and always save to data/BLL.ini When OnClose
New Lua Function: data("file") Open new .ini file for reading
Create a new.BLL template
New Function: When Run Lua: System save the window attribute so it can restore it when terminate the Lua session
Can Run while Lua Application still is running and it don't need to fysically resize to Edit Mode.
I test run the New 1.BLL by holding Enter
SYS.startx Application Start X Position
SYS.starty Application Start Y Position
SYS.startwidth Application Start Width
SYS.startheight Application Start Height
SYS.startmain Filepanel/Main Editor X position
SYS.startconsole Main Editor/Console X position
SYS.startwindow Application Lua Window Y position
SYS.startmode 0 Full Lua Window, 1 half Lua Window, 2 Closed Lua Window

141119 Day 8:
New function: Include my ini manager:
replace setpos("console/lua") with system("setpos", "console/lua")
Reinstall setpos("console/lua") again for setting templorarly positions
Buggfix: Show Error message if Lastfile don't exist
Add Lua Sub Function: button("settext")
Make: input/button show DONE/ERROR messages

141117 Day 7:
Move Lua: From: paper(0xF5F6F7) to: system("paper", 0x6080A0)
New Function: SYSInfo: Printing system logg like Save/Load file's
New SYSTEM Event function: SYSTEM.OnEvent(id) :: Change from: function OnEvent(id)
New Function: Application can now get argument/flags (Load file)

141116 Day 6:
New Lua Function: setpos
Make 1 Function of all button function's
Buggfix: [F9] Toggle Console, If File is Open Then stay Open
Learn HOWTO handle MenuItems
When a button is pressed then run Lua Function: OnButton(buttonnumber)
New Lua Function: quit(), Exit the program from Lua
Make a switch Lua replacement code
Make: Luabasic.Lua
Small basic Library
New Function: halt("lua/app")
New Lua Function: :: system("debug", 1)

141115 Day 5:
No documentation

141114 Day 4:
Update TMColor and add the Function's as TMColor Methods
Add Function: Save, SaveAs..
Grasp the Basic with Lexer coloring

141113 Day 3:
Break Free class TWello in a separate File
Try: BLINI Extends TBLLua but give up
Put TBLLua in Wello.bmx So I can control the wxFrame From Lua
New Function: Load/Save File
New Test can set Menu key Shortcuts from the ini file
Make LuaJit 2.0 work again (can run Basic Lua script again)
Add a [Ctrl-F8] Fake Lua Full screen
Don't need to include:
Import "-lgcc"
Import "-lluajit"
Copy C:BlitzMaxa.Bk4.7.1zeke.modluajit2.modLuaJIT-2.0.0srclibluajit.a C:BlitzMaxliblibluajit.a

141112 Day 2:
Make Split screen position variables Global(temporally)
Make all 3 Split screen to work properly
Can toggle the Lua Out Window

141111 Day 1:
Trying to make the 3 Splitter screen to work
BLHTML forum  

apache MySQL PHP No! BLHTML facebook youtube
© 2003, 2010 BLHTML
© 2015, 2017 BLL, Tacloban Technologies
This page is created with BLHTML in 0.2221 seconds