Nexus -library of custom gadgets (32-bit / 64-bit)

Developed or developing a new product in PureBasic? Tell the world about it.
srod
PureBasic Expert
PureBasic Expert
Posts: 10589
Joined: Wed Oct 29, 2003 4:35 pm
Location: Beyond the pale...

Nexus -library of custom gadgets (32-bit / 64-bit)

Post by srod »

17th September 2010

A new version of Nexus has been uploaded, one which compiles and runs under both 32-bit and 64-bit versions of Purebasic.

Quite a few bugs have also been fixed and the property-box control has been upgraded somewhat with some code added by Peyman.

Regards.

=============================


28th July 2009 - nxPropertyBox controls.

This update fixes quite a number of bugs with the nxPropertyBox control following my work upon the Pyrex report designer. I can finally say that the damn thing is now working like a property box control should! :wink:

The main problems were related to the notifications sent by the control to the developer's callback as the user altered properties etc.

Regards.

=============================


nxPropertyBox and nxSplitter controls.
These controls have both undergone a quite major update (Purebasic 4.3 version). In the case of the nxPropertyBox control, the alterations will break all existing code (my apologies), though any modifications required by applications will be very straight forward.

nxPropertyBox.
It is now possible to add items which do not belong to any 'group'. To do this the nx_AddGadgetItem() function has been changed for this control.

The 'imageID' parameter now points to the new item's nxPropertyBox_Item structure (not the 'flags' parameter) whilst the 'flags' parameter is to hold a non-zero value if the new item is to belong to the 'current' group (if there is one). See the demo programs for examples of how to employ these alterations.

Note that I have not automatically indented 'child' items for various reasons; not the least of which is the fact that some property boxes might allow the labels to be edited etc. and this would then require a quite major update to EsGRID which I do not have time for right now. Instead, you can simply pad child items label text with spaces if appropriate.


nxSplitter.
Have made alterations to extend the functionality of this control. You can now take steps to embed multiple controls directly within a nxSplitter without having to embed them first within a container gadget etc. This is because the control no longer complains if one of the two 'split' controls is omitted and also due to the fact that the #nxSplitter_GadgetsResized callback message is far more 'refined'. (See the nxGadgets_Residents.pbi source file for details).
There is also a new callback message : #nxSplitter_CustomPaint for those applications wishing to paint directly to the splitter control etc. (advanced users only).

Regards.

=============================


nxSplitter controls.
A bug with the nxSplitter control when housing Purebasic panel gadgets has been fixed.

Thanks Kiffi.

(Only the Purebasic 4.3 version of Nexus has had this bug fix applied. The PB 4.2 version is no longer supported.)

Regards.

=============================


nxPropertyBox controls.

This control has undergone another quite major update in the Purebasic 4.3 version (the version of Nexus for PB 4.2 is no longer supported). This has again been driven by my use of this control in a very large application.

Basically, I needed a way of allowing some 'color selector' items of offering a 'default color' option and of thus being able to display colors as well as text (i.e. display a selected color or a string simply saying "Default color" etc.)

This was of course not possible for two reasons; i) the propertybox color selector items could not display text and, more importantly, ii) the Windows color common dialog has no option for a 'default color'.

This has been addressed (indirectly) by making a number of internal alterations to the nxPropertyBox control, most notably the addition of a new callback message : #nxPropertyBox_SelectorItemInvoked. This fires whenever the user attempts to invoke any of the selector items and allows the user to replace the resulting requester with a custom one. In addition, you can now dynamically switch an item's type at will (e.g. from a color selector item to a dynamic text dialog item and back again!) Very useful!

A new nxPropertyBox demo (demo 2) shows all of this working and uses my MenuColorPicker class (included with the demo) to good effect. The result is a custom color item which does exactly as described above (switching from a textual display to a colored image one)! By not 'hard coding' the MenuColorPicker class into Nexus we are of course free to use just about any type of dialog going and to switch items between all the various types.

:smile:

