sGUI

User projects written in or related to FreeBASIC.
petan
Posts: 683
Joined: Feb 16, 2010 15:34
Location: Europe
Contact:

Re: sGUI

Postby petan » May 31, 2016 19:10

Thanks for this info, Muttonhead, german reference not seen deeply ... !

For me personally is enough to knowing that problem with possible misusing 'Get/SetCombo/ListVals' routines for wrong gadtype, and adding a few words about it to designer online help - F1 keypress - as general part "Troubles & solutions". For now it 'll be sufficient without changes in sGUI code.
petan
Posts: 683
Joined: Feb 16, 2010 15:34
Location: Europe
Contact:

Re: sGUI

Postby petan » Jun 19, 2016 11:44

Hi, Mutton
I made next another tuning for 084 'ListBox/ComboBox' to be used both as Color Chooser (palette of user defined NAMED colors in an array). other things stays now.
256 color palette is in file "colors256.bi".
It's alpha version but works.

Q - I don't know which header parameter is better for calling it ?? - next number {...,colorChooser as integer=0 / 1, or string ...,colorChooser as string="" / "cc"} ?
This flag is then stored in 'gad->Ctrl(4)' as integer.

Screenshot + discussion about color contrast is here http://www.freebasic.net/forum/viewtopic.php?f=3&t=24782

Founded that 'sGUI' has global variable 'contrast', but not satisfied with trial results.
I 'll post final 084 code and upload 085 files later.
Last edited by petan on Jun 21, 2016 0:09, edited 1 time in total.
petan
Posts: 683
Joined: Feb 16, 2010 15:34
Location: Europe
Contact:

Re: sGUI

Postby petan » Jun 19, 2016 21:18

"sGUI.bas" added new variable

Code: Select all

(...)
dim shared as uinteger colorChooserBackgroundColor=black   'my   Johnson black light r g b
static shared as uinteger dotColor=rgb(0,0,0)      'my
'System Events
(...)

084 ListBox - color chooser mode

"ListBox.bas"

Code: Select all

(...)
declare function AddListBox(event as EventHandle ptr,PosX as integer,PosY as integer,NumChars as integer,NumRows as integer,DisplayMode as integer=0,ScrollBarMode as integer=0,colorLister as integer=0) as Gadget ptr
(...)
function AddListBox(event as EventHandle ptr,PosX as integer,PosY as integer,NumChars as integer,NumRows as integer,DisplayMode as integer=0,ScrollBarMode as integer=0,colorLister as integer=0) as Gadget ptr
  function=0
  dim as Gadget ptr gad
  gad=event->GadgetList->AppendNew (GadgetType)
  if gad then
    gad->event=event
     gad->sel=0
    gad->act=0
    gad->gadKind=3         'my GadgetType flag   
    gad->posx=PosX
    gad->posy=PosY
    gad->gadw=NumChars*8 + 6 + 15 '6 >> Rand innerhalb MLEB,  15>> Breite ScrollBar rechts
    gad->gadh=fontheight*NumRows + 6'6 >> Rand innerhalb MLEB

    gad->Ctrl(1)=DisplayMode
    gad->Ctrl(2)=NumRows
   
    gad->subevent=new EventHandle
    if gad->subevent then
      gad->gad(0)=AddLBGadget(gad->subevent,gad->posx,gad->posy,NumChars,NumRows,DisplayMode)     
      gad->gad(1)=AddScrollBar(gad->subevent,gad->posx+NumChars*8 + 6,gad->posy,NumRows*fontheight+6,1,1,1,NumRows,1,ScrollBarMode)      
   end if

    gad->extTObject=gad->gad(0)->TObject'Verbindung zum Textobjekt erzeugen das eigentlich zur LB in gad(0) gehört
    gad->useextTO=1                     'Flag für alle TO-Befehle extTObject zu benutzen

    gad->gad(0)->Ctrl(4)=colorLister   'my color chooser flag


    gad->DoDraw     =@DrawList
    gad->DoAction   =@ListActions
    gad->DoUpdate   =@UpdateLB

      'gad->SaveBackGround
      function=gad
  end if
