MaxIDE - Community Edition - 2.00b4

BlitzMax Forums/BlitzMax Programming/MaxIDE - Community Edition - 2.00b4

MaxIDE (CE) version 2.00 beta 4 has been released.

The Community Edition of MaxIDE is based on the official IDE, but with many improvements added by the BlitzMax community. A big thank you to grable for many of the addtions in this release.

This version fixes the BlitzMax debug hanging issues, and several major issues with previous versions of the CE IDE.

For now, only a win32, Linux FLTK exe and source zip (requires the very latest MaxGUI) is available. If anyone wants to volunteer a version compiled for OSX or Linux GTK, feel free to email me.

Win32 Executable
Linux FLTK Executable
Seb's Latest Linux FLTK Build
Includes many bug-fixes that are not yet seen in the SourceForge build.
Source ZIP


In addition, the very latest source code is available in a nightly tarball from: Latest Source Tarball

V2.00 beta 4 CHANGE LOG since v2.00 beta 3

Added:

* Basic code tidying & auto-indent for C & C++
* Auto-complete now includes keywords found in the current file
* Basic INI, M and XML code highlighting
* Assert, DebugLog & DebugStop now shown in code tree
* Separate CE IDE "about" & "version history" files now self-extract into documentation
* Experimental ability to run a single instance of the IDE, set "[HostOptions] single_instance=1" in ce-ide.ini to enable. Linux not yet supported.

Fixed:
* Debugger crash fixed. Debug mode should also be faster now when you have the debug tree collapsed
* Build & Run on a HTML file now opens the file in the help window again on Win32
* Eliminated crash that occurred when using SVN, CVS or Build Modules.
* Eliminated crash that occurred when running in debug and the built app crashes.
* Auto-tidy and Auto-indent code tidied up a lot, fixing several issues in one swoop.
* Debugger used to hang if it encountered a self-referencing object, e.g. TTimer!
* Open files dialog - all files and backup files options now work.
* Save as now allows you to save as different file types.
* Various issues (like find not working) with unknown file types.
* Code tweak to enable code to compile on MacOS!
* Various code tweaks to improve Linux & GTK behaviour (still not 100%).
* Certain items (e.g. Framework) failed to appear in treeview unless certain other items were present (e.g. Const).

Known Issues:
- Lock-up on Ubuntu 7.10 due to conflict between Brucey's GTK module & pub.freeprocess.
- Some tab & font size combinations give inconsistent text layout. This will be an issue until a new codearea is implemented, or BRL.MaxGUI.TGUIFont adds a width.
- Auto-complete doesn't show at cursor position on Mac or Linux due to no known means of obtaining graphical cursor position
- There are still some small memory leaks that need to be pinned down

Just tested it, a lot better - its been a while since I checked this out.

Any change of having intellisense in this? I noticed autocomplete is there, but it doesnt take into account types methods/fields...

Edit: Small bug - when opening and closing the tree structure in Help, the main window goes to the help screen (eg Welcome to BlitzMax!)

Any change of having intellisense in this?

I'd love to see it, but it's a non-trivial job and I personally don't have that much time.

Nice. I'll update the IDE on my laptop (Windows XP). But still no Linux binary?

Sorry, my linux box isn't overly stable right now. I could probably do an fltk compile, but gtk is a dead duck.

I'd be very happy to post up a compiled linux or macos binary if anyone cares to compile one and send to my email address...

I don't have MaxGUI so I can't compile it, sadly enough.

I'll try an ftlk build - while naff, at least it's *something* for linux...and frankly *I* could do with using a more up to date version!

FLTK build posted (see topmost post).

When I tried to compile it, I got the following error with "gui_module.bmx"
Compile Error: Can't find interface for module 'maxgui.drivers'


Do you have maxgui?

Do you have the most recent version of maxgui? (the one you get if you use SVN)

I have the non-SVN one. Where is the SVN MaxGUI?

Here:

MaxGUI SVN Advice Thread

Note that you may have to change to "PixmapFromIconStrip" to "ExtractIconPixmapFromStrip" (I am using the *very* latest version which at the time of writing, isn't on SVN, but should be soon).

I just downloaded and used the compiled version from the link above. it works fine up until there is a crash. if I press the stop. it does not let me create executables any more, even after I close the file and load a new one or start a new one.

[edit]
if I press ctrl Z a whole line, or part of a line then I press ctrl Y, the line reappears in reverse.
if I press ctrl z and press ctrl y again it is restored to normal.
I suspect it restores by reading the buffer in reverse

if I press ctrl Z a whole line, or part of a line then I press ctrl Y, the line reappears in reverse.
if I press ctrl z and press ctrl y again it is restored to normal.
I suspect it restores by reading the buffer in reverse


I saw this about a month and a half ago, but have never been able to reproduce consistently, despite mulling over the code endlessly!!! Specific steps to reproduce would be very much appreciated! (No time to play with this now, off to work...)

So... Any function-folding in the future?

So... Any function-folding in the future?

Not until a new text-area is implemented, or a MaxGUI.Scintilla is born!

Excellent work! its coming on a treat, I'm loving the hilighted C and C++, nice touch, is there anyway for users to add more keywords?

One problem I am having is its not building altered modules as it should, its just displaying "process complete".

Request: Is there any chance we could have a build modules icon added to the tool bar?

Keep up the good work!

There is a standalone codearea in the SVN archive that is intended for just such a purpose, but I lack time to a) fix the remaining bugs in it, or b) integrate it into the IDE. Would love to see it happen though.

And yes, it would be easiest to do this if the new code area were wrapped in a maxgui.EnhancedTextArea gadget, based on scintilla or on the codearea code in the SVN...

Excellent work! its coming on a treat, I'm loving the hilighted C and C++, nice touch, is there anyway for users to add more keywords?

Not directly I don't think, but it would seem sensible to add a file of extra keywords "per language"...

One problem I am having is its not building altered modules as it should, its just displaying "process complete".

Hmm, are you sure something has changed that needs compiling? It sounds more like bmk thinks nothing needs changing. Try editing a module file (e.g. by adding a space) and then see, because "It Works Here"(TM)

Request: Is there any chance we could have a build modules icon added to the tool bar?

I'm going to say no, for now. What I'd really like to get to is a state where the IDE provides generic functionality across languages, with language specific functionality provided through "tools". As such it's presence *directly* on the toolbar doesn't make a lot of sense. What *would* make sense would be a "tools" drop-down toolbar (or extra toolbar, or something) that contains icons for tools specific to each language...

I'm trying to compile the latest Beta4 version, but I get an error on

PixmapFromIconStrip
So I replaced with...

ExtractIconPixmapFromStrip
...and it works.

I've sync'd via SVN but I still have to use ExtractIconPixmapFromStrip version.

I've synched via SVN but I still have to use ExtractIconPixmapFromStrip version.

Yep - ExtractIconPixmapFromStrip() has been changed to PixmapFromIconStrip() in the next update, which should hopefully be available on SVN in the next few days.

This my be too much to ask...
Is there a way to add a module configuration option that would allow you to pick and choose which modules are automatically imported?

