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

Programmation d'applications complexes
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

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

Message par Backup »

ben je suppose que les différentes images représentes les différents état des gadgets button .. non?
gnozal
Messages : 832
Inscription : mar. 07/déc./2004 17:35
Localisation : France
Contact :

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

Message par gnozal »

Impressionnant, bravo !
Malheureusement, à partir de XP seulement.
Le Soldat Inconnu
Messages : 4312
Inscription : mer. 28/janv./2004 20:58
Localisation : Clermont ferrand OU Olsztyn
Contact :

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

Message par Le Soldat Inconnu »

Mise à jour du code et de l'exemple. J'ai corrigé une erreur sur l'affichage d'image sur un bouton skinné (comme une icône par exemple)

Sinon, j'ai recompilé la lib au complet. Pour 32bits uniquement.
sur 64bits, à vous de compiler la lib avec TailBite.

Sinon, tous les exemples fonctionnent avec ou sans la lib d'installer.
Je fignolerai l'exemple 4 plus tard afin de présenter toutes les fonctions de la librairie.

Voir premier message pour télécharger
Je ne suis pas à moitié Polonais mais ma moitié est polonaise ... Vous avez suivi ?

[Intel quad core Q9400 2.66mhz, ATI 4870, 4Go Ram, XP (x86) / 7 (x64)]
Avatar de l’utilisateur
Ar-S
Messages : 9539
Inscription : dim. 09/oct./2005 16:51
Contact :

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

Message par Ar-S »

Je viens de survoler la lib pour la creation de fenêtre. C'est excellent :)
Pas encore testé les gadgets.

petit rendu :mrgreen:
Image

ça m'a donnée une idée de protection pour le moins originale :)
Après une période d"essai d'un logiciel trial, une chenille apparaitrait et boufferait tranquillement la fenêtre :D
~~~~Règles du forum ~~~~
⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳Ar-S ˳.⋅ॱ˙˙ॱ⋅.˳˳.⋅
W11x64 PB 6.x
Section HORS SUJET : ICI
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
UPLOAD D'IMAGES : Uploader des images de vos logiciels
Avatar de l’utilisateur
Ar-S
Messages : 9539
Inscription : dim. 09/oct./2005 16:51
Contact :

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

Message par Ar-S »

J'essaye d'approfondir ma découverte de ta lib, j'avoue que je peine un peu à tout piger.

- Dans l'example 4, à quoi correspond #G_Resultat ?
Je ne trouve pas la couleur $BB2F14 sur Item.png

- Si j'ai bien compris dans

Code : Tout sélectionner