end function
(...)

"ListBox_Basis.bas"

Code: Select all

(...)
sub DrawLB (gad as Gadget ptr)
   Dim as integer PosX,PosY,GadWidth,GadHeight,offset,NumRows
     Dim as integer boxc,boxl,scrollpos,scrollline,lcount,selline
     Dim as integer idc,ela7      'my
   dim as uinteger tcolor
     Dim as TextLine ptr l
     Dim as string tmpstring,cursorchar
  PosX   =gad->posx
   PosY   =gad->posy
   GadWidth         =gad->gadw
   GadHeight         =gad->gadh
   offset=3
  NumRows=TO_GetLines(gad)
  boxc=gad->Ctrl(0)
  boxl=gad->Ctrl(1)
  scrollpos=gad->Ctrl(2)
  scrollline=gad->Ctrl(2)
  l=TO_GetLineAddr(gad,scrollline)
  selline=gad->Ctrl(15)

  tmpstring=""
  screenlock
 
 
 ' ? "b gad->Ctrl(4) ";gad->Ctrl(4), "b gad ";gad
 
  if gad->act=0 then
'OFF
    put(PosX,PosY),gad->Background,pset
  else
'ON
    FrameB PosX,PosY,GadWidth,GadHeight,1
'set backgrounds
   'my    if as color chooser funcionality
      if gad->Ctrl(4) then   
         ClearBox PosX+1,PosY+1,GadWidth-2,GadHeight-2,colorChooserBackgroundColor      'my      
      else
         'ClearBox PosX+1,PosY+1,GadWidth-2,GadHeight-2,white
         ClearBox PosX+1,PosY+1,GadWidth-2,GadHeight-2,GadgetTextBackgroundColor       'orig
      end if
      
      
    if NumRows then
      lcount=0
      do
        tmpstring=TO_GetLineContent(gad,l)
         
   'my    if as color chooser funcionality
         if gad->Ctrl(4) then
            idc=valint(mid(tmpstring,instr(tmpstring,"~")+1))
            if idc andalso idc<ubound(kolorem)+1 then   'check array range
               tmpstring=String(5,chr(219))+m+kolorem(idc).nameKolorem      'global - user 256 colors palette e.g.
            else
               ? "listbox kolor index error"
            end if
         
         end if

        if gad->Ctrl(3) then  'DisplayMode 1
         
          if left(tmpstring,3)="LBL" then
            tmpstring=left(right(tmpstring,len(tmpstring)-4),boxc)
            FillA PosX+1,PosY+offset+lcount*fontheight,GadWidth-2,fontheight,BackgroundColor,0
            tcolor=&HEE5500
          end if

          if left(tmpstring,3)="ITM" then
             ela7=InStrRev(tmpstring,":")
           ' tmpstring=left(space(2) & right(tmpstring,len(tmpstring)-8),boxc)      'orig
'            tmpstring=left(right(tmpstring,len(tmpstring)-8),boxc)                  'my
            tmpstring=left(right(tmpstring,len(tmpstring)-ela7),boxc)                  'my
           
            if (scrollline+lcount=selline) then
              tcolor=white
              ClearBox PosX+1,PosY+offset+lcount*fontheight,GadWidth-2,fontheight,CursorColor
            else
              tcolor=TextColor
            end if                     
          end if
         
        else                  'DisplayMode 0
         
          tmpstring=left(tmpstring,boxc)
          if (scrollline+lcount=selline) then
            tcolor=white
            ClearBox PosX+1,PosY+offset+lcount*fontheight,GadWidth-2,fontheight,CursorColor
          else
            tcolor=TextColor
          end if       
       
        end if

      'my  if as color chooser funcionality
      if gad->Ctrl(4) then
         tcolor=kolorem(idc).whichKolorem      'my
      end if
            
      draw string ( PosX+offset, PosY+offset+lcount*fontheight ),tmpstring,tcolor      'orig      
         

        l=l->nextline
          lcount +=1
      loop until (l=0) or (lcount=boxl)'keine Zeile im TO oder der Zeilenzähler=Anzahl der zu zeigenden Zeilen(lcount startet bei 0!)
    end if
