After a lot of work, here is the first public beta for the next PureBasic version!
It is of course not as big as the 4.00 update, but still quite impressive.
Note that some changes were made to the way the IDE and compiler operate
(tempfiles, preferences etc) to be fully compatible with Windows Vista,
which could affect some code and tools, so please read the changes list
carefully.
Its available for download on your user account, get it while its hot!

Here is the list of changes:
Code: Select all
Vista compatibility:
--------------------
- The PureBasic package is fully compatible with UAC
- All tools except the setup and SmartUpdate work also for limited users
- Vista is added to OSVersion()
Note: The Sprite&Screen packages still work with DX7, which means that it is a bit slow
on Vista and OpenWindowedScreen() will disable the glass skin. The work to update all this
to DX9 is in progress, but it will not be finished for 4.10.
This will be done in the 4.20 release.
Libraries:
----------
- lots of bugs fixed (see the bugs forum for more info)
- added TruncateFile() for file lib
- added #PB_OS_Windows_Vista and #PB_OS_Windows_Server_2008 for OSVersion()
- changed the module replayer with 'ModPlug' so it can be used in any applications
- added brand new XML library
- added brand new Drag & Drop library
- added scintilla library (dll version):
InitScintilla(DllFile$) - load the scintilla dll
ScintillaGadget(#Gadget, x, y, Width, Height, Flags, Callback)
ScintillaSendMessage(#Gadget, Message, Param1, Param2)
Callback format:
Procedure ScintillaCallBack(EditorWindow.l, EditorGadget.l, *scinotify.SCNotification, lParam.l)
EndProcedure
- added: Lots of new Stuff for the WebGadget
SetGadgetItemText(#Web, #PB_Web_HtmlCode, Code$) - stream new code into the gadget
GetGadgetItemText(#Web, #PB_Web_HtmlCode) - get all code inside the gadget
GetGadgetItemText(#Web, #PB_Web_PageTitle) - get title string for the currently displayed page
GetGadgetItemText(#Web, #PB_Web_StatusMessage) - get the current message for the browser statusbar
GetGadgetItemText(#Web, #PB_Web_SelectedText) - get all currently selected text
New EventType() values for the WebGadget
#PB_EventType_TitleChange ; page title changed
#PB_EventType_StatusChange ; statusbar message changed
#PB_EventType_PopupWindow ; a popup was blocked (only if popups are blocked)
#PB_EventType_DownloadStart ; loading a page started
#PB_EventType_DownloadProgress ; loading progress changed (see Progress, ProgressMax below)
#PB_EventType_DownloadEnd ; loading finished (or aborted)
#PB_EventType_PopupMenu ; the popup menu is requested (only if the IE menu is blocked)
For Get/SetGadgetAttribute():
#PB_Web_BlockPopups ; block popup windows
#PB_Web_BlockPopupMenu ; block IE menu (the above event is fired to allow a custom menu)
#PB_Web_NavigationCallback ; set a callback to trace (and prevent) navigation (See example)
#PB_Web_Progress ; at a DownloadProgress event, get the downloaded data (readonly) may be 0 if unknown
#PB_Web_ProgressMax ; at a DownloadProgress event, get the total size (readonly) may be 0 if unknown
#PB_Web_Busy ; check if the Gadget is busy loading/rendering (readonly)
#PB_Web_ScrollX ; get/set the X scroll position
#PB_Web_ScrollY ; get/set the Y scroll position
IDE changes:
------------
Important changes:
- For Vista compatibility nothing is written in the PureBasic dir anymore
- The temporary exe is placed in the Windows temp dir
- The Preferences location was moved to %App Data%\PureBasic\ for all preferences
NOTE: This cann still be changed with the /P, /A, /T commandline switches to specify different
locations for the preferences files.
- New commandline switch /PORTABLE which puts all preferences in the PureBasic dir (as before),
and disables the creation of the .pb extension for USB sticks and such.
Compiler Options:
- added new tab with settings for Compile/Run:
- the debugger type can be chosen for an individual program
- the current directory for executing the program can be chosen
- the temporary exe can be created in the source directory
- external tools can be enabled on a per-program basis (if the option is enabled in the tools config)
- added tab for compiler constants:
- special editor constants for build counting
- custom constants can be defined, even by using environment variables
- improved "Run" command by keeping all compiled sources ready
- added ADMIN and USER mode for Vista (to request admin priviledges or disable virtualisation)
- new pipe based IDE->Compiler communication. (documented in the Library SDK)
Coloring:
- improved color management: (individual color settings can be disabled)
- new colors to hilight matching/mismatching braces
- optional color for procedure backgrounds
- New color for "custom keywords" to color Preprocessor/Macro packages
AutoComplete:
- The shortcut to insert a word can now be customized (Shortcut options)
NOTE: The default is now TAB, so if you are used to the ENTER key, just change it back
- various improvements of the autocomplete handling
Misc:
- The font & color for the Toolspanel can be disabled
- A custom font for the Debug Output window can be specified
(the other stuff is not documented yet)
Here are some examples:
Drag & Drop:
- draging to other applications: http://freak.purearea.net/v4/draglib2.pb
- receiving from other applications: http://freak.purearea.net/v4/DragLib3.pb
- private drag & drop within the application: http://freak.purearea.net/v4/DragLib4.pb
WebGadget:
http://freak.purearea.net/v4/webtest.pb
Thanks a lot to all the alpha testers.
Give this version a lot of testing, and have fun with it...
The PureBasic Team
