## Free MapBasic Development Environment: MapBasic IDE

Last update: November 30, 2015

### MapBasic IDE 1.7 Beta1 Released

Although being an important language, MapInfo (now PB) interestingly made almost no improvements to the MapBasic Editor. To see that, look at the older versions of MapBasic, say 10 years ago, and unfortunately you will see no improvements for developer convenience or productivity.

Therefore, as a developer who is used to utilize and likes great IDEs like Eclipse and Visual Studio (Eclipse is absolutely #1 for me with regard to coding!), I have decided to write a new editor for MapBasic to boost developer productivity. I made MapBasic IDE inherit and inspire a lot of handy features (form designer, syntax highlighting, code completion, syntax check, code snippets, shortcuts etc.) from Eclipse and Visual Studio.

I have written MapBasic IDE using Visual Studio 2010 and C#. The code editor is SharpDevelop’s text editor component.

MapBasic IDE looks like a mini Visual Studio:

MapBasic IDE in code view

MapBasic IDE in design view

NEW FEATURES

• Automatic project build
• External tools (AKA user tools)
• Smart tags
• More project-oriented system
• Auto completion for open MapInfo table names
• Auto completion for table column names
• Auto completion and syntax highlighting is updated to MapBasic 12.5
• Output pane to diplay external tool execution and build info.
• MapBasic 12.5 new help format support
• Highlighting of TODO, FIXME, HACK and UNDONE tags
• Highlight occurrences color setting in theme files
• Disable property added to the StaticText control of dialog designer (Thanks to Nyall Dawson for pointing this undocumented feature)

ENHANCEMENTS

• Code editor right click position fixed.
• After jumping to a line (e.g. to a compilation error) the line is centered vertically.
• You can create and run your MBX files in folders different from the project (*.mbp) file.
• Add/Remove MapBasic Installation Path, Custom Code Snippets, New/Edit Custom Code Snippet dialogs made resizable.
• Close All behavior has been standardized.
• Shortcut keys of the toolbar buttons are displayed in their tool tips.

CHANGES

• Project menu renamed to Build.
• Settings menu renamed to Tools.
• Goto Declaration context menu of the code editor renamed to Goto Sub/Function Implementation.
• Code > Fold/Unfold menu item renamed to Code > Fold/Unfold All and its short keys are changed from Ctrl+Shift+F to Ctrl+Alt+F. (Ctrl+Shift+F has been assigned for the advanced Find/Replace dialog, which will be implemented in the next version.)
• The shortcut keys of the Search > Next Error menu item is changed from Ctrl+Shift+N to Ctrl+Shift+E. (Ctrl+Shift+N has been assigned for File > New Project.)
• Error List context menu removed. The same functionality implemented in a toolbar at top of the Error List pane.

BUG FIXES

• You will not get “No undo group should be open at this point” error message when you undo. But you may have intermittent redo info losses. Hence do not heavily rely on undo and redo operations and do use source control programs or take backups. (I will research for it later.)
• Space character problem in the project (*.mbp) files fixed.
• Goto Declaration feature was going to wrong line in some situations. Fixed.
• Copying a link error in the Error List pane was getting an incomplete error message. Fixed.
• When all documents are closed, Find and Replace form is closed. (Using the form had caused a run-time exception.)

FEATURES

• Dialog Designer
• Syntax highlighting
• Extended code completion
• Method insight
• Syntax (compile) error check while typing
• Highlighting occurrences
• Automatic project build
• Code folding + User defined foldable code blocks
• Code snippets + User defined code snippets
• External tools (AKA user tools)
• Smart tags
• Code surrounding
• Cycle Clipboard Ring
• Auto-saving documents every 2 minutes
• Multiple tabs for documents
• New Project / Item Dialog
• MapBasic Project (MBP) support
• 64-bit Windows support
• Multiple MapBasic version support on a single machine
• Duplicating line or selection
• Moving current line up/down
• Going to last edit location
• Going to subs/functions
• Going to declaration
• Bookmarks
• Editor zoom in/out
• Setting code font type and size
• Context sensitive MapBasic help
• Unlimited undo/redo
• Block indent/outdent
• Brace match highlighting
• Current line highlighting
• Line numbers
• Line selection from left margin
• Shortcut keys
• File system watching for currently edited documents
• Color themes
• Drag & drop support to open files

SOME PLANNED FEATURES

• Debugging tools
• Code refactoring

Happy coding & enjoy!

Please do not hesitate to comment or give any feedbacks. You can enter them in the comment section on the bottom of this page or directly email to me. Of course there may be some bugs in MapBasic IDE, like any other software in the world. If you encounter any problems or bugs, please report them together with error messages and stack traces. You can get the last error message text at the end of the error log file. You can open the log file via Help > Open Error Log menu.

SYSTEM REQUIREMENTS

• You must have the .NET Framework 4.0 Full or above installed. You can download it from:

• You must have MapBasic installed to compile your programs. If you do not have, you can still write programs with MapBasic IDE but you cannot produce MBX files.

KNOWN ISSUES

• Use back slashes (\) and relative paths in your project (*.mbp) files. In other words, do not use absolute paths or the “Local: …” syntax. For example, rather than using Application=C:\MB\CODE\CUSTOM.MBX or Application=Local:MapBasic:custom.mbx, use like Application=Bin\MyProject.MBX or Application=..\MyProject.MBX. The same rules apply for your Module=… definitions in the project files.
• Do not use non-English characters in your folder or document names. This may prevent some features to work correctly. (I will inspect this later.)
• Undo and redo operations in the dialog designer have some issues. For example, some controls may disappear in the designer after you undo or redo. (I have experienced this intermittent issue a few times.) Hence do not rely on these two operations too much. Please save your work frequently while working with the designer. If you encounter a problem, you can revert your work to its last saved state via File > Revert menu.
• Never close the Toolbox, Properties or Error List windows. If you do so, you will experience some problems. For example, if you close the Properties window, even if you reopen it from the View menu, you cannot display the selected control’s properties while working with the dialog designer. If you, for instance, close the Error List window, Next Error and Previous Error menu items will not function. If you close one of them by mistake, please restart MapBasic IDE. When writing code rather than working with the designer, you naturally might not want to see the Toolbox, Properties or Error List windows, and if this is the case, simply minimize them to the left, right or bottom, respectively.
• Please do not open files by double clicking or right clicking and selecting Open with > MapBasic IDE. There are some issues with this. (I will fix it.) You can open your projects or documents using the Open Project/Open File menu or buttons, File > Recent Files menu or drag & drop.

64-bit WINDOWS SUPPORT

• I rebuilt MapBasic IDE so that it can run with both 32-bit and 64-bit systems. I am able to run it with both 32-bit Windows XP and 64-bit Windows 7. I could not find a chance to test with 64-bit Windows XP. Some people reported that it runs with 64-bit XP. There was a problem with an older version causing a crash upon program exit. Now it appears to be gone but please let me know if you have any issues.
• You may experience compatibility issues with 64-bit systems and may try switching to Windows XP compatibility mode.
• You may also experience path access errors and may need to give appropriate permissions or provide other solutions.

v1.7 Beta1:

UNINSTALLING MAPBASIC IDE

You can uninstall MapBasic IDE from Control Panel > Add / Remove Programs.

A CLOSER LOOK TO SOME FEATURES

DIALOG DESIGNER

MapBasic IDE’s integrated dialog designer consists of a design surface (dialog form), a toolbox and a properties window much like Visual Studio.

The toolbox has all MapBasic controls you will need. To add MapBasic controls to the dialog, simply drag a control from the toolbox and drop it to the dialog. To set a control’s properties, select it on the dialog and edit the values in the properties window.

Dialog files are persisted on your disk as XML based files with .dlg extension. Each dialog file contains one and only one dialog. In other words, for each dialog that you will need in your application, you must create a separate dialog file. You can create a new dialog file using the New Item dialog opened with File > New… menu.

To generate the MapBasic dialog code, simply use the Generate Dialog Code button on the toolbar. If you click this button for the first time for a particular dialog, MapBasic IDE will generate a new MapBasic file with .mb extension and write the dialog code into this file. For example, when you create and work with a dialog file with name MyDialog.dlg, if you click the Generate Dialog Code button then a new file will be created with name MyDialog.mb.

There is an important point with the generated dialog code: If you look at the generated .mb file, you will see a commented line just above the “Dialog” statement. It warns you not to edit or delete that line or below that line. This line is a marker line and looks something like:

'***** DIALOG DESIGNER GENERATED CODE. DO NOT EDIT OR REMOVE THIS LINE OR BELOW THIS LINE! *****

It identifies the start point of the auto-generated dialog code. In other words, all lines under this line will be generated from scratch each time you click the Generate Dialog Code button according to the design you have just made. This means that if you edit these lines (for example add a Calling statement to a button code), then these edits will be overwritten the next time you click the Generate Dialog Code button. Hence, when you need to change a control’s code (again, like adding a Calling statement to a button code), rather than manually editing the .mb file, you must set the buttons Calling property from the designer. When you do so, you do persist the control properties in the right way.

Maybe you are asking right now: “OK, but what if I need subs/functions that will be called from the dialog controls? Simply write them above the marker line. MapBasic IDE designer will not overwrite and will preserve the codes above the marker line.

After you generate your dialog code as mentioned above, you can copy and paste it to the required location in your main MapBasic file. Or maybe you can make some modifications in the .mb file that the designer generated to be able to include it in other MapBasic files. I leave this point open for the community for better ideas. In later versions, we can improve the designer code generation behavior altogether.

There are also a Format menu and a Format toolbar to apply various formatting operations to the controls. For example, you can align the controls, make them equally spaced or same sized, or center them in the dialog.

You can preview your dialog by clicking the Compile and Run toolbar button or simply by pressing the F5 key when you are in the code view.

If you define the Calling property (in the Properties pane) of a dialog or control, you can go to the calling sub handler in the code easily. For this, simply right click the dialog or control and then click View Code. This is analogous to a Visual Studio feature which brings you to the associated handling procedure in the code when you double-click a form or control.

If you have not defined the Handler/Calling property and click View Code, a warning message appears saying that you must set the Handler/Calling property first.

Setting dialog tab orders are easy as clicking the controls in order. To do this, click Edit > Tab Order menu item. Note that the menu item has been checked, meaning that you have entered the tab order setting mode. Then click each control in the order you wish. As you click each control, a control order number is displayed on the control you have just clicked. When you click the last control in the dialog -provided that you have clicked all of the controls- a green info label appears in the dialog saying that “All tab orders assigned.”

At this point you need to exit the tab order setting mode. Click Edit > Tab Order menu again. Now the control order numbers in the dialog are cleared and the Tab Order menu item is unchecked.

SYNTAX HIGHLIGHTING

MapBasic IDE displays different code items with different colors. As can be seen from below, keywords are blue, strings are brown, predefined functions etc. are pink, constants are orange and comments are green.

These colors are defined in the *.xshd files located in the <installation directory>\theme folder. If you wish, you can customize the colors by editing these files.

TODO, FIXME, HACK and UNDONE tags are also highlighted to easily spot your tasks:

EXTENDED CODE COMPLETION

You do not have to memorize the constants located in MapBasic.def, Menu.def, PaperSize.def and Icons.def anymore. Code completion feature assists you. Just type the first letters and press Ctrl+Space to display the matching items.

To insert the selected item into your code, press Enter or Tab key.

Code completion feature not only supports the constants mentioned above, but also MapBasic keywords, predefined subs, functions, commands or expressions. For instance, the item SelectionInfo() shown above is a MapBasic function.

The reserved words and predefined MapBasic functions in the completion list belong to MapBasic 12.5. (Many thanks to Egge-Jan Polle for his contribution for more complete and updated item list.) The constants in the four *.DEF files mentioned above are read from your MapBasic installation directory, however.

As of MapBasic IDE 1.3, the completion feature has been extended and it includes user-defined sub and function names, types, global, module level and local variable names, and define names. Moreover, the completion covers all items contained in the included files!

Also you can see the fields of a custom Type if you type dot (.) just after the type variable name.

The other code completion feature is using block shortcuts by pressing the Tab key. If you want to write an If block using the shortcut, just write if and immediately press Tab. MapBasic IDE will automatically insert an if block for you.

Here is the list of all block shortcuts:

if : If-End If block
dc : Do-Case block
for : For-Next block
dw : Do-While block
ww : While-Wend block
typ : Type block
sub : Sub-End Sub block
func : Function-End Function block

The completion feature has been extended again and provides the options to complete the open MapInfo table names and column names as denoted below:

To be able to use this feature, a MapInfo Pro instance must be running and it must have open tables, of course.

METHOD INSIGHT

When calling a sub or function, if you type an opening parenthesis, i.e. “(“, just after the name of the sub/function, then the method insight feature allows you to see the signature, that is parameters and return type (if function), of the sub/function.

AUTOMATIC SYNTAX CHECK WHILE TYPING

A cool feature is automatic syntax check while typing. Actually I must say while saving. For the time being, in order not to slow down MapBasic IDE, I made that decision rather than making intensive checking on every typed character. You can see the red wave line on the line 165 below, which indicates that there is a syntax, that is compile, error on that line. Moreover, the description of the error is displayed on the status bar when you locate the cursor on the error line:

If you have any syntax errors after you save the current document, you can easily navigate to the errors:

• To jump to the next error line, click Search > Next Syntax Error menu or press the Ctrl+. keys.
• To jump to the previous error line, click Search > Previous Syntax Error menu or press the Ctrl+, keys.

HIGHLIGHTING OCCURRENCES

When you click or bring the cursor on a word in the code editor, all instances of the word are highlighted, that is marked, in the document. This is not a smart feature in fact. In other words, the highlighting is neither context nor case sensitive. It just marks all the occurrences of the word that the cursor is on. (Again: It is not case sensitive.) But anyway it is an extremely useful feature. It not only marks the occurrences of the variables, variable types, sub or function names, etc. but also spots the exit points of subs or functions, by selecting the Exit word or the function name, respectively. The variable iRowCount is highlighted in the following code:

You can turn on/off this feature using the Toggle Highlight Occurrences button on the toolbar.

You can set the highlight occurrences color in the theme files.

AUTO-SAVE FEATURE

Assume you have been writing MapBasic code nonstop and like mad, say for 30 minutes, and failed to save your document. Then Murphy Laws are in action and you had a power failure. No problem. MapBasic IDE saves your documents every 2 minutes automatically. This feature excludes the dialog (*.dlg) files.

MAPBASIC PROJECT (MBP) SUPPORT

You can do modular programming with MapBasic IDE. In other words, you can create MapBasic project (.mbp) files, link the modules and run the projects within MapBasic IDE.

PROJECT ORIENTED SYSTEM

MapBasic IDE is more project-oriented now. When you create or open a project (*.mbp) file then it means you also select the current project. This is exactly the same as using the Project > Select Project File menu from MapBasic. After selecting the current project, all subsequent link and run operations are performed against this project.

File menu and toolbar have new items related with projects such as New Project, Open Project and Close Project. There is a difference between Close All and Close Project: Close All simply closes all open documents. You can link or run the current project even when all the documents are closed. Close Project, on the other hand, closes all open documents and the project.

Note that when you create or open a project, the name of the project file is displayed in the status bar. If you click this blue link button then the directory of the project file will open in Windows Explorer.

AUTOMATIC PROJECT BUILD

Finally! You can build your MapBasic projects with a single click or key (F6). The build process simply finds the module files from the project (*.mbp) file and compiles all the module (*.mb) files which are newer than their compiled (*.mbo) counterparts. It also checks all the include files recursively if there are any newer ones. If all the modules compiles fine then the project is linked also. In other words, the build process creates/updates the target MBX file.

Please note that when you set the “Check syntax errors on save” option in the Preferences dialog checked, all the module (*.mb) files will already be compiled every time you save the *.mb files, which means that the *.mb files will not be newer than the compiled *.mbo ones. Hence, if you look at the Output pane after a build, you will see that although you change a module (*.mb) file and save it, this *.mb file will not appear to be compiled in the Output pane.

There is also a Rebuild Project menu item under the Build menu, which first cleans, that is, deletes the *.mbx file and all the *.mbo and *.err files, and then builds the project from scratch. If you experience strange behaviors related with the build process, rebuilding the project may solve the issue.

SMART TAGS

You can save time by using smart tags to perform some actions in MapBasic IDE that you would usually handle manually. Smart tags recognize particular compile errors with a Smart Tag Actions icon (the yellow electricity) to make it easy for you to complete some of the most common tasks to fix the compile error. You can click the Smart Tag Actions icon or press Alt+Enter to choose an appropriate action.

above) or press Enter while the menu item is selected.

Note that this is a pretty limited feature and includes only two compile errors:
-No prototype declared for Sub procedure or Function <Sub/Function Name>
-Invalid Sub procedure name: <Sub Name>

In both cases MapBasic IDE offers the same action: Add Sub Procedure/Function declaration depending on you are dealing with a sub or function. When you perform the associated action, MapBasic IDE adds a line to the top of the document something like

Declare Sub SubName() 

Hence you do not have to declare subs or functions when you write them for the first time: Directly write the implementation and use the smart tag, and MapBasic IDE will create the declaration for you.

Because of this limited functionality, please feel free to offer new smart tag actions for other compile errors.

ENHANCED FIND/REPLACE DIALOG

The Find and Replace dialog has been redesigned.

Note that an advanced Find and Replace dialog allowing you to perform project-scoped searches will be implemented in the next version.

MULTIPLE MAPBASIC VERSION SUPPORT ON A SINGLE MACHINE

You can specify the MapBasic compiler, that is version, if you have more than one MapBasic installed on your machine. For example, you may want to compile some of your programs with MapBasic 11.0, while the others with the old MapBasic 7.0.

You can specify the MapBasic version via Settings > Set MapBasic.exe Path… menu:

When you run MapBasic IDE for the first time, an info message will appear informing you that you must specify the MapBasic executable that will compile your programs.

Once you specify the MapBasic version, all subsequent compilations will be performed with that version until you change it again. To add or remove MapBasic versions, click the Edit… button, and Add/Remove MapBasic Installation Path dialog will come up:

This dialog has been made resizable.

You can easily add or remove items using the buttons with icons on the right.

You can also view and change the MapBasic version from the status bar of MapBasic IDE. To change, just click the link, and MapBasic.exe Path dialog will open.

CODE SNIPPET SUPPORT

You can insert predefined code blocks such as If-Else, For-Next, Do-Case etc. To insert one, press Alt+Insert, select the item from the list and press Enter or Tab.

To be able to use this feature, there must be no selected text.

USER-DEFINED CODE SNIPPET SUPPORT

Besides the predefined code snippets, you can define your own snippets. This is a very flexible and powerful feature that lets you define whatever code snippets you want. It is especially useful when you define them for frequently used or hard to memorize code segments. It can also reduce your help references. To add a custom code snippet to the cursor location, click the Code > Add Custom Code Snippet… menu or just press Ctrl+Alt+Ins. When the popup list appears, select the snippet and press the Enter or Tab key to insert.

To add, edit or remove the custom code snippets, click the Settings > Edit Custom Code Snippets… menu, and Custom Code Snippets dialog will open:

This dialog has been made resizable.

CODE SURROUNDING

Sometimes we want to surround one or more lines of code with blocks like if, for-next etc. Then MapBasic IDE comes into play: To surround a code snippet, select it and then press Ctrl+W. From the popup list, select the block you want and press Enter or Tab.

To be able to use this feature, there must be one or more selected lines. To prevent indentation and formatting issues, you must select the entire lines. For that, you can select the line(s) by first putting the cursor on the first column and then pressing Shift+Down Arrow keys.

EXTERNAL TOOLS

MapBasic IDE allows you to create and execute custom tools to ease your tasks. Once you have created and configured an external tool, you can call this tool from within MapBasic IDE. For instance you can execute batch files or windows programs. MapBasic IDE’s external tools implementation is the same as the Visual Studio one and analogous to the user tools in UltraEdit.

To add an external tool, click Tools > External Tools… menu item. In the External Tools dialog box click Add, and then fill in the information. The explanation of each field follows:

Title: Descriptive name of the tool, which will be displayed under the Tools menu.
Command: Full path of the executable (Batch file or Windows program). Must be a full absolute path.
Arguments: Command line arguments of the command.
Initial directory: Working directory for the process associated with the command, if applicable. This is not necessary when you, for example, specified the full path of a document in the Arguments field.

As an example, the following tool compiles a MapBasic file:

Title: MB Compiler
Command: C:\Program Files\MapInfo\MapBasic\Mapbasic.exe
Arguments: -server -d "MyTool.mb"
Initial directory: C:\MB Tools


or using full path

Title: MB Compiler
Command: C:\Program Files\MapInfo\MapBasic\Mapbasic.exe
Arguments: -server -d "C:\MB Tools\MyTool.mb"

The following two tools utilize argument and initial directory variables (explained below) and compile the current MapBasic IDE document:

Title: MB Compiler
Command: C:\Program Files\MapInfo\MapBasic\Mapbasic.exe
Arguments: -server -d "$(DocumentFileName)" Initial directory:$(DocumentDirectory)

or using full path

Title: MB Compiler
Command: C:\Program Files\MapInfo\MapBasic\Mapbasic.exe
Arguments: -server -d "$(DocumentPath)" As a second example, the following tool opens Windows Explorer at the directory of the current document in MapBasic IDE: (Note that this feature already exists in MapBasic IDE with Open Containing Folder menu item in the context menu of the document headers.) Title: Open File Location Command: C:\Windows\explorer.exe Arguments: /root, "$(DocumentDirectory)"

It is possible to execute batch files by passing arguments. The following tool copies a file to a specified location:

Title: Copy
Command: D:\Copy.bat
Arguments: "C:\File.txt" "E:\File.txt"
Initial directory: D:

Here the contents of the Copy.bat file may be something like

copy %1 %2

to accept the source and destination file paths as arguments.

Note that if you have a directory path with blank characters and getting into trouble, in order not to bang into wall, you may need to enclose the path with quotes like “C:\My Tools”.

Executing an External Tool

To execute an external tool, just click the corresponding menu item under the Tools menu. When you execute a tool including a batch file, execution info is displayed in the Output pane like

External tool 'Copy' started at 11:26:42 PM.
External tool 'Copy' executing...
Execution of the external tool 'Copy' finished successfully at 11:27:01 PM.

If your tool fails, you may want to look at the Output pane since it displays the standard output and standard error of the process belonging to the tool. For example, when you execute a batch file that performs a copy operation and if you fail to specify the right paths, MapBasic IDE prints an output message such as

External tool 'Copy' started at 11:27:10 PM.
External tool 'Copy' executing...
D:\>copy d:\File.txt e:\File.txt
The system cannot find the file specified.

Arguments for External Tools

The following arguments are MapBasic IDE variables that are assigned when you launch an external tool. They can be used in the Arguments and Initial directory fields.

 NAME ARGUMENT DESCRIPTION Document Path $(DocumentPath) Full path of the current document. Document Directory$(DocumentDirectory) Directory path of the current document. Document File Name $(DocumentFileName) File name + extension of the current document. Document File Name Without Extension$(DocumentFileNameWithoutExtension) File name of the current document without extension. Document File Extension $(DocumentFileExtension) Extension of the current document. Document Selection$(DocumentSelection) Selected text of the current document. Project Path $(ProjectPath) Full path of the current project (MBP) file. Project Directory$(ProjectDirectory) Directory path of the current project (MBP) file. Project File Name $(ProjectFileName) File name + extension of the current project (MBP) file. Project Target Path$(ProjectTargetPath) Full MBX file path of the current project. Project Target Directory $(ProjectTargetDirectory) Directory path of the current project’s MBX file. Project Target Name$(ProjectTargetName) File name + extension of the current project’s MBX file.

To use the variables, click the arrow buttons near the Arguments and Initial directory fields and then select one of the predefined location menu items to insert the variable into the cursor position in the Arguments or Initial directory fields. Here a variable means a value in the Argument column of the above table, $(DocumentPath) for instance. Using these variables provides an extremely powerful and flexible way to execute external tools and lets you use relative paths like $(ProjectTargetDirectory)\..\Batch

for the Initial directory field, for example.

CYCLE CLIPBOARD RING

MapBasic IDE’s Code Editor captures all system Copy and Cut operations. If the cut or copied item contains text then it is stored in memory in the Clipboard Ring. The clipboard recalls the last 15 text items that were cut or copied.

This is a powerful feature for quickly copying several pieces of text to a new location or for recalling text that you inadvertently cut.

To use the Clipboard ring:

1) Cut or copy some text from your code. Use Ctrl+X to cut or Ctrl+C to copy. The last item you cut or
copy into the Clipboard Ring is the current item for pasting.