FYI: I got a duplicate (something) error when I had both the SVN MaxGUI and the traditional one (automatically imported)

FYI: I got a duplicate (something) error when I had both the SVN MaxGUI and the traditional one (automatically imported)

It is written in the the MaxGUI SVN Advice Thread that you should delete the old BRL modules before building the new modules from SVN.

Is there a way to add a module configuration option that would allow you to pick and choose which modules are automatically imported?

What do you mean? Something like the framework assistant?

I am sorry for any ignorance, but what controls that when a program does not have a "Framework", that it automatically imports all the BRL and PUB modules?

Implementing the Framework Assistant codes would be cool though.

I am sorry for any ignorance, but what controls that when a program does not have a "Framework", that it automatically imports all the BRL and PUB modules?

It sounds like you are looking for the Import command? This allows you to import whatever modules you like after importing a framework.

what controls that when a program does not have a "Framework", that it automatically imports all the BRL and PUB modules?

This is controlled by bmk and the compiler - if a Framework isn't explicitly declared, all the BRL and PUB modules are imported by default. Because of this, I don't really think there is much the IDE can do on this front to change the default behaviour.

Fixes are now up on SVN and a new worklog has been posted.

After I rebuilt documentation, the IDE no longer syntax highlights. I have to exit and restart the IDE for it to highlight again.

about may previous post, I realized it is a little bit different than I original posted. But you should be able to reproduce it like this:

write two lines with a couple of words in each. It doesn't matter what.

now go to the first line at the beginning of either of the words.
delete one word only using the del key.
go down to the second line now press ctrl z.
it should now display the word you deleted in reverse.

nice one!

That has been "bugging" me for SOOO long.

Will try to fix tomorrow, along with a weird highlighter issue, which may very well be related...

thanks great ide,

is the c highlighting designed to be used for writing c programs that run in blitzmax?
or can you compile C programs as standalone?

I dont want to write C programs - just curious.

is the c highlighting designed to be used for writing c programs that run in blitzmax?
or can you compile C programs as standalone?

Its for a nicer experience debugging stuff that uses C/C++, and Yes you can compile standalone C programs too ;)

Even *I* didn't realise that you could compile C programs from the IDE. That is nice!

The linux download seems to be down.

Fixed!

Thanks! It works.

Hmm, are you sure something has changed that needs compiling?

Oops, my fault, The page I was editing was a C++ file included from another C++ file, I had put a space in the bmx module page and *deleted it again* as this works in the standard IDE, but it seems MaxIDE(CE) realises the page hasnt really changed and doesnt save it.
So now I'll have to add a space for one compile and delete it again for the next :/

One minor highlighter issue with C++ files... type in something like "100/20" and the "/2" is coloured white. (doesnt happen with bmx files)

*EDIT* Also its missing highlighting for "bool", and C++ comment blocks "/* blah */"

Anyway thanks again, I'm now a CE convert :)

*EDIT* Also its missing highlighting for "bool", and C++ comment blocks "/* blah */"

File type detection is done purely on filename, so a .c file is assumed to be C, and a .cpp file is assumed to be C++. I have added code to support the extra C++ things like bool, but it depends on the filename. I'm not entirely happy with this situation, as standard is probably fairly rare, and many people will call both C files! Not sure how else one might detect file types correctly...

Anyway thanks again, I'm now a CE convert :)

Good to hear!

I managed to identify where the problem with "reversed undos" is last night, so should have a fix for that soon...

Hi Mark

All my C++ files are called .cpp but bool ect is not highlighting.

One more problem (sorry to be a pain) the IDE is shutting down if i have errors in C++ code that is included from another C++ file.

ie "demo.mod/demo.bmx" imports "cppstuff.cpp" which includes "morecpp.cpp", if I have an error in "morecpp.cpp" the IDE blows up when the module builds.

Hope that makes sense :)

I added bool (and other C++ specifics) to the cpp highlighter after the compile, so if you svn and can recompile you should see it working, otherwise it will be in the next version. Will take a look at /* */ and the compile error later, although I thought that multi-line comments were supported already...

Hmm, C++ /* */ definitely seems to be working here in the compiled version posted. Is it all files, or just a particular offender that you could send me? You are definitely on 2.00beta4?

Yes 2.00beta4

Just checked and it works if its on one line but not if its spread over more.

/* works */

/* doesnt work
*/

*EDIT* or at least its very touchy :)

I tried running the lexer-test code and anything I paste into the text area craps it out on this line:

Function FindNextToken(...)
...
Local CharNext:Int = Source[Pos + 1]

Array index out of range. It always bumps pos that addresses past the source array.

You probably know about these, but...

1: Open a new document, write "hello". Go to the beginning of the line and remove it with Delete. Undo. Result "olleh", should be "hello".

2: Open a new document, write "f". Go to the beginning of the line and write "id". Result "dIf", should be "idf".

3: Open a new document, write "hello". Select and remove it (backspace or delete). Write "blah blah blah", and backspace a few characters. Undo. Result "hello", should be "blah blah blah".

These three are quite annoying...

/* doesnt work
*/

*EDIT* or at least its very touchy :)

Yes, code highlighting for rem blocks is touchy in the bmax highlighter too, so I suspect it's actually the same bug.

I tried running the lexer-test code and anything I paste into the text area craps it out on this line:

Function FindNextToken(...)
...
Local CharNext:Int = Source[Pos + 1]

Array index out of range. It always bumps pos that addresses past the source array.

Ignore the lexer test code. It's new lexer code that has never been implemented into the main IDE (unfortunately) so doesn't represent the IDE itself.

1: Open a new document, write "hello". Go to the beginning of the line and remove it with Delete. Undo. Result "olleh", should be "hello".

This is the same as the issue above and I know where the problem is.

2: Open a new document, write "f". Go to the beginning of the line and write "id". Result "dIf", should be "idf".

Weird - the problem is almost certainly in the same area, but less explainable!

3: Open a new document, write "hello". Select and remove it (backspace or delete). Write "blah blah blah", and backspace a few characters. Undo. Result "hello", should be "blah blah blah".

Even weirder - possibly the same area of code again, but not too sure to be honest.

You probably know about these, but...
...
These three are quite annoying...

I can see that they would be, but despite using the CE IDE myself, I've hardly ever seen any such errors! Just occassionally enough to know something's up, but not enough to be able to reproduce! As always, 100% reproducible bug reports are VERY much appreciated!

Okay, all the various undo problems above (plus another one when undo-ing a selection) fixed in the SVN code, plus that weird idf <-> dif problem.

Remainder logged on sf.net and will take a look at the highlighting issues next (as it's bugging the hell out of *me*!)

all the various undo problems above (plus another one when undo-ing a selection) fixed in the SVN code, plus that weird idf <-> dif problem.

Nice work! ;-)

im using the latest version but the build modules option is greyed out

I think it gets greyed out if you haven't got mingw etc set up correctly.

oh yeah right, i was using it on a new PC
thanks

Great work removing those bugs!

I have some more minor ones to report:

1. Attempting to File->Open Recent a file that does not exist closes the IDE.
2. Highlighting does not work after Tools->Rebuild Documentation.
3. (Bug?) I don't like it that writing an i in front of an f capitalizes the I, when you could be writing "inf" or whatever. (Writing an f after the i does not.)

Oh and about building the IDE: How can I get the .exe to have the icon in resources folder?

1. that's a new one, but hopefully easily fixed.
2. Known problem logged on sf.net
3. hmmm, I can see where you are coming from...

Easiest way to set the icon is to use ResHack after compiling. You can choose to amend the maxgui modules to remove the imported manifest, then import your own manifest + icon, but it's a bit messy.

3. is definitely a bug.

Type "if" = "if"
Type "if " = "If "

It should not auto-capitalise until you move "outside" of the current word, e.g. add a space on the end, or maybe move the cursor away.

First thing is to prevent it doing what it is doing now, as that is plain wrong.

Second stage is to think about detecting when you move "outside" the current token - this will not be easy methinks...although maybe limiting it to doing the auto-tidy and auto-capitalise thing when you changes lines might not be a bad idea? although that could mean that just cursoring down a file "tidies" code up for you - desirable? Possibly not...think I'll leave that alone!

Found a fix for the "CPP: IDE crashes if a compile error is in a linked file" problem, in TBMXHost.OpenSource replace the "open multiple files" bit with this...
' open multiple files
		For Local s:String = EachIn files
			If s.Length <= 0 Then Continue
			OpenProgress "Loading " + StripDir( s)
			code = TCodePanel.Create( s, Self)
			If code Then
				If temp Then
					code.SaveSource MakePathTemp(path)			
				EndIf
				AddRecent code.path
				AddOpenFile code.path
				'FIX: fixes not updating highlighting
				code.ForceHighlight()
				lastcode = code
			EndIf
			CloseProgress()
		Next


It doesnt actually open the problem C++ file but it does stop the IDE from blowing up.

In TBMXHost.ParseError...
' gcc error
		' this splits the errors into lines and then splits via ":",
		' it then loops over all elements until FILE MESSage and LINE are filled.		
		' if FILE and LINE are set, the file is opened and the line selected.
		' if MESS and LINE are set, a error message pops up
		Local lines:String[] = err.Split(EOL)
		For Local emsg:String = EachIn lines
			If emsg.find("In file included from")>=0 Continue                ' << just this line added
...

makes the C++ page displays correctly.

*EDIT*
also worth adding this...
			If emsg.find("In function `")>=0 Continue

otherwise it just reports the function the error occured in.

Thanks REDi, i added your fixes =)

But i was unable to reproduce the error from includes within includes, though i only tried with vanilla C files...
Do you have a simple example? if the filename is in the error message it would be nice to open it and show the error.

Hi grable

you could test it with "pub.freeaudio" by adding some garbage to "dsounddevice.cpp" and adding a space to "freeaudio.cpp" (just to make it compile) then build modules.

But if you've made all three changes above it should now work correctly (opens and shows error).

*edit* oh, sorry that wont work as the including is done in the bmx file, i'll knock something up for you to test.
*edit* actually you could do as above but add the error into "freeaudio.h"

The "open multiple files" change also fixes the "File, Open Recent on non-existent file causes crash" bug, although it would be nice to check the recent files for existance before adding to the menu.

you could do as above but add the error into "freeaudio.h"

I did that and it appears to catch the error properly, so i guess this is fixed (for now anyways ;)

Ive also sprinkled some file checks to prevent any further problems with OpenFiles and RecentFiles.

Cool, thanks grable.

I'm doing alot of C++ for bmax ATM, so I'll let you know if I come across any dodgy error messages ect.

Thanks both of you. I've updated the 2 bug reports I put on sf.net for these two issues (crash on recent file & C++ included file error).

TBMXHost.ParseError also needs... (gcc error)

			If emsg.find("In constructor `")<>-1 Continue
			If emsg.find("In destructor `")<>-1 Continue
			If emsg.find("In member function `")<>-1 Continue


*EDIT* I've found a new problem with the parser regarding class methods (ie class::method getting spilt into lines), so dont bother yet.

We could probably do with re-factoring the ParseError code such that it gets directed into a codetype specific ParseError. As we always know which file we hit compile for as our main file, we can at least initially send the error to a TCodePanel.ParseError that can interpret the error returned...

Sounds like a good idea mate.

fix for the problem with class::method
' gcc error
		' this splits the errors into lines and then splits via ":",
		' it then loops over all elements until FILE MESSage and LINE are filled.		
		' if FILE and LINE are set, the file is opened and the line selected.
		' if MESS and LINE are set, a error message pops up
		Local lines:String[] = err.Split(EOL)
		For Local l:Int = 0 Until lines.Length

			Local emsg:String = lines[l]

			' make sure line contains an error header
			If Not (emsg.Find("error:")>-1) Then Continue
		
			emsg = emsg.Replace("::","^^")
			Local c:String[] = emsg.Trim().Split(":")
			?Win32
			' fix for DRIVE: syntax
			If (c.Length >= 2) And (c[0].Length = 1) Then
				c[1] = c[0] + ":" + c[1]
				c = c[1..]
			EndIf
			?
			If (c.Length >= 1) And Not file Then file = c[0]
			If (c.Length >= 2) And (c[1].Length > 0) And (c[1][0] = Asc(" ")) Then
				If Not mess Then mess = c[1][1..].Trim()
			ElseIf (c.Length >= 2) Then
				If Not line Then line = c[1].ToInt()
				If c.Length >= 4 And Not mess Then mess = c[3][1..]
			EndIf
			If file And line Then SelectError( file, 0,line)
			If mess And line Then
				mess = mess.Replace("^^","::")
				Local oldapptitle$ = AppTitle
				AppTitle = LanguageString("error_message/gcc_error_title")
				
				' if following lines contain notes then add them to the message
				Local nl:Int, pos:Int, bl:Int
				For nl=l+1 Until lines.length
					pos = lines[nl].find("note:")
					If pos<>-1 
						If Not bl Then mess:+"~n" ; bl=True
						mess:+"~n"+lines[nl][pos+6..].Replace("^^","::")
					Else 
						Exit ' no more notes for this error
					EndIf
				Next
				
				Notify mess
				AppTitle = oldapptitle$
			EndIf
			If file And line And mess Then Return
		Next


*EDIT* changed it so it now adds notes for the given message if available. test C++ code...
#include <iostream>
using namespace std;

class testclass {
	public:
	int func(int a,double b) {cout << "hello1" << endl;}
	int func(short a,long b) {cout << "hello2" << endl;}
};

testclass tc;

main() {
	tc.func(10);
}


Okay, I've added this as is for now, not able to really check it so please grab the version from SVN and make sure it's okay.

Thanks Mark, seems to be working here.

Is there any more parsing code somewhere, because with some errors the TBMXHost.ParseError isnt being called at all, but a message is still being displayed. I added a notify to the very top of TBMXHost.ParseError and it doesnt get shown, but when running the test code above it does display. very wierd.

example of an error that doesnt call TBMXHost.ParseError
#include <iostream>
using namespace std;

