indevIDE

BlitzMax Forums/BlitzMax Programming/indevIDE

UNZ(Posted 2014) [#1]
Hi folks,

indevIDE is an open source IDE for BlitzMax.
You can get it from http://sourceforge.net/projects/indevide/?source=directory

This thread continues http://www.blitzbasic.com/Community/posts.php?topic=100323


I just uploaded indevIDE v2.2 in which characters with multiple bytes in UTF8 work correct. Now you can write your comments in German or French or Cyrillic or whatever.

Other
stuff I did:


@Derron
I've seen your post from http://www.blitzbasic.com/Community/posts.php?topic=101656
but your scintilla hack didn't work for some reason.
Anyway I added files and options for up to 4 keyword categories. See ~indevIDE/config/keywords/lexer/bmx and the style options.
Think that is better than nothing.


Have fun!


Scaremonger(Posted 2014) [#2]
I'm very impressed, that makes the programming experience so much better. Many thanks for all your hard work.


Scaremonger(Posted 2014) [#3]
Any chance the cursor could be put back into the code editor after clicking on a snippet?

:)


UNZ(Posted 2014) [#4]
If I remember correct this question has been asked before and although I do an "editor.SetFocus()" after I insert the text (and after opening a file from the explorer view as well) the wxTreeCtrl keeps the focus. I wasn't able to find the problem or a workaround. There is a method SetSTCFocus() in the wxScintilla wrapper but this doesn't help. There is a command SCI_GRABFOCUS in the original scintilla but it isn't part of wxScintilla (see line 2262 at http://sourceforge.net/apps/trac/codelite/browser/trunk/sdk/wxscintilla/src/wxscintilla.cpp?rev=2925 )
So the answer is no. Sry...


Scaremonger(Posted 2014) [#5]
No Problem, cheers :)


Derron(Posted 2014) [#6]
As it got a bit silenced here:

This days I recommended to one of my forum users to try "indevide" with his first (demo) steps in BlitzMax.

He had problems compiling "libxml" (or more specific: .c-files) with MaxIDE - and also IndevIDE.
But: as soon as he compiled using "command prompt" it worked like it should.
The user is running Windows7 - but in my test I wasn't able to reproduce this behaviour.

Ideas? I am sure that it is something within his win7-configuration as both maxIDE _and_ indevIDE had problems compiling.

He also stated that he had activated "compatibility mode" without success, start of the indevIDE failed - then he activated it again (as I told him to activate the mode) and it started successfully. Seems hin win setup has some quirks :D


What are your plans for the upcoming development of the ide?

bye
Ron


UNZ(Posted 2014) [#7]
If it works from command line then a looking at the command run by indev might help.
See ~/indevIDE/config/log/indevIDE_log.txt and search for a "executing command:" with "bmk.exe" in it.

I don't recommend a compatibility mode. Maybe his MinGW setup is flawed.

What are your plans for the upcoming development of the ide

Lately I was expanding my hoizons by checking out unity3d and learn setting up a (LAMP) server in my LAN with an old PC I got.

But I would like to make indev a more generic editor by using lua script and script all language specific stuff like options and keyword handling. So adding language support is a matter of copying a directory "bmx" with all scripts to ~indevIDE/config/lua/language or something.
But I need an API and thoughtful designed db and all for it. Currently I'm just not interested enough to do this.

If this is done then I would like to try to implement basic support for java-doc like comments for BMax in the IDE and HotDocs.


Anyway...
I was wondering how to add an entry about indevIDE here: http://blitzbasic.com/toolbox/toolbox.php?cat=11


Brucey(Posted 2014) [#8]
Do you currently use the -g command when calling bmk ? It is for specifying the architecture, such as "-g x86" or "-g x64".
The default (not using it) is to use bmk's architecture, which generally will be x86 (but could be ppc on OS X).


UNZ(Posted 2014) [#9]
I don't use the -g command


Derron(Posted 2014) [#10]
User reported back ... as indevIDE wasnt runnable again he restarted his computer... et voila: indevIDE was startable and .c-files compiled fine too.

Guess his setup is kind of garbled.


EDIT:

Das Problem bei IndevIDE, diese anwendung wartet minutenlang ..... und spuckt nicht aus auf was es wartet .... wenn die anwendung in ein log oder so schreiben würde, was sie denn da tut (scheinbar ja nichts) dann wäre leichter zu finden wo der fehler hängt

die logs sind dann aber 0 byte



for others in English (UNZ is German so above should not be a problem for him): IndevIDE waits minutes without mention for what it waits - the log file stays at 0 byte.

bye
Ron


UNZ(Posted 2014) [#11]
I set the wxLog output to this file. It stays open until the application closes. So you have to close indev to see any results in the file.

Guess his setup is kind of garbled.

From what you are reporting it most likely is.

He can send me a PM on the blitzforum.


Derron(Posted 2014) [#12]
He is no registered blitzforum member (I think I am none too) - I am talking about my forum (gamezworld.de) where I am trying to explain him the framework I am exracting out of my game project.

Is there a reason to output this file on "appEnd" ? Do you truncate the log somehow (condense multiple lines of the same output into "4x linecontent") ?


bye
Ron


UNZ(Posted 2014) [#13]
All I do is
logStream = WriteFile(logFile)
wxLog.SetActiveTarget(New wxLogStream.Create(logStream) )

and close the stream at the application end because it has to stay open for logging.

But I can overwrite wxLogStream with
Type myLogStream Extends wxLogStream
	Method DoLogString(text:String)
		_stream.WriteLine(text)
		_stream.Flush()
	End Method
End Type

So that every message is flushed directly to the file.


Derron(Posted 2014) [#14]
This would be useable as soon as:

- you do not write 1000msg/s
- you have crashes in your app which you want to "trace down" to a specific point ("debugmessages")

All in all it might be helpful.


bye
Ron


UNZ(Posted 2014) [#15]
The change is done with some other minor

stuff I did:



Derron(Posted 2014) [#16]
Keep on progressing - think the calltip/autocompletion-window-improvements will come handy.


bye
Ron


Chalky(Posted 2014) [#17]
This is coming along very nicely.

Would it be possible to change the mouse cursor during compilation (so there's a visual clue that something is happening) and maybe add a Cancel button to the options dialog (currently any changes are force-applied as there is only one way to close the window)?

Good work.


Iowalien(Posted 2014) [#18]
it does not work on mac. will not even compile. :(


UNZ(Posted 2014) [#19]
I don't have a mac or any mac experience but you need gcc to compile the required modules. On windows you need MinGW which can be troublesome to install. But this is for windows only.

Do you have the latest versions of bruceys modules (svn) ?
Modules needed are
boost, regex, database, dbsqlite, libxml, wxMax
and eventually other modules which are required for these.
Try some wxMax examples to make sure that this works.

You may want to check for compiler flags in the indevIDE code (?linux and ?win32) and see if these make sense for macos too.

But most of all:
What is the compile error?


Derron(Posted 2014) [#20]
He is on OSX 10.6.8 - do you have a recent gcc installed (terminal: gcc -v) as brucey tests his modules on "newer" gcc (4.7) while the old XCode has older gcc installed (with XCode 3.2 - the default XCode of 10.6 - you get gcc v4.2.1).

Pay attention that UNZ uses a recend wxMax in his builds (not the aged zip-download from 200x).

bye
Ron


d-bug(Posted 2014) [#21]
it does not work on mac. will not even compile. :(

This is not quite right for users with a actual OS X version. It compiles fine when all required modules are installed, but has tons of bugs related to wxWidgets not updated to the new Cocoa CoreText handling and other changed things in OS X 10.9:

2014-04-20 09:34:55.202 indevIDE.debug[18935:d07] CoreText performance note: Client called CTFontCreateWithName() using name ".Lucida Grande UI" and got font with PostScript name ".LucidaGrandeUI". For best performance, only use PostScript names when calling this API.

...or...

Jan 1 00:59:59 ************ indevIDE.debug[18935] <Error>: CGContextRestoreGState: invalid context 0x0. This is a serious error. This application, or a library it uses, is using an invalid context and is thereby contributing to an overall degradation of system stability and reliability. This notice is a courtesy: please fix this problem. It will become a fatal error in an upcoming update.


On the other hand you have some hardcoded file paths in it which leads to warnings:
WARNING:'F:/Spiele/Proggen/Projects/Projects BlitzMax/indevIDE/trunk/tmp/untitled4.bmx' is not a valid file path
WARNING:'F:/Spiele/Proggen/Projects/Projects BlitzMax/indevIDE/trunk/tmp/untitled5.bmx' is not a valid file path
WARNING:'F:/Spiele/Proggen/Projects/Projects BlitzMax/indevIDE/trunk/tmp/untitled2.bmx' is not a valid file path
WARNING:'F:/Spiele/Proggen/Projects/Projects BlitzMax/indevIDE/trunk/tmp/untitled3.bmx' is not a valid file path
WARNING:'F:/Spiele/Proggen/Projects/Projects BlitzMax/indevIDE/trunk/src/editor/TEditor.bmx' is not a valid file path
WARNING:'F:/Spiele/Proggen/Projects/Projects BlitzMax/indevIDE/trunk/tmp/untitled1.bmx' is not a valid file path
WARNING:'F:\Spiele\Proggen\BlitzMax' is not a valid file path


...and at least, there are things like this:
Method AddEditorToNotebook:wxAuiPaneInfo(edt:TEditor)
notebook.AddPage(edt, edt.caption, True)

'MARK: I added this method in my wxMax module. uncomment the line it if you don't want to hack wxMax.
notebook.SetPageToolTip(notebook.GetPageIndex(edt), edt.filepath)
End Method

You should not add custom commands to a module, when you force your users to compile the IDE by their own. ;)

All in all the IDE is not usable on OS X. It produces tons of the CGContextRestoreGState errors quoted above. Also the UI is missing some of the texts, like the tabs on the left.

This is just a little impression from starting the IDE once or twice.

...und wenn du das nicht alles verstanden hast, dann lass uns das im BBP klären und vor allem auf Deutsch. Das macht die Sache echt einfacher... pm mich einfach an.


Derron(Posted 2014) [#22]
Ignore that "warning"-warnings (missing files - you even get this when "moving" your installation to another computer so the "recent files" history gets corrupted.

@postscriptname
sounds like a big performance impact to strip spaces out of a name - and to check for spaces before to enable this notice-message. :D

@'MARK: I added...
I think extending "wxAuiPaneInfo" (or where this comes from) could be an option then - but only if you call "AddEditorToNotebook" yourself. If you just intervent in an autocalled method you run into trouble as you then have to extend other types in the case of explicit casting within that other types (as then the original AddEditorToNotebook gets called).

Another option might be an event listener (if "notebook.AddPage" emits an event - just hook in and append your information/function call).


@d-bug:
thanks for having a test on this, I am still compiling modules in my virtual appliance (somehow compilation "stalls" after some files and has to get restarted at that position ... slowly and not steadily :D).


Frohe Ostern.


bye
Ron


d-bug(Posted 2014) [#23]
thanks for having a test on this, I am still compiling modules in my virtual appliance (somehow compilation "stalls" after some files and has to get restarted at that position ... slowly and not steadily :D).

Ha, costs me about half an hour to compile wxMax on a real Mac. This is somewhat of a huge blown up library. Btw, I've only installed it for the above test. I'm no friend of wxWidgets because it does not fit your needs if you are a Cocoa fanboy. Meanwhile I've deleted it, before I'm hitting the "Rebuild All Modules" menu item by mistake and have to wait years again.

d-bug


UNZ(Posted 2014) [#24]
I made a tag of indevIDE which is cleaned up.
The line with SetPageToolTip is commented out in this version and I unversioned all settings files so that my recent files and BMax path etc. are not messing it up.

What remains are the wxWidgets / wxMax related errors though.

Anyway,
you can get the tag version by navigating to sourceforge:
http://sourceforge.net/projects/indevide/
Code > tags > indevIDEv2_2_1 > Download Snapshot


Happy Easter


Derron(Posted 2014) [#25]
wxMax is the way to go if you want cross platform blitzmax gui applications.

Feel free to recommend something else working on all platforms - which is not QT :D.

Yes, binaries with wxWidgets (and wxMax) are bigger than others but hey, you might surely be able to cut down this when using smaller libs (with less components in it) but after all they compress nicely, so this isn't a headache producing problem.


@30min compilation time: what speed is your mac? Did you use a custom bmk (threaded compilation). Albeit it takes some time we talk about some minutes not half an hour. Compilation speed depends on the location of the sources (network shares) so this might add to total time (think it is the "cache lookup").

That stalling I mentioned only happens on my virtual mac machine ... so this might have its source in a broken emulation/wrong drivers/old xcode (happens from command line too - so not maxide's fault).


bye
Ron


d-bug(Posted 2014) [#26]
Oh come on... I was just talking about my personal taste. :)

If you like to know my system: It's the Baby-MacPro (the one on the left).
My personal custom bmk, which copies some data into the compiled bundles. No threading enabled!
The files are located on the system drive (SSD).

It takes somewhat longer to compile but i did not stop the time. Need to download again and take a stop-watch to get the real time, if it is of real interest.

d-bug


Derron(Posted 2014) [#27]
I just wondered about the compilation time ... dunno if that is a "mac fault". My virtual mac machine got spend 4x the times of RAM and 2 times the CPUs I spent my virtual xp machine - but compilation times on that mac are awful. Another difference is of course the used gcc-version but I do not know how much this influence the total result.

There is no need for you to "redo" the compilation, I just wondered. Maybe you should think about "threading" as this speeds up c-compilation times in BlitzMax.

PS: Glad my girl friend does not need computer devices with a high WAF (Woman Acceptance Factor) so even my HTPC can be a "good looking midi tower" instead of something which looks like a bluetooth speaker (no offense, just joking). Ok... back to topic, so ignore my last paragraph.


bye
Ron


zoqfotpik(Posted 2015) [#28]
I got this, it's really snazzy.


Henri(Posted 2015) [#29]
Hi,

finally got around to try this out and I must say I'm impressed! Didn't know that this much effort had been put to this. I'll be using this from now on.
When I first started using Blitzmax I used labels to store code points (which of course are banned under strict), but with IndevIDE you can do this easily without labels. Also finding debug and todo statements is a cool feature as are many more (like code folding).

Thanks,

-Henri

PS. On a minor side note 'Print' wasn't recognized as a keyword, but I can add this myself.


Richard Betson(Posted 2015) [#30]
Got a copy. Will give it a try. Looks neat. :)