a new IDE

BlitzMax Forums/BlitzMax Programming/a new IDE

UNZ(Posted 2013) [#1]
Hello BlitzMax Community,

a while ago I decided to write another IDE for BlitzMax because I just weren't happy with MaxIDE CE. I know there is a bunch of IDEs but I couldn't find one that has

Advanced Auto-Complete
Call Tips
Folding
Goto Declaration
Single Instance
Configurable Layout
Good Help Browser

and is cross platform and free.

It took a while (think I have BMax about a year now but I didn't even start a game project...) but now the IDE is completed enough to replace my previous one.

You can find the project here:
https://sourceforge.net/projects/indevide/

Special thanks goes to
Bruce A. Henderson (the A is for awesome isn't it ^^) for his great modules and support.



NOTE
~~~~
- I'm terrible at graphics so most of the images the IDE uses are from MaxIDE or just dummies. I would appreciate if someone who is good at this stuff would give a face to the application (especially an icon and splash-screen).
- The build/debug stuff is nearly complete from MaxIDE CE but the debug tree is not working


Have fun :)


Hardcoal(Posted 2013) [#2]
Thats a Good News


GfK(Posted 2013) [#3]
Autocomplete for Mac would be a massive plus - even if the rest of it sucks horribly (not saying it does, I haven't looked).


Hardcoal(Posted 2013) [#4]
Ive checked it.
I hope UNZ you will accept my suggestions
First It Crashes here and there while compiling
Also I recommend Adding bloons while floating above each button.

keep on the good work


therevills(Posted 2013) [#5]
Had a very quick play, looks pretty decent.

The word "Sprite" goes to uppercase "SPRITE" when I type as a Type:

Type Sprite <-Press Enter


Also the auto-complete sometimes doesnt display all methods for Types...

But good job!


Derron(Posted 2013) [#6]
./indevIDE: error while loading shared libraries: libwebkitgtk-1.0.so.0: wrong ELF class: ELFCLASS64


The size of your binary tells me, you have already statically linked the libraries, so why is there the need of a manual installation of libwebkitgtk?


As you asked for "splash screen/icon" - I haven't run it under linux now but as icons I would suggest to use the default ones to gain a consinstent system wide editor look.
I think if you develop the editor for some time, people will contribute icons/splash screens - but not after the first public release.
If people get used to your editor they will find some odd behaviour or nifty ideas - things which create ideas in your brain how an icon could look etc. Else you just get a wall of coloured blocks which stand for a "building application" (this was my first idea - a corner of a building based on green/blue/red-buildingblocks) - or you get a flash-symbol as it is "Blitz" :D.


bye
Ron


*(Posted 2013) [#7]
I would like to see a mac version too :)


UNZ(Posted 2013) [#8]
@Hardcoal
Doesn't crash here. Do you have the latest modules (wxMax,regex,interprocess etc.?)
What do you mean with "bloons". Maybe ToolTips?

@therevills
I guess you have the Irrlicht3D mod, don't you?
SPRITE is an irrlicht type and therefore autocapitilized. If it bothers you uncheck the option in the autocomplete section.
Second possiblility is to create a project and write down the sprite type. On saving the file the keyword is extracted and in this project the new declaration will be used.
Of course you can do the same thing without creating a project first but keywords without project are interpreted as the main and mod keywords so the type SPRITE from Irrlicht3D will be overwritten.

@Derron
Don't know. wxMax is linked completely in the exe I think but wxWebView uses other libs.

"It differs from wxHtmlWindow in that each backend is actually a full rendering engine, Trident on MSW and Webkit on OSX and GTK"
http://docs.wxwidgets.org/trunk/classwx_web_view.html

Anyway on my linux (64bit Kubuntu) there is
libwebkitgtk-1.0-common
libwebkitgtk-1.0-0
libwebkitgtk-3.0-common
libwebkitgtk-3.0-0
libwebkitgtk-dev
installed. Don't know which of these are actually needed.

@GfK,EdzUp[GD]
I don't have nor want a Mac so I can't help you there. But in theory the IDE should compile on a Mac.


daaan(Posted 2013) [#9]
Can't wait to try it out!


Hardcoal(Posted 2013) [#10]
Unz
Yea tooltips


Derron(Posted 2013) [#11]
FYI: For tooltips in your scintilla-canvas you have to use "wxGraphicsContext"

type scintillaTooltip
...
			If (Self.parent <> Null)
				gfx = wxGraphicsContext.CreateGraphicsContextFromWindow( Self.parent )
			Else
				gfx = wxGraphicsContext.CreateGraphicsContextFromWindow( wxWindow(event.parent)  )
			EndIf
...
end type

Then just add custom brushes etc, handle "movement" (call RefreshRect on the parent with the most fitting params).

This will help you doing function tooltips aka calltips (so one writes eg. "DrawImage(myimage," and your tooltip just above the current line is:
DrawImage(image:TImage, x#, y#, frame=0)

Also you could do a custom autocomplete to enable comments and colours there.


bye
Ron


therevills(Posted 2013) [#12]
I guess you have the Irrlicht3D mod, don't you?

Nope... the only mods Ive got installed are maxGui and bah.libxml...


UNZ(Posted 2013) [#13]
@therevills
ups. I forgot to remove the keywords from my mod.
Because the keywords from mod extraction are added to the current you have to
- close the IDE
- delete ~indevIDE/keywords/keywords_bmx.csv
- start the IDE
- extract your mod keywords.
My stuff will be gone.
Maybe I will add a clear function for the keywords so one doesn't have to delete the file manually.

@Derron
CallTips are already implemented and I don't think the costum autocomplete would be worth the effort.
The tooltips mentioned by Hardcoal were related to toolbar items and buttons aren't they?


Derron(Posted 2013) [#14]
Sorry, didn't check your sourcecode.

As there is that error on my 64bit linux and some complications concerning 32bit libraries and their dependencies (the libwebkitgtk-library had certain dependencies for i386 which are not that easy to fulfill..) I am kind of stuck ... someone with helpful hints?


Meanwhile I checked the windows version in virtual box on XP ... looks kind of uncommon (compared to my linux DE) - toolbar is made of multiple blitbuttons instead of iconstrips.




Also the calltips seem not to redraw the prior used area of the editor.



I just checked to show autocomplete during typing: When then accessing a type of mine it showed the children (fields, functions) as it is supposed to do. But before I did enable autocomplete during typing (so I had to press ctrl+space) that children weren't listed.


As an idea for blitzmax compilation options: add a dropdownbox to easily select a special target (gui, debug+gui, threaded ...).
Else: nice to get another option for "ide users".


bye
Ron


UNZ(Posted 2013) [#15]
Well I'm sorry but I'm not very good with the compiling dependencies and stuff. Maybe brucey can help there.
Anyway I think if you post an error message it is easier to help.

wxWidgets uses the native GUI controls (in contrast to Swing, QT etc.) so I think the look of the toolbar items are XP style. As you can see on the screenshot at sourceforge it doesn't look that square with my win7. Although I think that it's still quite ugly compared to the application's appearance on my linux, but whatever...

The calltip issue is new to me. It doesn't occur on my win nor linux. But I don't have a XP system here. Is anyone else having this problem?

About the build options.
I was planning to make it possible to set them for every file (quick, threaded, app type, target platform, command line, as well as main file and output path).
The local file settings (if set) would replace the global ones. Then there would be a panel at the bottom or so to configure these options (same gui elements as in options window under section "build"). Is this adequate?

Can you give an example for the autocomp that only works with autocomplete during typing?

This is done via ctrl+space with cursor behind the dot as well as autocomp during typing after adding the dot.


SLotman(Posted 2013) [#16]
I just tried it a little bit - autocomplete works well, even with my own mods.

The keyword colorizing although didn't - standard Bmax were highligted, but my own mods, and even miniB3D commands weren't (they are on MaxIDE).

Compilation worked pretty well.


Derron(Posted 2013) [#17]
@button in wxToolbar:
maybe add "wxTB_FLAT"
	Method MakeToolbar:wxToolBar()
		'Local tb:wxToolBar = New wxToolBar.Create(Self, wxID_ANY,,,,,wxTB_NODIVIDER)
		Local tb:wxToolBar = New wxToolBar.Create(Self, wxID_ANY,,,,,wxTB_FLAT | wxTB_NODIVIDER)
		tb.SetToolBitmapSize(24, 24)
		Return tb
	End Method


This will enable a "flat" view of the toolbar (am still re-compiling my modules to verify that) - screenshots for wxtoolbar seem to look like they should, so I think that will do - but my simple blitz-editor in wxwidgets used that months ago (but never compiled it for windows as I only use windows to check whether it runs there :D).

@calltip: maybe it was problematic that I did not "rebuild" the keyword-database before (I assumed that "local sources" are getting analyzed anyway) and so just loaded a bmx-file after the first run to check features. Now (further runs of the application) that problem seems gone.

bye
Ron


edit:
what about using predefined icons:
wxArtProvider.GetBitmap(wxART_NEW)
wxArtProvider.GetBitmap(wxART_FILE_OPEN) wxArtProvider.GetBitmap(wxART_FILE_SAVE) wxArtProvider.GetBitmap(wxART_EXECUTABLE_FILE)
...

this way the IDE will look more "normal" on linux DE. Windows users will have no problems as they are experienced in getting different icons in each application.

On my linux editor I used 48x48 sized icons
SetToolBitmapSize(48, 48)

Think they fitted better to the font sizes there (especially if you use a wxChoice in that toolbar).


edit: 8.30am 13/04/15:
- autocomplete only completed my classes instance, but not children (old ide project, mainfile in maindirectory, rest of sources within /src/. I also tried to "rebuild project keywords" but this made my class instance not recognized.
Local CodeCommand:TLanguageCodeCommand = Null

When now typing in "Code" I get a List with "CodeGenFrame"
When typing in "CodeC" the list is empty (and therefor not shown).


edit2: 12:30pm same day:
If there was a error during a try to compile/build, the same error is shown during other tries which get a linker error - so the error message is not cleaned up correctly (I tried to compile some sources which used a no longer included function - build error. After this error was gone, I got wxMax-linker errors but the error message was still about that missing function).

After my first build-call I tried a second one, no problem, a third one: the output panel was clean (but got line-numbers added) until i tried to select the text in that area: now the text was visible (even after deselecting the text).


UNZ(Posted 2013) [#18]
@SLotman
Thats right. The only keywords that are highlighted are defined in ~indevIDE/keywords/keywords_bmx_lexer.csv
I think the highlighting in the MaxIDE is inadequate 'cause only global defined function names where highlighted but no methods,fields, globals defined in types etc. which is kind of useless for an oop language in my opinion.
What I would like to have is a highlighting that differentiates between functions/methods,globals,consts,fields,locals,types so that you can define a color for everyone. The IDE has the necessary data already for autocomp. and stuff but one would have to write a container lexer to use this information (or I missed something about scintilla which is absolutely possible).
I thought about iterating over every word in a line and check for a keyword definition (that is what happens on autocapitilize file) and highlighting it based on the keyword's kind.
But that is pretty slow. And one would have to implement the folding and rem...endrem stuff as well.
So what I'm trying to say is that I don't mind the current highlighting and that I'm far to lazy to make it better :)

How is highlighting of oop languages in other IDEs? What about java/eclipse and codeblocks/c++?

@Derron
I haven't used the predefined icons 'cause I don't like them and there are not enough (eg. "build and debug" or "build and run" are not predefined). Anyway I changed it to use predefined icons if possible.

Autocompletion
If you type a new variable you have to save the file to update declarations and the file structure (the structure is about where does a type/function begin and end)
Did you save the file before trying autocomplete? CodeCommand will of course only be autocompleted in the function it is declared in.
Are the keywords of TLanguageCodeCommand shown when you reference the name directly?
For example
TLanguageCodeCommand.[the cursor is here]

Should always show all keywords of TLanguageCodeCommand on hitting ctrl+space. If this doesn't work it won't work for a local variable of this type as well.

---
I already made some changes but only in svn. I will upload a new precompiled version when I implemented the "build options for every file" stuff.
bye


Derron(Posted 2013) [#19]
The file was an already existing one, so i just opened it (no manual re-save of that file), tried the type and the instance without success in that case.

Predefined icons: you are using a linux DE which defines icons which are used in many editors: if you do not like them, just switch the icon set. You may consider using "defaults" and overwriteables (aka custom iconstrips).

@colorization: to get different colors for globals etc - you have to extend the scintilla component (have a look at the geany-sources I linked in the linux section). It also contains rem/endrem stuff.


bye
Ron


UNZ(Posted 2013) [#20]
hi folks,

I have uploaded a new compiled version with the build options for every file and some tooltips.
Plus I added an option to let the editor insert a second bracket and qoute after typing a first.

The folding states and bookmarks of files are now saved in a xml under a directory ".indevide" under a project's path. This has the advantage that they can be saved for none .bmx files as well.
The keywords are also saved in this sub dir.


If there was a error during a try to compile/build, the same error is shown during other tries which get a linker error - so the error message is not cleaned up correctly (I tried to compile some sources which used a no longer included function - build error. After this error was gone, I got wxMax-linker errors but the error message was still about that missing function).
If there was a error during a try to compile/build, the same error is shown during other tries which get a linker error - so the error message is not cleaned up correctly (I tried to compile some sources which used a no longer included function - build error. After this error was gone, I got wxMax-linker errors but the error message was still about that missing function).


This was already in MaxIDE CE. This happens on linker errors, completing build modules and unknown errors I think. I can reset the message but thats only little help.

BTW:
If there is anyone that can compile the program for mac I would upload it.


Derron(Posted 2013) [#21]
@errors.

Just reset the messages when calling the build-function. So it just displays errors of this call. Think that is more than "only little help".


Still in need of some suggestions how to "clean" install libwebkitgtk-1.0.0:i386 without the tail of "additional 1.324mb will get installed" :D


bye
Ron


UNZ(Posted 2013) [#22]
I tried something and would like to test a linker error now. But I don't know how to provoke one. Normally they just happen...

Does someone has a linker error for me, please?


Derron(Posted 2013) [#23]
I think import "-lblabla" will do it.

Framework Brl.retro
Import "-ldummy"
SuperStrict

print "wont work"


bye
Ron


UNZ(Posted 2013) [#24]
OK!
Linker errors etc. are now displayed with a nice message box.

About libwebgtk
Have you tried to uncomment the wxWebView import (in file "src/host/host.bmx")
and everything which needs it.
Then you could modify the HelpBrowserOpen() method. For example with
 system_("firefox "+url) 
to open the help file with your own browser.
Better than nothing, isn't it.


Bakkaa(Posted 2013) [#25]
Many Many Thanks


UNZ(Posted 2013) [#26]
Hello again,

I made some changes to the ide and advise you to get the newest version (1.2.2)

stuff i did:


most useful is the module name in the hotdocs and in the build modules dialog I think.

have fun


virtlands(Posted 2013) [#27]
That's an amazing IDE project. I tried version 1.2.2 it and it works well with some samples.
I'm more of a Bliz3d addict, but occasionally I come over to the BlitzMax side.

The F, G, C, Fi buttons ?...

(Fluorine, Germanium, Carbon, ... ? )


Derron(Posted 2013) [#28]
F_unctions
G_lobals
C_onstants

Would fit too.

@ide: as long as it requires the webkitlib I will not be able to run it flawlessly on my 64bit environment.


bye
Ron


UNZ(Posted 2013) [#29]
if you hold the mouse over the buttons then a tooltip should appear which describes the functionality of the button a bit.
They are fully functional: Create a project, open a file of the project and save the file (you have to modify it before saving or it won't be saved actually). Globals, functions etc. should appear in the code explorer if the correspondent button is on.

@Derron
I will try to separate the help browser so it will be a matter of (un)comment one import out to change it.


Hardcoal(Posted 2013) [#30]
what is this ide has to offer that blide doesnt?


Derron(Posted 2013) [#31]
@harcoal:
- no "free version"-limitations (dunno if the "free version" of blide is still available).

- more platforms than just windows

- having the option to chose is never a wrong thing


bye
Ron


UNZ(Posted 2013) [#32]
OK Derron,
check out the newest revision and change the import in ~indevIDE/src/helpbrowser/helpbrowser.bmx
Compile it and webkitlib should not be needed anymore (I think).

BTW:
It should be enough to copy the executables (indevIDE,keyword extractor,hotdocs) to update to a new version. Your settings etc. won't be overwritten then.

bye


Derron(Posted 2013) [#33]
ATM I cannot compile wxWidgets for my 64Bit-Linux, so a compilation isn't possible.

But: all other libraries to run the 32bit-compilate seem to be installed and existing. Just the webkit one was keeping the app from "executing".
So if you compile it without the helpbrowser, it should run on 64bit linux (especially mine :D).

bye
Ron


Brucey(Posted 2013) [#34]
The ability to add breakpoints (say, by double-clicking on the line-number bar) would be interesting.


UNZ(Posted 2013) [#35]
@Derron
I uploaded a compiled file with wxHtmlWindow as browser.

@Brucey
Is adding a "DebugStop" in the front of the line adequate? Or should the IDE make this implicit on a debug compile?


Brucey(Posted 2013) [#36]
Is adding a "DebugStop" in the front of the line adequate? Or should the IDE make this implicit on a debug compile?

Nah, I was thinking more along the lines of a live add-a-breakpoint functionality, while the app is running.


UNZ(Posted 2013) [#37]
How is this possible? Can I send a command to the running process?
Where are the debug parameters for bmk documented? Like -d for debug -x for execute -t for stacktrace -s for stepover etc. ? I only know them from the MaxIDE source.


Brucey(Posted 2013) [#38]
How is this possible?

Funnily enough I was messing around with my remote (tcp) debugger stuff yesterday and implemented the facility to add/remove/list custom breakpoints on a running debug-built application.
It already supported "pause"ing the running application, so adding breakpoints was the next logical step.

There are (really) old posts around here somewhere about remote debugging, but it's not really something people are interested in. (well, since BlitzMax is for games)

Anyways, keeps me amused when it's raining outside ;-)


jsp(Posted 2013) [#39]
Breakpoints (also conditional breakpoints) would be great.
Aaand having the chance to alter the variables on the fly.


UNZ(Posted 2013) [#40]
Well, I found these two threads
http://www.blitzbasic.com/Community/posts.php?topic=82842#934756
http://www.blitzbasic.com/Community/post.php?topic=82862&post=934970
Looks really interesting. But where can I get the code? How does it work with BlitzMax's debug compile? Is a debug compile necessary? Or has one to import sth.? Is DebugStop/DebugLog as command in the source code still supported? The example (earth and moon) has issues when one clicks StepOut twice. How is it when more than one app (instance) is executed? How will one be able to say which app should be debugged?

Changing variables on the fly would be pretty helpful. I thought about that too but won't this produce a memory access violation because the IDE is not allowed to overwrite stuff allocated by another process?
Plus the address of a variable is not handed out by the debugger. Adresses of objects are but primitives not so changeing the value of an int seems not possible to me.


Brucey(Posted 2013) [#41]
I thought about that too but won't this produce a memory access violation because the IDE is not allowed to overwrite stuff allocated by another process?

No, because you'd tell the application (via its debug interface) to change the value of the variable, so the app itself would be making the changes, which is perfectly valid.

I haven't tried changing any values but it looks doable.

Is DebugStop/DebugLog as command in the source code still supported?

Sure. The code essentially just makes a call to DebugStop(), but where you want it to at the time, rather than having it hardcoded into the source.

With the TCP stuff, it uses port numbers. Although my test code is hardcoded, it would be reasonably easy to build something in where you can specify a port number at launch, and have an IDE connect to that port - much like how remote debugging works in Java.


Derron(Posted 2013) [#42]
Advantage of remote debugging would be like stated a thousand times:
run an app within a virtual machine (eg. for Windows/Linux/Mac compiles) while debugging on your normal dev environment.


@wxHtmlWindow-Build
Thanks a lot - it just works (so the external dependencies are gone)

So I can give you some feedback now:

- Default font is "consolas" here, but it is not used, I get a non-monospaced font. Also this should be choseable by a fontchooser-dialogue

Settings-dialogue:
- on first creation they should be application-window-centered (or screen centered), not aligned at 0,0.
- label boxes are way to narrow at the left side (x position), maybe add an overall margin/padding of child elements

- Options->Editor->"Open": "Colourise on open" is cut off on the top, so this means: you are using fixed sizes. You can fetch the labels/inputs height and move it to correct that behaviour or use auto sizers (think brucey had them in a tutorial)

Overall dialogues:
- you use: inputfields.x = label.x + label.autowidth, better would be to check all labels of a group, use the maximum width of all labels, and adjust the inputs.x to that amount (this will look cleaner in most cases).


Toolbar: File actions should be on the most left side (not the last block) as this is default for all applications. I don't know if this is correct, but on my wx-editor-app I had a toolbar which was 1px less in height - maybe there is also a default available.

Select/Input fields: you may decrease the height on Linux for some pixels (they are way to large). Within the options-dialogue you have already done this, but on that bottom-panel with the compile-options it is still the "big style" ("Build Explorer").

"Build Explorer":
It may be better to align them vertically and position that panel on the left or right side (people tend to have wide screens, so vertical space is more important).
You can also avoid having "label" and "dropdown" for such cases:

Build settings:
 Compile options:
  [x] quick
  [x] threaded

  [ GUI-Application        ]
  | Console-Application    |
  '------------------------'

  [ Windows-Target         ]
  | Linux-Target           |
  | MacOS-Universal-Target |
  | MacOS-Intel-Target     |
  '------------------------'

 Command line:
  [________________________]

 Main file:
  [____________________] [#]

 Output file:
  [________________________]

 

or



Build settings:
 Compile options:
  [ Quick build enabled    ]
  | Quick build disabled   |
  '------------------------'

  [ Theaded build enabled  ]
  | Theaded build disabled |
  '------------------------'

  [ GUI-Application        ]
  | Console-Application    |
  '------------------------'

  [ Windows-Target         ]
  | Linux-Target           |
  | MacOS-Universal-Target |
  | MacOS-Intel-Target     |
  '------------------------'

 Command line:
  [________________________]

 Main file:
  [____________________] [#]

 Output file:
  [________________________]


You could even integrate "Debug"-option instead of having it as icon in the toolbar (just integrate the different compilation methods as shortcut like Ctrl+F5, Shift+F5, ... and make it "clickable" through the build-menu in the main window (so people can "read" the shortcuts).



"[X]-button" in toolbar:
If you click without open pages: assertion failed.
Generally: it is better to place an option ("show close button on all file tabs") which enables [x] on each notebook tab (instead of the active one only) to close files.
Also a default is: Ctrl+W to close the current file (you may know it from your Browser, with Ctrl+W closing the current tab) - remember to ask for unsaved changes.

"autocomplete":
You have an option: "autocomplete immediate if only one match".
If your analyzer did not run correctly or something else is going wrong, this may be not a proper way to autocomplete.
Assume a class "MyType" which has a method "DrawImagSub". If you now write within another method of that type: "DrawImageS..." it autocompletes to "DrawImageSubRect" as it does not know "DrawImageSub" yet.
Don't know the internals but make sure this does not happen on creating Methods as naming them would be cruelful then :D.

"startpage":
If I start the editor, the "home"-page keeps empty, just one time I got presented a kind of home page with text etc.... don't know what changed the behaviour (keep in mind, I am using the special build :D).



After that much critism:
It starts fast enough (not as fast as geany, but you are doing more startup work than the leightweight editor :D)... faster than the original blitzmax-editor.
It uses wx-aui, which makes the panels moveable/adjustable.
It is already useable to write some code in it.
It is advancing....


ps: instead of "split editor" I would call it "dual pane editing" and make it a "checkbox"-entry so you save a menu slot.



bye
Ron


UNZ(Posted 2013) [#43]
Constructive criticism (like yours) is always appreciated.

The home page is empty because wxHtmlWindow can not display it. I added a text field "command" in the help section of the program options. This command is called via system_() and can open the helpfiles with your favourite browser. If the text field is empty and "use external browser" is on, openURL() is used but this is working on windows only (at least for me).

I like the button for debug build very much. I'm not going to change this.
The rest of your suggestions will be implemented.

You forgot a state in the build explorer options: "use the one which is set in the general build options of the settings dialog" (This is displayed as a space char at the moment). Thats why a checkbox is not possible for "quick build" and "threaded build". Comboboxes should be fine I think.

bye


Brucey(Posted 2013) [#44]
Sizers should always be the preferred layout solution when building UIs in wx.
It means you don't have to worry so much about platform differences, or even if someone uses a different system font/size.

For nice column-like layouts (for the times you have a set of labels with text boxes), you can use something like a flexgrid sizer, which will keep everything vertically aligned for you.

Look in the wx.mod/tutorials folder for tutorials. There are two parts that discuss the use of sizers and layouts.

If you are going to have a "space before ," then you may as well have a "space after ," which is what I use.

Styles should have a preview so you can see what changes you are making. The Font option should use a font dialog (like what Derron says). Font colours don't update (at least on Windows where I tried it) immediately, so you don't know if you've changed it.

Shortcut manager is a good idea, although when I scrolled the page (on Windows) it trashed the contents view so you couldn't really see what was there.


The explorer window may show too much stuff (when looking at the mods folders, where I spend most of my time). (unlike the standard IDE where you tend to see only the files you are really interested in). Well, it's fine for people like me who do a lot more hacking than most.

And it shows the full filesystem, even though I'm only really concerned about the particular project. Dunno if that is just the way that particular control works, or if you can set it to only show from the root folder of your project. Otherwise, I'd rarely see myself changing to another "project" if I can select everything from any project explorer.


Also, it would be nice, when you open a file from the explorer, to change focus to the newly opened editor window (or, better, make it an option - choice is good). I'm too lazy to be clicking on the editor first, before I can scroll the page with my wheel...

It would be handy to be able to choose the "appstub" on a project/system basis. The appstub (I think the option is -b if I remember correctly) is the thing that provides the code that makes your things into an application (it has the main() function). It also provides the debugging functionality. If indevIDE were to want to support "other" appstubs (with say, remote debugging/custom break points/etc), then this would be the easiest way to handle it, rather than replacing the BRL one.
I'm also thinking some more about the debugging side, and think env variables are the way to go for setting up the environment... but this probably isn't the place to discuss it... Ask questions in my module area for anyone that's interested.

Good work :-)


Derron(Posted 2013) [#45]

You forgot a state in the build explorer options: "use the one which is set in the general build options of the settings dialog" (This is displayed as a space char at the moment). Thats why a checkbox is not possible for "quick build" and "threaded build". Comboboxes should be fine I think.



Build settings:
 Compile options:
  [x] Override general build settings
  [ ] quick
  [x] threaded


(or do this as soon as some settings are done/checkd in the custom-compile panel - in that case just make the "Override general build settings" a label which is "disabled" when not overriding, and "enabled" when overriding - this should gray-out the label if not active)


@Bruceys "[space],[space]"-suggestion: I prefer to have space _after_ comma too. (but it is like "if (bla) then" versus "if( bla ) then" or the newline-discussion for brackets (not used in blitzmax :D).


bye
Ron


UNZ(Posted 2013) [#46]
First, I do use sizers (mostly) and I really like the design of them compared to eg. Java LayoutManager. I think the wxMax sizers are intuitive and neat but I may not used them enough (most label widths are hardcoded).

What is wrong with the shortcuts? Should look like this when you scroll down:

This is just a wxScrolledWindow with labels and textfields.

The file explorer is a wxGenericDirCtrl and it shows the complete filesystem, yes. The list under it shows just convenient links to the project folder.
I think what you mean is more like a project manager where you can (have to, in my opinion) explicit say which file is part of the project and in which category. But 'cause I structure my project's files in dirs anyway this was not necessary for me. But one could make eg. a new tab "project" in the file explorer which shows project only stuff.

I can implement options for autotidy stuff.

Other question: what about media view in the ide?
I see three possibilities:
1. implement simple stuff to show an image, 3d models (more or less extern application using irrlicht) and a simple sound player.
2. use the system default to open things. (OpenURL() does it I think. But does this work on linux?)
3. add text fields for image,mesh,sound in the settings holding a command the ide runs via system_() to open it with extern apps. (eg. "paint [url]"). But system_() waits for the process to terminate. Can this be avioded?

Which one do you think is best? I tend to 1 or 3.


Brucey(Posted 2013) [#47]
A quick hack… makes style colour choosing better.

create widgets.bmx :
Function createColorWidget(e:TOptionElement, panel:wxWindow, sizer:wxBoxSizer)
	Local color:wxColour = New wxColour.CreateNamedColour( String(e.value) )
	
	Local lbl:wxStaticText
	Local ctrl:wxColourPickerCtrl
	
	Local tmpSizer:wxBoxSizer= New wxBoxSizer.Create(wxHORIZONTAL)
	
	lbl = New wxStaticText.Create(panel, wxID_ANY, e.displayName)
	ctrl = New wxColourPickerCtrl.Create( panel, wxID_ANY, color)
	ctrl.ConnectAny(wxEVT_COMMAND_COLOURPICKER_CHANGED, onColorButtonUpdated, e)
	
	tmpSizer.add(lbl, 0, wxALIGN_CENTER_VERTICAL,5)
	tmpSizer.add(ctrl, 0, wxEXPAND | wxALL, 5)
	
	sizer.addSizer(tmpSizer, 0, wxEXPAND)
End Function


event callbacks.bmx
Function onColorButtonUpdated(event:wxEvent)
	Local btn:wxColourPickerCtrl= wxColourPickerCtrl(event.parent)
	Local e:TOptionElement= TOptionElement(event.userData)
	If btn And e
		e.SetValue(wxColourPickerEvent(event).GetColour().GetAsString(wxC2S_HTML_SYNTAX) )
	EndIf
End Function


options gui.bmx
add :

Import wx.wxColourPickerCtrl



:-)


Derron(Posted 2013) [#48]
Other small suggestions for improvement:

if I have a file open, and the tab is active, and now want to open another file, it should default to the directory of the open tab (so eg. for opening another file of that directory).

project management: If there is a path in the input field: the main file-selector should use that path... (even if input was manually done).

editor-settings: I changed tab-size to 8 - no change. I changed tab-size back to 4 - it changed (so it differed to the default settings afterwards).
... May be it also looks more odd than needed without a proper monospaced font.

... talking about monospaced: I would prefer a console output to be in a console font - which is monospaced by default.

Also I would prefer to have a "console/compiler output"-panel instead of being in a tab. As you are writing a IDE and not a normal Editor, this should be default too.


bye
Ron


Brucey(Posted 2013) [#49]
What's TFont, and where might it be? :-p
(in fact, where's TFont.bmx?)


Brucey(Posted 2013) [#50]
Ah, yes… doing things the hard way…

Here is another little hack. Makes font choosing better :

create widgets.bmx
Function createFontDialog(e:TOptionElement, panel:wxWindow, sizer:wxBoxSizer)
	Local name$ = getFontName(e)
	Local size:Int= getFontSize(e)
	Local font:wxFont = wxFont.CreateFontWithAttributes(size, wxFONTFAMILY_DEFAULT, wxFONTSTYLE_NORMAL, wxFONTWEIGHT_NORMAL, False, name)
	Local ctrl:wxFontPickerCtrl = New wxFontPickerCtrl.Create(panel, wxID_ANY, font)
	ctrl.ConnectAny(wxEVT_COMMAND_FONTPICKER_CHANGED, onFontButtonClicked, e)
	sizer.add(ctrl, 0, wxEXPAND | wxALL, 5)
End Function


event callbacks.bmx
Function onFontButtonClicked(event:wxEvent)
	Local e:TOptionElement= TOptionElement(event.userData)
	Assert e
	
	Local f:TFont= TFont(e.value)
	Assert f
	
	Local font:wxFont = wxFontPickerEvent(event).GetFont()
	f.name = font.GetFaceName()
	f.size = font.GetPointSize()
End Function

(asserts… ick)

options gui.bmx
add :

Import wx.wxFontPickerCtrl



There also appears to be a new wxFontInfo class, which I haven't implemented yet, which would e used something like this :
Local info:wxFontInfo = New wxFontInfo.Create(10).FaceName("Arial")
Local font:wxFont = New wxFont.Create(info)

' or combined 

Local font:wxFont = New wxFont.Create(New wxFontInfo.Create(10).FaceName("Arial"))

Quite tidy I think.

Anyhoo, I think using the built-in pickers is better than trying to implement your own, especially when yours don't work so well (as is the case for the colour chooser buttons).


UNZ(Posted 2013) [#51]
It's not that I wanted to implement this pickers but wxWidgets is such a big (and awesome) GUI that I just don't know all of its widgets. There is also a wxFilePickerCtrl. Interesting...

TFont.bmx: I forgot to add the new files of the revision. My bad.

@Tab size
Have you really set the new size in the spinctrl? Only changing the number is not enough. Try to hit enter after changeing the value to be sure the spinctrl accepts the change. I will add a font style preview so stuff like this is easier to check.


UNZ(Posted 2013) [#52]
Hey hey hey,
I found a laaaaaaaaaaaaarge icon package free for non-commercial as well as commercial use:
http://openiconlibrary.sourceforge.net/
Really beautiful stuff. Are you people d’accord if I use them for indevIDE?


Hardcoal(Posted 2013) [#53]
Good Stuff Mate!


UNZ(Posted 2013) [#54]
The IDE is advanceing. I just uploaded a new compiled version (1.3) in which I implemented most of your suggestions. The next day I will update the project's wiki page to explain some features a little.

This time I added two compiled versions in the linux pack. One for wxWebView and one for wxHtmlView.

Stuff I did:

Of course there are many more things to do and features to add but I think this is worth a new version.

Brucey can you make an appstub with some advanced features we discussed above? I'm mostely interested in changeing variables at runtime on debugstop and debugstop via buttonclick (without additional code).

have fun,
bye


Adam Novagen(Posted 2013) [#55]
My two cents on this project:

When I start the IDE, I get this message every time. Any idea what it's about?


In the IDE, one thing I would really like is the ability to "dock" the various windows in auto-hide tabs around the screen. For instance, back when I used IDEal, I'd always customize it to get the following layout:
http://gyazo.com/7802473ece884f067a17ce3c89372205

"Snippets," "Projects," "Code Explorer" and "Output window" are all docked boxes like you have with indev, but as you can they're on auto-hide so that they only appear when I mouse over them. This would be of tremendous benefit to people like myself who feel most comfortable with maximizing their code window's screen space, while still having said tool windows easily available when needed. ( If such a feature already exists and I've missed it, please disregard :P )

Other than that, liking this tremendously already; excellent work. Will indev be given proper "project" functionality in the future? That'd be another major plus.


UNZ(Posted 2013) [#56]
The error is because I didn't deleted a project so the project view tries to add this path as a directory. Delete the project and the message will be gone. I will check for this in the next release so that a proper error message shows up

The idea with the auto hide is neat. IMO the ide is a bit overloaded with all windows shown. Unfortunately this is a feature that wxWidgets does not have (I think). But I try to implement a similar solution.

And if you tell me what a 'proper "project" functionality' is I may implement it.

Glad you like it :)


Adam Novagen(Posted 2013) [#57]
Unfortunately this is a feature that wxWidgets does not have (I think). But I try to implement a similar solution.
Yeah, that'd be a probbo. If I might make a suggestion, perhaps the "tabs" for auto-hide would be hotspot-like gadgets that read when the mouse hovers over them, and show/hide an external tool window accordingly? (You could also work it so that clicking said hotspot would "pin" the window open.) A bit inelegant, but certainly functional.

As for proper projects, I meant things like project files. For instance, let's say you work on a calculator app that's split among ten .bmx files. As far as I can tell presently, one has to open all ten files manually. Also, to get the program to compile properly, one has to constantly tab back to whichever file is the "main" file for that project, i.e. the one file that uses Include to pull in the others.

A project file format saves these steps. First and foremost, it would contain a list of the code files used in the project, with their local addresses relative to the project file itself. That way, rather than having to open "file1.bmx," "file2.bmx," etc, you'd simply open "calculator.proj" and all ten files would automatically be loaded. Furthermore, the project file would record which file was the main file for the project, so that no matter WHICH of the project's files you were currently focused on, when you hit F5 it will auto-save all the files in the project, then compile from the main code file.


UNZ(Posted 2013) [#58]
Also, to get the program to compile properly, one has to constantly tab back to whichever file is the "main" file for that project

Thats not true. You can define a main file in the project dialog. This will be started whenever you build/run/debug a file of that project.

IMO it is annoying when you have to define what files belong to a project as I structure them in dirs. Also opening all files of a project (like IDEal does) is not helpful if you have a lot of files.

But it seems that there is a demand so... I'll see what I can do for you. :)


Adam Novagen(Posted 2013) [#59]
Well, keep in mind that I'm just one person that's used to one IDE and has used indev for all of about ten minutes so far, so I don't need to be catered to so much XD

I'll investigate the project handling you've mentioned and see what I've been missing.


Brucey(Posted 2013) [#60]
and all ten files would automatically be loaded

I certainly wouldn't want all files for a particular project loaded. That would just be annoying. I've never seen that kind of functionality on any of the IDEs I've used.
Fair enough if it remembers what files you had open "the last time", or something… but I don't want to end up having to close half of the files just because someone thinks they should all be open.


Derron(Posted 2013) [#61]
@Autoload:

I just know a list containing all files "included" in the project. Sure, it should exclude the modules but list all "imports/includes".
Clicking on such an entry opens the file.

Think BLIde had this too - even with a "media explorer". But for bigger apps you wont get that much media entries as most will be defined in resource files (xml/ini...).

@Autocapitalize:
Make sure you do not autocapitalize user defined field names/methods/functions. Imagine one has a "Type TSprite" with a Method "drawImage" - this might be autocapitalized to "DrawImage" (but people tend to use different camelStyle-definitions).

bye
Ron


Adam Novagen(Posted 2013) [#62]
Had a closer look today; I'm now liking the non-autoload more. However, I would say that you need some buttons for quick-and-easy project management, rather than a tiny window buried in the "Options" menu. Honestly, I was expecting something under "File," a "Project" menu on the window bar, or hell, just some buttons for it on the toolbar.

Also, having established a project and opened some of the files (I tested the main file compiling, worked great), I noticed that the "Projects" tab in the Explorers box stayed empty, even though indev was obviously aware that I had opened some files relating to a project. Is that just on the to-do list, or am I doing something wrong again?


UNZ(Posted 2013) [#63]
I noticed that the "Projects" tab in the Explorers box stayed empty

Jup, you have to *rightclick* and *refresh* the view manually. I will automate this in the next release.

BTW: The auto-hide funcionality is very promising. Works (nearly) as good as in IDEal :)

@Autocomp
Before I change the autocompletion stuff I want to implement it with SQLite (I most likely will need help when it comes to this so be ready you SQL gurus^^)

EDIT:
I'm sorry but the auto-hide is not possible in the way I first thought. Because I can't trigger a wxEVT_LEAVE_WINDOW from a wxAuiPane I don't know when to hide the pane. So there is just a sidebar which shows a pane on mouseover a given area. But you have to close the pane via the [x] button...


Derron(Posted 2013) [#64]
Instead of having such a "leave window" trigger you could try something like a "aliveTimer".
On Each "mouseover/mousemove"-event over a window you reset its aliveTimer to X+millisecs(). If the aliveTimer is < millisecs(), hide the panel.

Also you could do something like: If the mouse enters frameA it cannot be in frameB and therefor a "over frameA" also is closing all other frames (which could be hidden that way).


bye
Ron


UNZ(Posted 2013) [#65]
OK, I reset the timer if anything happens (mouse motion,mouse click,keybord hit).
This should work.


Derron(Posted 2013) [#66]
Yes, all events for "keep it open activity" should reset the timer.

I don't know how that "auto hide" is supposed to work. If it is a "mouse is over - show me" and "mouse is elsewhere - hide me"-approach. You will have to act to:
mouseEnterMyFrame (->show)
mouseEnterOtherFrame (->hide)

If you intend to make it "openable" with shortcuts (like compiler options in a autohide-panel) you will have to have a "sticky"-field. So only "autoclose" a panel, if it was "autoopened" and not "shortcut opened". In that case the panel should have close buttons/[x]-thingies.


bye Ron


Adam Novagen(Posted 2013) [#67]
Sounds very promising, UNZ. Looking forward to this immensely :D

So, I have encountered more strange behaviour, and by "strange" I mean I don't know what's going on. Have a look:



As you can see, the editor auto-capitalized Graphics() and Print(), so it seems to recognize them as valid commands, but for some reason it doesn't colour them in. Is there a reason for this that I'm unfamiliar with, i.e. am I required to declare a framework first, or something?

Make sure you do not autocapitalize user defined field names/methods/functions.
Personally, I would alter this to "make sure you autocapitalize user defined names according to their declarations." It's true that if you have a method named "drawImage" it shouldn't be capitalized as "DrawImage," but it would be nice for it to be auto-capped as "drawImage" to save a press of Shift.

btw Derron, your signature always makes me smile; it reads as though you're waving goodbye to yourself :]


UNZ(Posted 2013) [#68]
@highlighting
Thats not strange because it is implemented that way. Have a look at post #18
BTW: If you want calltips (little window showing parameters) you should add a bracket after a function call (eg: Graphics(800,600) ) as this is used to identify a function call.

@autocomp
make sure you autocapitalize user defined names according to their declarations

I do. But I autocap even on declaring keywords.
If you have some declaration saved already eg. you save a file with the following code:
Type MyTyPe
	Field myGr8TfIeld:Int
	Method draWimAge()
		'Self.drawimage
		'Self.myg
		'myty
	End Method
End Type

The declarations will be extracted and you can uncomment the lines and hit ctrl+space. All will be autocapitilized as declared.

But I autocap even when you are trying to declare something new. For example if you have this code:
Type TBla
	Method drawImaGe[cursor is here]
End Type

If you now add a bracket then "drawImaGe" will turn to "DrawImage" because this is already known. The file was not yet save so "drawImaGe" can't be autocapitilized correct. This is annoying and I will try to avoid autocap on declaring but not in the next release.


Xerra(Posted 2013) [#69]
I've been playing with this IDE as well to see what works and what doesn't. A few observations from using it tonight to tidy up some old source code....

Code folding doesn't seem to be remembered on saving/exiting the program. When I reload inDev and reload my source code then all the folded sections are unfolded again.

Loading a file does not update the code window with the types and other short cut links until you edit and re-save it.

When having two sections folded on lines next to each other then it kind of breaks when you press return at the end of the line on the first one. Try it and you'll see what I mean.

When you have "Console output as notebook page" and "Hide output when complete" ticked then you can build and run once but when program exits then you can't rebuild without reloading the file. Testing this a bit further then it definitely is a problem with the output window being hidden. Personal preference was to keep it as a separate tab with the other windows but sometimes I'll just close it when I've exited a running program and that will cause the editor to not build again until files reloaded.

When a program has finished running the editor automatically makes the output window active which may be related to the bug above. Is there any way to just make it return back to the tab i'm currently working on. I can always switch to the output window again to check any debug info if I've been using it.

Bit of a me-being-quirky thing here, but I'd like an Ok button to confirm the options have been changed on that dialog, rather than just clicking close. But that's really petty, I must admit.

I'm curious about the "To Do" window. How do you use this correctly?

And a couple of things that I've been using and find excellent ...

The quick jump window. You can mark lines among different source code files and it will load/jump between files as required. I really, really like this. Good job.

I was going to request left ctrl, mouse scrolling to zoom in and out of code size but you've already done this. Eyesight is a bit dodgy now so this helps a lot.

I should have posted more about the IDE really, as I have been looking at it every so often since you first put it online, but I've not been doing much coding to really give it a good pop until today. I will say keep up the good work, though, as you are doing an excellent job.

There's probably a lot of other people testing this out who've not said much as yet so your efforts are definitely being appreciated, I'm sure.


UNZ(Posted 2013) [#70]
Code folding doesn't seem to be remembered on saving/exiting the program

Thats correct if the files are in no project. Neither are bookmarks and build options saved then. I'm going to save non-project files to some generic xml in the indevIDE dir.

Loading a file does not update the code window with the types and other short cut links until you edit and re-save it
It does now.

When having two sections folded on lines next to each other then it kind of breaks when you press return at the end of the line on the first one
Thats not good. Tried to just expand the lines but that is not as easy as I thought. To be continued...

you can build and run once but when program exits then you can't rebuild without reloading the file
You have to click into the editor to set it active again. I will add an option so that the ide returns to the last editor in use after closing the output.

I'd like an Ok button to confirm the options have been changed on that dialog
Maybe someday. When I did everything else I want to implement :)

@todo view:
Inspired by the MaxIDE CE comments starting with
'TODO:
'MARK:
'BUG:
'FIX:
will be added to the todo tree as well as occurrences of DebugStop and DebugLog.

@mouse scrolling to zoom
That's not me that's scintilla. Such an awesome text editor, isn't it? And it fits perfectly into wxWidgets :)

@quick jump view
Thanks. It nearly was my own idea ^^


UNZ(Posted 2013) [#71]
version 1.4 is compiled and uploaded.

stuff I did:


Quick question: is "project file mapping" a correct term for the "define what files belong to a project" thing?

And I wonder why there are still so many downloads of the MaxIDE on sourceforge...

have fun
bye


Derron(Posted 2013) [#72]
Just had a quick run of the new 1.4

The debug-panel should be opened below the code-panel (like the quickjump one). The buildoption-panel below the explorers-panel. This would avoid "jumping" panels (or "getting narrow" panels) - especially when hovering over the buttons on the left.


The "continue program" and "stop .."-buttons seem to have scaled icons (looking pixelated) on my linux desktop.


Hmpf...instead of writing a long text I just made some annotations on a screenshot




PS: "Pinta" is having some serious bugs (during editing colors of things like semitransparent-rectangles changed... although they are drawn as pixels on a pixel image - compared to nondestructible editing in other image editors)... So "sorry" for some odd pixel borders around arrows etc.


PPS: Nice you keep improving it. Hope I soon get more time to dive into testing it more extensively.

bye
Ron


UNZ(Posted 2013) [#73]
Hi Derron,

you can move the aui panes to any place that fits your needs. Just drag them around.

I admit that the indent of the code tree (as well as the project view and snippets view etc.) are to big. I reduced them in that very moment.

Scintilla folds empty lines by default. I just added an option to disable compact folding. That means empty lines after folding ends won't be folded with the rest.

Send me better icons if they bother you. I will gladly change them then :)

Altogether I'd say your nagging on a high level which is good cause it means that the major functionality doesn't make problems, right?

bye


Derron(Posted 2013) [#74]
Even if you are able to drag things around - I like to have a nice "default alignment" so fresh users wont get a false first impression of the ide.

Also i had a slight displacement of the 4th and 5th icon-toolbar-box (dunno the correct term atm :D). Was about 5px. Sure, I am able to move them, but like said...default settings.


@icons: I just wanted to mention that, because the default linux icons (in my case black icons) are non-pixelated while the others seem to are coming from a to-low-resolution (16x16 resized to 24x24 or so).


@functionality:

I started the ide, gone to the options ... set the blitzmax path

/home/ronny/Arbeit/Programmieren/BlitzMax/
(also tried)
/home/ronny/Arbeit/Programmieren/BlitzMax/bin

when I now try to "Update Mod Keywords" the application immediately crashes.
With version 1.2.1 this menu entry opened a key-extractor-dialogue...
Maybe you missed something in there?


When I clicked on the compile-buttons in the menu bar - nothing happens. So I assume the bmk-path isn't stored properly. In that case an output in the compiler-output-panel would be nice to have (printing an error message or notice about unset paths)



bye
Ron


Xerra(Posted 2013) [#75]
Thanks for the update. Couple of things I've noticed on first loading the new version:-

On the code window TODO tab, there are "Debug" lines all listed which have a lot of entries in my source code files because on gui stuff I use Logicgui to generate the interface. I like these in the code until I've put in my own routines to replace them but I'd like to be able to fold them all up in the TODO tab so I can navigate Marked lines easier. You can fold them at present but they automatically open up again as soon as you click back in the editor window.

This actually happens for all the sections in the code window I just noticed. Can this be configured? I find it helps me concentrate on what part I'm working on if stuff I don't need at the time is folded away out of sight. That's why I'm making such a big thing about how folded statements work etc.

I notice that when I click at the end of a line such as :-

Function Import_Button_GA( Button:TGadget )

then both the ( & ) will be highlighted with a green box around them. Is this to show you that you've opened and closed them correctly on a line or some other feature?

Good work on the saved state of folded lines. If you can get rid of the line when you put an seperate them with a carriage return then that would be perfect. It's an OCD thing - I'm really picky how source code looks :(

Is it possible to save the position of the output window when closing/opening the editor? I can make mine small until I need to use it but when I close and reload the editor it's back to default size. I did just move it onto the right side window under quick jumps which seemed like an alternative idea for me but then it's back under the main display when I reload the editor.

None of the sub windows such as project manager, hot code, shortcuts manager use the programs icon on their window. Just a cosmetic thing in case you hadn't noticed it.

Just what I've noticed on a quick play this morning. I'll post further if I notice anything else. Keep up the good work.


UNZ(Posted 2013) [#76]
slight displacement of the 4th and 5th icon-toolbar-box

What toolbar size do you have in the options? Default is 24. Setting lower values will shrink the size but not effect the position automaticly. Or it is because your icons are slightly smaller than mine and the position of my last layout (I really should delete everything before upload...) doesn't fit it.

I changed the default layout. But on small screens the build options may not be shown complete now. Also I didn't changed the position of the debug view because I think it needs relative much vertical space.

when I now try to "Update Mod Keywords" the application immediately crashes.

Doesn't crash on my linux. I added a wxNotify and make because notify on linux does not show up without maxgui in use. That means all the messages (like "Can't find BlitzMax dir") will show up on linux as well.

I just uploaded a version 1.4.1 for linux. Try the BlitzMax path again with it.


Derron(Posted 2013) [#77]
Just a small note while testing: If all files have a [x] in their tab-header, there is no need for a "close current document"-icon in the toolbar (it also may have a different looking icon-style than the other file icons ... because you now use (like i suggested) the system wide icons for that parts).


Toolbar size: did not change them, just had the "defaults" in. Your new download also has that displacements (yes, this seems like a marginal bug - but sometimes there is something "bigger" hidden behind such an odd behaviour).


Option-Dialogue: Why is it an "always on top" window? Just want to write here with the dialogue opened... but have to minimize that because else it would disturb me. Think "MDI"-behaviour may not be possible with wxWidgets but in the case of being possible you may place it on your todo list.
Also the window should be some pixels wider - so that the "font styles" do not have that horizontal scrollbar ("underline" is some chars to long :D).

BlitzMax-path is recognized now (compiling possible etc.)


Keyword-extractor: what about 2 buttons: ALL / NONE ... to select all modules or none (for people with really huge bunches of modules)


Project manager: when creating a new project, and one has chosen the directory of the project, clicking on the "main file browse"-button, should already start in the last selected directory.
Doubleclicking on a project-manager-bmx-file should open that file (I just tried - so I assume there would be 1+ people trying that feature).


Autohide: maybe you should increase the "auto hide timer" (and make it configurable) - it is hard to move a window in another "auto hide window" because that may get hidden during moving the other window. Alternatively you should disable autohide-timer-decreasing when dragging windows/panels. -- I know that I could pin a panel and move another one into it and unpin it again afterwards... but a tool should support the users lazyness :D.

I don't know "how" but instead of having single "auto hide panels" there could also exist parental auto hide panels - so that eg. the whole left panel is hidden when not moving to the left - and same for the right side. I know that this is not that easy, because you then have to do different layouts
a: each panel is parented to the aui manager
b: multiple panels are grouped. That group-panel is then parented to the auimanager.
I myself wont need that feature: I mostly have the code window opened, other utilities are on one right sided pane, the bottom is having some lines reserved for compilation/ide-language-checker-output.
Debug-Panel is only needed for me, when having a compiler-flag "debug". When compiling for release, there is no need to display that panel (-> lazyness)...


Editor: Something is wrong with the UTF8-decoding:
Geany:
* Räume als besetzt markieren (damit KI keine Filme kauft während ich beim Händler steh :D)

indevIDE:
* Räume als besetzt markieren (damit KI keine Filme kauft während ich beim Händler steh :D)



Scintilla: If you like refining the parser: make "REM...ENDREM/End Rem"-blocks foldable.


Tooltips: When reading the function/var definitions - could you try to add "comments" to tooltips? I mean, if I have a function:
	'calculates and returns the percentage of the players audience depending on the maxaudience
	Method GetAudiencePercentage:Float() {_exposeToLua}

When now "dweld"ing (think the event in wxmax was dweld...) for >1 second over a document, the engine should check the word - and if there is a definition for it, display a nice tooltip:

.---------------------------------------.
| GetAudiencePercentage:Float()         |
| MetaData: _exposeToLua                |
| <italic>calculates and returns the    |
| percentage of the players audience    |
| depending on the maxaudience</italic> |
'---------------------------------------'

This is a really nifty feature. When coding that part, do not forget to enable a contextmenu entry: "go to definition" - this would than navigate to the "method..."-declaration (or "field/type...").

When I wrote my php-bmx-parser I let it recognize different commenting styles:

'my comment
'can be multiline

'but only up to the next "non comment"-line
Method MyMethod:int()
End Method

Rem
Multiline comments
are possible too
endrem
Method MyMethod2:int()
  field somefield:int = 0 'just to have something said
End Method



comments would be:
a) for "MyMethod" : but only up to the next "non comment"-line
b) for "MyMethod2" : Multiline comments are possible too
c) for "MyMethod2.somefield" : just to have something said

As soon as you got that working, you could even add functionality to modify the data your engine knows - like "@param x float the x coordinate of the image") which lets your engine also describe what param one has to enter currently ... when writing "DrawImage(" your tooltip then could state "x:float" but it is also able to comment it with "type float, the x coordinate of the image".
Think you have seen that in many other languages - just standard ways for autogenerated documentation. I did mine to have docs for exposed LUA-reachable Blitzmaxfunctions so player-AI-coders know what to give and what to expect.


Autocomplete: I made a project, opened a file from it through the Explorers-Projects-Tree. The Type-names were autocompleted, child elements only after I used "Update Project Keywords" - thought you changed that to happen on file-open?


Mouseicon when hovering over "collapse-arrows": It is a "top-right-oriented-cursor" while this is uncommon for windows/linux-desktops to have such a cursor change in that case.


Another small bug (pay attention to the small red rectangle):

Seems the "current active parameter"-detection is not working properly.


Ok... noted enough - now I just will try to code some lines with indevIDE.



edit: When setting a projects "main file" while having another file active, a config of the compile options is done for the active file - shouldn't that affect the main file in that case?

I tried to compile my application now:
Compile Error: Can't find interface for module 'brl.max2d'

When compiling with geany, I do not get that error. Custom appstub-thing?

edit2: Ok, compiler errors seem to state that there is a try to run windows binaries:
Compile Error: Can't find interface for module 'brl.max2d'
[Z:/home/ronny/Arbeit/Programmieren/Projekte/Apps/TVTower.WorkingCopy/TVTower/trunk/source/basefunctions_resourcemanager.bmx;4;1]

removed some .exe files (had them in for cross compiling):
sh: 1: /home/ronny/Arbeit/Programmieren/BlitzMax/bin/bcc.exe: not found

As I am still running linux, I do not need "bcc.exe" :D.

After that "error" the target-dropdown gets reset from "linux" to "empty".


bye
Ron


Henri(Posted 2013) [#78]
Hello,

I don't know what UTF8-function is used, but I had similar problem with Brucey's database module. Solution to that I wrote my own function which actually didn't decode anything but rather returned the same values which were inputed.


-Henri


UNZ(Posted 2013) [#79]
I won't remove close file from the toolbar. The whole toolbar is redundant cause all items can be executed via the menu bar. But a toolbar is for convenience. And I use this button.

The auto-hide timer is configurable. See *Options*->*Program*->*Auto-hide delay*. Yes the hide on drag is annoying. I will restart the timer.

Auto-hide pane hierarchy: I won't implement that. Too much effort for less improvement.

Scintilla: If you like refining the parser: make "REM...ENDREM/End Rem"-blocks foldable.
Idon't like to ;) . But I also would like to have a user defined block mark (something like '[FOLD]) Maybe Brucey can help?

Someday I may implement "show help on mouseover". But first I want to improve the keyword handling stuff with a real database.

Comments of functions are extracted and shown eg. in the status line when hitting F1. But I only extract comments starting with 'bbdoc' in an 'Rem... End Rem' block in front of a keyword. This is also what HotDocs displays its 'description' paragraph. ('about' is the 'long description' paragraph). Maybe I can make this more flexible. But showing help text for every parameter... No, the commenting styles are too various and this is not such a big improvement I think. If you want them just hit F1 twice cause HotDocs displays them very neat.
I thought about autocompletion for function comments. Then you could type 'rem' and hit enter in front of a function and a comment block is generated with a 'bbdoc:' 'about:' and 'params' listed. Like eclipse and friends does for javadoc, you know.


The Type-names were autocompleted, child elements only after I used "Update Project Keywords" - thought you changed that to happen on file-open?

I update the keywords only of the file you open. If they apprear in the code tree they can be autocompleted. But for a new project it is recommend to run the project keyword extractor anyway.

Mouseicon when hovering over "collapse-arrows": It is a "top-right-oriented-cursor" while this is uncommon for windows/linux-desktops to have such a cursor change in that case.

So what. I think you get niggling here. (Don't meant evil. I just don't care :) ). Let's blame it on scintilla.

The small red rectangle should highlight the brackets. And it is green on my linux because the bracket has a matching pair. Plus on my linux it does frame the bracket it should and not the letter next to it. Very strange... Can you reproduce this with the same line in a new empty window?

The compiler error is mysterious. I never don't call bcc.exe... Only bmk. And it is not an appstub thing. The appstub is only a parameter in the build options handed to bmk. Check if threaded build is on.

The utf 8 was my bad. I did
SetText(LoadText(filepath))

instead scintilla's method
LoadFile(filepath)

The umlaute work now. (btw: 'umlaute' is an english word, I checked it ^^)

I also made the options window non-on-top and the projects main file is set with the project dir if there is none yet.

thanks for testing
bye


Derron(Posted 2013) [#80]
when doing a "ctrl+f" aka "search", I am used to have an "escape" close that search dialogue (as it is not a window but only a dialogue...).

@red rectangle:
when moving with "cursor right key" over the clamp-line:
Return Clamp(14 - Ceil((_y - pos.y) / 73),0,13)
i get selected (not at the same time, but each separately)
a) c_l_amp
b) 1_4_
c) ce_i_l

the tooltip for the "ceil"-call is displayed after the first ceil-bracket: ceil(... and if i place the cursor AFTER the ending bracket ceil(...) - also for following characters of that clamp-param. If in the middle of that call, the tooltip isn't displayed.



Scintilla: If you like refining the parser: make "REM...ENDREM/End Rem"-blocks foldable.
...
Idon't like to ;) . But I also would like to have a user defined block mark (something like '[FOLD]) Maybe Brucey can help?



I fixed that part in my scintilla-modification I linked in some prior post.. shouldnt be that hard to modify scintilla to accept rem.



@Tooltips (not calltips):
as soon as you got your database running, it is just a matter of using already existing data (you have the data, so just display it).
Dunno why you aren't in the need of having nice comments displayed when hovering foreign-declared-functions... work in a group and you will enjoy an ide displaying helpful information about code you haven't written..

@bbdoc: I don't care about bbdoc as is a declaration mis-used with "html-tags" which is a no-go. Why should I declare a style... I declare a grammar. Style is defined from the presentation view (MCV-approach).
If you decide to use a "predefined pattern" - use one which helps the developer to reuse knowledge from other languages instead of using a "custom one".

@autocomplete for new projects:
I create a project, open files within the project-view. I don't think I naturally assume to run a tool afterwards... convenience :D


@MousIcon/symbol ... yes, niggling (I wonder everytime if icons/cursors change to something "special"... so I thought "uhhhh something magical will happen now").


@UTF: Will see in the next version i test.



'nough nagged... have a nice sunday - weather is so sunny in Germany (you should know :D).

bye
Ron


Xerra(Posted 2013) [#81]
Is this still being worked on? I've been using the editor for a while now but it's not been updated since mid-July and the current code folding and tagging brackets is driving me nuts.


UNZ(Posted 2013) [#82]
I paused my programming for a while. But I will continue working on indevIDE soon.


Derron(Posted 2013) [#83]
I am also waiting for updates... want to replace maxIDE-ide soon as many times the debugging of my bigger game (1.5mb custom + some MB external source code) just stalls the whole maxIDE - and I hope this bases on the code of the ide and not something "generic".


bye
Ron


UNZ(Posted 2013) [#84]
I just found the cause of the missplaced bracket indication by accident.
It seems that every paragraph section (§) in the text moves the indication one letter to the left. But I really don't know why...


TaskMaster(Posted 2013) [#85]
Probably something to do with mis-counting the the paragraph break since it is actually two characters, CR and LF.


Thareh(Posted 2013) [#86]
Very nice IDE! I'll probably start using this instead of MaxIDE :)


Hotshot2005(Posted 2013) [#87]
Just wondering when IndevIDE going to be Release and how much is cost?


Derron(Posted 2013) [#88]
Hotshot:
Up to now it is open-source, so there are big chances of staying free of costs.


@ §§§§
the term "paragraph" is misleading (in Germany a "Paragraph" is used in civil law codes etc.) as the correct term in English is "section".

@UNZ
Did you check if the "§" gets escaped somehow internally ? ("\§").

I haven't found any documentation about "section" signs and scintilla - so it might be something "specific" to the lexer you use.

Also I am not able to compile your sources (still having problems with wxwidgets on my 64bit system) so it is hard to help you here atm.


bye
Ron


Hezkore(Posted 2013) [#89]
Just tested this out, and it's really neat!
I'd really like to be able to change variable and function colours separately though.

For example
t:+1
Would be the same colour as
DrawText()
Since both "t" and "DrawText" is under the "Normal text" category.

Also, being able to select background colour for certain texts would also be nice.

Keep up the good work!


UNZ(Posted 2013) [#90]
@Hezkore
I'd like it very much as well but at the moment I'm not going to implement this. See post #18

BTW: I have a SQLite db running pretty well and I am sure there will be a new release in... about a week or so. Unfortunately there is not yet a solution for http://www.blitzbasic.com/Community/posts.php?topic=101296#1203454


Derron(Posted 2013) [#91]
@UNZ
Did you check the §§-signs (die Paragraphen/the sections)?
Maybe the lexer is based on another language which handles that sign...


bye
Ron


UNZ(Posted 2013) [#92]
I found something: GetCurrentPos() is not what I was expecting. It returns the current byte offset. Some characters like §äöü etc. are handled as unicode and are two bytes long. (äöüß in one of your comments will probably be the reason for the missplacement in your editor Derron). But the method GetColumn() can handle this correctly. I think I should be able to fix this.


Derron(Posted 2013) [#93]
I am writing English comments in my projects - even if all in team are speaking German :D.
But a team member sometimes writes German ones (but naming convention is English... maybe some do not trust their English skills :D)


@GetColumn()... think this may be not the perfect one in all situations (as it does takes things like tabs into consideration...or is depending on them and their setup).


There is also
Document.cxx - Document::MovePositionOutsideChar()
Editor.cxx - MovePositionOutsideChar()

Which take care of being between "CR LF" or other 2-byte characters (encoded umlauts etc.).
Think they are not "publically available" so this might need another binding function.


Maybe something like this will do it too (not tested ...just from checking available functions in the documentation and trying to building something out of it)
'editor should be an extension of wxScintilla
Function GetCurrentCharacterPos:int(editor:wxScintilla)
	local caret:int = editor.GetCurrentPos()
	local line:int = editor.LineFromPosition(caret)
	local lineStart:int = editor.PositionFromLine(line)
	return caret - lineStart
End Function


'or short without locals
Function GetCurrentCharacterPos:int(editor:wxScintilla)
	return editor.GetCurrentPos() - editor.LineFromPosition(editor.LineFromPosition(editor.GetCurrentPos()))
End Function



edit: what about "GetCharAt(pos)" in combination with "GetCurrentPos()"

bye
Ron


UNZ(Posted 2013) [#94]
Hey folks,

I finally uploaded a new version. And because I made quite a bit changes in the backend I call it indevIDE 2.0 (yay!)

Anyway here is the
stuff I did:


Unfortunately I have not yet solved the missplacement of unicode letters. Maybe someday...

I hope this project is useful.
ciao

Edit:
I just read some old posts to see if I forgot something.
Looks like I never answered to the foldable rem...endrem stuff.
Brucey would you please change CheckBMFoldPoint in LexMax.cxx to

Then Rem...End Rem is foldable.
A user defined fold point is not possible because the identifier would have to be behind a line comment. And scintilla ignores fold points in line comments...


Is it possible to save the position of the output window when closing/opening the editor
I'm sure that I implemented this a while ago but it does not work! dammit...
When having two sections folded on lines next to each other then it kind of breaks when you press return at the end of the line on the first one
I did not fix this as this is more of a scintilla issue and I thought it was of less importance.

Edit:
Is there anyone with a mac who can compile the sources?
In theory it should work...


Derron(Posted 2013) [#95]
1. Downloaded.
2. Started
3. "This is the first time"
4. "Überprüfen Sie den BlitzMax-Ordner" ("Check the blitzmax folder")
5. clicked on "Optionen" (options) then "IDE Einstellungen" (ide settings) then "Kompilieren"
6. Tried to select the blitzmax folder ... clicked on one of the folders in the directorytree... programme closed

repeated the whole step multiple times ... (but with the stale-file-deletion-message).

So I manually put the correct path in the file-textbox and it worked.

Conclusion: something strange is happening with the file selector.


Another thing I am not really sure about the intent:
The "Explorers - System"-Panel is showing a directory tree with files of all extensions... as I cannot "drag-n-drop" eg. a imagefile into a scintillawindow (maybe for getting the relative path to a project-main-file) I would prefer a "c/lua/bmx/configurable-extension"-filter.


A way more important error:

I have a file, main.bmx, iso-encoded (so no utf8-problem), 150kb sized - but in your editor the window stays empty.

My "Projects meta file" (projectname.bmx, which just includes custom brucey-bmk-stuff and an include "main.bmx") is displayed without problems.
Other files with some more lines (60+kb) are also displayed fine.

edit:
the "BlitzMax Ordner"-Inputfield is empty after a new start, dunno if the current path isn't displayed there.

edit2:
- You are still not using a monospaced font as default, think most coders prefer them.
- Sometimes I prefer using Tabs to have the "="-equals sign at the same position
a	= 1
ab	= 2
abc	= 3

Your editor has a "prettify"-option which is "Leerzeichen vor Zeichen" (space before character). I think there is no need to add a space after a "tabulator"-character. Else your editor just adds a space before the "=".

- the "dwell"-tooltip has vertical and horizontal scrollbars. The vertical one is there but I have no content to scroll to (only a white area below the text). Maybe the used html is producing a bigger content dimension than needed.
- the "dwell"-tooltip is nice! suggestion: instead of displaying meta-data directly (with curly braces) why not having a line "Metadata: metadatacontent" which could be styled (italics or light-grey)
- the "dwell"-tooltip has wrong content

'the useable contract for advertisements used in the playercollections
Type TAdContract extends TGameObject {_exposeToLua="selected"}
...
	'create UNSIGNED (adagency)
	Method Create:TAdContract(baseContract:TAdContractBase)
...
End Type

...

'a graphical representation of contracts at the ad-agency ...
Type TGuiAdContract extends TGUIGameObject
...
    Method Create:TGuiAdContract(label:string="",x:float=0.0,y:float=0.0,width:int=120,height:int=20)
...
End Type


If hovering over the Create of "TAdContract" the dwell-tooltip is "Create:TGuiAdContract(label..."

So I think something is not recognized as it should.


edit 3:
"Änderungen speichern" (save changes) has the buttons "yes" and "no" - not that easy to translate that buttons or just missed the basic two words of a foreign language? :D)

Else I just have to admit: its getting better (although I do not rely on it for my work _yet_ as I am not liking an app crashing or not displaying content correct - don't want to loose work.

bye
Ron


UNZ(Posted 2013) [#96]
@ BlitzMax path crash
Dunno what this is. doesn't happen on my pc.
Has this happened in a earlier version before? Are there any strange characters in the path?

@ iso fileblitzmax
I just tested a 1,2MB (40000 lines) file with iso 8859-1 encoding. Works perfectly.
Have you tried to save your file in another format with another editor and checked if the error still occurs? Could you send me your critical file?

@ BlitzMax Ordner-Inputfield is empty
You were still able to compile? Is the text field really emtpy or the font color same as bg color?
If the field is really empty the BlitzMax path is not set and you should not be able to compile anything. Dunno otherwise...

@system explorer
This shows the complete filesystem. If you doubleclick a file it is opened with the system's default application or indevIDE (see 'allowed extensions' in options).
Do you want to drag files to add a relative path or do you want an extension filter? And if you want a filter which files should be allowed? Only files that the ide opens as text?
IMO dragging a file on an editor to get its relative path inserted is a good idea.

@ monospaced font
If you'r ok with it I would like to use "consolas" as default for windows.
Name me your favorite monospaced font for linux that is pre installed. I'll set it as default.
Should the output have another font? Just name it.

@ extra space after tab
I took the autotidy from MaxIDE CE.
But thats really unnecessary. I will chage this.

@ dwell info
I just removed double line breaks. Let me know if the extra scroll bar still occurs in the next release.
I will change the display of metadata. But wxHtmlWindow does not support color tags in wxWidgets 2.8. It is italic though.

@ missing localization
I didn't notice that.
Anyway, I use a defaut wxMessageBox() with style wxYES_NO. It is not even translated although the localization catalog is loaded (I checked it with the german translation from http://www.wxwidgets.org/about/i18n.php)
I'll post this in brucey's modules

@ wrong dwell info
It made a little mistake. I combine lines before parsing if they end with '..'. But I ignore line comments. So the '...' in your comment is taken as a line combination and the type declaration is part of the comment. And now the second create method is part of the first type and overwrites the other method.
I will fix this.


Derron(Posted 2013) [#97]
@Blitzmax-Path:
No nothing special - just clicked on my username/profilename to get my user directory which made it crash..
So no fancy "double click to go into the next folder" was used.

@iso... "broken file":
Give me a useable email so I could attach you the file... ah ok, deleted block for block...

The file was readable when I removed an umlaut in a text string (an "ö").

Like said, the file was iso-encoded and umlauts are allowed there... If i use the unicode-8-encoding (utf8) the file is displayed correctly - but I know that this breaks as soon as I edit that file in windows (blide demo) - it breaks when I then edit it again under linux (all special chars are broken). Somehow they are also having problems with "BOM" (which shouldn't be needed...).

@System explorer
I would like a filter - so it only displays "useable" (perspective of the editor) files.
If you do something like a "media explorer", the relative path-thing could come in handy for others (I have my ressources defined in xml files).

@Monospaced.
DejaVu Sans Mono ("book" is default style) .. or ...
Droid Sans Mono
should be available on many desktops.

@extra space
at your service :D

@dwell info
will check your next release. Color/Font-style/decoration is available in 2.9 (thought you are using the 2.9 svn-version of bruceys wxmax).
The italic thing is the comment, not the meta-data-content. But as long as there is no "colorization" available, it does not make sense to have multiple italic texts.

@"..."
Yeah, the parser should really take care of comments and ignore every logic there :D.


Thanks for adding my notes to your todo.


bye
Ron


UNZ(Posted 2013) [#98]
Sorry. Colors work for sure in a wxHtmlWindow.

The extra space and mono font is already done as well as the ... misstake.

The encoding is tricky.
It looks like scintilla uses unicode on linux. But when I save or open a file on windows it is encoded as ANSI.
So a windows file cant be opend by linux and vice versa x(

Question is why doesn't wxScintilla encode it as unicode on windows as well?
GetCodePage() returns on both wxSCI_CP_UTF8...

There is a method TARGETASUTF8 and ENCODEDFROMUTF8 in the scintilla doc but it seems like these are not part of wxMax.


Derron(Posted 2013) [#99]
If that is the case (missing in wxmax) I think ... asking the almighty Brucey could be of great help :D

Maybe the problem is stranger than thought - if I save my file as "unicode8" within geany (which uses scintilla too) umlauts in the content are getting destroyed in the compilate.

a) - iso
project.bmx [unicode (UTF-8)] imports:
src/main.bmx [iso-8859-15] containing "ö" in apptitle
compilation displays "ö" correct.

b) - utf8
project.bmx [unicode (UTF-8)] imports:
src/main.bmx [unicode (UTF-8)] containing "ö" in apptitle
compilation displays "ö" as garbage "ö".

c) - utf8 with byteOrderMark
project.bmx [unicode (UTF-8)] imports:
src/main.bmx [unicode (UTF-8), written BOM] containing "ö" in apptitle
compilation (linux) displays "ö" correct.
compilation/editor (windows) displays "ö" as garbage "ö".


bye
Ron


UNZ(Posted 2013) [#100]
Hi folks,

I just uploaded a new version compiled with the new wxMax release.

Stuff I did:


Because I can't solve the libwebkit issue there is no wxWebView build for linux.

Dragging a file on an editor to get its relative path is not possible because I already open a file via drag'n'drop. But I can live with this^^

The next big thing to do is re-implement the keyword handling using lua. If this works in the way I imagine it should be relatively easy to add support for other languages. Maybe some python or monkey or glbasic or whatever. But I don't know when I will implement this so... thats it for now :)

have fun

PS:
Brucey could you please change the blitzmax lexer of scintilla to make Rem...EndRem blocks foldable (see post #94)?


Derron(Posted 2013) [#101]
Small test:

1. unpacked file, started ... got a dialogue about first start. Seems ok to me.

2. opened settings to adjust blitzmax path
2.1. "Autovervollständige" - imperative or answer to an command? Think "Autovervollständigung" fits better
2.2. "Autovervollständigung beim schreiben" - you substantivized the word "schreiben", therefor it should be "Schreiben".
2.3. "Settings - Style" the alignment of "Background", "Border background" etc. should be done similar to the font style.
2.4. "Settings - Style - Font Style" the Texts "Einzelklammer..." and "Zeilennummer..." are not completely visible. If resizing the dialogue-window the new space isn't used by the font-style-panel (space is added after "underline" instead of trying to use relative spacing.
2.5. All settings with checked checkboxes have an slightly brighter (greyish) color while unchecked ones have black. Shouldn't it be vice-versa?
2.6. "Settings - Compilation - Directories: The Label "BlitzuMax Ordner" is valigned "top" instead of "middle". This is wrong for all "label : [inputbox]"-lines but as this line also has a "Durchsuchen"-Button (which is higher than a normal inputbox) this looks really odd - same for "Settings - Editor - New File template". Maybe there is a wx-option to have them aligned correctly.

3. Tried compiling:


Hmm, think somehow the wrong compilation flags are given to bmk. This will work:



4. Tried to modify the "compilation" settings clicking/hovering on "compilation" on the left side
4.1. the window closed after a short amount not moving the mouse... So i have to wobble the mouse cursor while reading what options are offered
4.2. selected the options
4.3. tried compiling ... still getting the errors
4.4. wanted to change compilation options: the first 3 drop downs were not set - so set them again, this time they seem to kept being selected.

5. Hovered over "Lua Console" - its initial width seems to be 30 pixels, which is not wide enough.

6. In general, the "display/hide/show" of the additional panels is somehow "sluggish", means it is not quick an snappy but kind of slow:
6.1. hovering over "sourcecode"-button: a white area (the list) is shown, the source code window (currently opened file) is resized - scrollbar for vertical scrolling is hidden
6.2. the tabs are shown
6.3. the "sourcecode header" with the pin and the close icon is displayed
6.4. scrollbar in source code window is displayed again
6.5. while this elements are showing up the shadowed parts (this may come from my gtk theme) below the opened-file-tabs are flickering (getting 1pixel wider or more narrow)

Currently I do not have a running wxMax-implementation here (maybe checking it later) so I do not know whether this is the fault of wxAui or your implementation or wxWidgets in general.


7. The dwell-tooltips looks way nicer for me now but what functionality has the "+" button in the dialogues header on the right side?
7.1. Using the scrollwheel of your mouse scrolls the textarea but this makes the dwell-tooltips trying to move with the area - so a "undesigned" empty panel is shown until you stop using the scrollwheel.
7.2. That tooltip is shown until you click somewhere or if you hover another keyword. Maybe the tooltip should be hidden as soon as the mouse leaves the area of that keyword.

8. Edit: Compilation was possible now: gone into "Settings - Compilation" and there was "windows" selected, and debugging and... So The "compilation" panel on the editors left side, and in the dialogue are not connected to each other.

9. I just did some CTRL+Z (Undo) and as there was no undo left, it cleared the whole scintilla window. So it also undoed loading the file content.

10. Shortcut-Dialogue is having scrollbars in both directions, the input box is centered, the labels are off screen by default (just seeing "aktuellen Datei" here. Trying to resize them horizontally "snapped" the label in and removed the horizontal scrollbar at all.
10.1. Some of the labels have shortcuts assigned - Think this isn't used by people (especially not if there are multiple labels with the same shortcut)

11. How to start the initial keyword extraction?
11.1 I have an Type defined in another file (import "../file.bmx"). Within the editor this type has no autocomplete nor documentation. If I now open that file too - it gets parsed and autocomplete works. Seems the keyword parser is not running for "import"-files
11.2. "Delay/DrawImage" is recognized but "LockMutex/UnLockMutex..." aren't. Same for "print" which also is colored white (standard text)

12. "Self" has the same color like "if then else method" - but "self" is no normal keyword. I Suggest adding another color option for "Typenames" and "self". This makes it more distinguishable to system keywords. Another thing is that system keywords: Type, Rem, Function, Method, Field, If, Then, ..., End are their own keyword type while method and function names (DrawImage, LoadImage, CustomFunctioName) are another type. This makes it possible to have different colors assignet to them (or the same if you prefer the current display style). I do not know whether you can do this within your sources or if you have to modify the blitzmax-lexer for this. I had to modify the lexer implementation of scintilla to have this working in Geany (had to add further style definitions for more keyword types).
12.1. A Bit harder to implement is a "global"-keyword. You may know that a single-dot is saying "use the global" - so "local MyVar:int = .MyVar" within a function assigns the global MyVar to the local MyVar. As a single dot may get overseen it might be nice to have this single dot in the same color as "self" or "super".
12.2. Another idea is to have "type"-declarations having another color too (by default the same as "if then endif") so a ":myType" could be differing, same for int, float, double, $, string, ... . Remember: this may add clutter - but only if the user whishes to have this kind of clutter. Flexibility is the key to win the hearts of the users :D.

edit2:
13. The part containing the fold-lines/arrows has a black background if you select white as border background. Giving the border background a darker than white color (light grey) that part gets white. So I think you do something like "border background color +50". You know what happens if in blitz the color is higher than 255,255,255 :D. Also the color of the "line" is staying pure white. So if you prefer a bright background color, the line is up to invisible. Make the line color adjustable - or use a "bightness detector" (if brightness > value -> use dark gray as line color else a white one). Simpler approach is: use the same color than the line numbers color.
13.1. Maybe it is possible to use the [+] and [-] collapse boxes instead of the arrows? They may be more common and they use less space (saves some pixels :D). This should also make harder "collapse end" instead of the round curve one
Edit 3: Just recognized that you use "[+]" for types, and "->" for methods/functions. Visually the arrows are bigger than the boxes... Maybe change the symbols as they also have a visual hierarchy. Or add another configurable part to the settings dialogue :p
13.2. Geany uses the default background color of a window as the border background. This is possible as the panel containing scintilla is "white" (like in your editor) and therfor you get a subtile pixel border to distinguish editor background and file-border-background.

Okay, tested deeper than thought.

PS: I like the way this editor gets improved over time and that you take into consideration my humble opinion albeit it sometimes sounds a bit harsh and uninviting :D


bye
Ron

edit: reformatted post - code to codebox


UNZ(Posted 2013) [#102]
Hi Derron,
great to have such a committed tester.

OK, here we go:
1. Nice!

2.1-2.2 accepted
2.3 accepted
2.4 they are visible here but you are right. They should resize.
2.5 I think it is your theme. The textcolor is not changed for me. Only the box gets checked.
2.6 maybe

4. Autohide panes like in other IDEs are not natively supported by wxAUI so I did my own implementation. I tried to use window enter and window leave events to check if the mouse is in a window. But that was all fuzzy and unsatisfying so I now restart a timer when an event is fired. I advise you to pin a window if you want to edit it. Sorry for that.
4.4 That is because you can set these options for the output editor. I will change this.

5. accepted

6. Not really sure what you mean but showing a new window in the aui manager takes some time.

7. which "+" ? Is this you maximize button?
7.1 Not sure what you mean but it seems that scintilla shows a dwell info although one scrolls with the mousewheel. Maybe I can correct this.
7.2 I dont hide the dwellinfo on mouse move to make it possible to resize it. Maybe a keyhit to focus the window is better. (like in eclipse)

8. The compilation options of the property grid can be set for every editor and overwrite the global ones. BTW: The debug build option seems to do nothing. It is a relict from MaxIDE CE and I will remove it.

9. That is because I do scintilla.setText(LoadText(path) ) instead scintilla's methond to load files. I think I can stop scintilla to add it to the undo list.

10. My shortcut dialog has only one vertical scrollbar and no label is cut off. Resizing works as well. Are we talking about the same window?
10.1 which ones?

11. Build a module via build modules dialog (modified is enough) to get a module's keywords. Watch the "db update" in the status line. Create a project to get your project's keywords. Have a look on the project's wiki. I don't consider the Import keyword.
11.2 The only highlighted keywords are the ones of brl.blitz which is always included in a blitzmax app. Print is part of brl.standardio. DrawImage is part of brl.max2d (and not highlighted). But they are all autocompleted after you build the brl module.

12. I like the coloring -> declined for now. (maybe some day)

13. I don't think I can change the color of scintilla's foldlines. Should I darken the other margin color if it is a bright one?
13.1 I don't care -> declined I will make an option to use [+] and [-] instead arrows.

-------------------------
What about your "set blitzmax path crash" and "BlitzMax Ordner"-Inputfield is empty after a new start"?

Is the encoding ok? (I think that was the most important issue in the prev release)

ciao


Derron(Posted 2013) [#103]
@7. (+ sign)
Yes the "+" is my maximize button. Think this a restriction of the window you are creating (it is a window not something custom)

@6. (sluggish window)
Just generated a script to produce the symlinks (or corrects them) - maybe I add this to the linux section...
But ... I compiled the aui-demo and that was "sluggish" too. So I think the aui-window-implementation is the problem, not your code.
EDIT: CodeBlocks uses wxAui too - it resizes "snappy" so something odd seems to happen within Bruceys wrapper.

@4. (autohide)
Maybe something like: hovering the button for 0.x seconds switches the state of the linked panel/window. This would get rid of the suddenly opening and closing windows when hovering over all the left "buttons"

@8 (debug comment)
Debug building is just another param to bmk (-d instead of -r) - should work as intended (or did I misunderstood something?)

@9 (undo)
Ahh setText... had to have known that. Think you can remove the undo step without problems

@10


@10.1 (shortcuts)
The labels:
"Speichern", "Schließen", "Step", "Stopp", "Start"
"Kopieren", "Kompiliere"
"Wiederholen", "Weiter"

@11 (module)
Yes this worked out now (but the function names are not printed bold - like you explained already).
First time I tried to build modules I printed "wx" within the module name ... pressing start crashed the app. I tried now without a name and it worked, entering a name and pressing start does not crash now... hmm hickup :D.

Why don't you consider the import-keyword? Sometimes people do not want to create a project for everything (eg. a test.bmx which imports some of your code files to check things).

@12 (colorized keywords)
I already posted the needed changes to the scintilla component as the current colorization possibilities are way to limited (hierarchy, distinguishability ...).


@13
have a look at
SCI_SETFOLDMARGINHICOLOUR and SCI_SETFOLDMARGINCOLOUR
The ladder one defines the margin color while the other one may be the color for the lines...
Darken or Brighten ... just check how you calculate the brighter color - as this wraps to black if you use plain white as color.



@path crash: not happened again
@empty input field : is empty after restart
@encoding: did not see errors

I would have written about these bugs if they still existed, sorry for not giving feedback.


bye
Ron


Addi(Posted 2013) [#104]
I have got some Problems while open it: libstdc++-6.dll missing
What do I have to install so that I can test/use the IDE?


Derron(Posted 2013) [#105]
google: libstdc++-6.dll
download the file and place it into a reachable folder (same as executable or a shared one like system32)


bye
Ron


Addi(Posted 2013) [#106]
Ok, I downloaded all missing dlls an placed them into the indevlIDE directory
but now im getting the error that the programm is not able to jump into prozedur "_ZNSt12out_of_rangeD2Ev" because he cant find the entry point


Derron(Posted 2013) [#107]
then it seems you've got the wrong DLL-versions.

So you better wait for UNZ to provide an instruction or downloadable archive.


bye
Ron


Henri(Posted 2013) [#108]
Hello,

libstdc++-6.dll is part of MinGW package (at least in TDM-GCC distro) which I suspect this IDE was compiled with.

-Henri


Henri(Posted 2013) [#109]
PS. Would it be convenient to make a new thread as this seems to get bit heavy ?

-Henri


Brucey(Posted 2013) [#110]
libstdc++-6.dll is part of MinGW package

But you shouldn't need to have a copy of it with your exe, as it *should* be compiled into the application.


UNZ(Posted 2013) [#111]
How do send parameters to MinGW when using BlitzMax? I would like to compile with arguments "-static-libstdc++" or "-static" in general but don't know how.

@Addi
I advise you to download and install the tdm-gcc from http://tdm-gcc.tdragon.net/download which is the one brucey uses. Sooner or later you'll want to compile some modules anyway. Search the forums how to set up mingw for blitzmax. It should work then. BTW: the dll is in ~mingw/bin.

If I run "gcc --version" it tells me: "gcc (tdm-1) 4.7.1"

@debug build
It is another argument for bmk indeed. But indevIDE and MaxIDE as well have "run in release" and "run in debug" as menu items which are used to determine if the parameter is given to bmk or not. The checkbox is just never used... not even in MaxIDE I think. Strange that this escaped my notice.

@shortcuts
I use them :)
But which of these are doubled?

@foldcolors
I can indeed change the colors of the lines and fold points. I will make an option for it.


Addi(Posted 2013) [#112]
I alredy "installed" MiniGW so that I am able to compile Modules
I followed the instructions on this side:
http://www.blitzbasic.com/Community/posts.php?topic=90964


Maybe the problem ist that I installed it in "program files(x86)" will try to change it

Edit:
No that couldn't fix my problem but I noticed that there is no such dll in my MinGW installation


Henri(Posted 2013) [#113]
Maybe this one might help.

-Henri


Addi(Posted 2013) [#114]
Now its working.
The solution was installing this TDM GCC.

Nice IDE UNZ :D and thanks to you and the others who helped me to get it working ;)


Brucey(Posted 2013) [#115]
How do send parameters to MinGW when using BlitzMax? I would like to compile with arguments "-static-libstdc++" or "-static" in general but don't know how.

Well, my bmk_ng is fairly configurable like that - it uses a Lua-based layer to provide extra functionality with things like custom CC/LD options, post-build scripts etc.

I generally use the post-build for copying DLLs, or dylibs into application bundles. But you can pretty much do anything with it, like auto-versioning for example.

Commands for bmk_ng are:

-i and -l are extras from the original bmk.


Derron(Posted 2013) [#116]
@shortcuts
I use them :)
But which of these are doubled?


All I mentioned are sharing the same shortcut key - that is why I gave each letter-group a new line.


@bmk
Yeah, using the auto versioning too. Nice feature. Take care of only getting processed when an rebuild is done (so change one char in your project file to have a quick rebuild).


bye
Ron


UNZ(Posted 2013) [#117]
@shorcuts
I may missunderstand you but the default shortcuts are:
"Speichern": Ctrl+S,
"Schließen": Ctrl+W,
"Step": F9,
"Stopp":[not set],
"Start": [not set],
"Kopieren": Ctrl+C,
"Kompiliere": Ctrl+B,
"Wiederholen": [not set],
"Weiter": [not set]

which are all unique (unless the ones not set of course).
I can see on your screenshot that "Schließen" (Ctrl+W) and "Speichern" (Ctrl+S) are not the same.
What are you trying to tell me?


Derron(Posted 2013) [#118]
They are the same ...

1. open your dialogue window
2. press "ALT + S" multiple times.

So these are not the app shortcuts with CTRL (Strg) but ALT. So the shortcuts to move in forms (like the "tab"-keystroke behaviour).

Think the app shortcuts can only be defined once without destroying the prior definition.


bye
Ron


Addi(Posted 2013) [#119]
Would be nice if it would be possible to use the same shortcut for the anti.

For example Comment and Uncomment with shortcut control + c.
Press that combi one time and it will comment press it a second time and it will uncomment the line ...

Like in Eclipse


Wiebo(Posted 2013) [#120]
I've tried this on Linux and it's really a HUGE step up from MaxIDE. Thanks sooo much!


UNZ(Posted 2013) [#121]
@shortcuts
what does alt+s do in this context?
Anyway the mapped shortcuts work. Hit ctrl+s and a file gets saved...

@Addi
A "Toggle Comment" would be a new function with extra item (or I replace the other with it). Shouldn't be a problem though.
I can also add a "Surround with block comment" functionality. Would be handy.

@Wiebo
Yeah,
MaxIDE is a pain (especially on linux).
Glad my little project is useful.


Derron(Posted 2013) [#122]
Alt+s moves through the shortcut-"inputfields".
I don't know how this happens (maybe this is a default behaviour of wxWidgets widgets). What inputs will get selected can be recognized by the underlined label character (like with the menus and ctrl+key shortcuts).


This is no real problem - but was one of the things I noticed during testing. So don't think the worst of me because I write that much posts about nonsense.


bye
Ron


UNZ(Posted 2013) [#123]
Oh, now I get it!
You mean the keys for navigation using ALT.
You can place a & in a menu item's name to let the system now which character should be mapped to activate it. For example "&File" marks the "F" so if you hit ALT the F is underlined and hitting f afterwards results in the activation. That is very common. I tried to use common settings for this but sometimes I accidentally used the same key for multiple items (eg. "Debug" and "Datei" have both "D" marked). So the navigation is not working anymore. Same for "Speichern"/"Schließen" and "Stop"/"Step". "Start" of the help menu (I think I'll rename it to "Home") is unique in its so the navigation works there (ALT->H->S activates the item).

I can correct this.


Hezkore(Posted 2013) [#124]
I just downloaded indevIDE v2.1 and I can't seem to get documentation working.

I have my BlitzMax folder set correct.
I go to "Update Documentation" and make sure the HotDocs path is correct.
Leave "Template" as it is (styled.template).
I select "Win32" and then "Start".
It does its thing for a few minutes, and after some sorting and writing I'm told that everything is done and ready to go.

But hitting F1 does nothing!
I can't get any information about the function "graphics" or "hidemouse".
Double tapping F1 does nothing either.
And no popup for when typing functions I know exist.

If I manually go to "BlitzMax\hotdocs" I can see the "index.html" file, and it looks like everything is in order.
But indevIDE just shows a white page at the Help section.
The original BMax IDE displays the new documentations correct.

I've restarted indevIDE multiple times and tried to build the documentations using different options, rather than just "Win32".
But nothing seems to be working...

What am I doing wrong?


UNZ(Posted 2013) [#125]
After the docs have been created keywords can be linked to the html files. They do so on extraction.

Build all mods (modified is enough) to extract the keywords. Even if blitzmax is not really compiling anything the blitzmax files are parsed and keywords should work afterwards. If autocompletion works then Hitting F1 twice to see a keyword's doc should work as well.

Maybe I should extract keywords automaticly after docs have build...

indevIDE just shows a white page at the Help section

I can't build the IDE with wxWebView. But wxHtmlWindow (which am I using instead) can't display the welcome page of HotDocs so this is normal on linux. Hitting F1 twice on a keyword should work anyway though. I recommend to use an external browser (see options) on linux if you want fancy docs.
(The need of an external browser is really irritating because "good help browser" is one of the things I really wanted in my IDE...)


Hezkore(Posted 2013) [#126]
But wxHtmlWindow (which am I using instead) can't display the welcome page of HotDocs so this is normal on linux.
I'm on Windows 7 though.

Building the modules have solved some issues though.
But the help is messed up, it looks like this -


Hezkore(Posted 2013) [#127]
Double Post


UNZ(Posted 2013) [#128]
Ups, my bad.
I built the windows version with wxHtmlWindow as well.

I just added a download with wxWebView. See sourceforge. (it is enough to replace "indevIDE.exe").
sry


Hezkore(Posted 2013) [#129]
Works now.
Thanks mate!


Hezkore(Posted 2013) [#130]
I have another issue with this IDE.
Whatever module I'm trying to compile, I just get the message:
"Compile Error: Module does not match commandline module
[D:/Programs/BlitzMax/mod/maxgui.mod/maxgui.mod/maxgui.bmx;7;22]"

It builds fine in Blide.


UNZ(Posted 2013) [#131]
Strange.
You could check your build settings (threaded,platform,gui etc.)
If the options are "single-threaded","windows","gui","modified" the command run by indevIDE on windows is just
[blitzmax-path]/bin/bmk.exe makemods

Does it work when you run this in command shell?

In the next release I want to use wxLog to log what the program does (eg. what commands are used to start a process). Issues should be easier to find then.


Hezkore(Posted 2013) [#132]
Running "[blitzmax-path]/bin/bmk.exe makemods" from the CMD I get two "win32.x86.a" files, one debug and one release.

Building from Blide I get 4 files in total.
They're "mt.win32.x86.a" and "win32.x86.a" debug and release.

Trying to build from indevIDE I get an error saying "Compile Error: Module does not match commandline module".
I'm trying to build using these seetings:
Quick build: No
Threaded build: No
Application type: Gui
Target platform: Windows

It may be worth noting that while building from the CMD does produce files, it get the error "Compile Error: Can't find interface for module <name_here>" if I try to actually use that module in some project.
So it seems that Blide's the best way, I guess those 2 extra files it produces does the trick, even though I'm fairly sure those "mt" files are just multi-threaded versions, and I'm not trying to use the module in a multi-threaded project.

EDIT: It works real well compiling using -a which build all modules regardless of timestamps.
So I think your solution is to make indevIDE do "bmk makemods -a".
And when you compile just one module use "bmk makemods -a <name_here>".