class testclass {
	public:
	int func(int a,double b) {cout << "hello1" << endl;}
	int func(short a,long b) {cout << "hello2" << endl;}
};

testclass tc;

main() {
//	tc.func(10);	// uncommenting uses TBMXHost.ParseError
	sdksjda;		// This error doesnt call TBMXHost.ParseError but does show a message
}


Is this on linux? I get problems with the int declaration on windows...

No matter, got the int declaration working (it had been capitalised when pasted in initially as a new bmx file). However, I get the same error message either way - title on message = GCC Error, message = xxx was not declared in this scope

I think there's something in the code that runs the program (in debug.bmx) that handles errors that don't get interpreted by ParseError?

hmm, found ParseError in TBMXCodePanel and TCCodePanel, so i suppose really TBMXHost.ParseError needs the bcc/gcc handling removed and the TCCodePanel/TCPPCodePanel needs updating, so thats upto you guys ;)

Right, looks like mingw behaves differently - I get an error re: sdksjda regardless of commenting / uncommenting the tc.func line. However, if comment out sdksjda, I do get the error handled differently. So maybe on mingw the order of precedence for errors is different? In any case, both appear to be working okay (error displayed and line selected), so not sure what the problem is?

hmm, found ParseError in TBMXCodePanel and TCCodePanel, so i suppose really TBMXHost.ParseError needs the bcc/gcc handling removed and the TCCodePanel/TCPPCodePanel needs updating, so thats upto you guys ;)

Any idea if we would we ever expect gcc errors from bmk? i.e. should C/CPP just have the gcc error handling, and then BMX just have bmk error handling, or should the bmx panel be able to hand back over to gcc if necessary?

. (dodgy alternate posting going on here :D)

Yuck, I see what you're saying - there's error parsing code in the TCodePanels for BMX & C, and then more again, plus generic handling in TBMXHost. Which one wins? When do each of them get called? Yuckity-yuck. I'm in the depths of fixing highlighting issues right now, so if you get any inspiration, let me know...

Cool

It seems TBMXCodePanel and TCCodePanel always gets called first... i think... :/
Gotta go out now, will have a play around later.

Thinking about it, the problem is we dont really know what language the errors referring too until its parsed, so the only solution i can see is to stick all the parsing in TCodePanel, and perhaps have unhandled error reporting in TBMXHost, leaving the other T***CodePanel parsers empty.

any thoughts?

Right gotta go!

The neatest thing to do would be to have the the parsing controlled by TCodePanel, but calling all registered TCodePanel (i.e. bmx, c, etc) in turn first before giving up. e.g. when TCCodePanel inits, it should register it's own ParseError function, and these can then be called in turn when an error occurs.

Okay, I've spent a large part of today hacking code relating to highlighting.

In doing so, I've fixed a whole host of issues, not least problems with multi-line comments in BlitzMax and C/C++. I've refactored the code so as to simplify where possible and make elements more generic, and implemented some functions as Abstract to force new classes to consider implementing them.