=============================


nxPropertyBox controls.

This control has undergone a major update in the Purebasic 4.3 version (the version of Nexus for PB 4.2 is no longer supported). This is because I am finally using this control in a 'serious' and substantial application and am having to make a few alterations etc.

Changes include :
  • Two new creation styles; #nxPropertyBox_EditableLabels and #nxPropertyBox_RemoveControlsWhenResizing. Using the first of these styles allows labels to be edited following a double click etc. The developer can validate all edits etc. Also, you can set the label editing colors etc.
  • Added an editable combo type cell.
  • Greatly refined the various selector type cells.
  • The #nxPropertyBox_ItemUpdated callback message now fires in the case that lables have been edited etc. This message also provides additional information in the case that a selector type cell has been altered etc.
  • Added a new callback notification : #nxPropertyBox_ContextMenu. This allows the developer to easily attach context menus to individual cells of a propertybox etc.
In the absence of a user manual, you have to fall back upon the "nxGadgets_Residents.pbi" source file in order to find additional information regarding these changes/enhancements.

I have also fixed some bugs with this control.

:smile:

=============================


nxExplorerBar controls.

Updated the version of this control in the Purebasic 4.3 version (the version of Nexus for PB 4.2 is no longer supported).

You can now hide an entire group by simply setting the header item to have a height of zero (of course this only works if the group has a header item!) You can set this height at any time through the nx_SetGadgetItemAttribute() function.

Also fixed some bugs with this control.

:)

=============================


nxImageArray controls.

Updated the version of this control in the Purebasic 4.3 version (the version of Nexus for PB 4.2 is no longer supported).

Basically the internal paint handler has been completely rewritten and is now far far faster and smoother. This was done in order to refine the blended selection of items which is now far more refined and aesthetically pleasing.

On top of this, for those nxImageArray controls using a selection border for selected items (rather than a blended form of selection) you can now customise the selection rectangle which has been added to satisfy an application I am working on. It is very effective though! :wink:

:)

=============================


6/11/2008.

nxExplorerBar controls.

A major bug fixed in both the Purebasic 4.2 and 4.3 versions whereby a collapsed group would still register some menu-item clicks which had been hidden because of the collapse etc.

:)

=============================


22/10/2008.

nxPropertyBox controls.

A couple of bugs fixed in both the Purebasic 4.2 and 4.3 versions.

The version for Purebasic 4.3 (32-bit) has been updated with the addition of a new type of item, namely : #nxPropertyBox_CustomTextDialog.

These items display a selector button and when clicked a notification is sent to the developer's callback function. The intention is that the callback will then display a custom dialog for the user to enter text etc. and then for the callback to use nx_SetGadgetItemText() to change the underlying text in the property box control. Along with the notification is sent a RECT structure containing the bounds of the cell in question (in screen coordinates) so that a dialog can be positioned very precisely (if appropriate).

The nxPropertyBox demo shows how to use these new kinds of items.

I have not updated the version for Purebasic 4.2 as I will no longer be supporting this version when PB 4.3 final is released.

:)

=============================


30/6/2008.
Have added a version of Nexus for PB 4.3 (32-bit only).

=============================


30/6/2008.
Have added a forum to the nxSoftware site within which has been added a section for Nexus.

=============================


27/6/2008. Update. -New control added!
Have added what I have called an nxTreeField control to the Nexus framework, a control which has been requested several times in these forums.

An nxTreeField is essentially a tree gadget with columns!

It is very flexible and easy to use and can actually be used as a replacement for the standard listicon and tree gadgets if desired.

Features include :
  • Optional checkboxes.
  • Optional images in any 'cell'. Altering a cell's icon is a single line of code.
  • Fully 'themed'. Node buttons and checkboxes are rendered according to any active theme.
  • Resizeable columns (via click and drag or code). Individual columns can be prevented from being resized etc.
  • Full column reordering through click and drag (an optional style).
  • Individual cell justification.
  • Complete control over the gadget through simple code and a simple (optional) callback.