2) Use Ctrl+Shift+V to paste the Clipboard Ring’s current item to the current document.

3) Repeatedly press Ctrl+Shift+V to cycle through the entries in the Clipboard Ring until you get to the one you want to permanently paste in the document. Each time you press Ctrl+Shift+V, the Editor replaces the last entry you pasted from the Clipboard Ring so that you end up with only the last one you selected. The item you stop on then becomes the current item.

4) Move to another location or cancel the selection. You can use Ctrl+Shift+V to paste the current item again or cycle the Clipboard Ring to a new item.

Note that since the implementation of this feature is the same as Visual Studio, I got the above explanation from MSDN.

CODE FOLDING

Folding some parts of the code is useful especially in long programs by shortening the display. You can fold (and unfold of course) sub, function and type blocks by clicking the minus (-) icon on the left of them. To unfold, i.e. open, click the plus (+) icon on the left.

To fold/unfold all the foldable blocks click the Code > Fold/Unfold menu or press Ctrl+Alt+F keys.

USER-DEFINED FOLDABLE CODE BLOCKS

Besides folding the sub, function or type blocks, now you can define custom foldable code blocks. For that, you can use the Region/End Region structure. The custom block must start with

'#Region <YOUR_REGION_NAME>

and must end with

'#End Region

as shown below:

DUPLICATING LINE OR SELECTION

For duplicating similar lines or blocks, MapBasic IDE provides a way which is easier than copy-pasting. You can duplicate the current line (the one cursor is on) or selected text. To duplicate, just press Ctrl+D.

NEW FILE DIALOG

You can create new MapBasic files with the new Visual Studio-like New File dialog as shown below:

DISPLAYING THE DOCUMENT PATHS

The full paths of the open files are not displayed in the title bar of MapBasic IDE anymore. Instead, the paths are displayed with a tool tip when your mouse hovers over a document header:

If you right-click on a document header, a context menu will popup as shown below:

• Save the document
• Copy the document’s full path into the clipboard
• Open the folder containing the document
• Close the documents but the current document, if any
• Close the document

ERROR LIST OPTIONS

There is a toolbar at the top of the Error List pane:

With this toolbar you can:

• Go to the error line
• Copy the error text into the clipboard

ERROR LOG FILE

The log file that stores your critical MapBasic IDE program error information has been moved from the application directory to your <Local Settings>\Application Data\MapBasicIDE folder. Furthermore, you can open and see the logs via Help > Open Error Log menu. You can use this when you want to report (please do so!) the program errors you encounter.

DRAG AND DROP SUPPORT TO OPEN FILES

You can use drag and drop to open files with MapBasic IDE. You can drag multiple files.

ASSOCIATION WITH MAPBASIC FILES

If you associate the MapBasic file types with MapBasic IDE, you can open these files with MapBasic IDE by double clicking on them.

DELETING CURRENT LINE

To delete the current line (the one cursor is on) quickly, click the Code > Delete Current Line menu or press Alt+Del.

MOVING LINES UP/DOWN

You can move the current line up or down by using the shortcuts Alt+Up and Alt+Down respectively. No need to cut-paste.

You can comment/uncomment a single line or selected lines by Ctrl+7.

GOING TO LAST EDIT LOCATION

To quickly navigate to the last edit location in code, press Ctrl+Q.

GOING TO SUBS/FUNCTIONS

There may be a lot of subs or functions in large MapBasic documents. To cope with those, MapBasic IDE presents a handy feature to access to subs or functions quickly. Just press Ctrl+Shift+O and a list will appear. From the list, select the sub/function to go and press Enter. To cancel, press Esc. Moreover, while you are typing the name of the sub/function, the list will be filtered accordingly.

GOING TO DECLARATION

To navigate to he declaration of a sub or function, right click the sub/function name where it is called and click Goto Declaration, or press F3 while the cursor is on the name of the sub/function.

PREFERENCES

You can set several settings with Preferences dialog. You can set:

• Tab width, font and color theme of the editor.
• Dialog designer grid on/off, plus grid width and height.
• Turn on/off the syntax check feature.
• Turn on/off the auto save feature.
• Turn on/off the highlight occurrences feature.
• Initial directory that will be displayed in new item and open file dialogs as default.
• Whether project module files and include files will be opened as well. If you check these two checkboxes, after you have opened a project (.mbp) file, then all module files in the project file and all include files in a MapBasic (.mb) file will also be opened automatically.

To open the Preferences dialog, click Tools > Options… menu.

SETTING FONT TYPE AND SIZE

To set the type or size of the editor, click the Tools > Options… menu, and then press the Font… link button.

This setting is permanent, and will be persisted even when you exit MapBasic IDE.

INSERTING MAPBASIC COLOR CODE USING COLOR DIALOG

You do not need to deal with MapBasic color codes anymore. To insert a MapBasic color code, click the Edit > Insert Color Code… menu and then select the color you want from the color dialog. Hitting the OK button will insert the MapBasic color code of the selected color into the cursor location.

COLOR THEMES

You can select from a few predefined color themes. To do this, first open the Preferences dialog by clicking the Tools > Options… menu, and then hitting the Theme… link button. You can see the dark (BJK) theme below:

By the way, the names and colors of the current themes (FB, GS, and BJK) come from the major Turkish football teams Fenerbahçe, Galatasaray and Beşiktaş, respectively. 😉

You can also create your custom theme files by copying and modifying the existing ones.

BOOKMARKS

You can bookmark the lines you go often and quickly navigate between them. To use bookmarks, use the sub menus under the Code > Bookmarks menu.

EDITOR ZOOMIN/ZOOMOUT

To zoomin/zoomout the currently open MapBasic document, wheel your mouse forward or backward respectively while pressing the Ctrl key. This is a temporary modification to the document, and it has no effect to other open documents if any. To permanently change the editor font size, refer to the section named “Setting Font Type and Size”.

DOCKING SUPPORT FOR DOCUMENTS

You can dock MapBasic documents vertically or horizontally. Just drag the document header (shown with an ellipsis below) and drop to one of the direction icons that appears while you dragging.

Result:

Similarly you can dock the documents horizontally. Moreover, you can create both vertical and horizontal combinations provided that there are at least 3 documents.

CONTEXT SENSITIVE MAPBASIC HELP

You can directly access to the MapBasic help document within MapBasic IDE. With context sensitive help support, MapBasic IDE assists you to get the help with just one key. For example, assume that you are currently typing the TableInfo() function, and assume you want to look at this function in MapBasic help. Place the cursor on the word TableInfo and press F1. You are on the TableInfo topic in 1 second!

SEARCHING THE MAPBASIC HELP FROM WITHIN MAPBASIC IDE

In order not to put your hand away from keyboard while coding, MapBasic IDE provides some shortcuts: To focus the MapBasic Help textbox on the upper right, press F11. To focus the code editor, press F12.

MapBasic 12.5 new help format is supported.

Keywords: Free MapBasic editor, IDE for MapBasic, alternative MapBasic editor, MapBasic development environment

1. 31/07/2012 at 10:07

Although this is a development environment, it might be nice to print the code with syntax highlighting, inculre for example in a report.

2. 26/10/2012 at 07:16

Thanks for developing this amazing application. I’ve been using NotePad++ to write MapBasic code for some years. This has many features which are not available in NotePad++. The one thing which I will miss in your application is the ability to do a “Replace in all Open Documents” function. Sometimes I want to change a variable name and want to replace it in several open modules and the .Def file. It would be really great if your replace dialog had the option to “Replace in All Open Documents” as well as Replace All in the current document.

• 26/10/2012 at 10:01

I agree with you for the features you mentioned. They should certainly exist in a modern development environment. They are already in my TODO list. (Renaming all occurences of a variable automatically is part of some procedures called “refactoring” and you can see that this is already included in the “Some Planned Features” section on this page.) In the next version (v1.5) I will probably include these features.

3. 06/11/2012 at 18:42

Congratulations for the excellent work. Fantastic IDE.
I would suggest the inclusion in the toolbox of control “DocumentWindow.”

• 06/11/2012 at 19:03

You are right, it was a forgotten control. I plan to include DocumentWindow in the next version (v1.5). Thanks.

EDIT: DocumentWindow component has been added to the toolbox in MapBasic IDE 1.5.

4. 07/11/2012 at 15:37

In Dialog properties is missing “calling handler”.
The handler is the name of a procedure to call before the user is allowed to use the dialog box.

• 07/11/2012 at 15:53

There are a lot of things to do for a better dialog designer and I plan to implement them in v1.5. Please feel free to give any comments or improvement suggestions.

5. 12/11/2012 at 13:37

Exception in use “send to” link: “Exception Description: Object reference not set to an instance of an object.”…

• 12/11/2012 at 13:52

Can you give more details about the situation? What do you mean by send to link?

6. 16/11/2012 at 01:45

Not sure if I have missed it, but is there the option to Block indent (increase and decrease). I find I use this a lot in Notepad++but cannot find in it IDE

BTW…Thanks for a great effort. I will be using IDE from now on.

7. 16/11/2012 at 06:47

Ahhh…OK Now TAB – Shift TAB is block indenting….not sure why it did not work before. Regardless….great software…Love the dialog editor.

• 16/11/2012 at 17:38

Since Tab and Shift Tab is default for block indentation in many IDEs, I didn’t need to mention it in the documentation but I think I’d better mention.

8. 07/01/2013 at 00:23

It is nice to see a toolbox for dialog box editing but unfortunately I found the toolbox have no components in my machine. Moreover, the “Generate Dialog Code” always remain deactivate. I am not sure whether it is a problem at my machine or others are also facing similar problems. Suggestions to resolute the problem would be highly appreciated.

• 07/01/2013 at 10:29

Very strange! So far there was no problem like that. Can you give some system information? (OS, .NET Framework version etc.)

• 27/07/2013 at 13:09

I met the same situation: there is no component inside the toolbox and the ‘Generate Dialog Code’ button is disabled.

Win7 ultimate (64-bit) Eng
.Net Framework 4.5
(and VS2012)

• 27/07/2013 at 20:04

I will try to reproduce the situation with your environment. Thanks for the feedback.

9. 08/01/2013 at 00:49

All sorted out now. It seems in my machine, before opening ..\MapBasic IDE\NewDialog.dlg explicitly, the MapBasic IDE was not able to copy/replicate components from NewDialog.dlg to an empty .dlg file. However, once it was happy I was unable to replicate the same issue once again.

• 08/01/2013 at 11:15

Thanks for sharing the result.

10. 08/01/2013 at 16:22

Hello Mustafa and thank you for all your hard work on creating an IDE for MapBasic. I´ve encountered a couple of errors that might relate to Windows 7 64bit since a colleague of mine with Windows XP doesn´t have the same issues.
I have checked the “Open project module files also when the project file has been opened” check box, but the MB files related to the project doesn´t open when I open a mbp-file.
Furthermore, the CTRL+U claims that the .mbx files couldn´t be found even though I´m able to located it with explorer.
I´m runing Windows 7 64bit – SP1, .Net v4.0.30319, MapBasic 10.0, MapInfo 11.5
In a further version It would be nice if CTRL+K compiles all opened MB-files
Have you considered turning the project into an open-source project?

/Kaare

• 08/01/2013 at 17:06

Currently I am hard working for my MSc. thesis and thus have no time to update MapBasic IDE. However I am open to all feature requests and adding them to my wish list. I will certainly inspect your issues later.
For Ctrl+K, I am planning an automatic build feature that will achieve what you request. With regard to opening the source, currently I have no plan for that.

11. 09/01/2013 at 01:31

Hello Mustafa

Thank you for creating this excellent tool! I have been using it for a couple of weeks now, and it’s great 🙂

The biggest problem for me is debugging, and I have found this utility to help with debugging my MapInfo programs: http://www.spatialprojects.com.au/mbtestbench.htm.

MBTestBench provides for a “hook” into an editor using arguments. Is it possible to call MapBasic IDE using these arguments which will mean I can use your program and the debugger together?

Kind regards

Nick