This is a fairly major change, so I'm sure there's some nasties in there. I've tried a fair few examples in BlitzMax and C++, and things look loads better. I've also given undo / redo a bashing which all to oftens gets trampled when messing in these areas, but looks good for once (my last rewrite of that must have been good, as I haven't had to touch it thank god!).

PLEASE download the SVN version, compile it and give it a thorough bashing. I'm sure there are bugs in there, but hopefully now it will be easier to spot and fix the things!

Excellent mate, seems much better.

One thing I've noticed, in C++ if you have a /*remblock*/ and delete it with backspace, everything after it stays rem'd out.

*EDIT* another bug... open up editor.bmx and look in the fields list of TCodePanel (in the code tab), it has a field called "but lower case"!!
It seems to be getting confused by the comma in that lines remark.

when TCCodePanel inits, it should register it's own ParseError function

The problem is if a TCCodePanel hasnt been opened then it wont be registered. (ie if a bmx file imports a cpp file, but no c/cpp files have been loaded in the IDE)

Here's one idea for parsing... (just a suggestion)

(errorparser.bmx)
' compiler dependent error parsing

New TBCCErrorParser	' register bcc parser
New TGCCErrorParser	' register gcc parser

Type TErrorParser

	Global List:TList = New TList
	Field Link:TLink = ListAddLast(List,Self)

	Function ParseError(cmd:String, err:String)

' try available parsers
		Local This:TErrorParser
		For This=EachIn TErrorParser.List
			If This.Parse(err)=True Return
		Next

		Local mess$
		Local lines:String[] = err.Split(EOL)

		' strip out archive creation (buildmods) and empty lines
		Local lns:String[]
		For Local s:String = EachIn lines
			s = s.Replace("~r","").Replace("~n","").Trim()
			If s And s.Find( "ar: creating") = -1 Then
				lns = lns[..lns.Length + 1]
				lns[lns.Length-1] = s
			EndIf
		Next
		lines = lns

' unknown error
		' return whatever is in the error (max 5 lines)
		If lines.Length = 0 Then Return
		If lines.Length = 1 Then
			mess = lines[0]
		Else
			mess = "~r~n".Join( lines[..4])
		EndIf
		If Not mess Then mess = "Unknown Error!"
		Local oldapptitle$ = AppTitle
		AppTitle = LanguageString("error_message/runtime_error_title")
		If cmd Then
			Notify "COMMAND::" + cmd + "~r~n" + mess
		Else
			Notify mess
		EndIf
		AppTitle = oldapptitle$

	EndFunction

	' any extended parsers need to define this method
	Method Parse:Int(err$) Abstract

EndType


Type TBCCErrorParser Extends TErrorParser

	Method Parse:Int(err$)
		
		Local mess$,file$,p:Int,q:Int
		Local line:Int,column:Int
		
		If err$[..13]="Compile Error"
			err=err[14..]
			p=err.find(EOL$)
			If p=-1 p=Len err
			mess=err[..p]
			err=err[p+1..]
			If err[..1]="["
				p=err.find("]")
				If p=-1 p=Len err
				file$=err[1..p]
				p=file.find(";")+1
				If p=0 p=Len err
				q=file.find(";",p)+1
				If q=0 q=Len err
				line=Int(file[p..q-1])
				column=Int(file[q..])
				file=maxide.FullPath(file[..p-1])
				maxide.SelectError(file,column,line)
			EndIf
			mess = TranslateMessage(mess)
			Local oldapptitle$ = AppTitle
			AppTitle = LanguageString("error_message/compile_error_title")
			Notify mess
			AppTitle = oldapptitle$
			maxide.SetStatus(mess)
			Return True
		EndIf
	
	EndMethod
	
EndType


Type TGCCErrorParser Extends TErrorParser

	Method Parse:Int(err$)

		Local mess$,file$,p:Int,q:Int
		Local line:Int,column:Int

		' this splits the errors into lines and then splits via ":",
		' it then loops over all elements until FILE MESSage and LINE are filled.		
		' if FILE and LINE are set, the file is opened and the line selected.
		' if MESS and LINE are set, a error message pops up
		Local lines:String[] = err.Split(EOL)
		For Local l:Int = 0 Until lines.Length

			Local emsg:String = lines[l]

			' make sure line contains an error header
			If Not (emsg.Find("error:")>-1) Then Continue
		
			emsg = emsg.Replace("::","^^")
			Local c:String[] = emsg.Trim().Split(":")
			?Win32
			' fix for DRIVE: syntax
			If (c.Length >= 2) And (c[0].Length = 1) Then
				c[1] = c[0] + ":" + c[1]
				c = c[1..]
			EndIf
			?
			If (c.Length >= 1) And Not file Then file = c[0]
			If (c.Length >= 2) And (c[1].Length > 0) And (c[1][0] = Asc(" ")) Then
				If Not mess Then mess = c[1][1..].Trim()
			ElseIf (c.Length >= 2) Then
				If Not line Then line = c[1].ToInt()
				If c.Length >= 4 And Not mess Then mess = c[3][1..]
			EndIf
			If file And line Then maxide.SelectError( file, 0,line)
			If mess And line Then
				mess = mess.Replace("^^","::")
				Local oldapptitle$ = AppTitle
				AppTitle = LanguageString("error_message/gcc_error_title")
				
				' if following lines contain notes then add them to the message
				Local nl:Int, pos:Int, bl:Int
				For nl=l+1 Until lines.length
					pos = lines[nl].find("note:")
					If pos<>-1 
						If Not bl Then mess:+"~n" ; bl=True
						mess:+"~n"+lines[nl][pos+6..].Replace("^^","::")
					Else 
						Exit ' no more notes for this error
					EndIf
				Next
				
				Notify mess
				AppTitle = oldapptitle$
			EndIf
			If file And line And mess Then Return True
		Next

	EndMethod
	
EndType

then in TBMXHost...
	Method ParseError( cmd:String, err:String)
		TErrorParser.ParseError(cmd,err)
	EndMethod
and then just empty out/remove the other ParseError methods in TxxxCodePanel ect.

maybe a little over complicated but it is easley extendable for other compilers.


One thing I've noticed, in C++ if you have a /*remblock*/ and delete it with backspace, everything after it stays rem'd out.

If you "/*remblock*/" then backspace, then everything after it *should* be rem'd out as soon as you delete the last /, and until you delete the first * in the line. Seems to be working as expected here...

*EDIT* another bug... open up editor.bmx and look in the fields list of TCodePanel (in the code tab), it has a field called "but lower case"!!
It seems to be getting confused by the comma in that lines remark.

Yeah, I've seen some weirdness in there before now. No idea why as there's a clear "forget it if I hit a ' rule".

As for error parsing, I think that what's probably needed is a proper rethink of the inter-relation between TCodePanel (the editor), TQuickHelp (the keywords, at least for max), and possibly a new TCompiler (for the compiling, debugging and error parsing, plus any other related tools like Build Modules for BlitzMax). Not really sure, but want to start simplifying to something like the above first...

Okay, the Field problem was caused by it just looking for commas on the Field line, ignoring '. Fixed in SVN, but there's still a quirk there if you have

Field a$="'",b$ ' b$ doesn't get seen


If you "/*remblock*/" then backspace, then everything after it *should* be rem'd out as soon as you delete the last /, and until you delete the first * in the line. Seems to be working as expected here...


Just checked again and everything stays rem'd after deleting the *entire* rem block here.


and possibly a new TCompiler (for the compiling, debugging and error parsing, plus any other related tools like Build Modules for BlitzMax)


Completely agree mate, I'm gonna use the temp fix above until its all finalised, 'cause it stops me from getting borked C/C++ error messages.

Keep up the good work mate, I'm really enjoying using it!

*EDIT*
by "borked" I mean like this one...
#include <iostream>
using namespace std;

class testclass {
//	public:
	int func(int a,double b) {cout << "hello1" << endl;}
	int func(short a,long b) {cout << "hello2" << endl;}
};

testclass tc;

main() {
	tc.func(10,10);	// attempt to use a private function
}


Just checked again and everything stays rem'd after deleting the *entire* rem block here.

Aha!

Hit backspace to delete, and it's okay.

Hit backspace to lose the last /, then select the remainder and hit backspace, and TADA!

Is that consistent with what you are seeing?

Okay, I think I've fixed the /*remblock*/ issue in SVN. Still need to sort out nested remblocks, although I don't think that'll be too hard (one for later tonight).

Field (and const and global) fixes applied

I'm still getting the same problem with /*rem blocks*/ while deleting the entire block with backspace (one charactor at a time), deleting the /* doesnt result in the rest of the document returning to the correct highlighting. (can anybody else confirm this? or is it just me :/)

It does work fine if I delete from left to right with the "Delete" key, or select the rem block text and delete all in one go.

Request: any chance you could make the highlighter case sensitive for non blitz languages. ie in C++ "fasle" should highlight and "False" shouldnt.

The "new" IDE is great, but I have one issue - when you do "Search" and then press CTRL+Left or Right arrow instead of moving to next word it switches tabs. The IDE should focus on the source code and found word instead of tab.

cheers
Roman

The "new" IDE is great, but I have one issue - when you do "Search" and then press CTRL+Left or Right arrow instead of moving to next word it switches tabs.

Isn't that what F3 is for? I thought F3 was the Windows standard shortcut for "Find Next".

Isn't that what F3 is for? I thought F3 was the Windows standard shortcut for "Find Next".

F3 is pretty well accepted as Find Next.

Almost all keyboard controls are configurable though, so feel free to configure it as you like (hmm, with the possible exception of prev / next tab!)

I'm still getting the same problem with /*rem blocks*/ while deleting the entire block with backspace (one charactor at a time), deleting the /* doesnt result in the rest of the document returning to the correct highlighting. (can anybody else confirm this? or is it just me :/)

It does work fine if I delete from left to right with the "Delete" key, or select the rem block text and delete all in one go

This is weird because I can't see any problems at all! Can you list precise steps from opening the ide to reproduce? I'm opening a test cpp file (your examples above), then adding the remblock at the top, then backspacing to delete. Feel free to drop it in an email....

tested on revision 26.

Start the IDE and create a new file, save as "blah.cpp", type in something simple...
/* test */
int test;

then just delete the remblock with backspace (for me the "int test;" stays blue). thats it, nothing special, I get the same result with any loaded .c or .cpp files.

If there is another remblock anywhere below the one I'm deleting, then it works perfect.

I can correct the highlighting after its borked by typing */ and then deleting it again.

would be nice if someone else could confirm this, before you worry to much about it.

I didnt know this until last night, but it turns out you can import .s files in blitzmax and call their functions :)

So I've been playing around with adding FASM support to the IDE (added as an include file), which so far is working quite well compiles/runs and most of the hightlighting is done :D

But I have a couple of questions if you have the time...

1. Is there any way to call host.execute without the output window being cleared of text? because FASM doesnt have a option to compile and run like bmk, so I have to compile and run with two seperate calls to host.execute.

