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...

Re: Nexus -library of custom gadgets (updated : 28/7/09)

Post by srod »

No problem. 8)

I'll include this version in the next update.
I may look like a mule, but I'm not a complete ass.
User avatar
Arctic Fox
Enthusiast
Enthusiast
Posts: 609
Joined: Sun Dec 21, 2008 5:02 pm
Location: Aarhus, Denmark

Re: Nexus -library of custom gadgets (updated : 28/7/09)

Post by Arctic Fox »

Thanks!
btw you can always include both versions and let the user decide which to use.
Marco2007
Enthusiast
Enthusiast
Posts: 648
Joined: Tue Jun 12, 2007 10:30 am
Location: not there...

Re: Nexus -library of custom gadgets (updated : 28/7/09)

Post by Marco2007 »

Arctic Fox and the man behind Arctic Reports...is this about an arctic Explorer :)
PureBasic for Windows
Denis
Enthusiast
Enthusiast
Posts: 778
Joined: Fri Apr 25, 2003 5:10 pm
Location: Doubs - France

Re: Nexus -library of custom gadgets (updated : 28/7/09)

Post by Denis »

srod,
i'm a little bit lost with your nxgadget library :oops:
Could you help me to solve my problem ?

I use a nxSplitter with two area.
I will put in the first one, a textgadget and below a listicon.

I put textgadget and listicon inside a containergadget (wich is the gadget i put to splittergadget), my problem is that the container gadget is correctly resized when nxgadget dims changed but nothing arrive for textgadget & listicon. I have to resize them.
May be i have to use #nxSplitter_GadgetsResized msg witch seems to be dispached by nxSplitter_DespatchCallbackMessage() proc but how to do that ?

May i create a callback proc for that ?

How to give my callback proc address to nx functions ?
A+
Denis
srod
PureBasic Expert
PureBasic Expert
Posts: 10589
Joined: Wed Oct 29, 2003 4:35 pm
Location: Beyond the pale...

Re: Nexus -library of custom gadgets (updated : 28/7/09)

Post by srod »

Hi Denis,

yes you can use the #nxSplitter_GadgetsResized message if you wish, though I normally just subclass the container gadget and look out for #WM_SIZE messages. I then resize the child-controls as appropriate (in your case the text gadget and listicon).

Here's an example of using the #nxSplitter_GadgetsResized message :

Code: Select all

#INCLUDE_NEXUS_SPLITTER = 1  ;Declare this before including the Nexus source.

IncludePath "..\..\SOURCE\"
  XIncludeFile "nxGadgets.pbi"
IncludePath ""

;Gadget#.
  Enumeration
    #Container
    #Button1
    #ListIcon
    #Button2
    #Splitter
  EndEnumeration
  
