[v4 beta1] Problème avec SetGadgetColor() [Corrigé]

Archive.
Avatar de l’utilisateur
Flype
Messages : 2431
Inscription : jeu. 29/janv./2004 0:26
Localisation : Nantes

[v4 beta1] Problème avec SetGadgetColor() [Corrigé]

Message par Flype »

Coucou,

Bon c'est un peu long et j'ai pas testé beaucoup, mais je suis tombé sur quelques bugs :

. Bug graphique avec ListIconGadget() + #PB_Gadget_LineColor.

. EditorGadget() + #PB_Gadget_FrontColor : La couleur est perdu après un SetGadgetFont()

. HyperLinkGadget() : Le fond n'est pas transparent comme spécifié dans le 'readme'

Code : Tout sélectionner

;-

Enumeration ; Gadgets
  #gPanel
  #gContainer1
  #gString1
  #gString2
  #gString3
  #gEditor
  #gContainer2
  #gText
  #gHyperLink
  #gComboBox
  #gContainer3
  #gListIcon
  #gMax
EndEnumeration

;-

Procedure.l GUI_Create()
  
  ; Create the window and the graphical interface
  
  If OpenWindow(0,0,0,640,480,#PB_Window_Invisible|#PB_Window_ScreenCentered|#PB_Window_SystemMenu|#PB_Window_SizeGadget,"Test")
    
    ; Create the Menu
    
    If CreateMenu(0,WindowID(0))
      MenuTitle("Project")
        MenuItem(1, "Open"   +Chr(9)+"Ctrl+O")
        MenuItem(2, "Save"   +Chr(9)+"Ctrl+S")
        MenuItem(3, "Save as"+Chr(9)+"Ctrl+A")
        MenuBar()
        MenuItem(4, "Close"  +Chr(9)+"Ctrl+C")
    EndIf
    
    ; Create a PopupMenu
    
    If CreatePopupMenu(1)
    EndIf
    
    ; Create the ToolBar
    
    If CreateToolBar(0,WindowID(0))
      ToolBarStandardButton(0,#PB_ToolBarIcon_New)
      ToolBarStandardButton(1,#PB_ToolBarIcon_Open)
      ToolBarStandardButton(2,#PB_ToolBarIcon_Save)
    EndIf
    
    ; Create the Statusbar
    
    If CreateStatusBar(0,WindowID(0))
      AddStatusBarField(250)
      AddStatusBarField(1000)
    EndIf
    
    ; Create the GadgetList
    
    If CreateGadgetList(WindowID(0))
    
      If PanelGadget(#gPanel,10,30,620,400)
      
        AddGadgetItem(#gPanel,-1,"Page 1")
          If ContainerGadget(#gContainer1,5,5,350,350,#PB_Container_Single)
            StringGadget(#gString1,10,10,200,22,"StringGadget()")
            StringGadget(#gString2,10,40,200,22,"StringGadget()")
            StringGadget(#gString3,10,70,200,22,"StringGadget()")
            EditorGadget(#gEditor,10,100,200,200)
            SetGadgetText(#gEditor,"EditorGadget()"+#CRLF$+"EditorGadget()")
            CloseGadgetList()
          EndIf
          
        AddGadgetItem(#gPanel,-1,"Page 2")
          If ContainerGadget(#gContainer2,5,5,350,350,#PB_Container_Single)
            TextGadget(#gText,10,10,200,22,"TextGadget()")
            HyperLinkGadget(#gHyperLink,10,40,200,22,"HyperLinkGadget()",$00ffff,#PB_HyperLink_Underline)
            CloseGadgetList()
          EndIf
          
        AddGadgetItem(#gPanel,-1,"Page 3")
          If ContainerGadget(#gContainer3,5,5,350,350,#PB_Container_Single)
            ListIconGadget(#gListIcon,10,10,200,200,"A",20,#PB_ListIcon_GridLines|#PB_ListIcon_FullRowSelect)
            For i=2 To 25
              AddGadgetColumn(#gListIcon,i,Chr(65+i),20)
            Next
            For i=1 To 99
              AddGadgetItem(#gListIcon,i,Str(i))
            Next
            CloseGadgetList()
          EndIf
          
      EndIf
      
    EndIf
    
  EndIf
  
  ProcedureReturn #True
  
EndProcedure
Procedure.l GUI_Color()
  
  ; Scanning for desktop properties
  
  If ExamineDesktops()
    If DesktopDepth(0) < 16
      ProcedureReturn #False
    EndIf
  EndIf
  
  ; Colors of the graphical interface
  
  a.l = $000000
  b.l = $ffffff
  c.l = $e0e0e0
  d.l = $00e0e0
  e.l = $00e000
  f.l = $d06060
  
  ; Colorize the window
  
  SetWindowColor(0,c)
  
  ; Colorize the gadgetlist
  
  For i=0 To #gMax-1
  
    If IsGadget(i)
    
      Select GadgetType(i)
      
        Case #PB_GadgetType_Container 
          SetGadgetColor(i,#PB_Gadget_BackColor,c)
          
        Case #PB_GadgetType_String, #PB_GadgetType_Editor
          SetGadgetColor(i,#PB_Gadget_FrontColor,f)
          SetGadgetColor(i,#PB_Gadget_BackColor,d)
          
        Case #PB_GadgetType_Text
          SetGadgetColor(i,#PB_Gadget_FrontColor,a)
          SetGadgetColor(i,#PB_Gadget_BackColor,c)
          
        Case #PB_GadgetType_ListIcon
          SetGadgetColor(i,#PB_Gadget_FrontColor,a)
          SetGadgetColor(i,#PB_Gadget_BackColor,d)
          SetGadgetColor(i,#PB_Gadget_LineColor,a)
          
        Case #PB_GadgetType_ListView
          SetGadgetColor(i,#PB_Gadget_FrontColor,a)
          SetGadgetColor(i,#PB_Gadget_BackColor,d)
          
        Case #PB_GadgetType_HyperLink
          SetGadgetColor(i,#PB_Gadget_FrontColor,c)
          
        Case #PB_GadgetType_ScrollArea
          SetGadgetColor(i,#PB_Gadget_BackColor,d)
          
        Case #PB_GadgetType_Calendar, #PB_GadgetType_Date
          SetGadgetColor(i,#PB_Gadget_FrontColor,a)
          SetGadgetColor(i,#PB_Gadget_BackColor,d)
          SetGadgetColor(i,#PB_Gadget_TitleBackColor,a)
          SetGadgetColor(i,#PB_Gadget_TitleFrontColor,d)
          SetGadgetColor(i,#PB_Gadget_GreyTextColor,a)
          
        Case #PB_GadgetType_Tree
          SetGadgetColor(i,#PB_Gadget_FrontColor,a)
          SetGadgetColor(i,#PB_Gadget_BackColor,d)
          SetGadgetColor(i,#PB_Gadget_LineColor,a)
          
        Case #PB_GadgetType_ExplorerList
          SetGadgetColor(i,#PB_Gadget_FrontColor,a)
          SetGadgetColor(i,#PB_Gadget_BackColor,d)
          
        Case #PB_GadgetType_ExplorerTree
          SetGadgetColor(i,#PB_Gadget_FrontColor,a)
          SetGadgetColor(i,#PB_Gadget_BackColor,d)
          
        Case #PB_GadgetType_ProgressBar
          SetGadgetColor(i,#PB_Gadget_FrontColor,a)
          SetGadgetColor(i,#PB_Gadget_BackColor,d)
          
        Case #PB_GadgetType_Spin
          SetGadgetColor(i,#PB_Gadget_FrontColor,a)
          SetGadgetColor(i,#PB_Gadget_BackColor,d)
          
        Case #PB_GadgetType_MDI
          SetGadgetColor(i,#PB_Gadget_BackColor,d)
          
        Case #PB_GadgetType_Splitter, #PB_GadgetType_ScrollBar, #PB_GadgetType_TrackBar, #PB_GadgetType_ComboBox, #PB_GadgetType_Panel
          ; Not Supported
          
        Default
          ; Unknown Gadget Type
          
      EndSelect
      
    EndIf
    
  Next
  
  ProcedureReturn #True
  
EndProcedure
Procedure.l GUI_Font()
  
  ; Load Fonts
  
  LoadFont(0,"Arial", 8,#Null)
  LoadFont(1,"Arial", 8,#PB_Font_Bold)
  LoadFont(2,"Arial",14,#PB_Font_Bold)
  
  ; Apply to the graphical interface
  
  For i=0 To #gMax-1
    If IsGadget(i)
      Select GadgetType(i)
        Case #PB_GadgetType_Button:        SetGadgetFont(i,FontID(1))
        Case #PB_GadgetType_Calendar:      SetGadgetFont(i,FontID(1))
        Case #PB_GadgetType_CheckBox:      SetGadgetFont(i,FontID(1))
        Case #PB_GadgetType_ComboBox:      SetGadgetFont(i,FontID(1))
        Case #PB_GadgetType_Container :    SetGadgetFont(i,FontID(0))
        Case #PB_GadgetType_Date:          SetGadgetFont(i,FontID(1))
        Case #PB_GadgetType_Editor:        SetGadgetFont(i,FontID(2))
        Case #PB_GadgetType_ExplorerList:  SetGadgetFont(i,FontID(1))
        Case #PB_GadgetType_ExplorerTree:  SetGadgetFont(i,FontID(1))
        Case #PB_GadgetType_ExplorerCombo: SetGadgetFont(i,FontID(1))
        Case #PB_GadgetType_Frame3D:       SetGadgetFont(i,FontID(1))
        Case #PB_GadgetType_HyperLink:     SetGadgetFont(i,FontID(1))
        Case #PB_GadgetType_Image:         SetGadgetFont(i,FontID(1))
        Case #PB_GadgetType_IPAddress:     SetGadgetFont(i,FontID(1))
        Case #PB_GadgetType_ListIcon:      SetGadgetFont(i,FontID(0))
        Case #PB_GadgetType_ListView:      SetGadgetFont(i,FontID(1))
        Case #PB_GadgetType_MDI:           SetGadgetFont(i,FontID(1))
        Case #PB_GadgetType_Option:        SetGadgetFont(i,FontID(1))
        Case #PB_GadgetType_Panel:         SetGadgetFont(i,FontID(1))
        Case #PB_GadgetType_ProgressBar:   SetGadgetFont(i,FontID(1))
        Case #PB_GadgetType_ScrollArea:    SetGadgetFont(i,FontID(1))
        Case #PB_GadgetType_ScrollBar:     SetGadgetFont(i,FontID(1))
        Case #PB_GadgetType_Spin:          SetGadgetFont(i,FontID(1))
        Case #PB_GadgetType_Splitter:      SetGadgetFont(i,FontID(1))
        Case #PB_GadgetType_String:        SetGadgetFont(i,FontID(2))
        Case #PB_GadgetType_Text:          SetGadgetFont(i,FontID(2))
        Case #PB_GadgetType_TrackBar:      SetGadgetFont(i,FontID(1))
        Case #PB_GadgetType_Tree:          SetGadgetFont(i,FontID(1))
        Case #PB_GadgetType_Web:           SetGadgetFont(i,FontID(1))
        Default
      EndSelect
    EndIf
  Next
  
  ProcedureReturn #True
  
EndProcedure
Procedure.l GUI_Main()
  
  ; Main Loop
  
  HideWindow(0,#False)
  
  Repeat
    
    ; Process events
    
    Select WaitWindowEvent(50)
      
      Case #PB_Event_CloseWindow
        Break
        
      Case #PB_Event_Menu
        Debug EventMenu()
        
      Case #PB_Event_Gadget
        Debug EventGadget()
        
      Case #WM_MOUSEMOVE
        StatusBarText(0,1,"Mouse("+Str(WindowMouseX(0))+","+Str(WindowMouseY(0))+")")
        
    EndSelect
    
    ; After events
    
    StatusBarText(0,0,FormatDate("%dd/%mm/%yyyy, %hh:%ii:%ss",Date()))
    
  ForEver
  
  CloseWindow(0)
  
  ProcedureReturn #True
  
EndProcedure

;-

If GUI_Create()
  GUI_Color()
  GUI_Font()  ; <-------- La couleur #PB_Gadget_FrontColor de l'EditorGadget() est perdue.
  GUI_Main()
EndIf

;-

If GUI_Create()
  GUI_Font()  ; <-------- Là non c'est ok.
  GUI_Color()
  GUI_Main()
EndIf

;-
Image
bernard13
Messages : 1221
Inscription : mer. 05/janv./2005 21:30

Message par bernard13 »

Pour etre honnete je prefere la Libs de Gnozal
mais bon c'est juste un avis perso
Avatar de l’utilisateur
Flype
Messages : 2431
Inscription : jeu. 29/janv./2004 0:26
Localisation : Nantes

Message par Flype »

ben oui et non.
je préfère largement voir la gestion de la couleur en natif dans pure.

par contre, c'est sûr, la lib de gnozal est plus mature que l'implémentation dans pb4, pour l'instant.

cà évolue dans le bon sens en tout cas. je suis très content de ce nouveau jeu d'instructions moi.
Image
Répondre