2. How can I add ASM/S files to the file requester filter. (could solve this one myself, but It'll save me a ton of searching ;) )

3. The IDE crashes when I attempt to close a ASM/S file, any idea how to get around this?

I dont expect you to want to add this into the IDE, but I'll certainly get alot of usage out of it myself, I've got an excuse to learn some asm now I know I can use it within blitzmax.

Yeah, I know I can use F3 for Find Next, but I need to use CTRL+F for Find First (or to change query). And that's when it is not so convenient.

cheers
Roman

1. Is there any way to call host.execute without the output window being cleared of text? because FASM doesnt have a option to compile and run like bmk, so I have to compile and run with two seperate calls to host.execute.

I see no reason not to tweak host.execute to take an additional optional "clearoutput" parameter (defaulted to True), and then use that...

2. How can I add ASM/S files to the file requester filter. (could solve this one myself, but It'll save me a ton of searching ;) )

Assuming that you are extending TCodePanel (which you pretty much must be), then you should have something like the following ahead of your codepanel:
Const CODETYPE_BLITZMAX:Int	 = 	1
TCodePanel.Register(CODETYPE_BLITZMAX , ["bmx"] , Byte Ptr TBMXCodePanel.Create)

This should really add it to the drop-down list, although it doesn't at present. The drop-down list is defined in maxide.bmx as the const Filter_files...so either we add a hardcoded extra option, or make the Register process add to the list.

3. The IDE crashes when I attempt to close a ASM/S file, any idea how to get around this?

No idea...maybe the code type is not registered correctly - does it crash on creating new, and / or saving?


I dont expect you to want to add this into the IDE, but I'll certainly get alot of usage out of it myself, I've got an excuse to learn some asm now I know I can use it within blitzmax.

Well....I don't really see why not. Especially if you've added it in an include file, and based it on extending the TCodePanel...

I see no reason not to tweak host.execute to take an additional optional "clearoutput" parameter (defaulted to True), and then use that...

Silly me: there already is an optional "home" parameter that if set to False, just just what you want! (4th param)

And I've tried following your steps for the remblock, but it works fine here!!! Is this on WinXP? Wonder if it's worth us swapping compiled EXEs?

Cool, thanks for the tips mate, I'll get stuck in tonite :)

Is this on WinXP? Wonder if it's worth us swapping compiled EXEs?

Yeah XP, I'll send you a copy of the exe.

The drop-down list is defined in maxide.bmx as the const Filter_files...so either we add a hardcoded extra option, or make the Register process add to the list.

Thanks, adding asm to the hardcoded filter also fixed the crash when closing/saving the files.

Just built the source ZIP for Mac OS Intel on 10.5.

What's up with this?



This window comes up after loading a file. There doesn't appear to be a way to close it.

The default pane sizes and tab sizes are also a bit off:



Been busy with work for the past 2 weeks, hopefully things will calm down a little now. Will try to take a look at this later today...

Have just committed a few tiny tweaks to SVN, replacing LoadGuiFont() with LookUpGuiFont() where appropriate.

The default pane sizes and tab sizes are also a bit off:

That's strange... Which version of MaxGUI.CocoaMaxGUI and MaxGUI.MaxGUI are you using? It'll be written at the top of the root module files in the respective module directories.

Using "lock build file" messes things up if you have two files with the same name open. Sometimes the wrong one will compile and you cannot unlock.

@Otus:
I added it to the bug tracker and comited a fix to SVN, thanks =)

@Blueapples
Thats strange, the window should be hidden on creation... but that part of the ide is very Windows specific atm :/
Does any Linux/MacOS people use the AutoComplete window at all?

Ta!

Not sure why the auto-complete window is getting shown at startup - and I can't think what has changed to make that happen now...

As for the default splitter position: there is *something* screwy in there, as sometimes it opens up in the wrong place for me. I've looked, but never found an answer as it is really intermittent.

Just committed a tweak to SVN that enables the next / prev tab keyboard shortcuts to be amended.

MaxGui.CocoaMaxGui: 1.39
MaxGui.MaxGui: 1.20

I would use an auto complete thing if it worked ;) ... is this like intellisense?


I would use an auto complete thing if it worked ;) ... is this like intellisense?

Kind of - just basic keyword completion and also keywords from within the file you are in at present. It appears when you hit ctrl+space. (hmm, must check if you can change that shortcut...)

The known issue is that on mac & linux there is no way at present (*looks for sebholl and brucey*) to grab the text cursor position in a textarea. As such, the pop-up window rather naffly appears at the mouse cursor instead. Why it's showing at startup is a mystery...

I can't click on the items in the auto-complete list?

P.S. The item tooltip for a list item looks horrible.

I can't click on the items in the auto-complete list?