————————————————————————————————————————————————
THIS IS THE HELP FILE FROM MBTestBench:

MBTestBench provides a jump to the file and line number in your chosen text editor. Many editors have a command line format to support this.

Syntax:

path_to_editor [arg1] [arg2]

path_to_editor is the full path to the editor

[arg1], [arg2] are arguments which specify the file name and line number

Wildcards in the arguments may be used as follows:

%f will be substituted with the source file path name

%l will be substituted with the line number

Example:

————————————————————————————————————————————————

• 09/01/2013 at 11:06

You are certainly right about debugging. Actually debugging is the most important mission of MapBasic IDE which is left. If I finish my MSc. education in this February, I am going to implement a debugging tool in MapBasic IDE. Currently I have 3 choices:
1) Implementing a full debugger like Visual Studio’s which involves setting break points and inspecting the current variables’ values. But this is really a hard and problematic task since as you know MBX is not an open format and the task may require reverse engineering etc., which may not be legal.
2) Implementing my own debugging tool which dumps, ie writes all of the variable values to a table in a specified execution interval.
3) Integrating MBTestBench with MapBasic IDE. I am aware of this tool but did not use. It looks useful.

12. 05/03/2013 at 07:26

I don’t know if I am doing something wrong but when i go to compile and run my MB code. The MBX file opens in a notepad window.

13. 21/03/2013 at 12:29

I like it very much Mustafa and you could make some wonderful improvements and with which I could help since without them it is for me not quite a usable replacement for my customized Notepad++ plus customized batch build commands called from it and based upon http://www.twiav.nl/php/mapbasic.php except that I have added a Build (Compile changed and Link aka make) and Rebuild (ReCompile all and Link) and modified his batch files to work with .MB sources across a sub and super directory hierarchy (yes some of the MapBasic reused from the MapInfo MapBasic Samples is up and across from the current dir).

Of course one could cheat and possibly “Include” all sources into one source file then compile and link but aside from this being incredibly ugly it would likely would make tracking down compile-time errors difficult. (I actually seen this done professionally (but not by me!) and I simply do not like and will not do it!)

The batch files above are long and ugly so I am moving to GNU Make and revisiting my Makefile skills from years ago which with Bash and Sed makes for much leaner, neater, and more reliable build code and you can do this and still reuse the .MBP project files but not have to ReBuild all of the sources all of the time (dependencies might come much later if at all) or constantly switch source file .MB to .MBP to compile and link etc. etc…

SO the upshot is before building this into the native C# where you can eventually click on a Module=… link or Include … say to open a source file you could add make.exe bash.exe sed.exe touch.exe etc. plus a generic build Makefile with your app to do this Mustafa.

OR at the very least allow the ability to add batch file calls to a menu like Notepad++ and i will provide this for you and later you can add this in C# along with the wonderful Module=… and Include … click through…

By now you have figured out what I am talking about so do feel free to contact me Mustafa if you are to continue this Project as I am happy to accept one lifetime license in lieu of any assistance if your ever take the product commercial…

Kindest Regards,
Matthew.

14. 21/03/2013 at 12:48

I guess when I get a generic make rule processing of the MBP working (as I maybe never bother using a list source files in the makefile itself) I can start using your IDE whilst building from another open cmd window to run my Makefile on the project.

I can then get rid of my custom “Notepad++ for MapBasic” setup and move to just the one installation of Notepad++ and one context menu option and list of open files etc for all other Projects… 😉 Notepad++ seems to be single instance which along with the mental (as well the physical menu) context switch between the two different setups above is annoying… I guess i need to consider using its session management also…

15. 22/03/2013 at 08:01

I am just about done with a working Makefile (note that GNU Make 3.81 has some bugs/issues under Windows and switching pathing \ to / is such a pain but it is better to use Bash and avoid Cmd scripting).
I only have to sort out recursion: when building an MBP in a different dir or subdir the spawned Make of course doesn’t find the MBO rules as they are in the Makefile in the Directory above (obviously as I write this i realize that I can simply copy and duplicate the Makefile or better yet subdir Makefiles can be mere placeholders including those form above… time to investigate recursive make… (been a very long time it has to be sure and even then I was an MS NMake Guru at that earlier time…)

16. 22/03/2013 at 11:01

Thank you Mustafa for this great product. I use it to develop some features in MapInfo which our company needs. I was wondering if it is possible to fold/unfold any user defined blok of code. Thanks, S.

• 22/03/2013 at 13:50

Yes, the code editor component (which is SharpDevelop’s code editor) has this capability. I will give it a try to adapt it to MapBasic IDE. Actually I thought to add this useful feature before but did not implement it. Thanks.

EDIT: This feature has come with MapBasic IDE 1.5.

17. 10/04/2013 at 02:33

Ive been having some slight issues with compiling. Project is broken down into roughly 2 MBs that compile to MBO a MBP and several MBs to stay as MBs and a couple of DEFs. When i run the compiler I believe it is trying to compile all of the open TABs in MapBasic.IDE. The end result is it locks up during the compiling (no log record). Release method is to Task manager then kill the semi opened Mapinfow.exes, resulting in a successfully compiled message. Just compiling with only the seperate MBs to MBO and MBP are successful.
Note still thoroughly love your work on this Mustafa.
Versions Mapinfo 11.5.1 Mapbasic IDE 1.4.0.0 RC1

• 12/04/2013 at 17:33

Can you tell me the exact steps so that I can reproduce the issue?

Note: Compiling process compiles only current document.

18. 19/04/2013 at 08:03

With great joy I cant. Upgraded mapinfo to 11.5.4 Mapbasic to 11.5.4 and reinstalled Mapbasic IDE RC1. Issue is no longer reproducable so I would put this under corrupt install (no-one else onsite has had an issue too). Sorry to waste your time, Mustafa

19. 26/06/2013 at 15:08

Hello,
nice job, it’s a real pleasure to code with this software.
I’m an advanced developer in Mapbasic and I think it’s the best!

• 26/06/2013 at 19:50

Thanks.

20. 30/07/2013 at 15:54

I noticed two things:
1 – Method insight – is not working.
2 – Highlighting occurrences – when toogled throws an exception: “index was outside of the array”

• 30/07/2013 at 17:46

1) Was there any exceptions while using method insight? Can you look at the error log using the Help > Open Error Log menu?
2) MapBasic IDE logs all exceptions. Can you send the stack trace of the exception?

Thanks for the feedback.

21. 30/07/2013 at 19:59

Exception Time: 7/30/2013 09:43
MapBasic IDE Version: 1.5.0.0 Beta1
Exception Description: Index was outside the bounds of the array.
StackTrace:
at MapBasicIDE.Gui.Dialog.TextEditorSearcher.FindNextIn(Int32 offset1, Int32 offset2, Boolean searchBackward)
at MapBasicIDE.Gui.Dialog.TextEditorSearcher.FindNext(Int32 beginAtOffset, Boolean searchBackward, Boolean& loopedAround)
at MapBasicIDE.Editor.Actions.HighlightOccurencesActions.DoHighlighting()
at MapBasicIDE.Editor.Actions.HighlightOccurencesActions.ToggleHighlightOccurences()
at MapBasicIDE.Gui.FrmMain.mnuToggleHighlightOccurences_Click(Object sender, EventArgs e)
at System.Windows.Forms.ToolStripItem.RaiseEvent(Object key, EventArgs e)
at System.Windows.Forms.ToolStripButton.OnClick(EventArgs e)
at System.Windows.Forms.ToolStripItem.HandleClick(EventArgs e)
at System.Windows.Forms.ToolStripItem.HandleMouseUp(MouseEventArgs e)
at System.Windows.Forms.ToolStripItem.FireEventInteractive(EventArgs e, ToolStripItemEventType met)
at System.Windows.Forms.ToolStripItem.FireEvent(EventArgs e, ToolStripItemEventType met)
at System.Windows.Forms.ToolStrip.OnMouseUp(MouseEventArgs mea)
at System.Windows.Forms.Control.WmMouseUp(Message& m, MouseButtons button, Int32 clicks)
at System.Windows.Forms.Control.WndProc(Message& m)
at System.Windows.Forms.ScrollableControl.WndProc(Message& m)
at System.Windows.Forms.ToolStrip.WndProc(Message& m)
at System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m)
at System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m)
at System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)

• 31/07/2013 at 09:44

Thanks for the stack trace but I couldn’t reproduce the exception. Is the exception thrown every time you click the menu? What is your environment? (OS, 32/64 bit, .NET Framework, MapInfo, MapBasic version?)

22. 31/07/2013 at 16:54

The procedure is as follows:
1 – in MapBasic IDE open any program
2 – toggle OFF the button HighLightOcurrence
3 – close the MapBasic IDE
4 – reopen the MapBasic IDE and open any program
5- toggle ON the button HighLightOcurrence and the exception occurs.
To turn back to normal operation, the “user.config” file must be deleted.
My environment is Windows 7 Pro, 32 bits, Microsoft Framework 4, Mapinfo 11.0, Mapbasic 10.

• 31/07/2013 at 18:23

Now I can reproduce the exception. I will fix it in Beta2. Thanks.

23. 10/08/2013 at 12:51

Mustafa ÖZÇETİN :
I will try to reproduce the situation with your environment. Thanks for the feedback.

I found the problem: when I create a new dialog file, I renamed that file name and the file extension (.dlg) was removed. (I thought the file would be save with an extension of dlg)
so the toolbox was disable.

After I renamed the dialog file ,it worked well.

24. 22/08/2013 at 18:19

It’s very importan and help me so much in my job. Mapbasic IDE 1.5 Beta 1 is really good and worked well, but I have a problem with this version: when I link all my module from the mbp file, its worked well, but I can not run the mbx when I put on the Run button on the Toolbar?
So, I think this problem will be fixed in next version.
Thanks again,

25. 11/09/2013 at 18:04

Great program, much better than normal MapBasic, however when I alter a .DEF file, there is no option to compile that .DEF file.
Also when I open my project, it doesn’t automatically open all linked modules (though that’s ok as there are about 50 of them)

Thanks again

Jon

• 12/09/2013 at 15:35

If the mbp file is generated by Mapbasic IDE, then the keywords are separated by spaces from equal sign and the parameters like this:
Application = M1.mbx
Module = M1.mbo
Module = M2.mbo
This is why it is not open linked files by Mapbasic IDE, but if you remove spaces, then it works:
Application =M1.mbx
Module =M1.mbo
Module =M2.mbo

26. 02/10/2013 at 06:01

Hi, great tool. Seems like this point has been raised, just want to add my voice.
My code is modular and using a project file to link all the modules together. The IDE links and creates the .mbx, but it won’t run from within the tool (press the play button etc). You have to go and run the .mbx your self.

Ideally, you should make it as easy as in the old mapbasic complier => compile current module => you go that. compile and link => you don’t have that. compile and link and run => you don’t have that. Best if you can do these from keyboard shortcuts too, or at least a button like the play button you have.

Can you not make a way to step through code, stop execution, restart etc? Probably not, as you would need to get into MapInfo itself. But man, that would be killer if you could do that, I would pay for that.

27. 29/10/2013 at 20:07

• 29/10/2013 at 21:48

It works for me. Can you check it again?

28. 01/11/2013 at 12:58

From time to time when I try to use “Undo” I got this:
Win7 Enterprise x64

——————————-

Exception Time: 01-Nov-13 11:52
MapBasic IDE Version: 1.5.0.0 Beta1
Exception Description: No undo group should be open at this point
StackTrace:
at ICSharpCode.TextEditor.Undo.UndoStack.AssertNoUndoGroupOpen()
at ICSharpCode.TextEditor.Undo.UndoStack.Undo()
at ICSharpCode.TextEditor.TextEditorControl.Undo()
at MapBasicIDE.Gui.FrmMapBasicDocument.Undo()
at MapBasicIDE.Gui.FrmMain.mnuUndoSource_Click(Object sender, EventArgs e)
at System.Windows.Forms.ToolStripItem.RaiseEvent(Object key, EventArgs e)
at System.Windows.Forms.ToolStripItem.HandleClick(EventArgs e)
at System.Windows.Forms.ToolStripItem.HandleMouseUp(MouseEventArgs e)
at System.Windows.Forms.ToolStripItem.FireEventInteractive(EventArgs e, ToolStripItemEventType met)
at System.Windows.Forms.ToolStripItem.FireEvent(EventArgs e, ToolStripItemEventType met)
at System.Windows.Forms.ToolStrip.OnMouseUp(MouseEventArgs mea)
at System.Windows.Forms.ToolStripDropDown.OnMouseUp(MouseEventArgs mea)
at System.Windows.Forms.Control.WmMouseUp(Message& m, MouseButtons button, Int32 clicks)
at System.Windows.Forms.Control.WndProc(Message& m)
at System.Windows.Forms.ScrollableControl.WndProc(Message& m)
at System.Windows.Forms.ToolStrip.WndProc(Message& m)
at System.Windows.Forms.ToolStripDropDown.WndProc(Message& m)
at System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m)
at System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m)
at System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)