(Tested on XP and Vista.) Ideal for displaying heirarchical data etc.

I do intend adding some kind of editing capability very soon as well as a few more cell formatting options.


A screenshot (a bit fuzzy I'm afraid!)

Image


As well as this, and because of the time consumed by what is really a side project (and a complex one at that! :wink: ) I have removed the donate options from the Nexus section of the nxSoftware site. Whilst Nexus remains free and open-source, I have instead added a 'Paid support' option to the website.

For a once-only and very very low payment, comes a promise of my help and assistance with any project utilising any of the Nexus controls; from simple suggestions to help with the project's code and/or alterations to the Nexus controls themselves should an individual product require it. Suggestions for improvements to Nexus (or ideas for new controls) will also get priority consideration.

This seems to me the best way of supporting what is an on-going project. Consider that the new treefield control has taken close to two weeks of fulltime coding, time away from my commercial projects, and I still intend working on upgrading this control even further! :)

The download link is via the http://www.nxsoftware.com site.

=============================


27/5/2008. Update.
My apologies for the constant updates, but that follows from my using these controls myself etc. At least they are getting a thorough road-testing this way! :)

Have refined both the nxSplitter and the nxImageArray quite a lot. Lots of flicker eliminated. Also, the nxImageArray has been adjusted in order to work with Win NT (3.5 onwards - my thanks to Milan1612) and it will now show a horizontal scrollbar in the event that the control's width is insufficient to show a complete column of images. Previously, the control would never display a horizontal scrollbar and would instead only show images if the control's width was sufficient to show at least one column etc.

=============================


24/5/2008. Update.

nxSplitter gadgets.
Removed some causes of flicker in some, albeit rare, circumstances.

=============================


23/5/2008. Update.

nxImageArray gadgets.
These controls have been upgraded.

First, you can now opt between selected images being blended with the background or simply exhibiting a customisable selection border etc.

More importantly, however, you can now receive notifications regarding the selection / deselection of individual items even in multi-select image arrays. This makes the control far more felexible and was something I needed for my current work in that I required a flexible thumbnail selector etc.

Have added a second demo program for this control which not only illlustrates the new functionality, but goes some way towards demonstrating the powerful drag/drop options etc.

Regards.

=============================


22/5/2008. Update.

nxSplitter gadgets.
You can now control which of the child gadgets is collapsed and anchored whenever the user clicks the 'gripper'. Up to now the gadgets would alternate, that is the first gadget would collapse the first time the gripper was clicked, then the next click would collapse the second gadget, then the first gadget and then the..... :) You now have complete control over which one (if any) is collapsed and anchored.

This is handled through the nxSplitter callback. See the "DEMO-2 nxSplitter.pb" demo program for details (look for the commented lines in the callback function).

Regards.

=============================


4/3/2008. Update.
nxSplitter gadgets.
Have added the special value #nxSplitter_RestoreSlider which can be used with the nx_SetGadgetState() command in order to release a previously anchored slider etc. The slider is returned to it's previous 'proportional position'.

=============================

Hi,

here's a project which I intended to be a commercial one, but as I find I am able to spend but a tiny fraction of the time on it that I originally intended, and it is otherwise gathering dust, I have decided to release it as open-source and for free. I do, however, encourage a donation if possible and if Nexus is indeed found to be useful etc. because I have nevertheless spent a lot of time on it. It's just that I've had no time for it in the last month and I reckon it could, even as it is, prove to be useful. Better it being used than just sitting there staring at my laundry basket! :)

So what is Nexus?

Well, it was intended to be an ever increasing collection of custom gadgets for Purebasic. As it is, the number of complete gadgets is 4 and whether I end up adding any more depends very much on my needs of the moment etc. If I find myself in need of a new type of control then I will of course add it to Nexus.