I can, but it does nothing. Bug. (although to be fair, I'd expect most people to use the cursor keys)

P.S. The item tooltip for a list item looks horrible.

Agreed!

MaxGui.CocoaMaxGui: 1.39
MaxGui.MaxGui: 1.20

Why it's showing at startup is a mystery...

Not so much of a mystery as being bloody typical! I changed a few things in the Cocoa driver concerning hidden windows in the last release (v1.39) as they were being shown automatically if maximized, activated or resized. This allowed the new IDE splash screen to work as expected, and fixed all the problems I had witnessed. Obviously I've missed something. Regarding tab icons - I remember this being one of the first ever MaxGUI tweaks I did in Cocoa, but it appears to have reared its ugly head again. I'll have a look when I get things sorted - I'm moving house at the moment, and have packed my Mac up so it may be a few days before I get a chance.

Okay - bug fixed, you can already change the hotkey, and I've made the tip that displays to the side look a little better. It's still a bit naff, but I'm not going expend effort on it until we find a way to build some better font size functions. *ahem* ;-)

hi Mark T.
Just a little issue.... when I copy/paste some lines of code into the IDE it doesnt highlight the keywords
thanks


Kind of - just basic keyword completion and also keywords from within the file you are in at present. It appears when you hit ctrl+space. (hmm, must check if you can change that shortcut...)



Can you add this:

Right click a keyword and get a command "Find Declaration" in the context menu and/or on the toolbar. This is such a fantastically useful thing I miss from the Delphi IDE... requires a lot of parsing to find the source of something but a generic solution to create a small db of keywords defined in a file would be useful anyway. Heck maybe I should build this but I just don't know the IDE source very well. I also gotta get on that macro system I wanted to make... hmm

@Blueapples: I've fired up my G3 Mac (running on Tiger) and can't seem to reproduce the problems you are having. All the tab items are properly aligned and no windows are appearing when they shouldn't.

I know this is clutching at straws, but you did remember to build modules after your last SVN checkout, didn't you? Also, what version of the source are you trying to compile? The source in the SVN repository or the source in the ZIP file in Mark's first post in this thread?

Could someone maybe add "BMK Options" under Build Options. It would work like Command Line, but be passed to BMK. I tried to look into it, but things are a bit difficult to find in the source code.

At the moment, I am working on a GUI for module building. I, personally, dislike the IDE's building method because it builds ALL of the modules instead of a specified one.

EDIT: Just thought I'd inform everyone. :P Not sure why I felt the need to though.

hi, a little request...

Could we have a find tool for the output of a blitz program?
I have hundreds of lines generated by debuglog commands that I need to search for keywords.

Hey SebHoll:

I get the same issues that Blueapples mentioned. I did rebuild mods after grabbing the svn code. I'm running on an Intel MacBook Pro with Leopard 10.5.4. I started looking into what was going on a couple weeks ago, but vacation came and I haven't dove back into it yet.

I'll play a lil this weekend with it as I get the time.

I get the same issues that Blueapples mentioned. I did rebuild mods after grabbing the svn code. I'm running on an Intel MacBook Pro with Leopard 10.5.4.

That's very strange. It's sounding like this might be an Intel/Leopard specific problem...

Thought I'd post a new build of MaxIDE CE built with the latest FLTK fixes that I've been working on during the last few days.

MaxIDE CE FLTK Test Build

I notice that when I am keying in a variable name or function name etc. As I am keying in the letters when I have completed enough letters that it matches a reserved key word, it capitalizes the word. As I continue keying, it keeps the capital letter. I have learned to ignore this but it is becoming bothersome.

can you have it ignore the word until one presses the space bar, the arrows, backspace, Enter, or the mouse moves the cursor to another location?

Thanks Seb... I'll give it a try :)

For anyone trying to commit changes to SVN (probably only affects grable), note that you may need to change your svn location from http to https as a results of the sf.net server move. I've had to completely remove my checked out folder, and then do a new check out from https to get commit working again. Checkout and Update (i.e. read-only) access is unaffected.

Thought I'd upload another new Linux build which simply inherits the recent FLTKMaxGUI tweaks. Same link as before.

MaxIDE CE FLTK Test Build (Superseded by Build 2)

Looks slightly better than the old one, and the HTMLView is a lot more usable (thanks markcw!).

On Ubuntu I have a rather annoying problem. When using the stop button to stop my program the process is instead still running and increasing in memory.

Edit: When just quiting the program without the stop button (thus the program runs to End) the process is still running as well, eating up memory.

On Ubuntu I have a rather annoying problem. When using the stop button to stop my program the process is instead still running and increasing in memory.


What build of the CE IDE are you using (the one in my last post, or one you have built yourself from the source)? Are you experiencing this behaviour just with the CE IDE or with the Official IDE too? Does turning "Build GUI App" off help at all?

I used the latest build from you. But it doesn't happen all the time. If I'm able to reproduce it again I'll post the executed code. I believe it was a Repeat...Until KeyHit(KEY_ESCAPE) loop. It was a console application. Perhaps the Output tab doesn't respond very well to them... But perhaps it was due to a bug I had earlier in my code. After that it didn't happen again.

But if it'll happen again I'll let it know.

I've just uploaded another new build which should benefit from some more FLTKMaxGUI fixes/enhancements:

MaxIDE CE FLTK Latest Build 2 (Superseded by Build 3)

I've just spend the evening tracking down the CocoaMaxGUI bugs reported in this thread, and I'm pleased to say that I think I've managed to fix them.

They should include...

> Tab items now enlarging for icons
> Child window, activation and focusing fixes.

Please checkout the latest fixes from the MaxGUI SVN, build modules, recompile MaxIDE CE and let me know how you get on.

Cheers

Another new build is up which should improve help doc layout further (thanks again markcw) and a few more stability/aesthetic tweaks:

MaxIDE CE FLTK Latest Build 3 (Superseded by build 4)

Can anyone confirm whether this is a CE IDE only bug, as it seems to work fine in the official IDE?

[Win32] bcc.exe crash

If no-one else does, I'll check when back off hols (2 weeks away from work - hurrah!)

So has anyone made an os x build? I really want to try it out, switched my project over to os x and the default ide is driving me nuts :)
I can only compile it myself if I own maxGUI correct?

If no-one else does, I'll check when back off hols

Cheers Mark

I can only compile it myself if I own maxGUI correct?

Correct

Edit: Just uploaded build 4 of MaxIDE CE with the latest FLTKMaxGUI bug fixes. See link in Mark's first post in this thread.

So has anyone made an os x build?


I just got an IMAC (X86) a week ago and will try to help. Give me a day or two and I will let you know!

Do I need the BlitzMax SVN version to compile it?

Michael

Do I need the BlitzMax SVN version to compile it?

Well, you don't need it, but there are a few bug fixes the IDE will benefit from if you use it. The same goes with MaxGUI, so make sure you checkout the latest versions of both from SVN before you compile.

Well, you don't need it, but there are a few bug fixes the IDE will benefit from if you use it. The same goes with MaxGUI, so make sure you checkout the latest versions of both from SVN before you compile.


Ok, I got the latest MaxGui.Mod and the changed mods from BlitzMax since the release of 1.30.
Rebuild all the modules and now every MaxGui samples crashes:

Process:         bigsearch [3007]
Path:            /Users/mikehart/Desktop/BlitzMax/samples/maxgui/bigsearch.app/Contents/MacOS/bigsearch
Identifier:      bigsearch
Version:         ??? (???)
Code Type:       X86 (Native)
Parent Process:  bmk [2998]

Date/Time:       2008-08-19 21:50:38.689 +0200
OS Version:      Mac OS X 10.5.4 (9E17)
Report Version:  6

Exception Type:  EXC_BAD_ACCESS (SIGBUS)
Exception Codes: KERN_PROTECTION_FAILURE at 0x0000000000000001
Crashed Thread:  0

Thread 0 Crashed:
0   libobjc.A.dylib               	0x9387b6e4 objc_msgSend + 20
1   bigsearch                     	0x00005b4c _maxgui_cocoamaxgui_TNSGadget_SetTextColor + 39
2   bigsearch                     	0x0000484f 635 + 35
3   bigsearch                     	0x0001490c 844 + 62
4   bigsearch                     	0x00003ceb 79 + 56
5   bigsearch                     	0x000031d1 4 + 20
6   bigsearch                     	0x00003329 run + 163
7   com.apple.Foundation          	0x958d054a _nsnote_callback + 106
8   com.apple.CoreFoundation      	0x93addaba __CFXNotificationPost + 362
9   com.apple.CoreFoundation      	0x93addd93 _CFXNotificationPostNotification + 179
10  com.apple.Foundation          	0x958cd7b0 -[NSNotificationCenter postNotificationName:object:userInfo:] + 128
11  com.apple.Foundation          	0x958d6ff8 -[NSNotificationCenter postNotificationName:object:] + 56
12  com.apple.AppKit              	0x93132b7a -[NSApplication _postDidFinishNotification] + 125
13  com.apple.AppKit              	0x93132a89 -[NSApplication _sendFinishLaunchingNotification] + 77
14  com.apple.AppKit              	0x930ac62f -[NSApplication(NSAppleEventHandling) _handleAEOpen:] + 284
15  com.apple.AppKit              	0x930abe28 -[NSApplication(NSAppleEventHandling) _handleCoreEvent:withReplyEvent:] + 98
16  com.apple.Foundation          	0x958f5b6f -[NSAppleEventManager dispatchRawAppleEvent:withRawReply:handlerRefCon:] + 655
17  com.apple.Foundation          	0x958f587f _NSAppleEventManagerGenericHandler + 223
18  com.apple.AE                  	0x96370648 aeDispatchAppleEvent(AEDesc const*, AEDesc*, unsigned long, unsigned char*) + 144
19  com.apple.AE                  	0x9637057e dispatchEventAndSendReply(AEDesc const*, AEDesc*) + 44
20  com.apple.AE                  	0x96370425 aeProcessAppleEvent + 177
21  com.apple.HIToolbox           	0x925ab47d AEProcessAppleEvent + 38
22  com.apple.AppKit              	0x930a9719 _DPSNextEvent + 1189
23  com.apple.AppKit              	0x930a8db8 -[NSApplication nextEventMatchingMask:untilDate:inMode:dequeue:] + 128
24  com.apple.AppKit              	0x930a1df3 -[NSApplication run] + 795
25  bigsearch                     	0x000038d4 main + 1079
26  bigsearch                     	0x00002b2b _start + 209
27  bigsearch                     	0x00002a59 start + 41