If CreateSkinWindowFromTheme(0, 0, 0, "radio", #PB_Window_ScreenCentered | #PB_Window_Invisible, 0, "radio1")
radio1 correspond à mon répertoire contenant la skin j'ai bon ?

Voilà mon code actuel sachant que j'ai un repertoire radio1 contenant les images : SelectedHot.png, Hot.png, Disable.png et Selected.png

Code : Tout sélectionner

; Auteur : Le Soldat Inconnu
; Version de PB : 4
;
; Explication du programme :
; Créer une fenêtre totalement skinnée (Le fond et les boutons)


; 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

; Item du skin, le numéro correspond à la couleur de l'item (Voir image "Exemple 4\Item.png"
#G_Jouer = $00FF00
#G_Stop = $FF0000
#G_Liste = $0000FF
#G_AFF = $525252
#G_Fond = $FFFFFF
#G_Quit = $8400FF

; Enumeration des gadgets
Enumeration
	#G_TestGadgetClassique
EndEnumeration


; Créer une fenetre skinnée à partir des images du dossier "radio1"
If CreateSkinWindowFromTheme(0, 0, 0, "radio", #PB_Window_ScreenCentered | #PB_Window_Invisible, 0, "radio1")
	
	; Définition des textes des items
	SetSkinItemText(#G_Jouer, "Jouer")
	SetSkinItemText(#G_Stop, "Stop")
	SetSkinItemText(#G_Liste, "Liste")
  
	; On définie l'item #G_Resultat comme élement pertettant de déplacer la fenêtre
	; Dans tous les cas, le fond de la fenêtre permet de déplacer la fenêtre
	SkinItemMoveWindow(#G_Fond, 1)
	
	; On ajoute un gadget
	StringGadget(1,50,220,150,20,"test")
	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
			SetSkinItemState(#G_Fond, 1)
    Else
			SetSkinItemState(#G_Fond, 0)
    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_Jouer
						SetSkinItemState(#G_Jouer, 1)
            MessageRequester("JOUER"," ")
          Case #G_Stop
						SetSkinItemState(#G_Stop, 1)
            MessageRequester("STOP"," ")
          Case #G_Liste
            SetSkinItemState(#G_Liste, 1)
						MessageRequester("LISTE"," ")
          Case #G_Quit
						event = #PB_Event_CloseWindow
        EndSelect
    EndSelect
		
		
  Until event = #PB_Event_CloseWindow
	
Else
  Debug "ça chie"
  
EndIf
~~~~Règles du forum ~~~~
⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳Ar-S ˳.⋅ॱ˙˙ॱ⋅.˳˳.⋅
W11x64 PB 6.x
Section HORS SUJET : ICI
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
UPLOAD D'IMAGES : Uploader des images de vos logiciels
Le Soldat Inconnu
Messages : 4312
Inscription : mer. 28/janv./2004 20:58
Localisation : Clermont ferrand OU Olsztyn
Contact :

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

Message par Le Soldat Inconnu »

Il est certain que je dois faire une aide :)

Alors par défaut, il faut au minimum l'image Normal.png et Item.png, les autres images sont optionnelles

Liste des images :
Normal : Etat normal des items (ou boutons) sans survol de la souris, Etat de la fenêtre sans focus
Hot : Etat normal des items (ou boutons) avec survol de la souris, Etat de la fenêtre avec focus
Selected : Etat des items sélectionnés sans survol de la souris (on peut par exemple imaginé avoir dessiné une checkbox, cet état serait coché sans survol de la souris)
SelectedHot : Etat des items sélectionnés avec survol de la souris
Disable : Etat des items disable, Etat de la fenêtre disable
FontSize : taille de la police utilisé dans les items (Couleur noir, pas de texte affiché, sinon, la couleur doit être en nuance de gris, sachant que RGB(80,80, 80) donne une police de taille 8, RGB(90,90,90) donne une police de taille 9, etc....) (Si l'image n'existe pas, taille de police par défaut du système)
FontColor : Couleur du texte des items sans survol de la souris (si l'image n'existe pas, texte en noir)
FontHotColor : Couleur du texte des items avec survol de la souris (si l'image n'existe pas, texte en noir)


Le paramètre "apparence" de CreateSkinWindowFromTheme() correspond au répertoire contenant les images. (Tu peux aussi créer ta fenêtre avec CreateSkinWindow(), il faut alors donner l'ID de chaque image, ou 0 si on ne veut pas l'utiliser)


La couleur que tu ne trouves pas, c'est celle de la grande zone en haut, couleur bleu foncé.


pour ton code : Pour le déplacement de la fenêtre, tu n'es pas obligé de mettre qlq chose avec SkinItemMoveWindow(), chez moi, j'ai utilisé cette fonction pour définir, en plus du fond de la fenêtre, un item pour le déplacement de la fenêtre. En gros je peux cliquer sur le fond ou sur l'item pour déplacer la fenêtre. (C'est même un peu plus complexe car j'ai lié #G_ResultatBordure avec #G_Resultat donc #G_ResultatBordure permet aussi le déplacement de la fenêtre)
le reste, c'est bon :)


J'essaierais de faire l'aide ce week-end si j'ai le temps.
Je ne suis pas à moitié Polonais mais ma moitié est polonaise ... Vous avez suivi ?

[Intel quad core Q9400 2.66mhz, ATI 4870, 4Go Ram, XP (x86) / 7 (x64)]
Avatar de l’utilisateur
Ar-S
Messages : 9539
Inscription : dim. 09/oct./2005 16:51
Contact :

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

Message par Ar-S »

Merci pour ces précisions utiles.

Si j'ai compris, SetSkinItemState(#G_Fond, 0) demande l'affichage de l'image Disable.png ?
parce que dans mon skin, l'image diable.png que j'ai toute grisée n'apparait pas.

Ensuite j'ai une réaction assez étrange du logiciel.
Les boutons ne sont pas bien interprétés par rapport aux couleurs de item.png.
En fait j'ai fait un skin avec 4 boutons seulement pour tester.
- Jouer
- Stop
- Liste
- Quitter => X

Et bien Lorsque l'on clique sur quitter par exemple, il ne se passe rien, or c'est bien la couleur $8400ff qui le définie (le violet).
au clique il devrait faire un messagerequester() mais rien :(
Pourtant au survol les boutons changent bien d'apparence.
Image voir en haut à droite de l'image.

Enfin, le texte des boutons n'apparait plus (il apparaissait jusqu'ici.)

Code : Tout sélectionner

; Auteur : Le Soldat Inconnu
; Version de PB : 4

; 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

; Item du skin, le numéro correspond à la couleur de l'item (Voir image "Exemple 4\Item.png"
#G_Jouer = $00FF00
#G_Stop = $FF0000
#G_Liste = $0000FF
#G_AFF = $525252
#G_Fond = $FFFFFF
#G_Quit = $8400FF

; Enumeration des gadgets
Enumeration
	#G_TestGadgetClassique
EndEnumeration


; Créer une fenetre skinnée à partir des images du dossier "radio1"
If CreateSkinWindowFromTheme(0, 0, 0, "radio", #PB_Window_ScreenCentered | #PB_Window_Invisible, 0, "radio1")
	
	; Définition des textes des items
	SetSkinItemText(#G_Jouer, "Jouer")
	SetSkinItemText(#G_Stop, "Stop")
	SetSkinItemText(#G_Liste, "Liste")
  
	; On définie l'item #G_Resultat comme élement pertettant de déplacer la fenêtre
	; Dans tous les cas, le fond de la fenêtre permet de déplacer la fenêtre
	SkinItemMoveWindow(#G_Fond, 1)
	
	; On ajoute un gadget
	StringGadget(1,49,180,150,20,"test")
	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
			SetSkinItemState(#G_Fond, 1)
      
    Else
			SetSkinItemState(#G_Fond, 0)
      
    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_Jouer
						SetSkinItemState(#G_Jouer, 1)
            SetSkinItemState(#G_Stop, 0)
            MessageRequester("JOUER"," ")
          Case #G_Stop
						SetSkinItemState(#G_Stop, 1)
            SetSkinItemState(#G_Jouer, 0)
            MessageRequester("STOP"," ")
            
          Case #G_Liste
            SetSkinItemState(#G_Liste, 1)
						MessageRequester("LISTE"," ")
          Case #G_Quit
            MessageRequester("QUIT"," ")
						event = #PB_Event_CloseWindow
        EndSelect
    EndSelect

  Until event = #PB_Event_CloseWindow
	
Else
  Debug "ça chie"
  
EndIf
~~~~Règles du forum ~~~~
⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳Ar-S ˳.⋅ॱ˙˙ॱ⋅.˳˳.⋅
W11x64 PB 6.x
Section HORS SUJET : ICI
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
UPLOAD D'IMAGES : Uploader des images de vos logiciels
Avatar de l’utilisateur
Ar-S
Messages : 9539
Inscription : dim. 09/oct./2005 16:51
Contact :

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

Message par Ar-S »

Après modification de item.png, l'écriture est a nouveau visible :)
Vu que j'avais mis FFFFFF pour la couleur de fond c'est logique.

Par contre, j'ai toujours un soucis d'inversion du positionnement du texte et des réactions bizarres des boutons.

Image : à renommer en Item.jpg
Image
Image : à renommer en Normal.png
Image
Image : à renommer en Hot.png
Image
EDIT
Je crois que j'ai pigé ce qui n'allais pas !!
Ta couleur BB2F14 est signalé en BGR, enfin je pense.
Sous toshop ça apparait comme ça 142FBB !
Je pense que la couille viens de la, je teste et ré-édite.

Edit 2

ça venait bien se ça. Maintenant ça passe nikel. Comment ça se fait que tu ais les couleurs indiquées en BGR ?

J'ai été égaré car dans mon lot de couleurs, certaines passaient car elle représentait des "palindromes" :D

voilà le code à modifier

Code : Tout sélectionner

#G_Jouer = $00FF00 ; palaindrome
#G_Stop = $0000FF
#G_Liste = $FF0000
#G_AFF = $525252 ; palindrome
#G_Fond = $FFFFFF ; palindrome
#G_Quit = $FF0084
Dernière modification par Ar-S le ven. 23/avr./2010 20:22, modifié 1 fois.
~~~~Règles du forum ~~~~
⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳Ar-S ˳.⋅ॱ˙˙ॱ⋅.˳˳.⋅
W11x64 PB 6.x
Section HORS SUJET : ICI
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
UPLOAD D'IMAGES : Uploader des images de vos logiciels
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

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

Message par Backup »

ben moi j'veux une doc , claire et détaillée, avec pleins d'images dedans
pour bien m'expliquer comment ça marche ! :twisted: :twisted: :twisted:
Avatar de l’utilisateur
Ar-S
Messages : 9539
Inscription : dim. 09/oct./2005 16:51
Contact :

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

Message par Ar-S »

Disable.png
Image
Excepté Disable.png qui n'est pas repéré (pas de changement lorsque la fenêtre n'a plus le focus), j'ai réussi à faire ce que je voulais.
~~~~Règles du forum ~~~~
⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳Ar-S ˳.⋅ॱ˙˙ॱ⋅.˳˳.⋅
W11x64 PB 6.x
Section HORS SUJET : ICI
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
UPLOAD D'IMAGES : Uploader des images de vos logiciels
Le Soldat Inconnu
Messages : 4312
Inscription : mer. 28/janv./2004 20:58
Localisation : Clermont ferrand OU Olsztyn
Contact :

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

Message par Le Soldat Inconnu »

Alors SetSkinItemState() permet de passer de l'état normal à l'état sélectionné donc de Normal.png à Selected.PNG
Pour l'état disable, c'est DisableSkinItem()

Chouette ton apparence :)
Une précision, pour ton image Item.png qui donne la forme, la zone de couleur représentant ton bouton doit être net (pas de dégradé) et doit être de la même taille ou un poil plus grand que ton bouton afin de le recouvrir complètement.

Pour les couleurs, en PB, elle sont écrites en BGR, je n'y peux rien.

Mise à jour de la librairie : Les éléments Disable renvoyaient les clics (oups)
Je ne suis pas à moitié Polonais mais ma moitié est polonaise ... Vous avez suivi ?

[Intel quad core Q9400 2.66mhz, ATI 4870, 4Go Ram, XP (x86) / 7 (x64)]
Le Soldat Inconnu
Messages : 4312
Inscription : mer. 28/janv./2004 20:58
Localisation : Clermont ferrand OU Olsztyn
Contact :

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

Message par Le Soldat Inconnu »

pour ton Item, comme cela, dans l'idée
Image
Je ne suis pas à moitié Polonais mais ma moitié est polonaise ... Vous avez suivi ?

[Intel quad core Q9400 2.66mhz, ATI 4870, 4Go Ram, XP (x86) / 7 (x64)]
Avatar de l’utilisateur
Ar-S
Messages : 9539
Inscription : dim. 09/oct./2005 16:51
Contact :

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

Message par Ar-S »

Ok pour DisableSkinItem() je vais tester
Je suis en train de modifier la skin pour ajouter des boutons, je retourne mes impressions des que possible.
~~~~Règles du forum ~~~~
⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳Ar-S ˳.⋅ॱ˙˙ॱ⋅.˳˳.⋅
W11x64 PB 6.x
Section HORS SUJET : ICI
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
UPLOAD D'IMAGES : Uploader des images de vos logiciels
Avatar de l’utilisateur
Ar-S
Messages : 9539
Inscription : dim. 09/oct./2005 16:51
Contact :

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

Message par Ar-S »

hum je coince toujours avec DisableSkinItem(), si tu pouvais poster une petit exemple.
Merci
~~~~Règles du forum ~~~~
⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳Ar-S ˳.⋅ॱ˙˙ॱ⋅.˳˳.⋅
W11x64 PB 6.x
Section HORS SUJET : ICI
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
UPLOAD D'IMAGES : Uploader des images de vos logiciels
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

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

Message par Backup »

au fait, il sera possible de skiner une interface avec onglets ?
Répondre