'SLEEP
    if gad->act=2 then put(PosX,PosY),gad->Background,alpha,SleepShade
  end if
  screenunlock
end sub
(...)


Testing example - Listbox color chooser and contrast

Code: Select all

(...)

/' user color palette defined in designer file 'colors256.bi'
type Kolory256
nameKolorem as string
whichKolorem as uinteger
end type
 dim shared as Kolory256 kolorem(1 to 256)
scope
dim as string a
dim as uinteger b
for i as integer=1 to 256
read a,b
kolorem(i).nameKolorem=a
kolorem(i).whichKolorem=b
next i
end scope


data "AliceBlue",&HF0F8FF
data "AlizarinCrimson",&HE32636
data "Amber",&HFFBF00
data "Amethyst",&H9966CC
data "AntiqueWhite",&HFAEBD7
data "Aquamarine",&H7FFFD4
data "Asparagus",&H7BA05B
(...)
'/

(...)
kolorList=AddListBox(event2,530,25,26,15,,,1)
for pjt=1 to ubound(kolorem)
   TO_AppendLine(kolorList,kolorem(pjt).nameKolorem+"~"+str(pjt))   
next pjt
UpdateGadget(kolorList)
(...)
GadgetOn(kolorList)
x=0
'backgrounds of colorchooser
dim as uinteger ccBkgC(4)
ccBkgC(1)=rgb(0,0,0)
ccBkgC(2)=rgb(255,0,0)
ccBkgC(3)=rgb(0,255,0)
ccBkgC(4)=rgb(0,0,255)
do
 event2->EXITEVENT=0   
  event2->xSleep(1,0)
if RMB=HIT then
   event2->EXITEVENT=1
end if

   'F1 - swap background
  if multikey(&h3b) then
   x+=1:if x>ubound(ccBkgC) then x=1      'Johnson counter
   colorChooserBackgroundColor=ccBkgC(x)
   GadgetOff(kolorList)
   GadgetOn(kolorList)
  end if 
loop until event2->EXITEVENT=1
GadgetOff(kolorList)
(...)
petan
Posts: 683
Joined: Feb 16, 2010 15:34
Location: Europe
Contact:

Re: sGUI

Postby petan » Jun 20, 2016 12:31

085 ListBox speedy tuning as colorchooser succesfull ;)

Problem is fixed font; when loaded, no colorized polygon written, but some "U" chars.
Equally as label, fontMode must be optional parameter for ListBox/ComboBox to prevent this behavior, when
colorchooser mode is needed.
I'll play with that for a moment, uploading 085 ListBox files tonight.
petan
Posts: 683
Joined: Feb 16, 2010 15:34
Location: Europe
Contact:

Re: sGUI

Postby petan » Jun 20, 2016 23:59

Uploaded.
(Updated *.BAS - Demo_font, Demo_label, Demo_ListBox, sGUI_font, sGUI, Listbox, Listbox_Basis)
Added hard FB default 8 px font as fontMode 2, it can be used even if another fonts exist & loaded in FontImg.
Now it likes me more ;)
petan
Posts: 683
Joined: Feb 16, 2010 15:34
Location: Europe
Contact:

Re: sGUI

Postby petan » Jun 21, 2016 21:30

;))
085 ComboBox is able in colorchooser funcionality too, looks 084 'll be equally.
(Color background swap indipendent in Combo and MiniSelector)
What a ride.Code upload tomorrow, tired.
Image
edit
084 done too ;)
Last edited by petan on Jun 23, 2016 9:07, edited 1 time in total.
petan
Posts: 683
Joined: Feb 16, 2010 15:34
Location: Europe
Contact:

Re: sGUI

Postby petan » Jun 22, 2016 11:53