• 01/11/2013 at 13:43

Thanks for the feedback. I will inspect and try to fix the issue.

• 29/04/2014 at 09:03

This happens very often. Is there any chance for UNDO/REDO operations to be fixed ? Thanks for great IDE again.

Application: MapBasicIDE.exe
Framework Version: v4.0.30319
Description: The process was terminated due to an unhandled exception.
Exception Info: System.ObjectDisposedException
Stack:
at System.Windows.Forms.Control.CreateHandle()
at System.Windows.Forms.Form.CreateHandle()
at System.Windows.Forms.Control.get_Handle()
at MapBasicIDE.Gui.FrmMain.Dispose(Boolean)
at System.ComponentModel.Component.Finalize()

• 29/04/2014 at 10:53

After your previous comment I inspected the issue but unfortunately couldn’t reproduce it. The source of the error is the ICSharpCode.TextEditor component, which is the code editor of MapBasic IDE. It is not my code but since it is open source, I will dive into its details and try to solve the problem.

Can you fix the problem? I mean, can you determine exactly when you get this error? Is it totally random?

29. 20/11/2013 at 15:22

Hello Mustafa,
do you have a silent install method of your product ?
I ask to you this because we use automatic install with wpkg.

Thanks.
Martial (Rennes 2 University)

• 20/11/2013 at 16:19

No, I don’t.

30. 28/11/2013 at 23:54

Maybe this is trivial but it annoys me. For example this line of code has bad syntax highlight

Print #1, “xcopy “”” + variable1 + “”” “””+variable2+””” /e /r /h /y /d”

In Notepad++ highlight is correct: variable1 and variable2 have different colors from the rest of line.
Here is the image of comparison:
[IMG]http://imageshack.us/a/img541/849/b1d3.png[/IMG]

All the best.

• 29/11/2013 at 11:37

Please feel free to report the trivial issues, too. I will have a look at it.

31. 13/12/2013 at 11:09

Hi Mustafa
Indeed a very useful development environment that you have created here.
These a few things that I’m missing:
– The possibility to set a handler on the dialog itself.
– The possibility to assign constants (thru defines) as the ID to the controls
– The possibility to don’t set ID’s on all controls and just have MapBasicIDE ignore the IDs on the controls without IDs

Thanks – and a merry Christmas

• 13/12/2013 at 11:38

Hi Peter,

These are certainly good improvement suggestions and two of them are already in my – long- wish list. I think I can implement these in v1.6. Please feel free to give any feedbacks. Have a nice Christmas.

32. 21/02/2014 at 15:26

Hi Mustafa,
I’ve been using ver 1.4 but I cannot start ver 1.5. The error reported by Windows XP SP3 is
EventType: clr20r3
P1: mapbasicide.exe
…..
P9: system.nullreferenceexception

Do you knoe what’s going on?

Thank you
Sergi Gàmiz

• 21/02/2014 at 16:43

Sorry but it is really hard to say something without a more detailed error info 😦

33. 04/03/2014 at 23:53

Thanks for this great tool. But I found whenever I type in “.” period in my mapbasic codes in your tool, it becomes so slow. What is the possible reason for this? Thanks!

34. 04/03/2014 at 23:55

Thanks for this great tool. But I found whenever I type in period “.” in my mapbasic codes in your tool, it become extreme slow. Any reason for that? Thanks!

• 05/03/2014 at 10:37

The reason is that whenever you type a period, MapBasic IDE first investigates whether the word just before the period is a custom Type variable name. If so, auto-completion feature displays the fields (items) of the custom type variable.

• 17/03/2014 at 04:54

ok. But on my another PC (Windows 8, MB IDE v1.4 Beta2), I don’t have this problem. No delay when I type in perios “.”. Do you know if there is a way to fix the period “.” delay issue? Thanks a lot for this great tool

• 17/03/2014 at 09:56

In MapBasic IDE 1.4 this feature (user defined type member completion upon pressing dot) was not available, so there is no such problem in 1.4. For the time being there is no way to fix the issue but I will inspect and try to fix it in v1.6.

35. 11/03/2014 at 11:57

Thanks a lot) But:
1) Whenever I type “.” in my mapbasic codes in your tool, it become extreme slow.
2) Every time i type Ctrl+Z:
MapBasic IDE Version: 1.5.0.0
Exception Description: No undo group should be open at this point
StackTrace:
at ICSharpCode.TextEditor.Undo.UndoStack.AssertNoUndoGroupOpen()
at ICSharpCode.TextEditor.Undo.UndoStack.Undo()
at ICSharpCode.TextEditor.TextEditorControl.Undo()
at MapBasicIDE.Gui.FrmMapBasicDocument.Undo()
at MapBasicIDE.Gui.FrmMain.mnuUndoSource_Click(Object sender, EventArgs e)
at System.Windows.Forms.ToolStripItem.RaiseEvent(Object key, EventArgs e)
at System.Windows.Forms.ToolStripItem.HandleClick(EventArgs e)
at System.Windows.Forms.ToolStripItem.FireEventInteractive(EventArgs e, ToolStripItemEventType met)
at System.Windows.Forms.ToolStripItem.FireEvent(EventArgs e, ToolStripItemEventType met)
at System.Windows.Forms.ToolStripManager.ProcessShortcut(Message& m, Keys shortcut)
at System.Windows.Forms.ToolStripManager.ProcessCmdKey(Message& m, Keys keyData)
at System.Windows.Forms.ContainerControl.ProcessCmdKey(Message& msg, Keys keyData)
at System.Windows.Forms.Form.ProcessCmdKey(Message& msg, Keys keyData)
at MapBasicIDE.Gui.FrmMain.ProcessCmdKey(Message& msg, Keys key)
at System.Windows.Forms.Control.ProcessCmdKey(Message& msg, Keys keyData)
at System.Windows.Forms.Control.ProcessCmdKey(Message& msg, Keys keyData)
at System.Windows.Forms.ContainerControl.ProcessCmdKey(Message& msg, Keys keyData)
at System.Windows.Forms.Form.ProcessCmdKey(Message& msg, Keys keyData)
at System.Windows.Forms.Control.ProcessCmdKey(Message& msg, Keys keyData)
at System.Windows.Forms.ContainerControl.ProcessCmdKey(Message& msg, Keys keyData)
at System.Windows.Forms.Control.ProcessCmdKey(Message& msg, Keys keyData)
at System.Windows.Forms.Control.ProcessCmdKey(Message& msg, Keys keyData)
at System.Windows.Forms.Control.ProcessCmdKey(Message& msg, Keys keyData)
at System.Windows.Forms.Control.PreProcessMessage(Message& msg)
at System.Windows.Forms.Control.PreProcessControlMessageInternal(Control target, Message& msg)

36. 11/03/2014 at 22:00

Hi Mustafa, great tool curious to know the best way to report any bugs. I have found a few in version 1.5

thanks Scott

• 12/03/2014 at 10:05

Hi Scott,

You can write your feedbacks right here.

37. 12/03/2014 at 10:46

also, when i type “>” in “” program hangs for a while..

• 12/03/2014 at 11:40

Does it occur every time you type the “>” character?

38. 15/03/2014 at 15:09

Çok başarılı bir çalışma Mustafa Bey, Tebrikler..

• 16/03/2014 at 10:41

Teşekkürler.

39. 18/03/2014 at 16:42

Thanks. You are the best.

40. 27/03/2014 at 08:36

no .. when I type the inequality sign

41. 27/03/2014 at 08:44

Editor dialog is not possible to precisely position elements on the form (I can only move the elements with the mouse), no binding to the grid.

42. 27/03/2014 at 08:58

When i press “Generate Dialog Code” i see a warning about the unique id.. You can do to the id field can be left blank, as it is not always necessary to fill (sorry google translates is bad)

• 29/04/2014 at 10:59

You are right. I have implemented a better dialog designer and removed the warning about the ID uniquness. I will release the v1.6 soon.

43. 27/03/2014 at 08:59

pahan :
When i press “Generate Dialog Code” i see a warning about the unique id.. You can do to the id field can be left blank? As it is not always necessary to fill (sorry google translates is bad)

44. 28/03/2014 at 05:28

about compilation .. it was easier to make that project to compile and run regardless of the tab in which we are (you can automatically determine the tab with the project)..

45. 11/05/2014 at 09:30

When you create “EditText” control in Dialog Designer:

– it ALWAYS create double quotes ” ” around Value 😦

So if you want to put a variable as Value, Generate Dialog Code assumes always that it’s a string value so you have to remove manually double quotes in generated *.MB. Its quite annoying ‘bug’.

It would be much better that we have to put double quotes right into MapBasicEditText properties, so that MapBasicIDE ‘knows’ that we want to create string or leave it as is (variable)

Thanks again. I am using MapBasic IDE every day.

46. 14/05/2014 at 03:45

MapBasic IDE is very good software. But an undo error occured frequently.

Exception Time: 5/14/2014 오전 9:41
MapBasic IDE Version: 1.5.0.0
Exception Description: No undo group should be open at this point
StackTrace:
at ICSharpCode.TextEditor.Undo.UndoStack.AssertNoUndoGroupOpen()
at ICSharpCode.TextEditor.Undo.UndoStack.Undo()
at ICSharpCode.TextEditor.TextEditorControl.Undo()
at MapBasicIDE.Gui.FrmMapBasicDocument.Undo()
at MapBasicIDE.Gui.FrmMain.mnuUndoSource_Click(Object sender, EventArgs e)
at System.Windows.Forms.ToolStripItem.RaiseEvent(Object key, EventArgs e)
at System.Windows.Forms.ToolStripItem.HandleClick(EventArgs e)
at System.Windows.Forms.ToolStripItem.FireEventInteractive(EventArgs e, ToolStripItemEventType met)
at System.Windows.Forms.ToolStripItem.FireEvent(EventArgs e, ToolStripItemEventType met)
at System.Windows.Forms.ToolStripManager.ProcessShortcut(Message& m, Keys shortcut)
at System.Windows.Forms.ToolStripManager.ProcessCmdKey(Message& m, Keys keyData)
at System.Windows.Forms.ContainerControl.ProcessCmdKey(Message& msg, Keys keyData)
at System.Windows.Forms.Form.ProcessCmdKey(Message& msg, Keys keyData)
at MapBasicIDE.Gui.FrmMain.ProcessCmdKey(Message& msg, Keys key)
at System.Windows.Forms.Control.ProcessCmdKey(Message& msg, Keys keyData)
at System.Windows.Forms.Control.ProcessCmdKey(Message& msg, Keys keyData)
at System.Windows.Forms.ContainerControl.ProcessCmdKey(Message& msg, Keys keyData)
at System.Windows.Forms.Form.ProcessCmdKey(Message& msg, Keys keyData)
at System.Windows.Forms.Control.ProcessCmdKey(Message& msg, Keys keyData)
at System.Windows.Forms.ContainerControl.ProcessCmdKey(Message& msg, Keys keyData)
at System.Windows.Forms.Control.ProcessCmdKey(Message& msg, Keys keyData)
at System.Windows.Forms.Control.ProcessCmdKey(Message& msg, Keys keyData)
at System.Windows.Forms.Control.ProcessCmdKey(Message& msg, Keys keyData)
at System.Windows.Forms.Control.PreProcessMessage(Message& msg)
at System.Windows.Forms.Control.PreProcessControlMessageInternal(Control target, Message& msg)

47. 10/07/2014 at 18:01

• 10/07/2014 at 18:13

Actually I want to implement a “project explorer” like Visual Studio solution explorer. But currently I don’t plan a date for it.

• 11/07/2014 at 13:30