Nexus is more than just a bunch of unrelated controls, however; it is an entire framework into which the gadgets 'slot'. Very much like the Purebasic gadget library, the Nexus framework employs a single set of commands which the developer uses to control the gadgets etc. For example, we have nxAddGadgetColumn(), nxAddGadgetItem(), nxClearGadgetItemList() and so on. Makes things very simple! :wink:

Please feel free to download it, have a look at it etc. If you end up intending to make use of it, then please read the licence carefully first as I do of course place certain restrictions where sharing my source code is concerned. Nothing which will restrict your use of Nexus.

Please note a couple of things :
  • The nxPropertyBox control requires my EsGRID control. Now I cannot (and will not!) supply this for free as this would be totally unfair on all those who have purchased EsGRID etc. I have, however, lowered the price of this control somewhat.
    However, Nexus will run fine even without EsGRID, you just will not be able to use the property boxes.
  • Even though massively incomplete, the help manual is a must. It details the commands exposed by the Nexus framework. The only gadget covered in the manual is the nxSplitter, but the examples and the Nexus residents file will shed a lot of light on each control. You lot are programmers and can figure it out easily enough! :)
  • It is very unlikely that I will entertain requests and suggestions where this product is concerned. If I was not self-employed and/or this was a commercial release, then things would be different in this regard, but time is my main issue at the moment.
One more thing, before anyone feels like complaining about the fact that EsGRID is not free (experience is a wonderful thing sometimes! :wink: ) please just remember how many utilties and applications I contrinue to give for free to the community (recently, coffIT and now Nexus) even though I am self employed. Admittedly, programming still remains primarily a hobby as I do make a living from non-programming sources etc. (No fangbeast, I gave up being a rent boy years ago! :wink: )

Right, my fledgling programming website is where you'll get your hands on Nexus as well as some screenshots etc.

Enjoy!

http://www.nxsoftware.com/
Last edited by srod on Fri Sep 17, 2010 12:41 pm, edited 25 times in total.
I may look like a mule, but I'm not a complete ass.
Marco2007
Enthusiast
Enthusiast
Posts: 639
Joined: Tue Jun 12, 2007 10:30 am
Location: not there...

Post by Marco2007 »

8) :D 8)

Thank you very much!!!
PureBasic for Windows
rsts
Addict
Addict
Posts: 2736
Joined: Wed Aug 24, 2005 8:39 am
Location: Southwest OH - USA

Post by rsts »

Very impressive (as usual).

(not too sure about that grid of pictures of you, but your girlfriend looks cute) :D

cheers
srod
PureBasic Expert
PureBasic Expert
Posts: 10589
Joined: Wed Oct 29, 2003 4:35 pm
Location: Beyond the pale...

Post by srod »

rsts wrote:Very impressive (as usual).

(not too sure about that grid of pictures of you, but your girlfriend looks cute) :D

cheers
:lol:
I may look like a mule, but I'm not a complete ass.
User avatar
DoubleDutch
Addict
Addict
Posts: 3219
Joined: Thu Aug 07, 2003 7:01 pm
Location: United Kingdom
Contact:

Post by DoubleDutch »

Whats nxPrint? Sounds interesting....
https://deluxepixel.com <- My Business website
https://reportcomplete.com <- School end of term reports system
srod
PureBasic Expert
PureBasic Expert
Posts: 10589
Joined: Wed Oct 29, 2003 4:35 pm
Location: Beyond the pale...

Post by srod »

Indeed. :wink:
I may look like a mule, but I'm not a complete ass.
swan
Enthusiast
Enthusiast
Posts: 225
Joined: Sat Jul 03, 2004 9:04 am
Location: Sydney Australia
Contact:

Post by swan »

Thanx srod

You made a good point regarding contributions to the PB community by you and many others. It's the reason I purchased a licence of EsGRID even though I will probably never get to use it.
And time is very hard to find these days to do the things ya'd like. And I'm self employed in a programming environment and I still can't find time to contribute. One day !!
srod
PureBasic Expert
PureBasic Expert
Posts: 10589
Joined: Wed Oct 29, 2003 4:35 pm
Location: Beyond the pale...