Okay, done.
084+085 'ListBox+ComboBox' colorChooser functionality added (user defined palette in array)
'FillA' tuned slightly to catch/highlight ANY color selected item in ListBox+ComboBox.
Now it's fine, black&yellow pattern box frame 'll do that.
Maybe better tuning for pattern remains - dashed/dotted/another ??
Background color is swapped to get contrast for color name item
Image
petan
Posts: 683
Joined: Feb 16, 2010 15:34
Location: Europe
Contact:

Re: sGUI

Postby petan » Jun 23, 2016 16:50

Hi, Mutton

Looks like a bug in 085 alpha ?
combobox and listbox - when mouse is on opened list items, then mouse cursor is invisible... until moved a bit...?
084 is OK.

edit
Not a bug, some code switched badly !, searching...
Last edited by petan on Jun 27, 2016 21:24, edited 1 time in total.
Muttonhead
Posts: 117
Joined: May 28, 2009 20:07

Re: sGUI

Postby Muttonhead » Jun 25, 2016 10:42

can't repeat the behavior...:(. on my machine its looks ok...
but there's a heavy bug in the update routine of listbox in v.0.85...
it appears when you use the filerequester: scroll up and down and then try to go to parent directory, program will crash...
i'll check this... this version is embeded in Charset2FBFont too. :O :(
Muttonhead
Posts: 117
Joined: May 28, 2009 20:07

Re: sGUI

Postby Muttonhead » Jun 25, 2016 15:36

in ListBox.bas routine UpdateListBox(gad as Gadget ptr)
comment line 102:

Code: Select all

UpdateGadget(listbox)

to

Code: Select all

'UpdateGadget(listbox)
petan
Posts: 683
Joined: Feb 16, 2010 15:34
Location: Europe
Contact:

Re: sGUI

Postby petan » Jun 25, 2016 17:15

edited
085 Mouse visibility IS MY problem tested in "DemoActivationTest.bas" !

- mouse off any gadget is visible - if in move or stay
- mouse on gadget is invisible - if stay
If slowly in move - is visible
- mouse on gadget is fully visible Ok - ONLY on 'BMP gadget' and 'String gadget' and 'Label'
and 'MultilineEditbox gadget'

edit
Upss, tested second clear copy of 085 alpha pack, there is correct behavior.You are right!

'Setmouse' command is not a source of problem, so it looks like an intensive refresh somewhere added, or switched by me in tuned code.
Clear, I'll check tuned files separately to isolate that behavior and reason.
petan
Posts: 683
Joined: Feb 16, 2010 15:34
Location: Europe
Contact:

Re: sGUI

Postby petan » Jun 27, 2016 21:27

Hmm, 085 Filerequester seems withou crash here on Slax 7, I cannot repeat that behavior..
petan
Posts: 683
Joined: Feb 16, 2010 15:34
Location: Europe
Contact:

Re: sGUI

Postby petan » Jun 30, 2016 23:27

084 mouse visibility problem in designer too.Color chooser is OK.

Mouse invisible even off designer widget - this bug detected to 'windowtitle' command in a loop.
Next visibility troubles on some gadgets activated, on others is cursor OK.
IDU this, looks like some refresh problem in a bigger complex code.
Trying to isolate that problem.
petan
Posts: 683
Joined: Feb 16, 2010 15:34
Location: Europe
Contact:

Re: sGUI

Postby petan » Jul 09, 2016 13:02

tip for 084/085 Manual/Tutorial - to add this note (chapter "Troubles/Solutions")

... important functional difference, easily changeable in mind, between
if GetSelect(myGadgetXY)=1 then .... 'gadget is clicked
'and
if myGadgetXY->act=1 then .... 'gadget is visible

lost a 30 min until founded mistaked functionality in designer's improved gad properties setup.
petan
Posts: 683
Joined: Feb 16, 2010 15:34
Location: Europe
Contact:

Re: sGUI

Postby petan » Jul 12, 2016 6:46

Back in resizing .. IMHO this would be good as default possibility for MultilineEditor and Filerequester..

Q - is 'xSleep' routine able to compute a mouse distance between 'click-hold-(move)-released' mouse sequence ?

Return to “Projects”

Who is online

Users browsing this forum: AndyA and 2 guests