Will wait and hope! For a long time I use MBBuilder, better the nothing, but his DialogDesigner has visual troubles in compiled mbx under Win7. Best wishes and good luck to you

• 11/07/2014 at 15:07

Thanks.

48. 26/07/2014 at 18:08

Excellent tool

• 30/07/2014 at 16:15

Thanks.

49. 07/08/2014 at 21:10

“To insert the selected item into your code, press Enter or Tab key.”
Enter doesn’t work. Only Tab key

• 21/08/2014 at 11:08

Both Enter and Tab keys work for me. Can you double-check?

• 22/08/2014 at 22:24

yes it’s work. Possible some eclipse of my mind :-). i’ll try and watch

50. 22/08/2014 at 22:44

Some prroblem with cyrillic fonts. Screenshot https://yadi.sk/i/ts9aSE8HaFnR6
Is it possible to fix? hank you.

• 25/08/2014 at 11:03

Thanks for the feedback. I will try to fix it.

51. 28/08/2014 at 11:45

Hello Mustafa. That is my first answer in this forum. First of alI must thanks for all effort which you invest in MI IDE. It is very nice and useful tool.

My first wish concern to new version of MI. is PB upgraded MI on version 12.5. Help is no more in CHM file but is driven over QT help assistent. Can we expect fix for this problem.

• 28/08/2014 at 13:56

I will look at the issue. Thanks for the info.

52. 29/08/2014 at 18:47

Hi Mustafa,

I have the need to pre-configure MapBasic IDE. Especially the “CurrentMapBasicExePath” in the user.config. Unfortunately it is unpossible to deploy this file to the clients, because the path under %LOCALAPPDATA% seems to contain a random string like “MapBasicIDE.exe_Url_hxp5cj2xxwzpfhlzmw5vcvfytlafg1vu”. Is it possible to change this behaviour, for example to a static path within the userdir or figure out the “random”-part of the path?

Carsten

• 30/08/2014 at 16:13

The long string you mentioned is generated by the .NET framework itself, not by me. Currently I am not aware of a practical solution but I will investigate it.

• 01/09/2014 at 12:04

Thanks for the reply. I found out a simple solution: Ich integrated the settings into the MapBasicIDE.exe.config. 🙂

• 01/09/2014 at 14:08

Yes, this may be a good solution for you. I had forgotten that I deploy the MapBasicIDE.exe.config file along with the setup files. Thanks for sharing.

53. 13/11/2014 at 19:21

Hi Mustafa, curious to know if there might be a new version of the mapbasic ide anytim
e soon ( :

• 14/11/2014 at 18:42

You hit the jackpot 🙂 Yes, I am planning to release v1.6 in one or two weeks.

• 26/11/2014 at 17:28

Wow, look forward to…

54. 19/11/2014 at 02:08

Hi Mustafa,

Thanks for all your hard work on this. There’s two small bugs I’ve hit with the dialog designer:

– It’s currently impossible to set a Calling routine for the dialog itself, but this is possible with MapBasic
– Similarly, it’s impossible to disable a static text control, but again this is allowable in MapBasic

Keep up the great work 🙂

• 19/11/2014 at 07:40

Hi Nyall,

You are right about the dialog calling routine. I already implement this feature in MapBasic IDE 1.6, which I will release soon.
But StaticText control does not have a “Disable” property in MapBasic. We already have to use Alter Control… in the dialog calling routine.
Thanks for the feedback.

55. 21/11/2014 at 21:27

exelente llevo rato con Mb_Coder para desarrollar en MapInfoy se queda muy corto con lo que has hecho aca con este IDE de mi parte todo mi admiracion y desearle muchos exitos gracias por este IDE tan expectacular, exelente trabajo.

56. 29/11/2014 at 14:27

“Open project modules files..” option works only if modules has relative path in project file, like Module=..\..\..\..\folder\module1.MBO.
But if module has absolute path Module=c:\folder\module1.MBO, then module file doesn’t open.

• 29/11/2014 at 20:09

No, problem appears only if unnecessary spaces present in string (possible need to trim strings from prj file):
Module = ..\..\..\..\folder\module1.MBO – wrong
Module=..\..\..\..\folder\module1.MBO – correct

• 02/12/2014 at 15:19

Mapbasic IDE 1.6 Beta 1:
——— Project File —————-
Application=..\..\bin\SuozikIB.mbx
Module=..\..\..\mapbasic\int_gis\common\PrintOutButtons.MBO
Module=..\..\..\MapBasic\MBXCommon\ArrayUtils.MBO
Module=..\..\..\MapBasic\MBXCommon\DialogUtils.MBO
Module=..\..\..\MapBasic\MBXCommon\Frames.MBO
Module=..\..\..\MapBasic\mbxcommon\INIUtils.MBO
Module=..\..\..\MapBasic\mbxcommon\Legend.MBO
Module=..\..\..\MapBasic\MBXCommon\Log.MBO
Module=..\..\..\MapBasic\MBXCommon\ObjCheckUtils.MBO
Module=c:\projects\MapBasic\Int_GIS\common\MainApp.MBO
Module=c:\projects\MapBasic\Int_GIS\common\Points.MBO
Module=c:\projects\MapBasic\Int_GIS\common\PrintOut.MBO
Module=c:\projects\MapBasic\mbxcommon\Dialogs\dlgMultiSelect.MBO
Module=..\..\..\MapBasic\MBXCommon\EGRZ.MBO
Module=..\..\..\MapBasic\MBXCommon\FileUtils.MBO
Module=..\..\..\MapBasic\MBXCommon\MapUtils.MBO
Module=..\..\..\MapBasic\mbxcommon\Math.MBO
Module=..\..\..\MapBasic\mbxcommon\ObjUtils.MBO
Module=..\..\..\MapBasic\MBXCommon\StrUtils.MBO
Module=..\..\..\MapBasic\MBXCommon\TblUtils.MBO
Module=..\..\..\MapBasic\MBXcommon\udf.mbo
Module=dlgScale.MBO
Module=dlgScale_H.MBO
Module=SuozikIB.MBO
Module=..\..\..\mapbasic\mbxcommon\IOUtils.MBO
————————————
Modules with absolete path doesn’t open

57. 29/11/2014 at 19:49

Problem with buttons on the form on Windows 7
http://itmages.ru/image/view/2080039/67982b7a

58. 01/12/2014 at 22:57

> But StaticText control does not have a “Disable” property in MapBasic. We already have to use Alter Control… in the dialog calling routine.

It might not be listed in the docs, but it’s definitely supported. Try running this code:

Dialog

Control StaticText
Title “test”
Disable

Control OkButton

• 02/12/2014 at 10:37

Hi Nyall,

I have just tried it and you are certainly right! I was unaware of this undocumented feature. I will definitely integrate it into MapBasic IDE.

Thanks for the feedback.

59. 02/12/2014 at 15:23

In all Open File dialogs start folder set to MyDocuments. I think that it’s not good. May be better use last opened folder? or make setting like “use last folder in Open File dialogs”

60. 02/12/2014 at 15:41

“Project” -> “Compile All” needed so much 🙂

• 11/01/2015 at 16:12

You are certainly right, Yuriy. I plan to implement this feature. I hope wee all see it in MapBasic IDE in 2015 😉

61. 10/01/2015 at 04:30

Hi Mustafa,
I can’t imagine how much hardwork must go into putting this together. I only code in mapbasic about once a year for a month straight. and each time i do i go straight back to your website to download your latest IDE.

Thanks for the continual updates and improvements.

• 11/01/2015 at 16:10

Nice to see that MapBasic developers like and use MapBasic IDE. Thanks.

62. 13/01/2015 at 13:10

Hi,

Is there any reason why the size and position values in the dialog editor properties do not match the values used in the generated MapBasic code?

I noticed this when I was trying to recreate an existing dialog in the dialog editor, which involved setting the property values by hand rather than relying on the mouse to place the controls on the form.

• 13/01/2015 at 18:22

From MapBasic User Guide: (from chapter Creating the User Interface)
“Positions and sizes are stated in terms of dialog box units, where each dialog box unit represents one quarter of a character’s width or one eighth of a character’s height.”

.NET control positions and sizes, on the other hand, are specified in terms of pixels.

63. 02/02/2015 at 19:21

• 03/02/2015 at 16:07

Thanks.

64. 12/03/2015 at 11:09

Hi Mustafa, great program, thanks for making this. I’ve noticed something which may be me (a user error) or might be intentional.
If I open a project file, and place it to the right hand side of the screen, the ‘Project, Link’ menu option is greyed out. However if it’s left as a main window, or put in any other position from the central window selection, the option is available.
Is there a difference between a main window, and pushing a window to the side?
Thanks
Jon Robinson

• 12/03/2015 at 18:32

Yes you are right. It is not intentional, just a small bug. When a document is in the “floating” mode the associated event (something like ActiveChildChanged) does not raise, hence the result. I will try to fix it. Thanks for the feedback.

65. 01/04/2015 at 08:34

Hi Mustafa
Thanks great prog
Small question
Focus on e.g. Fetch and press F1 and get error no help.
It may be me
Not a big isue as i have Mapbasic help open all the time i work in MapInfo.
It feels like it cannot find the help file.
Have MapBasic installed here “C:\Program Files (x86)\MapInfo\MapBasic”
MapBasic 12.5 64 bit
Again thanks for this prog

Sunnie

• 01/04/2015 at 10:16

You are right. Current MapBasic IDE version does not support the new MapBasic help format. MapBasic v1.7 will support it.

66. 14/07/2015 at 19:54

Hi Mustafa,

I get errors every time using Undo.
MapBasic IDE Version: 1.6.0.0
Exception Description: No undo group should be open at this point

I’d like to see the ability to customise toolbar commands, so I can add in the ones I use most, like bookmarks. Or just add some of the frequently used buttons to another toolbar.

Great program. Thank you.

• 15/07/2015 at 12:47

I have worked for the undo issue and hope it will be fixed in v1.7. Customizing toolbar commands would be great but I do not have time for those secondary features. But adding commands like bookmarks to the toolbar in v1.7 can be a workaround. Thanks for the feedback.

67. 01/12/2015 at 13:42

Hi Mustafa,

When clicking in “Build Project” I got “an unexpeted error ocurred. Mapbasic IDE has tried to save your open documents.”
See below error log:

Exception Time: 12/1/2015 09:22
MapBasicIDE Version: 1.7.0.1
Exception Description: Value cannot be null.
Parameter name: path
StackTrace:
at MapBasic.RecursiveIncludeParser.get_IncludeFilePaths()
at MapBasic.RecursiveIncludeParser.d__0.MoveNext()
at MapBasic.RecursiveIncludeParser.d__0.MoveNext()
at MapBasic.Project.CompileAllModules()
at MapBasicIDE.Gui.FrmMain.BuildProject()
at MapBasicIDE.Gui.FrmMain.mnuBuild_Click(Object sender, EventArgs e)
at System.Windows.Forms.ToolStripItem.RaiseEvent(Object key, EventArgs e)
at System.Windows.Forms.ToolStripItem.HandleClick(EventArgs e)
at System.Windows.Forms.ToolStripItem.HandleMouseUp(MouseEventArgs e)
at System.Windows.Forms.ToolStripItem.FireEventInteractive(EventArgs e, ToolStripItemEventType met)
at System.Windows.Forms.ToolStripItem.FireEvent(EventArgs e, ToolStripItemEventType met)
at System.Windows.Forms.ToolStrip.OnMouseUp(MouseEventArgs mea)
at System.Windows.Forms.ToolStripDropDown.OnMouseUp(MouseEventArgs mea)
at System.Windows.Forms.Control.WmMouseUp(Message& m, MouseButtons button, Int32 clicks)
at System.Windows.Forms.Control.WndProc(Message& m)
at System.Windows.Forms.ScrollableControl.WndProc(Message& m)
at System.Windows.Forms.ToolStrip.WndProc(Message& m)
at System.Windows.Forms.ToolStripDropDown.WndProc(Message& m)
at System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m)
at System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m)
at System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)

——————————-

• 01/12/2015 at 15:23

Hi Jose,

I will inspect it at home and give feedback. Thanks.

• 07/01/2016 at 11:30

I looked at this but unfortunately could not reproduce the issue. Can you give more details?

• 13/01/2016 at 15:50

If you open a project and click “Build Project” or F6 then the unexpect error occurs.
To build a project I must first “Clean Project” and then “Build Project”