Post by srod »

Aye, the truth is that I sometimes spend too much time programming when I should be doing other things! I can't help myself sometimes! :wink:
I may look like a mule, but I'm not a complete ass.
Dare
Addict
Addict
Posts: 1965
Joined: Mon May 29, 2006 1:01 am
Location: Outback

Post by Dare »

rsts wrote:(not too sure about that grid of pictures of you, but your girlfriend looks cute) :D
:lol:

Very nice. Thank you, sir.


With all your posts, things like this and easyVent, etc, you are making a very significant contribution to these forums! Thank you for that as well.


PS: It took me a while to get DEMO[WITH-EMBEDDED-SPACE]nxPropertyBox.pb to work! Not your fault, I was still zonked from too many late nights and early mornings and dealing with the ruddy esGrid_resident file include eluded me. :D

PPS: Why are you getting into bad habits and embedding spaces in your file names? :P :wink: :)
Dare2 cut down to size
srod
PureBasic Expert
PureBasic Expert
Posts: 10589
Joined: Wed Oct 29, 2003 4:35 pm
Location: Beyond the pale...

Post by srod »

Yes, in the dummy EsGRID file it does say that you should merge the resident file etc. This is because of the barmy include paths with PB etc! The alternative is to put some hard coded paths in!

Still, I reckoned you'd be able to figure it all out! :wink:
I may look like a mule, but I'm not a complete ass.
User avatar
yoxola
Enthusiast
Enthusiast
Posts: 383
Joined: Sat Feb 25, 2006 4:23 pm

Post by yoxola »

@srod

I just bought a copy of EsGrid as my support, hope it'll get better, I'd say the product is pretty awesome and at a reasonabel price.
This field was left intentionally as signature.
User avatar
Rook Zimbabwe
Addict
Addict
Posts: 4326
Joined: Tue Jan 02, 2007 8:16 pm
Location: Cypress TX
Contact:

Post by Rook Zimbabwe »

Site looks good... One small note. nxPrint gives me a Page Not found... error. 8)

Since printing and formatting outputs is what I am on at the moment in my application... I buzzed there straight away! :D

Actually everythign under Nesus seems to be not found... :(
]
Some of those titles look interesting!
Binarily speaking... it takes 10 to Tango!!!

Image
http://www.bluemesapc.com/
User avatar
Fangbeast
PureBasic Protozoa
PureBasic Protozoa
Posts: 4749
Joined: Fri Apr 25, 2003 3:08 pm
Location: Not Sydney!!! (Bad water, no goats)

Re: Nexus - a library of custom gadgets

Post by Fangbeast »

srod wrote:Hi,
(No fangbeast, I gave up being a rent boy years ago! :wink: )
[/url]
I have no idea what you are raving on about, but kindly leave my name out of it before I tear of that short runt Dare's fetid, steaming, decayed, wet g-string and tie and gag your mouth!!

Dare, sorry mate. I know you needed that one and I realise it's the special Christmassy one that srod gave you and hand decorated. But, it had to be done in the interest of science!!
srod
PureBasic Expert
PureBasic Expert
Posts: 10589
Joined: Wed Oct 29, 2003 4:35 pm
Location: Beyond the pale...

Post by srod »

Rook, the site only has EsGRID and Nexus linked in at the moment. I'll get to the rest as I find the time. :) All but nxPrint are already available in these forums.

@Yoxola : received, thanks. I'll get on it straight away.
I may look like a mule, but I'm not a complete ass.
User avatar
yoxola
Enthusiast
Enthusiast
Posts: 383
Joined: Sat Feb 25, 2006 4:23 pm

Post by yoxola »

After trying out the samples and write some small test, I found it very capable for building a eye-catching GUI, very nice library :D

I do recommend purchase EsGRID if you haven't, it's worthy for the bucks, and can save tons of time on spreadsheet task.
This field was left intentionally as signature.
Post Reply