;///////////////////////////////////////////////////////////////////////////////////////////
Procedure.l SplitterCallback(id, uMsg, wParam, lParam)
  Protected result = #True
  Select uMsg
    Case #nxSplitter_GadgetsResized
      If id = #Splitter
        ;Resize listicon.
        ;Note how we resize the width to keep pace with the container. This is to account for the user resizing the main window
        ;which will in turn resize the splitter control because of the #WM_SIZE handler below.
          ResizeGadget(#ListIcon, #PB_Ignore, #PB_Ignore, GadgetWidth(#Container), wParam - 42)
      EndIf
  EndSelect
  ProcedureReturn result
EndProcedure

If OpenWindow(0, 100, 100, 600, 600, "©nxSoftware - nxSplitter example", #PB_Window_SystemMenu | #PB_Window_ScreenCentered | #PB_Window_SizeGadget | #PB_Window_MinimizeGadget | #PB_Window_MaximizeGadget)

  ContainerGadget(#Container, 0, 0, 0, 0)
    ButtonGadget(#Button1, 10, 10, 80, 20, "HELLO!")
    ListIconGadget(#ListIcon, 0, 40, 0, 0, "ListIcon!", 120)
  CloseGadgetList()

  ButtonGadget(#Button2, 0,0,0,0, "CLICK")
  ;Create the nxSplitter.
    nxSplitter_Create(#Splitter, 10,10, WindowWidth(0)-20, WindowHeight(0)-20, #Container, #Button2, 3, #nxSplitter_GripperWithDrag, @SplitterCallback())


  Repeat
    Event = WaitWindowEvent()
    Select Event
      Case #WM_SIZE
        ResizeGadget(#Splitter, #PB_Ignore, #PB_Ignore, WindowWidth(0)-20, WindowHeight(0)-20)
    EndSelect
  Until Event = #PB_Event_CloseWindow
EndIf
I hope this helps.
I may look like a mule, but I'm not a complete ass.
Denis
Enthusiast
Enthusiast
Posts: 778
Joined: Fri Apr 25, 2003 5:10 pm
Location: Doubs - France

Re: Nexus -library of custom gadgets (updated : 28/7/09)

Post by Denis »

Many Thanks for example srod,
i'll take a closer look.
A+
Denis
Denis
Enthusiast
Enthusiast
Posts: 778
Joined: Fri Apr 25, 2003 5:10 pm
Location: Doubs - France

Re: Nexus -library of custom gadgets (updated : 28/7/09)

Post by Denis »

Srod, it seems to be Ok.

Just 1 questions :

What is the default return value for the SplitterCallback() proc
In your example, it's #True, but in my code if i use #False, it' s Ok (see below my callback)

Tks :D

Code: Select all

Procedure.l SplitterCallback(id, uMsg, wParam, lParam)
     Protected result
     Select uMsg
          Case #nxSplitter_GadgetsResized
               Select id
                    Case #Splitter_Separation_Icones, #Splitter_Horizontal
                         ;Resize listicon.
                         ;Note how we resize the width to keep pace with the container. This is to account for the user resizing the main window
                         ;which will in turn resize the splitter control because of the #WM_SIZE handler below.
                             ResizeGadget(#ListIcon_Group_icons, #PB_Ignore, #PB_Ignore, GadgetWidth(#Container_ListIcon_Group_icons), GadgetHeight(#Container_ListIcon_Group_icons) - #HauteurBarreSeparation)
                         result = #True
               EndSelect
               
          Case #nxSplitter_SliderAnchored
               nx_SetGadgetAttribute(id, #nxSplitter_SliderType, #nxSplitter_GripperWithNoDrag)
               result = #True
               
          Case #nxSplitter_AnchorReleased
               nx_SetGadgetAttribute(id, #nxSplitter_SliderType, #nxSplitter_GripperWithDrag)
               result = #True
               
          Case #nxSplitter_GripperClicked
               result = #False
     EndSelect
     
     ProcedureReturn result
EndProcedure
A+
Denis
srod
PureBasic Expert
PureBasic Expert
Posts: 10589
Joined: Wed Oct 29, 2003 4:35 pm
Location: Beyond the pale...

Re: Nexus -library of custom gadgets (updated : 28/7/09)

Post by srod »

Well, there is no default really except to say that #True will ensure 'default behaviour' when (and if) appropriate for the individual message. Returning #False will occasionally prohibit certain actions etc.
I may look like a mule, but I'm not a complete ass.
Denis
Enthusiast
Enthusiast
Posts: 778
Joined: Fri Apr 25, 2003 5:10 pm
Location: Doubs - France

Re: Nexus -library of custom gadgets (updated : 28/7/09)

Post by Denis »

Ok Srod anf Thanks again.
A+
Denis
Poshu
Enthusiast
Enthusiast
Posts: 459
Joined: Tue Jan 25, 2005 7:01 pm
Location: Canada

Re: Nexus -library of custom gadgets (updated : 28/7/09)

Post by Poshu »

Mmmh, I'm toying with the property box since a few minutes and I cannot change any value. I've tried thoses:
nx_SetGadgetItemText(#PropertyBox,5,"152")
nx_SetGadgetItemState(#PropertyBox,5,152)
nx_SetGadgetItemData(#PropertyBox,5,152)
Since I'm a plain idiot, I would ask something like "pleaaaase, help"...
srod
PureBasic Expert
PureBasic Expert
Posts: 10589
Joined: Wed Oct 29, 2003 4:35 pm
Location: Beyond the pale...

Re: Nexus -library of custom gadgets (updated : 28/7/09)

Post by srod »

Code: Select all

nx_SetGadgetItemText(1, 1, "New value text!", #nxPropertyBox_ValueText)
Look in the nxGadgets_Residents.pbi file for a list of constants to use with nx_SetGadgetItemText() with regards the property box control.

Code: Select all

    Enumeration
      #nxPropertyBox_LabelText = 1
      #nxPropertyBox_ValueText
      #nxPropertyBox_FontName
      #nxPropertyBox_FilePathSelectorTitle
      #nxPropertyBox_FileSelectorPattern
      #nxPropertyBox_FileName
      #nxPropertyBox_PathName
      #nxPropertyBox_ComboOptionsText
      #nxPropertyBox_LabelTextPriorToEdit  ;Get only.
                                           ;Only valid before the newly added text is accepted by the #nxPropertyBox_ItemUpdated message.
      #nxPropertyBox_ValueTextPriorToEdit  ;Get only.
                                           ;Only valid before the newly added text is accepted by the #nxPropertyBox_ItemUpdated message.

    EndEnumeration
I may look like a mule, but I'm not a complete ass.
Poshu
Enthusiast
Enthusiast
Posts: 459
Joined: Tue Jan 25, 2005 7:01 pm
Location: Canada

Re: Nexus -library of custom gadgets (updated : 28/7/09)

Post by Poshu »

Ohhh. I should have think of that. Thank you!
Armoured
Enthusiast
Enthusiast
Posts: 365
Joined: Mon Jan 26, 2004 11:39 am
Location: ITALY
Contact:

Re: Nexus -library of custom gadgets (updated : 28/7/09)

Post by Armoured »

Hi srod, :)
Only three questions:

1) Your Nexus gadgets works well with Pb 4.41 and Pb 4.50?

2) Your Split gadget works well with multiple groups of gadgets?
For example I can use your Split gadget between a ListIconGadget on the right and an EditorGadget with a StringGadget on the left (A gui like the mIRC program)?

3) The Split gadget work inside a PanelGadget?

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

Re: Nexus -library of custom gadgets (updated : 28/7/09)

Post by srod »

Hi.

1) Yes. For the property-box control make sure you use the PB 4.5 compatible version of EsGRID.
2) Yes. *
3) Yes.

*Use a container gadget as one of the splitter's child controls. You will then need to take steps to resize the containers child gadgets whenever the splitter resizes the container etc. For this either subclass the container or use the #nxSplitter_GadgetsResized callback message. I advise the #nxSplitter_GadgetsResized message.
I may look like a mule, but I'm not a complete ass.
User avatar
X0r
Enthusiast
Enthusiast
Posts: 138
Joined: Tue May 01, 2007 3:49 am
Location: Germany

Re: Nexus -library of custom gadgets (updated : 28/7/09)

Post by X0r »

Hey srod,
thanks for this great lib! :)

Is there any way to make the items of the nxPropertyBox control readonly?
Post Reply