• 15/01/2016 at 11:45

Hi Jose,
Can you specify the stack trace of the error using the MapBasic IDE log? Thanks.

• 15/01/2016 at 14:27

Exception Time: 1/15/2016 10:24
MapBasicIDE Version: 1.7.0.1
Exception Description: Value cannot be null.
Parameter name: path
StackTrace:
at MapBasic.RecursiveIncludeParser.get_IncludeFilePaths()
at MapBasic.RecursiveIncludeParser.d__0.MoveNext()
at MapBasic.RecursiveIncludeParser.d__0.MoveNext()
at MapBasic.RecursiveIncludeParser.d__0.MoveNext()
at MapBasic.Project.CompileAllModules()
at MapBasicIDE.Gui.FrmMain.BuildProject()
at MapBasicIDE.Gui.FrmMain.mnuBuild_Click(Object sender, EventArgs e)
at System.Windows.Forms.ToolStripItem.RaiseEvent(Object key, EventArgs e)
at System.Windows.Forms.ToolStripItem.HandleClick(EventArgs e)
at System.Windows.Forms.ToolStripItem.HandleMouseUp(MouseEventArgs e)
at System.Windows.Forms.ToolStripItem.FireEventInteractive(EventArgs e, ToolStripItemEventType met)
at System.Windows.Forms.ToolStripItem.FireEvent(EventArgs e, ToolStripItemEventType met)
at System.Windows.Forms.ToolStrip.OnMouseUp(MouseEventArgs mea)
at System.Windows.Forms.ToolStripDropDown.OnMouseUp(MouseEventArgs mea)
at System.Windows.Forms.Control.WmMouseUp(Message& m, MouseButtons button, Int32 clicks)
at System.Windows.Forms.Control.WndProc(Message& m)
at System.Windows.Forms.ScrollableControl.WndProc(Message& m)
at System.Windows.Forms.ToolStrip.WndProc(Message& m)
at System.Windows.Forms.ToolStripDropDown.WndProc(Message& m)
at System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m)
at System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m)
at System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)

68. 05/01/2016 at 09:40

Hi, Mustafa!

First, excuse me for my English, it’s not my native language.
I’m just starting to familiarize with MapBasic IDE, but I already like it. Great job! I hope my feedback will help you to perfect your program further. I’m running MapBasic IDE 1.7 Beta1 on Windows 7 x64.

Issues:
Context sensitive help and “Search MapBasic help” features does not work as intended with MapBasic 8.0. Hlp-file opens but jump to requested topic doesn’t happen. I tried running command “winhlp32.exe -kLeft\$ MAPBASIC.HLP” in cmd and it works fine.
“Goto sub/function implementation” and “Goto sub/function” makes me wait too long when I use it on big mb-file (~12000 lines) with about 1000 of subroutines (my library of general use subroutines). I suggest some optimization and/or maintaining database of subroutines. Such database might be updated on demand if maintaining it automatically will be too slow. Text search works fast enough so you can store only subroutine names in database.

Note:
Revert menu command reverts file to last saved state including auto-saved. I don’t see any sense to rollback to auto-saved state. Auto-save happens often and the result of such revert is hardly predictable. Revert to last manually saved state might be useful.

Feature requests:
“Restore last open project on IDE start” option.
“Search from start” option in “Find and replace” dialog.
“Match whole word/phrase” option in “Find and replace” dialog.
“Indent size” option (4 symbols is too much, I prefer 2).
“Hide line numbers” option.

P.S.
Currently I’m using Multi-Edit 8 as code editor for MapBasic and I like it very much. It’s very customizable and configuration process is easy and convenient. And also ME8 is very fast (1999 year of production, he-he). I like it’s tags system which I use for instant access to any subroutine implementation or declaration (I use explicit tags for that). Templates system is also extremely handy. For convenient compilation, build, run and all other project management functions i wrote my own project manager on Delphi 7, so I do not need to mess with mbp-file contents any more. E-mail me if you need any details.

Good luck to you in your job!

• 07/01/2016 at 11:39

MapBasic IDE currently does not support searching through the old *.hlp files but I will try to support it in the next version.
I am aware the performance issues and will fix them.
You are certainly right about the revert issue. I will try to improve it.
I am going to add your feature requests to my TODO list.
Note: You can already set the indent size from the Preferences dialog.
Thanks for the useful feedback.

• 11/01/2016 at 06:56

Sorry, I missed “Tab width” option in Preferences.
I have another thought. “Add/Remove MapBasic Installation Path” dialog is obsolete in my opinion. I would replace “Edit…” button with “Add…” and “Remove…” buttons in “MapBasic.exe Path” dialog. Or even managed without a dialog, just with popup menu. What to use, menu or dialog is up to you, but the necessity to press “+” button after browsing for mapbasic.exe does not feel right. After browsing for exe, path must be already in the list without any additional steps.
Also it would be nice to be able to switch mapbasic help-file version separately from compiler version. Of course all that I mentioned here is not essential, but I hope it will be useful in the future.

• 15/01/2016 at 11:39

Hi Dima,
These are secondary but useful feature suggestions. I will consider to implement these later. Thanks.

• 11/01/2016 at 09:00

I’m testing dialog designer.
Checking/unchecking “Show grid” option in Preferences does not affect grid in open dlg-file. It applies only after reopening dlg-file.
“Align centers” and “Align middles” tools are confused (must be swapped).
“Remove vertical/horizontal spacing” tools does not take into account which control among selected is primary and must stay in place (“Increase/decrease spacing” tools works correctly).
Let us assume that editor and dialog designer windows are shown side by side (it’s really convenient). IDE does not notice transition of focus from editor to designer and vice versa if right or middle mouse button was used for that (left mouse button works OK).
Also I do not like that Properties window is cleared when dialog designer looses focus. It gets in the way if I need to copy variable or sub name from editor to Properties window.
By the way it would be really useful to transfer some control properties to mapbasic code “as is” (without adding double quotes). So it could be possible to use variable name or any other expression as property value.
Another bug: “Dialog”/”Generate code…” menu command appended its code to my existing mb-file (because I gave same name to dlg-file :). Mb-file was overwritten without confirmation which isn’t bad, but all Russian (Cyrillic) characters in existing code turned to “?” signs. Russian titles in generated dialog preserved (remained Russian). Undo and revert didn’t help to restore my mb-file so I had to use a backup copy. Maybe IDE should create backup copy of source file on open and then update it on each manual save? And Revert would rollback to this copy.

That’s all for now. Continue your great job!

• 15/01/2016 at 11:43

The “Show grid” option issue is by design but certainly it will be better to apply the change immediately.
I do not have MapBasic IDE right now so I will inspect the other feedback and give my evaluations later. I really need such detailed feedback. Thanks for your time.

69. 06/01/2016 at 19:58

Hi Mustafa, Thanks for all your hard work on this – it really is a great tool. I have tried 1.7 beta 1 and one thing I have noticed is that when you click on a line in the error list is no longer goes to that line in the code – have you noticed that or is it something to do with my setup?
Thanks

70. 07/01/2016 at 05:00

Hi Mustafa,
I get an Application Error when using auto completion. for example, write sel then press ctrl + space, write dot (.) in type variable.

—————————-

Exception Time: 1/6/2016 4:56 PM
MapBasicIDE Version: 1.7.0.1
Exception Description: Illegal characters in path.
StackTrace:
at System.IO.Path.Combine(String path1, String path2)
at MapBasic.IncludeStatementParser.GetAbsolutePath()
at MapBasic.RecursiveIncludeParser.get_IncludeFilePaths()
at MapBasic.RecursiveIncludeParser.d__0.MoveNext()
at MapBasic.Project.CompileAllModules()
at MapBasicIDE.Gui.FrmMain.BuildProject()
at MapBasicIDE.Gui.FrmMain.mnuBuild_Click(Object sender, EventArgs e)
at System.Windows.Forms.ToolStripItem.RaiseEvent(Object key, EventArgs e)
at System.Windows.Forms.ToolStripButton.OnClick(EventArgs e)
at System.Windows.Forms.ToolStripItem.HandleClick(EventArgs e)
at System.Windows.Forms.ToolStripItem.HandleMouseUp(MouseEventArgs e)
at System.Windows.Forms.ToolStripItem.FireEventInteractive(EventArgs e, ToolStripItemEventType met)
at System.Windows.Forms.ToolStripItem.FireEvent(EventArgs e, ToolStripItemEventType met)
at System.Windows.Forms.ToolStrip.OnMouseUp(MouseEventArgs mea)
at System.Windows.Forms.Control.WmMouseUp(Message& m, MouseButtons button, Int32 clicks)
at System.Windows.Forms.Control.WndProc(Message& m)
at System.Windows.Forms.ScrollableControl.WndProc(Message& m)
at System.Windows.Forms.ToolStrip.WndProc(Message& m)
at System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m)
at System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m)
at System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)
——————————————

• 07/01/2016 at 11:45

I will inspect the issue. Thanks.

71. 14/01/2016 at 21:15

Hi Mustafa
I noticed that when I drag an MB or MBP file from explorer into the IDE application window I keep getting a critical error from MapBasic IDE of ‘File not found. It may have been moved or deleted’. Have to hit OK a few times to dismiss multiple errors. I don’t recall seeing this error in 1.6 version

• 15/01/2016 at 11:46

Hi Bill,
I do not have MapBasic IDE right now so I will inspect the issue and give my comment later. Thanks.

• 05/03/2016 at 09:58

Sorry for the late reply. I think this issue is related with the one you entered in 04/March/2016. (Have a look at my comment below.) Since I have fixed the one below, this one should be fixed in the next version too. Thanks.

72. 26/02/2016 at 09:29

Hi Mustafa
Thanks for new features in version 1.7. I would like to mention, that item discussed by NMItools (11.05.2014) is still active and is very painfull, especialy on big Dialog forms. Sufficiantly sollution will be to leave Vaule enty intact.
Thanks.

• 02/03/2016 at 11:49

Yes you are right. I think I missed that comment. I will fix it in the next version. Thanks.

73. 02/03/2016 at 11:17

Do you accept donations? Because it is a great product.

• 02/03/2016 at 11:46

Thanks Uffe but I don’t.

74. 04/03/2016 at 21:22

I had an incorrectly formatted string in my MB code when I went to save and compile and it crashed the MapBasic IDE. I then tried to open the same source file to correct it and it threw a critical exception about the invalid string and crashed again.
iCols = tableinfo(testfile”, TAB_INFO_NCOLS)
*** notice the quote after table alias
I had to open it with MapBasic.exe and correct the source in able to continue using this code with MapBasic IDE.
I still like using this editor though. Lot easier than original MapBasic editor. Thx. -Bill

• 05/03/2016 at 07:36

Hi Bill,

This is an interesting one! I have just fixed it and the fix will be available in the next version.

The problem was that the .err file was somehow wrapped at the end of the second line and thus the third line became an invalid error line, hence the runtime error. But as you specified, there is no such problem with MapBasic itself.

Thanks for reporting.

75. 09/03/2016 at 16:30

Hi Mustafa

This new version is even better than the last … thank you!

I notice than whenever I type a full stop “.”, even within a comment, the interface hangs for a few seconds. Is it doing anything or is this a bug?

Thanks
Andy

• 09/03/2016 at 18:07

Hi Andy,

This is a known issue actually and I don’t know the exact reason at the moment. I will try to fix it in the next version. Thanks for the feedback.

• 15/06/2016 at 21:26

I’ve had the same issue as well. For now I am just copying and pasting the “.” whenever I need it. This doesn’t make the IDE hang

• 17/06/2016 at 20:16

Good workaround. Thanks.

76. 12/06/2016 at 00:40

Hi Mustafa

Just had a look at the latest MapBasic documentation from Pitney Bowes. There is some info about the new ribbon interface. Do you have any support for this yet? Thanks by the way for creating a great interface.

• 12/06/2016 at 12:08

Hi Joe,

No, but that would be a good improvement. I will consider to implement it. Thanks.

77. 13/06/2016 at 14:39

just want to offer you to integrate the compiler MBX files to your IDE

• 13/06/2016 at 15:39

sorry . “decompiler”

• 17/06/2016 at 20:15

That would be nice for debugger support especially but since MBX is not an open format, that will be illegal I think.