I can compile and run MaxIdeCE without the changes that were suggested but then the area with Home/Code/Debug is allways empty. So it isn't much of a use I guess.

Just committed a fix to the MaxGUI SVN.

Let me know if it works...

Thanks Seb, it works now. The Complete window is gone now and the treeview still doesn't show up. Does anyone know if it worked at some time? I have to go to work now and will post the app later today.

I can also confirm that nothing is showing in the treeview on OS X (which is slightly weird). I'm sure that that didn't used to be the case.

Ok, I uploaded the OSX executable to my webspace: http://www.fantomgl.com/maxide2.zip

Still, the treeview is empty. As the code for the community IDE differs totally from the official one, I couldn't find out why it isn't working. Just not enough time on my hands for that.

Michael

Thanks, I appreciate it :) I also noticed auto-complete just kind of flickers on then disappears, that may be another os x specific bug.

Some request...

Dont collapse the code tree between clicks of the main IDE editor tabs. If a code tree was open for a particular tab it should remember what node it was on and open it at it when that tab comes back into focus. Otherwise to get back to where your method list was for example takes 3 clicks ever time you tab your source.

Also, can we have a key asignment for 'Save All' please?

Many thanks :)


One weird bug in Windows version though... if I go to the help, click "Tutorials and articles","BlitzMax overview","The first 5 'Nehe' OpenGL tutorials" then select on of the Nehe Tutorials... pow, no IDE, or error, it simply disappears without warning?

(XP service Pack 3)

Hmm, I'm having a problem.

Vista Home Premium 64 bit, UAC on, SP1, MaxIDE 2.0beta4, Max 1.30 (no SVN) and MinGW 5.1.3 installed.

All compiles work fine, except for any compile related to Grey's Framework code. That is, I can run any bmax demo code, or any code for other programs I have tested, also have built all my modules and that went fine.

But when I try to run any of the demos that come with Grey Alien's framework, the IDE quits out completely somewhere during the compile!

A bunch of text whizzes across the output but I don't have a chance to read any of it before this happens and I can't seem to locate any log or error files anywhere.

Does it happen with the official IDE, or just CE IDE?

Just uploaded a new FLTK build for you MaxIDE CE Linux users out there. Available from the link in Mark T's first post.

Official IDE brings up a compile error dialogue. I've seen CE IDE bring these up before, but apparently not in this instance...

After a long time using Beta3 (modified for my needs) I decided to 'restart' with Beta4.
I would like to show some ideas about the MaxIDE-CE I dont' like.

1. Menu Project > Build Options > Quick Build, Build GUI app

I think - with the new Threaded support - we need to go back to the 'old' style
Menu Options
- Quick build
- Debug
- Threaded
- Build GUI app

It's fast and immediate: you dont' need to choose IDE Options > Build etc...

2. Tools menu

- I will drop 'Import BB': I used it once, and never touched it. I prefer rewrite my program in Bmax...it easier.
- Sync should be replaced with 'Update via SubVersion' (if SVN is installed...) or dropped.
- Build modules/Rebuild all modules should support '-h' option if is possible to detect what BMK version user is running (until Threaded BMAX is official).

I think it will be useful if 'external' commands like BMK makemods, can be replaced by user program.
I mean, I modified MaxIDE to run a program (via CreateProcess) to create a special HTML page: the program itself runs BMK MAKEMODS and then makes the changes to the html pages. And you are still in MaxIDE.

Same thing with BMK makeapp.

And another idea could be to add PRE and POST process-command to 'BUILD APPLICATION'.
Example: I want to build a program, add an icon, compress it, zip it, and make a copy of the source in another folder.
I already modified MaxIDE CE for icon support and UPX support. But I think this approch grants more flexibility.
For my beta3 I made even a PlugIn support to run 'external' programs (what you want, like Find In File for standard MaxIDE).

In general I like a 'light IDE': everything is NOT needed (SVN checkout, Project managers, resource manager...) should be run external - and everything is 'extern' can be easily maintained without consequency on the IDE (or minimal).

Just my opinion of course, I want only know your comments.


edit:

Another question. I noticed when I put my mouse on the MaxIDE (official) icon a tooltip appears showing 'Description: Official BlitzMax IDE Company: BlitzResearch Ltd, Version: 1.0.0.0'
These informations are stored in the file 'maxicons.o' and this file is imported in MaxIDE during the compilation.
How can I/we make them (icon + information) ?

1. I'd prefer toolbar toggles TBH.

2. Import BB - While I agree with the sentiment, does it really do any harm to leave it in?

Doesn't the tooltip come from the shortcut's comment field and is therefore down to the installer?

1. good suggestion
2. I've any harm in leave it in, I just think to cut-off bridges with past, smaller 'useless' code - and in case it could be replaced with some 'external' commands


Doesn't the tooltip come from the shortcut's comment field and is therefore down to the installer?


Well, I really dont' know, I would like to know how to add these informations directly from the IDE to the application I create.

Doesn't the tooltip come from the shortcut's comment field and is therefore down to the installer?

Nope, it's declared in a manifest (the same manifest that dictates Windows's use of the new common control library). This manifest was then converted into an Object (.o) file using windres, which can be linked in easily when the application is built.

See this post for more info.

Ohhh! Yeeees! Thanks SebHoll!!!

@degac - Soz, I thought you meant when hovering over the desktop icon. Not that I would have been certain of the answer anyway. ;o)

Nope, it's declared in a manifest (the same manifest that dictates Windows's use of the new common control library)
Apparently not...

http://msdn.microsoft.com/en-us/library/aa381058(VS.85).aspx

...It's just a plain old resource file definition.


[edit]
Doh!...I just noticed your link.

What's it to do with the manifest? You're just trying to confuse poor old Yan, aren't you. ;o)
[/edit]

no more updates?

I personally have next to no time available for this now, and as I was the primary contributor, I guess it's unlikely there will be further updates TBH. The SF.net page, SVN, etc are still up and available, so anyone else can feel free to take it on, but I'm about done - sorry!