Page 5 sur 10

Re: Librairie SkinWindow (Fenêtres et gadgets skinnés)

Publié : lun. 26/avr./2010 15:10
par Ar-S
J'ai un petit soucis, j'ai un bouton qui ne s'affiche en "Actif"

En gros quand j'appuie sur #G_Stop, ça fonctionne (l'image change) mais pas quand j'appuie sur #G_Jouer (pourtant le rollover marche et l'action de jouer se produit).

Code : Tout sélectionner

Case #G_Jouer
	    SetSkinItemState(#G_Jouer, 1)
            SetSkinItemState(#G_Stop, 0)
            SetSkinItemState(#G_Liste, 0)

          Case #G_Stop
	    SetSkinItemState(#G_Stop, 1)
            SetSkinItemState(#G_Jouer, 0)
            SetSkinItemState(#G_Liste, 0)

Re: Librairie SkinWindow (Fenêtres et gadgets skinnés)

Publié : mer. 28/avr./2010 20:58
par Le Soldat Inconnu
Bon, pour ton problème, j'ai verrouillé un peu plus la librairie pour palier au mauvais Item.png

Et j'ai ajouté la fonction isSkinItem() pour tester si un item est présent ou non sur le skin.
C'est un point important car la librairie supporte le fait que les Items utilisés dans le code existent ou non sur le skin.
Donc en testant si un Item existe, on peut modifier le gestion du programme en fonction des items présent sur le skin.

Voir le premier message pour télécharger la lib avec les exemples et un début d'aide.

Re: Librairie SkinWindow (Fenêtres et gadgets skinnés)

Publié : mer. 28/avr./2010 21:19
par Ar-S
Ok merci pour la maj

Re: Librairie SkinWindow (Fenêtres et gadgets skinnés)

Publié : ven. 30/avr./2010 23:26
par Le Soldat Inconnu
Mise à jour du code pour de petit problème d'affichage
http://www.lsi-dev.com/index.php?mod=do ... erid&id=48

Re: Librairie SkinWindow (Fenêtres et gadgets skinnés)

Publié : mar. 04/mai/2010 16:58
par Ar-S
Ma fenêtre ne se créée pas, j'ai le "Erreur" du messagerequester()
Je ne pige pas pourquoi.

Code : Tout sélectionner

If CreateSkinWindowFromTheme(0, FenX, FenY, "", #PB_Window_Invisible, 0, "skin/01")
Pourtant mons kin est bien dans skin/01
01/Selected.png etc....)

Code : Tout sélectionner

; Si la librairie SkinWindow n'est pas installé, on met la librairie en include
CompilerIf Defined(SetLayeredWindow, #PB_Function) = 0
	IncludeFile "SkinWindow.pb"
	SkinWindow_Init()
CompilerEndIf

#G_BT1 = $1000FF
#G_BT2 = $2000FF
#G_Fond = $FFFFFF

;TailleEcran()
L=GetSystemMetrics_(#SM_CXSCREEN)
H=GetSystemMetrics_(#SM_CYSCREEN)
FenX=L-255 : FenY=H-322
LisX=230 : LisY=402

; Créer une fenetre skinnée à partir des images du dossier "skin/01"
If CreateSkinWindowFromTheme(0, FenX, FenY, "", #PB_Window_Invisible, 0, "skin/01")
	StickyWindow(0,1)
	SkinItemMoveWindow(#G_Fond, 1)
	
	; On ajoute un gadget
  HideSkinWindow(0, 0)
	
	Repeat
		event = WaitSkinWindowEvent()
		; Si on a le focus sur la fenêtre, on affiche l'écran dans l'état actif
    If GetActiveSkinWindow() = 0
			DisableSkinWindow(0,0)
    Else
      DisableSkinWindow(0,1)
    EndIf  
		
		Select EventSkinWindow() ; Fenêtre skinnée qui a reçu un évènement
      Case 0 ; Fenêtre principale
				Select EventSkinItem() ; Item appuyé
            
          Case #G_BT1
            
            SetSkinItemState(#G_BT1, 1)
            SetSkinItemState(#G_BT2, 0)
          
            Case #G_BT2
            
            SetSkinItemState(#G_BT2, 1)
            SetSkinItemState(#G_BT1, 0)

        EndSelect
    EndSelect
    
  Until event = #PB_Event_CloseWindow
	
Else
  MessageRequester(" ","erreur")
  End
EndIf

Re: Librairie SkinWindow (Fenêtres et gadgets skinnés)

Publié : mar. 04/mai/2010 17:05
par Le Soldat Inconnu
c'est plutôt \ à la place de / :mrgreen:

Re: Librairie SkinWindow (Fenêtres et gadgets skinnés)

Publié : mar. 04/mai/2010 17:08
par Ar-S
Bxxxx de mxxxxx de pxxxxx de sxxxxxxxx de mes cxxxxxxx ! :mrgreen:

-----edit ----

Même chose ! :?

Re: Librairie SkinWindow (Fenêtres et gadgets skinnés)

Publié : mar. 04/mai/2010 17:13
par Ar-S
J'ajouterai qu'après vérif, "/" marche bien sur mon programme de radio..

P.S : je suis débile j'ai pas mis le plus important dans mes skin....

Re: Librairie SkinWindow (Fenêtres et gadgets skinnés)

Publié : mar. 04/mai/2010 17:30
par Ar-S
Bon j'avais oublié item.png...

A un autre niveau, une amélioration intéressante serait de pouvoir faire 2 fichiers Item.png si notre skin comporte des boutons de tailles différentes selon qu'ils soient Sélectionnés ou non. Je ne crois pas que ce soit possible en l'état actuel, ou du moins les résultats sont parfois surprenant..

Example, comment gérer un bouton comme ci dessous à son etat ON OFF
Image

Cela permettrait de faire des interfaces vraiment sympa (genre tirer une languette etc..)

Re: Librairie SkinWindow (Fenêtres et gadgets skinnés)

Publié : mar. 04/mai/2010 19:07
par Le Soldat Inconnu
ça doit pouvoir ce faire en l'état actuel, je vais voir pour un exemple

Re: Librairie SkinWindow (Fenêtres et gadgets skinnés)

Publié : mar. 04/mai/2010 19:20
par Le Soldat Inconnu
et voilà

Code : Tout sélectionner

#Item_Bouton1 = $FF0000
#Item_Bouton2 = $FF00FF

Enumeration 1
	#Image_Item
	#Image_Normal
	#Image_Selected
	#Image_Disable
EndEnumeration

CreateImage(#Image_Item, 200, 200, 32)
StartDrawing(ImageOutput(#Image_Item))
	Box(0, 0, 200, 200, $000000)
	Box(50, 50, 50, 50, #Item_Bouton2)
	Box(50, 100, 50, 20, #Item_Bouton1)
StopDrawing()
CreateImage(#Image_Normal, 200, 200, 32)
StartDrawing(ImageOutput(#Image_Normal))
	Box(0, 0, 200, 200, $FFFFFF)
	Box(50, 100, 50, 20, $00FF00)
	Box(25, 120, 100, 50, $0000FF)
StopDrawing()
CreateImage(#Image_Disable, 200, 200, 32)
StartDrawing(ImageOutput(#Image_Disable))
	Box(0, 0, 200, 200, $FFFFFF)
	Box(50, 100, 50, 20, $00FF00)
	Box(25, 120, 100, 50, $0000FF)
StopDrawing()
CreateImage(#Image_Selected, 200, 200, 32)
StartDrawing(ImageOutput(#Image_Selected))
	Box(0, 0, 200, 200, $FFFFFF)
	Box(50, 50, 50, 50, $FF0000)
	Box(50, 100, 50, 20, $FF0000)
	Box(25, 120, 100, 50, $0000FF)
StopDrawing()

If CreateSkinWindow(0, 0, 0, "SkinWindow", #PB_Window_ScreenCentered, 0, #Image_Normal, 0, #Image_Selected, 0, #Image_Disable, #Image_Item, 0, 0, 0)
	
	LinkSkinItem(#Item_Bouton1, #Item_Bouton2)
	SkinItemMoveWindow(#Item_Bouton2, 1)
	
	Repeat
		Event = WaitSkinWindowEvent()
		Select EventSkinItem()
			Case #Item_Bouton1
				If GetSkinItemState(#Item_Bouton1)
					SetSkinItemState(#Item_Bouton1, 0)
				Else
					SetSkinItemState(#Item_Bouton1, 1)
				EndIf
			Case #Item_Bouton2
				If GetSkinItemState(#Item_Bouton1)
					SetSkinItemState(#Item_Bouton1, 0)
				EndIf
		EndSelect
		
	Until Event = #PB_Event_CloseWindow
	
	
EndIf

Re: Librairie SkinWindow (Fenêtres et gadgets skinnés)

Publié : mar. 04/mai/2010 23:49
par Ar-S
Merci pour le code, je vais étudier ça.

Re: Librairie SkinWindow (Fenêtres et gadgets skinnés)

Publié : jeu. 06/mai/2010 19:32
par Ar-S

Code : Tout sélectionner

UsePNGImageDecoder() 

;boutons interface
#C_UPLOAD = $0000FF
#C_ADD = $0000BA
#C_AFFICHE=$000084
#C_OPENLIST=$30FF00
#C_NEWLIST=$21B000
#C_DEL=$136700
#C_LEAVE=$2C08
; 3 boutons du haut
#C_ABOUT=$CB7968
#C_UPDATE=$A90077
#C_DONATE=$FF00B4
;fond
#C_Fond =$FFFFFF

Global rep$=GetCurrentDirectory()
Global img_SelectHot,img_Select,img_Normal,img_Item,img_Hot,img_Disable
Global L,H,FenX,FenY


L=GetSystemMetrics_(#SM_CXSCREEN)
H=GetSystemMetrics_(#SM_CYSCREEN)
FenX=L-705 : FenY=H-500
LisX=230 : LisY=402

; On charge les images
img_Normal=LoadImage(10,rep$+"skin/Normal.png")
img_Disable=LoadImage(11,rep$+"skin/Disable.png")
img_Hot=LoadImage(12,rep$+"skin/Hot.png")
img_Select=LoadImage(13,rep$+"skin/Selected.png")
img_SelectHot=LoadImage(14,rep$+"skin/SelectedHot.png")
img_Item=LoadImage(15,rep$+"skin/Item.png")

; Vérifiactaion que les images se sont chargées
If img_Normal=0 Or img_Disable=0 Or img_Hot=0 Or img_Select=0 Or img_SelectHot=0 Or img_Item=0
  MessageRequester("Erreur","initialisation des images impossible")
End
EndIf

If  CreateSkinWindow(0, FenX, FenY, "test", #PB_Window_Invisible, 0, img_Normal, img_Hot, img_Select, img_SelectHot, img_Disable, Image_Item, 0, 0, 0) 
	StickyWindow(0,1)
	SkinItemMoveWindow(#C_Fond, 1)
	HideSkinWindow(0, 0)
	
	Repeat
		event = WaitSkinWindowEvent()
		; Si on a le focus sur la fenêtre, on affiche l'écran dans l'état actif
    If GetActiveSkinWindow() = 0
			DisableSkinWindow(0,0)
    Else
      DisableSkinWindow(0,1)
    EndIf  
		
		Select EventSkinWindow() ; Fenêtre skinnée qui a reçu un évènement
      Case 0 ; Fenêtre principale
				Select EventSkinItem() ; Item appuyé
            
          Case #C_UPLOAD
            
            SetSkinItemState(#C_UPLOAD, 1)
            SetSkinItemState(#C_ADD, 0)
            
          Case #C_ADD
            
            SetSkinItemState(#C_ADD, 1)
            SetSkinItemState(#C_UPLOAD, 0)
            
        EndSelect
    EndSelect
    
  Until event = #PB_Event_CloseWindow
	
Else
  MessageRequester(" ","erreur")
  End
EndIf
Est-ce que UsePNGImageDecoder() est nécessaire ?
Est-ce que cette syntaxe est correcte pour CreateSkinWindow ?
Pour le moment ma fenêtre n'apparait pas...

Re: Librairie SkinWindow (Fenêtres et gadgets skinnés)

Publié : jeu. 06/mai/2010 19:48
par Progi1984
Ar-S a écrit :Est-ce que UsePNGImageDecoder() est nécessaire ?
Oui, vu que tu charges des images (LoadImage) au format PNG.

Re: Librairie SkinWindow (Fenêtres et gadgets skinnés)

Publié : jeu. 06/mai/2010 20:08
par Ar-S
Que j'essaye

Code : Tout sélectionner

If  CreateSkinWindowFromTheme(0, FenX, FenY, "test", #PB_Window_Invisible, 0,"skin")
ou

Code : Tout sélectionner

If  CreateSkinWindow(0, FenX, FenY, "test", #PB_Window_Invisible, 0, img_Normal, img_Hot, img_Select, img_SelectHot, img_Disable, Image_Item, 0, 0, 0) 
ça ne marche pas, pourtant cette fois j'ai les images citées bien présentes