78. 02/07/2016 at 22:02

I hope you are able to include a Ribbon Interface builder at some point. Creating a Ribbon Interface has really been a huge pain in the butt for me…

Thanks for all your work on this IDE though! It really is very handy! Especially since it has the Dialog creator!

• 26/07/2016 at 12:34

After finishing the major features (e.g. full search & replace) I will try to implement it in the next versions. Thanks.

79. 25/07/2016 at 13:39

HI Mustafa,

Just had an error while using the MB IDE:
Exception Time: 25/07/2016 10:48
MapBasicIDE Version: 1.7.0.1
Exception Description: Could not find file ‘C:\Users\jwa\Desktop\Risk Priority\Libraries\mbLibrary-master\Enums.def’.
StackTrace:
at System.IO.__Error.WinIOError(Int32 errorCode, String maybeFullPath)
at System.IO.FileStream.Init(String path, FileMode mode, FileAccess access, Int32 rights, Boolean useRights, FileShare share, Int32 bufferSize, FileOptions options, SECURITY_ATTRIBUTES secAttrs, String msgPath, Boolean bFromProxy, Boolean useLongPath, Boolean checkHost)
at System.IO.FileStream..ctor(String path, FileMode mode, FileAccess access, FileShare share, Int32 bufferSize, FileOptions options, String msgPath, Boolean bFromProxy, Boolean useLongPath, Boolean checkHost)
at System.IO.StreamReader..ctor(String path, Encoding encoding, Boolean detectEncodingFromByteOrderMarks, Int32 bufferSize, Boolean checkHost)
at MapBasic.RecursiveIncludeParser.get_IncludeFilePaths()
at MapBasic.RecursiveIncludeParser.d__0.MoveNext()
at MapBasic.RecursiveIncludeParser.d__0.MoveNext()
at MapBasic.Project.CompileAllModules()
at MapBasicIDE.Gui.FrmMain.BuildProject()
at MapBasicIDE.Gui.FrmMain.mnuBuild_Click(Object sender, EventArgs e)
at System.Windows.Forms.ToolStripItem.RaiseEvent(Object key, EventArgs e)
at System.Windows.Forms.ToolStripButton.OnClick(EventArgs e)
at System.Windows.Forms.ToolStripItem.HandleClick(EventArgs e)
at System.Windows.Forms.ToolStripItem.HandleMouseUp(MouseEventArgs e)
at System.Windows.Forms.ToolStripItem.FireEventInteractive(EventArgs e, ToolStripItemEventType met)
at System.Windows.Forms.ToolStripItem.FireEvent(EventArgs e, ToolStripItemEventType met)
at System.Windows.Forms.ToolStrip.OnMouseUp(MouseEventArgs mea)
at System.Windows.Forms.Control.WmMouseUp(Message& m, MouseButtons button, Int32 clicks)
at System.Windows.Forms.Control.WndProc(Message& m)
at System.Windows.Forms.ScrollableControl.WndProc(Message& m)
at System.Windows.Forms.ToolStrip.WndProc(Message& m)
at System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m)
at System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m)
at System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)

——————————-

Exception Time: 25/07/2016 10:50
MapBasicIDE Version: 1.7.0.1
Exception Description: Could not find file ‘C:\Users\jwa\Desktop\Risk Priority\Libraries\mbLibrary-master\Enums.def’.
StackTrace:
at System.IO.__Error.WinIOError(Int32 errorCode, String maybeFullPath)
at System.IO.FileStream.Init(String path, FileMode mode, FileAccess access, Int32 rights, Boolean useRights, FileShare share, Int32 bufferSize, FileOptions options, SECURITY_ATTRIBUTES secAttrs, String msgPath, Boolean bFromProxy, Boolean useLongPath, Boolean checkHost)
at System.IO.FileStream..ctor(String path, FileMode mode, FileAccess access, FileShare share, Int32 bufferSize, FileOptions options, String msgPath, Boolean bFromProxy, Boolean useLongPath, Boolean checkHost)
at System.IO.StreamReader..ctor(String path, Encoding encoding, Boolean detectEncodingFromByteOrderMarks, Int32 bufferSize, Boolean checkHost)
at MapBasic.RecursiveIncludeParser.get_IncludeFilePaths()
at MapBasic.RecursiveIncludeParser.d__0.MoveNext()
at MapBasic.RecursiveIncludeParser.d__0.MoveNext()
at MapBasic.Project.CompileAllModules()
at MapBasicIDE.Gui.FrmMain.BuildProject()
at MapBasicIDE.Gui.FrmMain.mnuBuild_Click(Object sender, EventArgs e)
at System.Windows.Forms.ToolStripItem.RaiseEvent(Object key, EventArgs e)
at System.Windows.Forms.ToolStripButton.OnClick(EventArgs e)
at System.Windows.Forms.ToolStripItem.HandleClick(EventArgs e)
at System.Windows.Forms.ToolStripItem.HandleMouseUp(MouseEventArgs e)
at System.Windows.Forms.ToolStripItem.FireEventInteractive(EventArgs e, ToolStripItemEventType met)
at System.Windows.Forms.ToolStripItem.FireEvent(EventArgs e, ToolStripItemEventType met)
at System.Windows.Forms.ToolStrip.OnMouseUp(MouseEventArgs mea)
at System.Windows.Forms.Control.WmMouseUp(Message& m, MouseButtons button, Int32 clicks)
at System.Windows.Forms.Control.WndProc(Message& m)
at System.Windows.Forms.ScrollableControl.WndProc(Message& m)
at System.Windows.Forms.ToolStrip.WndProc(Message& m)
at System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m)
at System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m)
at System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)

——————————-

Exception Time: 25/07/2016 10:51
MapBasicIDE Version: 1.7.0.1
Exception Description: Could not find file ‘C:\Users\jwa\Desktop\Risk Priority\Libraries\mbLibrary-master\IMapInfoPro.def’.
StackTrace:
at System.IO.__Error.WinIOError(Int32 errorCode, String maybeFullPath)
at System.IO.FileStream.Init(String path, FileMode mode, FileAccess access, Int32 rights, Boolean useRights, FileShare share, Int32 bufferSize, FileOptions options, SECURITY_ATTRIBUTES secAttrs, String msgPath, Boolean bFromProxy, Boolean useLongPath, Boolean checkHost)
at System.IO.FileStream..ctor(String path, FileMode mode, FileAccess access, FileShare share, Int32 bufferSize, FileOptions options, String msgPath, Boolean bFromProxy, Boolean useLongPath, Boolean checkHost)
at System.IO.StreamReader..ctor(String path, Encoding encoding, Boolean detectEncodingFromByteOrderMarks, Int32 bufferSize, Boolean checkHost)
at MapBasic.RecursiveIncludeParser.get_IncludeFilePaths()
at MapBasic.RecursiveIncludeParser.d__0.MoveNext()
at MapBasic.RecursiveIncludeParser.d__0.MoveNext()
at MapBasic.Project.CompileAllModules()
at MapBasicIDE.Gui.FrmMain.BuildProject()
at MapBasicIDE.Gui.FrmMain.mnuBuild_Click(Object sender, EventArgs e)
at System.Windows.Forms.ToolStripItem.RaiseEvent(Object key, EventArgs e)
at System.Windows.Forms.ToolStripButton.OnClick(EventArgs e)
at System.Windows.Forms.ToolStripItem.HandleClick(EventArgs e)
at System.Windows.Forms.ToolStripItem.HandleMouseUp(MouseEventArgs e)
at System.Windows.Forms.ToolStripItem.FireEventInteractive(EventArgs e, ToolStripItemEventType met)
at System.Windows.Forms.ToolStripItem.FireEvent(EventArgs e, ToolStripItemEventType met)
at System.Windows.Forms.ToolStrip.OnMouseUp(MouseEventArgs mea)
at System.Windows.Forms.Control.WmMouseUp(Message& m, MouseButtons button, Int32 clicks)
at System.Windows.Forms.Control.WndProc(Message& m)
at System.Windows.Forms.ScrollableControl.WndProc(Message& m)
at System.Windows.Forms.ToolStrip.WndProc(Message& m)
at System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m)
at System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m)
at System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)

——————————-

Exception Time: 25/07/2016 11:33
MapBasicIDE Version: 1.7.0.1
Exception Description: Cannot access a disposed object.
Object name: ‘TextBox’.
StackTrace:
at System.Windows.Forms.Control.CreateHandle()
at System.Windows.Forms.TextBoxBase.CreateHandle()
at System.Windows.Forms.TextBoxBase.SetSelectedTextInternal(String text, Boolean clearUndo)
at System.Windows.Forms.TextBoxBase.set_SelectedText(String value)
at System.Windows.Forms.TextBoxBase.AppendText(String text)
at MapBasicIDE.Gui.FrmBuildOutput.WriteLine(String text)
at MapBasicIDE.Gui.FrmMain.CleanProject()
at MapBasicIDE.Gui.FrmMain.mnuRebuildProject_Click(Object sender, EventArgs e)
at System.Windows.Forms.ToolStripItem.RaiseEvent(Object key, EventArgs e)
at System.Windows.Forms.ToolStripItem.HandleClick(EventArgs e)
at System.Windows.Forms.ToolStripItem.HandleMouseUp(MouseEventArgs e)
at System.Windows.Forms.ToolStripItem.FireEventInteractive(EventArgs e, ToolStripItemEventType met)
at System.Windows.Forms.ToolStripItem.FireEvent(EventArgs e, ToolStripItemEventType met)
at System.Windows.Forms.ToolStrip.OnMouseUp(MouseEventArgs mea)
at System.Windows.Forms.ToolStripDropDown.OnMouseUp(MouseEventArgs mea)
at System.Windows.Forms.Control.WmMouseUp(Message& m, MouseButtons button, Int32 clicks)
at System.Windows.Forms.Control.WndProc(Message& m)
at System.Windows.Forms.ScrollableControl.WndProc(Message& m)
at System.Windows.Forms.ToolStrip.WndProc(Message& m)
at System.Windows.Forms.ToolStripDropDown.WndProc(Message& m)
at System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m)
at System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m)
at System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)

——————————-

The error occurred while trying to rebuild a project. This project: https://groups.google.com/forum/#!topic/mapinfo-l/-OuIzY7tnzU

• 26/07/2016 at 12:32

I will inspect the issue. Thanks.

80. 27/07/2016 at 14:41

Hi Mustafa,

I have created a very large MBFile (355kb). It seems that whenever I type ” ‘. ” in the IDE it instantly crashes… No error logs or anything. It literally just freezes. Any ideas?

Thanks,

81. 29/09/2016 at 14:08

Hi Mustafa,

just a suggestion for a feature I’m sure (or at least I hope) people would find useful. Often when going through other people’s code I’ll find that the indentation, for example with ‘If Then … End If’ statements hasn’t been done correctly, which makes the code hard to read and maintain. If the code between the ‘If Then’ and ‘End If’ is very long, it’s very hard to go over and try to resolve the indentation issues. I thought it would be useful if there was a way to highlight lines of code, then collapse them temporarily (like how you can currently collapse the code between ‘Sub’ ‘End Sub’ (the terminology you use is Fold/Unfold)). That way one could reduce the known If – End If blocks in to 2 lines, so that gradually you could have everything on the same page, which I think would make it easier to visually inspect the indentation of each block.

I hope the above is clear, if you think this is a good idea and would like to discuss further please feel free to contact me. Oh and generally MapBasic IDE is very good, I don’t understand why Pitney Bowes don’t promote it as an official IDE, the MapBasic editor itself is absolutely useless! Your program makes developing in MapBasic a lot easier.

Kind regards from London,

Alex

• 15/03/2017 at 15:05

Hi Alex and sorry for the (very) late reply.

You are right with what you mentioned. I think you mean collapsing and expanding the if/else blocks. Some IDEs does support this feature. I will investigate it. Thanks.

82. 15/03/2017 at 08:22

Mustafa I’m not sure if this is a known fault but I can’t browse to mapped network drives to open files or projects. Windows 10 Pro.

• 15/03/2017 at 15:00

I never use MapBasic IDE with Windows 10. What is the problem? What do you mean by saying “I can’t browse to mapped network drives”?

1. 22/02/2012 at 12:49
2. 28/02/2012 at 17:08
3. 25/04/2012 at 10:34
4. 05/10/2012 at 10:03