Ribbon > avoir vos avis de ce test...

Vous débutez et vous avez besoin d'aide ? N'hésitez pas à poser vos questions
Avatar de l’utilisateur
Micoute
Messages : 2584
Inscription : dim. 02/oct./2011 16:17
Localisation : 35520 La Mézière

Re: Ribbon > avoir vos avis de ce test...

Message par Micoute »

Bonjour GallyHC,

j'ai essayé ton logiciel et je le trouve très prometteur, car il me donne des idées !

Par contre dans la DataSection, j'ai du ôter includes\, donc à la place de :

Code : Tout sélectionner

ribbon_icon_01_01: : IncludeBinary "includes\datas\ribbon_icon_arrow01.png"
ça devient :

Code : Tout sélectionner

ribbon_icon_01_01: : IncludeBinary "datas\ribbon_icon_arrow01.png"
sinon, le compilateur ne trouve pas les fichiers, je travaille avec la version 5.30 x86
Microsoft Windows 10 Famille 64 bits : Carte mère : ASRock 970 Extreme3 R2.0 : Carte Graphique NVIDIA GeForce RTX 3080 : Processeur AMD FX 6300 6 cœurs 12 threads 3,50 GHz PB 6.20 LTS (x64)
Un homme doit être poli, mais il doit aussi être libre !
Avatar de l’utilisateur
GallyHC
Messages : 1708
Inscription : lun. 17/déc./2007 12:44

Re: Ribbon > avoir vos avis de ce test...

Message par GallyHC »

Bonjour,

J'avais vu cela avec la version "5.30" de purebasic, ce qui est différent avec toutes les versions extérieures. Avec les version LTS j'ai déjà du changer les ":", par des ": :" dans les "datasection". Mais bon ce n'est pas non plus de très grosses modifications.

Cordialement,
GallyHC
Configuration : Tower: Windows 10 (Processeur: i7 "x64") (Mémoire: 16Go) (GeForce GTX 760 - 2Go) - PureBasic 5.72 (x86 et x64)
Avatar de l’utilisateur
microdevweb
Messages : 1802
Inscription : mer. 29/juin/2011 14:11
Localisation : Belgique

Re: Ribbon > avoir vos avis de ce test...

Message par microdevweb »

Bonjour j'ai fait un module pour avoir le résultat ci-dessous

Image

Image

https://www.mediafire.com/?3z8740006wn90t6

Voila le fonctionnement

Code : Tout sélectionner

 Procedure MakeToolBar()
            ToolsBar::Init(#Tools,#MainForm,0,0,-1,100)
            ToolsBar::AddOnglet(#Tools,#Main,Trs::Send("Accueil@Main"),#True)
            ToolsBar::AddGroupe(#Tools,#Main,304,Trs::Send("Projet@Project"))
            
            ToolsBar::AddImageButton(#Tools,#Main,#GrProject,#NewFile,Img_NewFile,2,2,50,50)
            ToolsBar::AddImageButtonEventProcedure(#Tools,#Main,#GrProject,#NewFile,@NewProject())
            
            ToolsBar::AddImageButton(#Tools,#Main,#GrProject,#OpenFile,Img_OpenFile,50,2,50,50)
            ToolsBar::AddImageButton(#Tools,#Main,#GrProject,#EditProject,Img_EditProject,100,2,50,50)

            ToolsBar::AddImageButton(#Tools,#Main,#GrProject,#CloseProject,Img_CloseProject,150,2,50,50)

            ToolsBar::AddImageButton(#Tools,#Main,#GrProject,#SaveFile,Img_SaveFile,200,2,50,50)

            ToolsBar::AddImageButton(#Tools,#Main,#GrProject,#SaveAsFile,Img_SaveAsFile,250,2,50,50)
            
            ToolsBar::AddGroupe(#Tools,#Main,100,Trs::Send("Paramètres@Parameters"))
            
            ToolsBar::AddImageButton(#Tools,#Main,#GrParameter,#Parameters,Img_Parameters,25,2,50,50)
            
            ToolsBar::AddOnglet(#Tools,#DataBase,Trs::Send("Gestion de la base de donnée@Data-Base Management"))
            ToolsBar::AddGroupe(#Tools,#DataBase,304,Trs::Send("Analyse@Analysis"))
            
            ToolsBar::AddImageButton(#Tools,#DataBase,#GrAnalysic,#NewAnalysis,Img_NewAnalysis,2,2,50,50)
            ToolsBar::AddImageButtonEventProcedure(#Tools,#DataBase,#GrAnalysic,#NewAnalysis,@NewAnalysis())
            
            ToolsBar::AddImageButton(#Tools,#DataBase,#GrAnalysic,#OpenAnalysis,Img_OpenAnalysis,50,2,50,50)
            ToolsBar::AddImageButtonEventProcedure(#Tools,#DataBase,#GrAnalysic,#OpenAnalysis,@OpenAnalysis())
            
            ToolsBar::AddImageButton(#Tools,#DataBase,#GrAnalysic,#EditAnalysis,Img_EditAnalysis,100,2,50,50)
            ToolsBar::AddImageButtonEventProcedure(#Tools,#DataBase,#GrAnalysic,#EditAnalysis,@EditAnalysis())
            
            ToolsBar::AddImageButton(#Tools,#DataBase,#GrAnalysic,#ImportDb,Img_ImportDb,150,2,50,50)
            
            ToolsBar::AddImageButton(#Tools,#DataBase,#GrAnalysic,#SaveAnalysis,Img_SaveFile,200,2,50,50)
            ToolsBar::AddImageButtonEventProcedure(#Tools,#DataBase,#GrAnalysic,#SaveAnalysis,@BtSaveAnalysis())

            ToolsBar::AddImageButton(#Tools,#DataBase,#GrAnalysic,#SaveAsFile,Img_SaveAsFile,250,2,50,50)
            
            ToolsBar::AddGroupe(#Tools,#DataBase,208,Trs::Send("Options de fichiers@Files functions"))
            
            ToolsBar::AddImageButton(#Tools,#DataBase,#GrFileFunctions,#NewData,Img_NewData,0,2,50,50)
            ToolsBar::AddImageButtonEventProcedure(#Tools,#DataBase,#GrFileFunctions,#NewData,@NewFile())
            
            ToolsBar::AddImageButton(#Tools,#DataBase,#GrFileFunctions,#EditData,Img_EditData,50,2,50,50)
            ToolsBar::AddImageButtonEventProcedure(#Tools,#DataBase,#GrFileFunctions,#EditData,@EditFile())
            
            ToolsBar::AddImageButton(#Tools,#DataBase,#GrFileFunctions,#DeleteData,Img_DeleteData,100,2,50,50)

            ToolsBar::AddImageButton(#Tools,#DataBase,#GrFileFunctions,#EditRubric,Img_EditRubric,150,2,50,50)
            ToolsBar::AddImageButtonEventProcedure(#Tools,#DataBase,#GrFileFunctions,#EditRubric,@RubricTab())
            
            ToolsBar::AddGroupe(#Tools,#DataBase,130,Trs::Send("Mode de sélection@Selected mode"))
            
            ToolsBar::AddImageButton(#Tools,#DataBase,#GrSelectMode,#SelectedMode,Img_Hand,10,2,50,50,#True)
            ToolsBar::AddImageButtonEventProcedure(#Tools,#DataBase,#GrSelectMode,#SelectedMode,@ModeSelect())
            
            ToolsBar::AddImageButton(#Tools,#DataBase,#GrSelectMode,#LinkMode,Img_Link,60,2,50,50,#True)
            ToolsBar::AddImageButtonEventProcedure(#Tools,#DataBase,#GrSelectMode,#LinkMode,@ModeLink())
            
            ToolsBar::AddGroupe(#Tools,#DataBase,140,Trs::Send("Options de liaisons@Link functions"))
            
            ToolsBar::AddImageButton(#Tools,#DataBase,#GrLinkFunctions,#EditLink,Img_EditData,15,2,50,50,#True)

            ToolsBar::AddImageButton(#Tools,#DataBase,#GrLinkFunctions,#DeleteLink,Img_DeleteData,65,2,50,50,#True)
            
            ToolsBar::AddGroupe(#Tools,#DataBase,155,Trs::Send("Grille@Grid functions"))
            
            ToolsBar::AddImageButton(#Tools,#DataBase,#GrGridFunction,#GridOnOf,Img_Grid,10,2,50,50,#True)
            ToolsBar::AddImageButtonEventProcedure(#Tools,#DataBase,#GrGridFunction,#GridOnOf,@BtGrid())
            
            ToolsBar::AddLabel(#Tools,#DataBase,#GrGridFunction,65,0,70,25,Trs::Send("Taille grille@Grid size"),ToolsBar::#Middle)
            ToolsBar::SetLabelFont(LoadFont(#PB_Any,"Arial",9),0,$E28422)
            
            ToolsBar::AddSpin(#Tools,#DataBase,#GrGridFunction,#GridSize,65,20,70,25,5,30,15)
            GridSize=15
            ToolsBar::AddSpinEventProcedure(#Tools,#DataBase,#GrGridFunction,#GridSize,@ManageGridSize())
            ToolsBar::AddOngletProcedure(#Tools,@ManageOnglet())
            
            ToolsBar::AddOnglet(#Tools,#Form,Trs::Send("Gestion des fenêtres@Windows Management"))
            ToolsBar::AddGroupe(#Tools,#Form,200,Trs::Send("Génération automatique@Automatic generation"))
            
            ToolsBar::SetHelpOnOf(#Tools,#False)
            EtatButton()
            ToolsBar::Show(#Tools)
      EndProcedure
Les image doivent être comme l'image ci-dessous

Image

La première représente l'image normal,la deuxième l'image survolée, la troisième activée si toogle, la dernière quant le bouton est désactivé

Code pour la gestion événementielle

Code : Tout sélectionner

ToolsBar::Event(#Tools)
Je doit encore peaufiner un peux mais voila, si cela peut vous servir

A oui le

Code : Tout sélectionner

Trs::Send("Mode de sélection@Selected mode")
sert à la traduction

Très simple

Code : Tout sélectionner

DeclareModule Trs
      Declare$ Send(Txt$)
      Declare SetLanguage(Language)
      Declare  GetLanguage()
EndDeclareModule 

Module Trs
      Global MyLanguage
     Procedure SetLanguage(Language)
           MyLanguage=Language
     EndProcedure
      Procedure.i  GetLanguage()
            ProcedureReturn MyLanguage
      EndProcedure
      Procedure$ Send(Txt$)
            Protected TxtReturn$
            TxtReturn$=StringField(Txt$,MyLanguage,"@")
            ProcedureReturn TxtReturn$
      EndProcedure
EndModule
Windows 10 64 bits PB: 5.70 ; 5.72 LST
Work at Centre Spatial de Liège
Mesa
Messages : 1126
Inscription : mer. 14/sept./2011 16:59

Re: Ribbon > avoir vos avis de ce test...

Message par Mesa »

@microdevweb : Je déterre un peu, mais pourrais-tu poster un exemple entièrement fonctionnel (les images explicatives ont disparu...)

Merci par avance.

M.
Avatar de l’utilisateur
GallyHC
Messages : 1708
Inscription : lun. 17/déc./2007 12:44

Re: Ribbon > avoir vos avis de ce test...

Message par GallyHC »

Bonjour,

J'avais fait quelques modifications et commencé a convertir ce code-source en module (non fini), mais cela donne pour le moment :

Code : Tout sélectionner

DisableASM
CompilerIf Not #PB_Compiler_EnableExplicit
  EnableExplicit
CompilerEndIf

UsePNGImageDecoder()

; ****************************************************************************
; ****************************************************************************
; ****************************************************************************

  CompilerIf Defined(ribbon_item_commande, #PB_Enumeration) = #False
    Enumeration ribbon_item_commande 0 Step 1
      #Ribbon_Button
      #Ribbon_TextBox
      #Ribbon_CheckBox
      #Ribbon_OptionBox
      #Ribbon_ComboBox
      #Ribbon_Image
      #Ribbon_Separator
    EndEnumeration
  CompilerEndIf
  CompilerIf Defined(ribbon_item_option, #PB_Enumeration) = #False
    Enumeration ribbon_item_option
      #Ribbon_Normal        = 1 << 0
      #Ribbon_Toggle        = 1 << 1
      #Ribbon_Toggle_Option = 1 << 2
      #Ribbon_Size_48x64    = 1 << 3
      #Ribbon_Size_96x32    = 1 << 4
      #Ribbon_Size_48x32    = 1 << 5
      #Ribbon_Menu          = 1 << 6
      #Ribbon_Top           = 1 << 7
      #Ribbon_Bottom        = 1 << 8
      #Ribbon_Center        = 1 << 9
    EndEnumeration
  CompilerEndIf
  CompilerIf Defined(ribbon_color, #PB_Enumeration) = #False
    Enumeration ribbon_color 0 Step 1
      #Ribbon_Default
      #Ribbon_Red
      #Ribbon_Green
      #Ribbon_Blue
      #Ribbon_Yellow
      #Ribbon_Pink
      #Ribbon_Dark
    EndEnumeration
  CompilerEndIf
  CompilerIf Defined(ribbon_menu, #PB_Enumeration) = #False
    Enumeration ribbon_menu
      #PB_Ribbon_Menu_System
      #PB_Ribbon_Menu_Help
    EndEnumeration    
  CompilerEndIf
  
; ****************************************************************************
; ****************************************************************************
; ****************************************************************************

DeclareModule RibbonBar
  ;
  DisableASM
  CompilerIf Not #PB_Compiler_EnableExplicit
    EnableExplicit
  CompilerEndIf
  ;
  CompilerIf Defined(_RIBBON_MAX_BUTTON, #PB_Constant) = #False
    #_RIBBON_MAX_BUTTON = 100
  CompilerEndIf
  CompilerIf Defined(ribbon_item_commande, #PB_Enumeration) = #False
    Enumeration ribbon_item_commande 0 Step 1
      #Ribbon_Button
      #Ribbon_TextBox
      #Ribbon_CheckBox
      #Ribbon_OptionBox
      #Ribbon_ComboBox
      #Ribbon_Image
      #Ribbon_Separator
    EndEnumeration
  CompilerEndIf
  CompilerIf Defined(ribbon_item_option, #PB_Enumeration) = #False
    Enumeration ribbon_item_option
      #Ribbon_Normal        = 1 << 0
      #Ribbon_Toggle        = 1 << 1
      #Ribbon_Toggle_Option = 1 << 2
      #Ribbon_Size_48x64    = 1 << 3
      #Ribbon_Size_96x32    = 1 << 4
      #Ribbon_Size_48x32    = 1 << 5
      #Ribbon_Menu          = 1 << 6
      #Ribbon_Top           = 1 << 7
      #Ribbon_Bottom        = 1 << 8
      #Ribbon_Center        = 1 << 9
    EndEnumeration
  CompilerEndIf
  CompilerIf Defined(ribbon_color, #PB_Enumeration) = #False
    Enumeration ribbon_color 0 Step 1
      #Ribbon_Default
      #Ribbon_Red
      #Ribbon_Green
      #Ribbon_Blue
      #Ribbon_Yellow
      #Ribbon_Pink
      #Ribbon_Dark
    EndEnumeration
  CompilerEndIf
  CompilerIf Defined(ribbon_menu, #PB_Enumeration) = #False
    Enumeration ribbon_menu
      #PB_Ribbon_Menu_System
      #PB_Ribbon_Menu_Help
    EndEnumeration    
  CompilerEndIf
  ;
  ;- DECLARATION PUBLIQUES DU MODULE.
  ;
  Declare   _CreateGadget           (gadget.i, text.s = #Null$)
  Declare   _AddRibbonTab           (gadget.i, name.s)
  Declare   _AddRibbonItem          (gadget.i, tab_number.i, gadget_number.i, name.s, type.i, option.i, image.i)
  Declare.i _RibbonColor            (gadget.i, Color.l)
  Declare   _RibbonItemColor        (gadget.i, item.i, color.i)
  Declare   _AttachRibbonButtonPopup(gadget.i, button.i, popup.i)
  Declare.i _DisableMenuRibbon      (gadget.i, state.b)
  Declare   _DisableGadget          (gadget.i, value.b)
  Declare   _HideGadget             (gadget.i, value.b)
  Declare   _FreeGadget             (gadget.i)
  
EndDeclareModule
;
;
;
Module RibbonBar
  ;
  DisableASM
  CompilerIf Not #PB_Compiler_EnableExplicit
    EnableExplicit
  CompilerEndIf
  ;
  ;- DECLARATION PRIVES DU MODULE.
  ;
  UsePNGImageDecoder()
  ;
  Structure _STRUCTURE_RIBBON_BUTTON
    RIBBON_PAGE_NUMBER.i
    RIBBON_SELS_TOGGLE.i
    RIBBON_PAGE_GADGET.i      [#_RIBBON_MAX_BUTTON]
    RIBBON_PAGE_VALPOS.i      [#_RIBBON_MAX_BUTTON]
    RIBBON_PAGE_HANDLE.i      [#_RIBBON_MAX_BUTTON]
    RIBBON_PAGE_TOGGLE.i      [#_RIBBON_MAX_BUTTON]
    RIBBON_PAGE_STEXTE.s      [#_RIBBON_MAX_BUTTON]
    RIBBON_PAGE_BACKCOLOR.i   [#_RIBBON_MAX_BUTTON]
    RIBBON_PAGE_FRONTCOLOR.i  [#_RIBBON_MAX_BUTTON]
    RIBBON_PAGE_IIMAGE.i      [#_RIBBON_MAX_BUTTON]
    RIBBON_PAGE_OPTION.i      [#_RIBBON_MAX_BUTTON]
    RIBBON_PAGE_BUTTONMENU.i  [#_RIBBON_MAX_BUTTON]
  EndStructure
  Structure _STRUTURE_RIBBON
    WINDOW.i
    WINDOWID.i
    gadget.i
    gadgetid.i
    WINDOW_X.l
    WINDOW_Y.l
    BORDER_X.l
    BORDER_Y.l
    TITLE_Y.l
    TAB_X.l
    TAB_Y.l
    RIBBON_MENU_X.l
    RIBBON_MENU_DISABLE.b
    RIBBON_FONT_ID1.i
    RIBBON_FONT_ID2.i
    RIBBON_FONT_ID3.i
    RIBBON_TABBAR_NUMBER.l
    RIBBON_TABBAR_SELECT.l
    Array RIBBON_TABBAR   .s(1)
    Array RIBBON_TABPAGE  ._STRUCTURE_RIBBON_BUTTON(1)
  EndStructure  
  
  Structure _STRUTURE_GADGETCOLOR
    BackgroundColor.i
    BorderColor.i
  	GadgetBackground.i
  	GadgetLightColor.i
  	GadgetTextColor.i
  	GadgetShadowColor.i
  	FontID.i
  EndStructure
  Structure _STRUTURE_RIBBONBAR
    window.i
    gadget.i
    gadgetid.i
    hide.b
    disable.b
    ;
    _image_container.i
  EndStructure
  Global NewMap _CREATE_RIBBON._STRUTURE_RIBBON()
  Global.i _SAV_MOUSE_X, _SAV_MOUSE_Y, _CLC_BUTTON, _SAV_BUTTON, _SAV_COLOR = 3
  Global COLORGADGET_CONFIG._STRUTURE_GADGETCOLOR
  ;
  With COLORGADGET_CONFIG
    \BackgroundColor    = GetSysColor_(#COLOR_WINDOW)
    If \BackgroundColor = $FFFFFF Or \BackgroundColor = 0
      \BackgroundColor  = GetSysColor_(#COLOR_BTNFACE)
    EndIf
    \BorderColor        = GetSysColor_(#COLOR_WINDOWFRAME )
  	\GadgetShadowColor  = $444444
  	\GadgetBackground   = $d4d4d4
  	\GadgetLightColor   = $969696
  	\GadgetTextColor    = $ffffff
  EndWith
  ;
  Global Dim _RIBBON_tabColor_Default.i(14)
  _RIBBON_tabColor_Default(0)         = $6e6e6e        ; WINDOW BORDER COLOR.
  _RIBBON_tabColor_Default(1)         = $a59b8f        ; RIBBON BORDER COLOR AND SELECT BUTTON. 
  _RIBBON_tabColor_Default(2)         = $d8d2cb        ; BUTTON NORMAL BORDER COLOR.
  _RIBBON_tabColor_Default(3)         = $877b6d        ; ICON BACKGROUND COLOR.
  _RIBBON_tabColor_Default(4)         = $c7c1ba        ; TITLE BACKGROUND COLOR.
  _RIBBON_tabColor_Default(5)         = $f7f6f5        ; RIBBON BACKGROUND COLOR.
  _RIBBON_tabColor_Default(6)         = $e8e6e3        ; BIBBON TAB BACKGROUND COLOR. 
  _RIBBON_tabColor_Default(7)         = $d8d2cb        ;
  _RIBBON_tabColor_Default(8)         = $f0efee        ;
  _RIBBON_tabColor_Default(9)         = $a59b8f        ;
  _RIBBON_tabColor_Default(10)        = $e8e6e3        ;
  _RIBBON_tabColor_Default(11)        = $dddddd        ; SELECTED TAB COLOR FRONT.
  _RIBBON_tabColor_Default(12)        = $444444        ; SELECTED TAB COLOR SHADOW.
  _RIBBON_tabColor_Default(13)        = $888888        ; HOVERING TAB COLOR FRONT.
  _RIBBON_tabColor_Default(14)        = $ffffff        ; HOVERING TAB COLOR SHADOW.
  ;
  Global Dim _RIBBON_tabColor_Dark.i(14)
  _RIBBON_tabColor_Dark(0)            = $6c6457        ; WINDOW BORDER COLOR.
  _RIBBON_tabColor_Dark(1)            = $524840        ; RIBBON BORDER COLOR AND SELECT BUTTON. 
  _RIBBON_tabColor_Dark(4)            = $62594f        ; TITLE BACKGROUND COLOR.
  _RIBBON_tabColor_Dark(5)            = $95897b        ; RIBBON BACKGROUND COLOR.
  _RIBBON_tabColor_Dark(6)            = $7c7265        ; BIBBON TAB BACKGROUND COLOR. 
  _RIBBON_tabColor_Dark(7)            = $7b7264        ;
  _RIBBON_tabColor_Dark(8)            = $8a806f        ;
  _RIBBON_tabColor_Dark(9)            = $625a4f        ;
  _RIBBON_tabColor_Dark(10)           = $7e7467        ;
  _RIBBON_tabColor_Dark(11)           = $5a5045        ; SELECTED TAB COLOR FRONT.
  _RIBBON_tabColor_Dark(12)           = $f8f4ee        ; SELECTED TAB COLOR SHADOW.
  _RIBBON_tabColor_Dark(13)           = $666666        ; HOVERING TAB COLOR FRONT.
  _RIBBON_tabColor_Dark(14)           = $322c25        ; HOVERING TAB COLOR SHADOW.
  ;
  Global Dim _RIBBON_tabColor_Grey.i(14)
  _RIBBON_tabColor_Grey(0)            = $6e6e6e        ; WINDOW BORDER COLOR.
  _RIBBON_tabColor_Grey(1)            = $a59b8f        ; RIBBON BORDER COLOR AND SELECT BUTTON. 
  _RIBBON_tabColor_Grey(2)            = $d8d2cb        ; BUTTON NORMAL BORDER COLOR.
  _RIBBON_tabColor_Grey(3)            = $877b6d        ; ICON BACKGROUND COLOR.
  _RIBBON_tabColor_Grey(4)            = $c7c1ba        ; TITLE BACKGROUND COLOR (GREY).
  _RIBBON_tabColor_Grey(5)            = $f7f6f5        ; RIBBON BACKGROUND COLOR.
  _RIBBON_tabColor_Grey(6)            = $e8e6e3        ; BIBBON TAB BACKGROUND COLOR. 
  _RIBBON_tabColor_Grey(7)            = $d8d2cb        ;
  _RIBBON_tabColor_Grey(8)            = $f0efee        ;
  _RIBBON_tabColor_Grey(9)            = $a59b8f        ; (GREY)
  _RIBBON_tabColor_Grey(10)           = $e8e6e3        ; (GREY)
  _RIBBON_tabColor_Grey(11)           = $dddddd        ; SELECTED TAB COLOR FRONT.
  _RIBBON_tabColor_Grey(12)           = $444444        ; SELECTED TAB COLOR SHADOW.
  _RIBBON_tabColor_Grey(13)           = $888888        ; HOVERING TAB COLOR FRONT.
  _RIBBON_tabColor_Grey(14)           = $ffffff        ; HOVERING TAB COLOR SHADOW.
  ;
  Global Dim _RIBBON_tabColor_Red.i(14)
  _RIBBON_tabColor_Red(0)             = $6e6e6e        ; WINDOW BORDER COLOR.
  _RIBBON_tabColor_Red(0)             = $6e6e6e        ; WINDOW BORDER COLOR.
  _RIBBON_tabColor_Red(1)             = $a59b8f        ; RIBBON BORDER COLOR AND SELECT BUTTON. 
  _RIBBON_tabColor_Red(2)             = $d8d2cb        ; BUTTON NORMAL BORDER COLOR.
  _RIBBON_tabColor_Red(3)             = $877b6d        ; ICON BACKGROUND COLOR.
  _RIBBON_tabColor_Red(4)             = $acabd6        ; TITLE BACKGROUND COLOR (RED).
  _RIBBON_tabColor_Red(5)             = $f7f6f5        ; RIBBON BACKGROUND COLOR.
  _RIBBON_tabColor_Red(6)             = $cccbe7        ; BIBBON TAB BACKGROUND COLOR. 
  _RIBBON_tabColor_Red(7)             = $d8d2cb        ;
  _RIBBON_tabColor_Red(8)             = $f0efee        ;
  _RIBBON_tabColor_Red(9)             = $7c7bb9        ; (RED)
  _RIBBON_tabColor_Red(10)            = $cccbe7        ; (RED)
  _RIBBON_tabColor_Red(11)            = $dddddd        ; SELECTED TAB COLOR FRONT.
  _RIBBON_tabColor_Red(12)            = $444444        ; SELECTED TAB COLOR SHADOW.
  _RIBBON_tabColor_Red(13)            = $888888        ; HOVERING TAB COLOR FRONT.
  _RIBBON_tabColor_Red(14)            = $ffffff        ; HOVERING TAB COLOR SHADOW.
  ;
  Global Dim _RIBBON_tabColor_Blue.i(14)
  _RIBBON_tabColor_Blue(0)            = $6e6e6e        ; WINDOW BORDER COLOR.
  _RIBBON_tabColor_Blue(0)            = $6e6e6e        ; WINDOW BORDER COLOR.
  _RIBBON_tabColor_Blue(1)            = $a59b8f        ; RIBBON BORDER COLOR AND SELECT BUTTON. 
  _RIBBON_tabColor_Blue(2)            = $d8d2cb        ; BUTTON NORMAL BORDER COLOR.
  _RIBBON_tabColor_Blue(3)            = $877b6d        ; ICON BACKGROUND COLOR.
  _RIBBON_tabColor_Blue(4)            = $f1c68f        ; TITLE BACKGROUND COLOR (BLUE).
  _RIBBON_tabColor_Blue(5)            = $f7f6f5        ; RIBBON BACKGROUND COLOR.
  _RIBBON_tabColor_Blue(6)            = $fbebd7        ; BIBBON TAB BACKGROUND COLOR. 
  _RIBBON_tabColor_Blue(7)            = $d8d2cb        ;
  _RIBBON_tabColor_Blue(8)            = $f0efee        ;
  _RIBBON_tabColor_Blue(9)            = $e89f46        ; (BLUE)
  _RIBBON_tabColor_Blue(10)           = $fbebd7        ; (BLUE)
  _RIBBON_tabColor_Blue(11)           = $dddddd        ; SELECTED TAB COLOR FRONT.
  _RIBBON_tabColor_Blue(12)           = $444444        ; SELECTED TAB COLOR SHADOW.
  _RIBBON_tabColor_Blue(13)           = $888888        ; HOVERING TAB COLOR FRONT.
  _RIBBON_tabColor_Blue(14)           = $ffffff        ; HOVERING TAB COLOR SHADOW.
  ;
  Global Dim _RIBBON_tabColor_Green.i(14)
  _RIBBON_tabColor_Green(0)           = $6e6e6e        ; WINDOW BORDER COLOR.
  _RIBBON_tabColor_Green(0)           = $6e6e6e        ; WINDOW BORDER COLOR.
  _RIBBON_tabColor_Green(1)           = $a59b8f        ; RIBBON BORDER COLOR AND SELECT BUTTON. 
  _RIBBON_tabColor_Green(2)           = $d8d2cb        ; BUTTON NORMAL BORDER COLOR.
  _RIBBON_tabColor_Green(3)           = $877b6d        ; ICON BACKGROUND COLOR.
  _RIBBON_tabColor_Green(4)           = $b5ccc1        ; TITLE BACKGROUND COLOR (GREEN).
  _RIBBON_tabColor_Green(5)           = $f7f6f5        ; RIBBON BACKGROUND COLOR.
  _RIBBON_tabColor_Green(6)           = $d8e7e4        ; BIBBON TAB BACKGROUND COLOR. 
  _RIBBON_tabColor_Green(7)           = $d8d2cb        ;
  _RIBBON_tabColor_Green(8)           = $f0efee        ;
  _RIBBON_tabColor_Green(9)           = $719d8b        ; (GREEN)
  _RIBBON_tabColor_Green(10)          = $d8e7e4        ; (GREEN)
  _RIBBON_tabColor_Green(11)          = $dddddd        ; SELECTED TAB COLOR FRONT.
  _RIBBON_tabColor_Green(12)          = $444444        ; SELECTED TAB COLOR SHADOW.
  _RIBBON_tabColor_Green(13)          = $888888        ; HOVERING TAB COLOR FRONT.
  _RIBBON_tabColor_Green(14)          = $ffffff        ; HOVERING TAB COLOR SHADOW.
  ;
  Global Dim _RIBBON_tabColor_Yellow.i(14)
  _RIBBON_tabColor_Yellow(0)          = $6e6e6e        ; WINDOW BORDER COLOR.
  _RIBBON_tabColor_Yellow(0)          = $6e6e6e        ; WINDOW BORDER COLOR.
  _RIBBON_tabColor_Yellow(1)          = $a59b8f        ; RIBBON BORDER COLOR AND SELECT BUTTON. 
  _RIBBON_tabColor_Yellow(2)          = $d8d2cb        ; BUTTON NORMAL BORDER COLOR.
  _RIBBON_tabColor_Yellow(3)          = $877b6d        ; ICON BACKGROUND COLOR.
  _RIBBON_tabColor_Yellow(4)          = $a9d0d8        ; TITLE BACKGROUND COLOR (YELLOW).
  _RIBBON_tabColor_Yellow(5)          = $f7f6f5        ; RIBBON BACKGROUND COLOR.
  _RIBBON_tabColor_Yellow(6)          = $cce3e6        ; BIBBON TAB BACKGROUND COLOR. 
  _RIBBON_tabColor_Yellow(7)          = $d8d2cb        ;
  _RIBBON_tabColor_Yellow(8)          = $f0efee        ;
  _RIBBON_tabColor_Yellow(9)          = $86a6ae        ; (YELLOW)
  _RIBBON_tabColor_Yellow(10)         = $cce3e6        ; (YELLOW)
  _RIBBON_tabColor_Yellow(11)         = $dddddd        ; SELECTED TAB COLOR FRONT.
  _RIBBON_tabColor_Yellow(12)         = $444444        ; SELECTED TAB COLOR SHADOW.
  _RIBBON_tabColor_Yellow(13)         = $888888        ; HOVERING TAB COLOR FRONT.
  _RIBBON_tabColor_Yellow(14)         = $ffffff        ; HOVERING TAB COLOR SHADOW.
  ;
  Global Dim _RIBBON_tabColor_Pink.i(14)
  _RIBBON_tabColor_Pink(0)            = $6e6e6e        ; WINDOW BORDER COLOR.
  _RIBBON_tabColor_Pink(0)            = $6e6e6e        ; WINDOW BORDER COLOR.
  _RIBBON_tabColor_Pink(1)            = $a59b8f        ; RIBBON BORDER COLOR AND SELECT BUTTON. 
  _RIBBON_tabColor_Pink(2)            = $d8d2cb        ; BUTTON NORMAL BORDER COLOR.
  _RIBBON_tabColor_Pink(3)            = $877b6d        ; ICON BACKGROUND COLOR.
  _RIBBON_tabColor_Pink(4)            = $c9b3ce        ; TITLE BACKGROUND COLOR (PINK).
  _RIBBON_tabColor_Pink(5)            = $f7f6f5        ; RIBBON BACKGROUND COLOR.
  _RIBBON_tabColor_Pink(6)            = $ded2df        ; BIBBON TAB BACKGROUND COLOR. 
  _RIBBON_tabColor_Pink(7)            = $d8d2cb        ;
  _RIBBON_tabColor_Pink(8)            = $f0efee        ;
  _RIBBON_tabColor_Pink(9)            = $a387ad        ; (PINK)
  _RIBBON_tabColor_Pink(10)           = $ded2df        ; (PINK)
  _RIBBON_tabColor_Pink(11)           = $dddddd        ; SELECTED TAB COLOR FRONT.
  _RIBBON_tabColor_Pink(12)           = $444444        ; SELECTED TAB COLOR SHADOW.
  _RIBBON_tabColor_Pink(13)           = $888888        ; HOVERING TAB COLOR FRONT.
  _RIBBON_tabColor_Pink(14)           = $ffffff        ; HOVERING TAB COLOR SHADOW.
  ;
  Global Font_ID1.i         = LoadFont(#PB_Any, "Century Gothic", 10,  #PB_Font_Bold | #PB_Font_HighQuality)
  ;
  Define.i _IMAGES_MENU_SYSTEM = CatchImage(#PB_Any, ?icon_menu_system_png_start, ?icon_menu_system_png_end - ?icon_menu_system_png_start)
  Global.i _RIBBON_MENU_SYSTEM = CreatePopupImageMenu(#PB_Any)
  If _RIBBON_MENU_SYSTEM
    MenuItem(500, "Nouveau"     + Chr(9) + "Ctrl+N",  ImageID(GrabImage(_IMAGES_MENU_SYSTEM, #PB_Any, 0 * 16, 0, 16, 16)))
    MenuItem(501, "Ouvrir..."   + Chr(9) + "Ctrl+O",  ImageID(GrabImage(_IMAGES_MENU_SYSTEM, #PB_Any, 1 * 16, 0, 16, 16)))
    MenuBar()
    MenuItem(502, "Enregistrer" + Chr(9) + "Ctrl+S",  ImageID(GrabImage(_IMAGES_MENU_SYSTEM, #PB_Any, 2 * 16, 0, 16, 16)))
    MenuItem(502, "Enregistrer sous...",              ImageID(GrabImage(_IMAGES_MENU_SYSTEM, #PB_Any, 3 * 16, 0, 16, 16)))
    MenuBar()
    MenuItem(503, "Préférence",                       ImageID(GrabImage(_IMAGES_MENU_SYSTEM, #PB_Any, 4 * 16, 0, 16, 16)))
    MenuBar()
    MenuItem(504, "Quitter",                          ImageID(GrabImage(_IMAGES_MENU_SYSTEM, #PB_Any, 5 * 16, 0, 16, 16)))
    ;
    ;BindMenuEvent(_RIBBON_MENU_SYSTEM, 504, @_WINDOW_Software_Quit())
    ;
  EndIf
  ;
  ;- 
  ;
  Procedure.i _WINDOW_Title_Height(hWnd)
    ;
    ; ROUTINE DONNANT LA TAILLE DE LA BARRE DE TITRE.
    ;
    ProcedureReturn WindowHeight(hWnd, #PB_Window_FrameCoordinate) - WindowHeight(hWnd, #PB_Window_InnerCoordinate) - ((WindowWidth(hWnd, #PB_Window_FrameCoordinate) - WindowWidth(hWnd, #PB_Window_InnerCoordinate)) / 2)
  
  EndProcedure
  
  Procedure _WINDOW_Software_Quit()
    ;
    ; ROUTINE DONNANT LA TAILLE DE LA BARRE DE TITRE.
    ;
    If MessageRequester("", "Voulez-vous vraiment quitter le logiciel?", #PB_MessageRequester_YesNo) = #PB_MessageRequester_Yes
      End
    EndIf
  
  EndProcedure
  
  ; ****************************************************************************
  ; ****************************************************************************
  ; ****************************************************************************
  ;-
  
  Procedure _RIBBON_SeparatorBar(x.i, y.i, h.i)
    ;
    ; ROUTINE DE TRACAGE DES SEPARATEURS DU RIBBON.
    ;
    LineXY(x,     y, x,     y + h, _RIBBON_tabColor_Default(7))
    LineXY(x + 1, y, x + 1, y + h, _RIBBON_tabColor_Default(8))
    
  EndProcedure
  
  Procedure _RIBBON_CommandBar(x.i, y.i, w.i, h.i, text.s, tabcolor, filcolor)
    ;
    ; ROUTINE DE TRACAGE DU MENU RIBBON ACTIF.
    ;
    If tabcolor > 0
      Box(x,     y,     w,     h,     _RIBBON_tabColor_Default(tabcolor    ))
      Box(x + 1, y + 1, w - 2, h - 2, _RIBBON_tabColor_Default(tabcolor + 1))
    EndIf
    ;
    ; 
    ;
    If h <= 96/2
      DrawText(x + ((w - TextWidth(text)) / 2), y + ((h - TextHeight(text)) / 2), text, _RIBBON_tabColor_Default(filcolor))
    Else
      DrawText(x + ((w - TextWidth(text)) / 2), (y + h) - (TextHeight(text) + 6), text, _RIBBON_tabColor_Default(filcolor))
    EndIf
  
  EndProcedure
  
  Procedure _RIBBON_Tabulation(x.i, y.i, w.i, h.i, text.s, tabcolor.l, filcolor)
    ;
    ; ROUTINE DE TRACAGE DU MENU RIBBON ACTIF.
    ;
    If tabcolor > 0
      Box(x,     y,     w,     h + 1, _RIBBON_tabColor_Default(1))
      Box(x + 1, y + 1, w - 2, h,     _RIBBON_tabColor_Default(tabcolor))
    EndIf
    ;
    Select filcolor
      Case 0
        DrawText(x + ((w - TextWidth(text)) / 2), y + ((h - TextHeight(text)) / 2), text,         _RIBBON_tabColor_Default(11))
        DrawText(x + ((w - TextWidth(text)) / 2) - 1, y + ((h - TextHeight(text)) / 2) - 1, text, _RIBBON_tabColor_Default(12))
      Case 1
        DrawText(x + ((w - TextWidth(text)) / 2), y + ((h - TextHeight(text)) / 2), text,         _RIBBON_tabColor_Default(13))
        DrawText(x + ((w - TextWidth(text)) / 2) - 1, y + ((h - TextHeight(text)) / 2) - 1, text, _RIBBON_tabColor_Default(14))
    EndSelect
  
  EndProcedure
  
  Procedure _RIBBON_Requester(x.i, y.i, w.i, h.i, color.i)
    ;
    ; ROUTINE DE TRACAGE DES SEPARATEURS DU RIBBON.
    ;
    Protected.i i, ibox = (w / 3)
  
    Box(x,     y,     w,        h,     _RIBBON_tabColor_Default(color))
    Box(x + 1, y + 1, w - 2,    h - 2, $ffffff)
    Box(x + 2, y + 2, ibox - 3, h - 4, _RIBBON_tabColor_Default(4))
    LineXY(x + ibox, y + 1, x + ibox, (y + h) - 2, _RIBBON_tabColor_Default(color))
    For i=0 To h - 6 Step 2
      LineXY(x + ibox + 2, y + i + 3, x + ibox + (w - ibox - 3), y + i + 3, $888888)
    Next i
  
  EndProcedure
  
  Procedure _RIBBON_ArrowBar(x.i, y.i, w.i, h.i, color.i)
    ;
    ; ROUTINE DE TRACAGE DES FLECHES DU RIBBON.
    ;
    Protected.i i
    Protected.f j, k
    ;
    If color = 0
      color = 7
    EndIf
    ;
    k = (h / w) / 2
    For i=0 To h
      LineXY(x + j, y + i, x + (w - j), y + i,  _RIBBON_tabColor_Default(color))
      j + k
    Next i
    LineXY(x, y, x + (w / 2), y + h + 1,        _RIBBON_tabColor_Default(color))
    LineXY(x + w, y, x + (w / 2), y + h + 1,    _RIBBON_tabColor_Default(color))
  
  EndProcedure
  
  Procedure _RIBBON_ArrowBar_horizontal(x.i, y.i, w.i, h.i, color.i, sense.b)
    ;
    ; ROUTINE DE TRACAGE DES FLECHES DU RIBBON.
    ;
    Protected.i i
    Protected.f j, k
    ;
    If color = 0
      color = 7
    EndIf
    ;
    k = (w / h) / 1.4
    Select sense
      Case 0
        For i=w To 0 Step -1
          LineXY(x + i, y + j, x + i, y + (h - j),  _RIBBON_tabColor_Default(color))
          j + k
        Next i
        LineXY(x, y + (h / 2), x + w, y,            _RIBBON_tabColor_Default(color))
        LineXY(x, y + (h / 2), x + w, y + h,        _RIBBON_tabColor_Default(color))
      Case 1
        For i=0 To w Step 1
          LineXY(x + i, y + j, x + i, y + (h - j),  _RIBBON_tabColor_Default(color))
          j + k
        Next i
        LineXY(x, y, x + w, y + (h / 2),            _RIBBON_tabColor_Default(color))
        LineXY(x, y + h, x + w, y + (h / 2),        _RIBBON_tabColor_Default(color))
    EndSelect
  
  EndProcedure
  
  Procedure _RIBBON_BackGround(gadget.i, noclic.b = #False)
    ;
    ; ROUTINE DE TRACAGE DES SEPARATEURS DU RIBBON.
    ;
    Protected.i i, j, dx, dy, va, ry, c, u, icolor, rib_xpos, rib_xsav, rib_ypos, rib_ysav, rib_option, rib_toggle
    Protected.s rib_text
    Protected.i iPOSITION_Y, iINITIALE_X = 0, iCOMS_DECALS = 0
    Protected.i iMENU_REDRAW = 0, iMENU_DRAW_X = 0, iMENU_DRAW_Y = 0, iMENU_NUMBER = 0, iMENU_SYSTEM = #False
    ;
    FindMapElement(_CREATE_RIBBON(), Str(gadget))
    ;
    If noclic = #False
      c = _CLC_BUTTON
    EndIf
    ;
    If StartDrawing(CanvasOutput(_CREATE_RIBBON()\gadget))
      DrawingMode(#PB_2DDrawing_Transparent)
      DrawingFont(FontID(_CREATE_RIBBON()\RIBBON_FONT_ID2))
      ;
      ;
      ;
      iMENU_REDRAW = #False
      For j=0 To iMENU_REDRAW
        Box (0, 0,                           _CREATE_RIBBON()\BORDER_X,      _CREATE_RIBBON()\TAB_Y,        _RIBBON_tabColor_Default(4))
        Box (0, _CREATE_RIBBON()\TAB_Y,      _CREATE_RIBBON()\BORDER_X,      _CREATE_RIBBON()\BORDER_Y,     _RIBBON_tabColor_Default(1))
        Box (1, _CREATE_RIBBON()\TAB_Y + 1,  _CREATE_RIBBON()\BORDER_X - 2,  _CREATE_RIBBON()\BORDER_Y - 2, _RIBBON_tabColor_Default(5))
        If _CREATE_RIBBON()\RIBBON_MENU_DISABLE = #False
          If _SAV_MOUSE_X > 0 And _SAV_MOUSE_Y > 0 And _SAV_MOUSE_X < _CREATE_RIBBON()\RIBBON_MENU_X And _SAV_MOUSE_Y < _CREATE_RIBBON()\TAB_Y
            _RIBBON_requester (4,  (_CREATE_RIBBON()\TAB_Y / 2) - 6, 18, 13, _SAV_COLOR)
            _RIBBON_arrowbar  (26, (_CREATE_RIBBON()\TAB_Y / 2) - 4,  6,  6, _SAV_COLOR)
            ;
            If c = #True And IsMenu(_RIBBON_MENU_SYSTEM)
              iMENU_SYSTEM = #True
            EndIf
          Else
            _RIBBON_requester (4,  (_CREATE_RIBBON()\TAB_Y / 2) - 6, 18, 13, 1)
            _RIBBON_arrowbar  (26, (_CREATE_RIBBON()\TAB_Y / 2) - 4,  6,  6, 1)      
          EndIf
        EndIf
        ;
        For i=1 To _CREATE_RIBBON()\RIBBON_TABBAR_NUMBER
          If i = _CREATE_RIBBON()\RIBBON_TABBAR_SELECT
            _RIBBON_tabulation(_CREATE_RIBBON()\RIBBON_MENU_X + ((i - 1) * _CREATE_RIBBON()\TAB_X), 0, _CREATE_RIBBON()\TAB_X + 1, _CREATE_RIBBON()\TAB_Y, _CREATE_RIBBON()\RIBBON_TABBAR(i), 5, 0)
          Else
            If _SAV_MOUSE_X > _CREATE_RIBBON()\RIBBON_MENU_X + ((i - 1) * _CREATE_RIBBON()\TAB_X) And _SAV_MOUSE_Y > 0 And _SAV_MOUSE_X < _CREATE_RIBBON()\RIBBON_MENU_X + ((i - 1) * _CREATE_RIBBON()\TAB_X) +_CREATE_RIBBON()\TAB_X And _SAV_MOUSE_Y < _CREATE_RIBBON()\TAB_Y
              If c = #True
                iMENU_REDRAW = #True
                _CREATE_RIBBON()\RIBBON_TABBAR_SELECT = i
                Break
              EndIf
              _RIBBON_tabulation(_CREATE_RIBBON()\RIBBON_MENU_X + ((i - 1) * _CREATE_RIBBON()\TAB_X), 0, _CREATE_RIBBON()\TAB_X + 1, _CREATE_RIBBON()\TAB_Y - 1, _CREATE_RIBBON()\RIBBON_TABBAR(i), 6, 1)
            Else
              _RIBBON_tabulation(_CREATE_RIBBON()\RIBBON_MENU_X + ((i - 1) * _CREATE_RIBBON()\TAB_X), 0, _CREATE_RIBBON()\TAB_X + 1, _CREATE_RIBBON()\TAB_Y - 1, _CREATE_RIBBON()\RIBBON_TABBAR(i), 0, 1)
            EndIf
          EndIf
        Next i
      Next j
      ;
      ;
      ;
      If _CREATE_RIBBON()\RIBBON_TABPAGE(_CREATE_RIBBON()\RIBBON_TABBAR_SELECT)\RIBBON_PAGE_NUMBER > 0
        DrawingFont(FontID(_CREATE_RIBBON()\RIBBON_FONT_ID1))
        ;
        For i=1 To _CREATE_RIBBON()\RIBBON_TABPAGE(_CREATE_RIBBON()\RIBBON_TABBAR_SELECT)\RIBBON_PAGE_NUMBER
          ;
          dx          = 1
          dy          = 1
          ry          = 0
          va          = 0
          icolor      = 0
          rib_xsav    = 0
          rib_ysav    = 0
          rib_ypos    = _CREATE_RIBBON()\TAB_Y + ((_CREATE_RIBBON()\BORDER_Y - 68) / 2)
          rib_text    = _CREATE_RIBBON()\RIBBON_TABPAGE(_CREATE_RIBBON()\RIBBON_TABBAR_SELECT)\RIBBON_PAGE_STEXTE [i]
          rib_option  = _CREATE_RIBBON()\RIBBON_TABPAGE(_CREATE_RIBBON()\RIBBON_TABBAR_SELECT)\RIBBON_PAGE_OPTION [i]
          rib_toggle  = _CREATE_RIBBON()\RIBBON_TABPAGE(_CREATE_RIBBON()\RIBBON_TABBAR_SELECT)\RIBBON_PAGE_TOGGLE [i]
          ;
          Select _CREATE_RIBBON()\RIBBON_TABPAGE(_CREATE_RIBBON()\RIBBON_TABBAR_SELECT)\RIBBON_PAGE_GADGET[i]
            Case #Ribbon_Button
              ;
              ;
              ;
              If rib_option & #Ribbon_Size_48x64
                dx = 2
              EndIf
              If rib_option & #Ribbon_Size_96x32
                dy = 2
                ry = 1
                va = #True
              EndIf
              If rib_option & #Ribbon_Size_48x32
                dx = 2
                dy = 2
                ry = 1
                va = #True
              EndIf
              If rib_option & #Ribbon_Bottom And va = #True
                rib_xpos = iINITIALE_X
                rib_ysav = (68 / dy) + ry
              EndIf
              ;
              ;
              ;
              If rib_option & #Ribbon_Toggle_Option And i <> _CREATE_RIBBON()\RIBBON_TABPAGE(_CREATE_RIBBON()\RIBBON_TABBAR_SELECT)\RIBBON_SELS_TOGGLE
                _CREATE_RIBBON()\RIBBON_TABPAGE(_CREATE_RIBBON()\RIBBON_TABBAR_SELECT)\RIBBON_PAGE_TOGGLE[i] = #False
              EndIf
              ;
              If _SAV_MOUSE_X > 10 + iCOMS_DECALS + rib_xpos And _SAV_MOUSE_Y > rib_ypos + rib_ysav And _SAV_MOUSE_X < 10 + iCOMS_DECALS + rib_xpos + (96 / dx) And _SAV_MOUSE_Y < rib_ypos + rib_ysav + (68 / dy) - ry 
                If c <> #True
                  icolor = 7
                Else
                  icolor = 9
                  _SAV_BUTTON = i
                EndIf
                ;
                If _SAV_BUTTON = i
                  icolor = 9
                EndIf
                ;
                If c = #True
                  If rib_option & #Ribbon_Toggle
                    rib_toggle = (rib_toggle + 1) % 2
                    If rib_option & #Ribbon_Toggle_Option
                      rib_toggle = #True
                      _CREATE_RIBBON()\RIBBON_TABPAGE(_CREATE_RIBBON()\RIBBON_TABBAR_SELECT)\RIBBON_SELS_TOGGLE   = i
                    EndIf
                    _CREATE_RIBBON()\RIBBON_TABPAGE(_CREATE_RIBBON()\RIBBON_TABBAR_SELECT)\RIBBON_PAGE_TOGGLE[i]  = rib_toggle
                  EndIf
                  ;
                  PostEvent(#PB_Event_Menu, _CREATE_RIBBON()\WINDOW, _CREATE_RIBBON()\RIBBON_TABPAGE(_CREATE_RIBBON()\RIBBON_TABBAR_SELECT)\RIBBON_PAGE_HANDLE[i])
                  ;
                EndIf
              EndIf
              If rib_toggle = #True
                icolor = 9
              EndIf
              _RIBBON_CommandBar(10 + iCOMS_DECALS + rib_xpos, rib_ypos + rib_ysav, 96 / dx, (68 / dy) - ry, rib_text, icolor, 9)
              ;
              ;
              ;
              If rib_option & #Ribbon_Menu
                If rib_toggle = #True
                  icolor = 0
                EndIf
                If _SAV_MOUSE_X > 10 + iCOMS_DECALS + rib_xpos + ((96 / dx) - 1) And _SAV_MOUSE_Y > rib_ypos + rib_ysav And _SAV_MOUSE_X < 10 + iCOMS_DECALS + rib_xpos + ((96 / dx) - 1) + 17 And _SAV_MOUSE_Y < rib_ypos + rib_ysav + (68 / dy) - ry
                  If c <> #True
                    icolor = 7
                  Else
                    icolor = 9
                    If iMENU_SYSTEM <> #True And IsMenu(_RIBBON_MENU_SYSTEM)
                      iMENU_NUMBER = i
                      iMENU_SYSTEM = 1000
                      iMENU_DRAW_X = 10 + iCOMS_DECALS + rib_xpos
                      iMENU_DRAW_Y = rib_ypos + rib_ysav + (68 / dy) - ry
                    EndIf
                  EndIf
                EndIf
                _RIBBON_CommandBar(10 + iCOMS_DECALS + rib_xpos + ((96 / dx) - 1), rib_ypos + rib_ysav, 17, (68 / dy) - ry, #Null$,  icolor, 9)
                _RIBBON_arrowbar  (10 + iCOMS_DECALS + rib_xpos + ((96 / dx) + 4), rib_ypos + rib_ysav + ((68 / dy) / 2) - 4, 6, 6,  icolor)
                If rib_toggle = #True
                  LineXY(10 + iCOMS_DECALS + rib_xpos + ((96 / dx) - 1), rib_ypos + rib_ysav, 10 + iCOMS_DECALS + rib_xpos + ((96 / dx) - 1), rib_ypos + rib_ysav + (68 / dy) - ry - 1, _RIBBON_tabColor_Default(9))  
                EndIf
                rib_xsav = 17
              EndIf
              ;
              If IsImage(_CREATE_RIBBON()\RIBBON_TABPAGE(_CREATE_RIBBON()\RIBBON_TABBAR_SELECT)\RIBBON_PAGE_IIMAGE[i])
                If rib_text = #Null$
                  iPOSITION_Y = ((68 / dy) - ImageHeight(_CREATE_RIBBON()\RIBBON_TABPAGE(_CREATE_RIBBON()\RIBBON_TABBAR_SELECT)\RIBBON_PAGE_IIMAGE[i])) / 2
                Else
                  iPOSITION_Y = (((68 / dy) - (TextHeight(rib_text) + 4)) - ImageHeight(_CREATE_RIBBON()\RIBBON_TABPAGE(_CREATE_RIBBON()\RIBBON_TABBAR_SELECT)\RIBBON_PAGE_IIMAGE[i])) / 2
                EndIf
                DrawAlphaImage(ImageID(_CREATE_RIBBON()\RIBBON_TABPAGE(_CREATE_RIBBON()\RIBBON_TABBAR_SELECT)\RIBBON_PAGE_IIMAGE[i]), (10 + iCOMS_DECALS + rib_xpos) + ((96 / dx) - ImageWidth(_CREATE_RIBBON()\RIBBON_TABPAGE(_CREATE_RIBBON()\RIBBON_TABBAR_SELECT)\RIBBON_PAGE_IIMAGE[i])) / 2, rib_ypos + rib_ysav + iPOSITION_Y) 
              EndIf
              ;
              iINITIALE_X = rib_xpos
              rib_xpos + (100 / dx) + rib_xsav
              ;
            Case #Ribbon_TextBox
            Case #Ribbon_CheckBox
            Case #Ribbon_OptionBox
            Case #Ribbon_ComboBox
            Case #Ribbon_Image
            Case #Ribbon_Separator
              ;
              rib_xpos + 6
              _RIBBON_SeparatorBar(10 + iCOMS_DECALS + rib_xpos, _CREATE_RIBBON()\TAB_Y + 8, _CREATE_RIBBON()\BORDER_Y - 16)
              rib_xpos + 10
              ;
          EndSelect
          ;  
        Next i
      EndIf
      ;
      ;
      ;
      If iCOMS_DECALS <> 0
        DrawingMode(#PB_2DDrawing_Transparent)
        DrawingFont(FontID(_CREATE_RIBBON()\RIBBON_FONT_ID2))
        If _SAV_MOUSE_X > 0 And _SAV_MOUSE_Y > _CREATE_RIBBON()\TAB_Y And _SAV_MOUSE_X < 14 And _SAV_MOUSE_Y < _CREATE_RIBBON()\TAB_Y + _CREATE_RIBBON()\BORDER_Y
          _RIBBON_CommandBar(-1, _CREATE_RIBBON()\TAB_Y , 15, _CREATE_RIBBON()\BORDER_Y, "", 9, 9)
          _RIBBON_ArrowBar_horizontal(2, _CREATE_RIBBON()\TAB_Y + (_CREATE_RIBBON()\BORDER_Y / 2) - 5, 8, 10, 9, 0)
        Else
          _RIBBON_CommandBar(-1, _CREATE_RIBBON()\TAB_Y , 15, _CREATE_RIBBON()\BORDER_Y, "", 7, 7)
          _RIBBON_ArrowBar_horizontal(2, _CREATE_RIBBON()\TAB_Y + (_CREATE_RIBBON()\BORDER_Y / 2) - 5, 8, 10, 4, 0)
          Line(0,  _CREATE_RIBBON()\TAB_Y, 14, 1, _RIBBON_tabColor_Default(1))
        EndIf
        If _SAV_MOUSE_X > _CREATE_RIBBON()\BORDER_X - 14 And _SAV_MOUSE_Y > _CREATE_RIBBON()\TAB_Y And _SAV_MOUSE_X < _CREATE_RIBBON()\BORDER_X And _SAV_MOUSE_Y < _CREATE_RIBBON()\TAB_Y + _CREATE_RIBBON()\BORDER_Y
          _RIBBON_CommandBar(_CREATE_RIBBON()\BORDER_X - 14, _CREATE_RIBBON()\TAB_Y , 15, _CREATE_RIBBON()\BORDER_Y, "", 9, 9)
          _RIBBON_ArrowBar_horizontal(_CREATE_RIBBON()\BORDER_X - 11, _CREATE_RIBBON()\TAB_Y + (_CREATE_RIBBON()\BORDER_Y / 2) - 5, 8, 10, 9, 1)
        Else  
          _RIBBON_CommandBar(_CREATE_RIBBON()\BORDER_X - 14, _CREATE_RIBBON()\TAB_Y , 15, _CREATE_RIBBON()\BORDER_Y, "", 7, 7)
          _RIBBON_ArrowBar_horizontal(_CREATE_RIBBON()\BORDER_X - 11, _CREATE_RIBBON()\TAB_Y + (_CREATE_RIBBON()\BORDER_Y / 2) - 5, 8, 10, 4, 1)
          Line(_CREATE_RIBBON()\BORDER_X - 14,  _CREATE_RIBBON()\TAB_Y, 14, 1, _RIBBON_tabColor_Default(1))
        EndIf
      EndIf
      ;
      ;
      ;
      LineXY(0, _CREATE_RIBBON()\TAB_Y +   _CREATE_RIBBON()\BORDER_Y - 1, _CREATE_RIBBON()\BORDER_X,      _CREATE_RIBBON()\TAB_Y + _CREATE_RIBBON()\BORDER_Y - 1, _RIBBON_tabColor_Default(0))
      ;
      StopDrawing()
    EndIf
    ;
    Select iMENU_SYSTEM
      Case #True
        DisplayPopupMenu(_RIBBON_MENU_SYSTEM, _CREATE_RIBBON()\WINDOWID, _CREATE_RIBBON()\WINDOW_X + 3, _CREATE_RIBBON()\WINDOW_Y + _CREATE_RIBBON()\TITLE_Y + _CREATE_RIBBON()\TAB_Y)
      Case 1000
        DisplayPopupMenu(_CREATE_RIBBON()\RIBBON_TABPAGE(_CREATE_RIBBON()\RIBBON_TABBAR_SELECT)\RIBBON_PAGE_BUTTONMENU[iMENU_NUMBER], _CREATE_RIBBON()\WINDOWID, _CREATE_RIBBON()\WINDOW_X + iMENU_DRAW_X + 3, _CREATE_RIBBON()\WINDOW_Y + _CREATE_RIBBON()\TITLE_Y + iMENU_DRAW_Y - 1)
    EndSelect
  
  EndProcedure
  
  Procedure _RIBBON_OnEvent()
    ;
    ;
    ;
    Protected.i event  = EventType()
    Protected.i gadget = EventGadget()
    ;
    FindMapElement(_CREATE_RIBBON(), Str(gadget))
    ;
    Select event
      Case #PB_EventType_MouseLeave
        ;
        _CLC_BUTTON   = #False
        _SAV_BUTTON   = 0
        _SAV_MOUSE_X  = 0
        _SAV_MOUSE_Y  = 0
        ;
        _RIBBON_BackGround(_CREATE_RIBBON()\gadget, #True)
        ;
      Case #PB_EventType_MouseMove
        ;
        _SAV_MOUSE_X  = GetGadgetAttribute(gadget, #PB_Canvas_MouseX)
        _SAV_MOUSE_Y  = GetGadgetAttribute(gadget, #PB_Canvas_MouseY)
        ;
        If _SAV_BUTTON = 0
          _RIBBON_BackGround(_CREATE_RIBBON()\gadget, #True)
        EndIf
        ;
      Case #PB_EventType_LeftButtonUp, #PB_EventType_LeftButtonDown
        ;
        Select event
          Case #PB_EventType_LeftButtonUp
            _SAV_BUTTON = 0
            _CLC_BUTTON = #False
          Case #PB_EventType_LeftButtonDown
            _CLC_BUTTON = #True
        EndSelect
        ;
        _RIBBON_BackGround(_CREATE_RIBBON()\gadget)
        ;    
    EndSelect
  
  EndProcedure
  
  Procedure _RIBBON_Resize()
    ;
    ;
    ;
    Protected.i gadget = EventGadget()
    Protected.i event  = EventType()
    ;
    FindMapElement(_CREATE_RIBBON(), Str(gadget))
    ;
    _CREATE_RIBBON()\WINDOW_X = WindowX       (_CREATE_RIBBON()\WINDOW)
    _CREATE_RIBBON()\WINDOW_Y = WindowY       (_CREATE_RIBBON()\WINDOW)
    ;
    If _CREATE_RIBBON()\BORDER_X <> WindowWidth(_CREATE_RIBBON()\WINDOW)
      _CREATE_RIBBON()\BORDER_X = WindowWidth(_CREATE_RIBBON()\WINDOW)
      ResizeGadget(_CREATE_RIBBON()\gadget, #PB_Ignore, #PB_Ignore, _CREATE_RIBBON()\BORDER_X, #PB_Ignore)  
      _RIBBON_BackGround(gadget)
    EndIf
  
  EndProcedure
  ;
  ;-
  ;
  Procedure _CreateGadget(gadget.i, text.s = #Null$)
    ;
    ;
    ;
    Protected.i ivalue
    ;
    ;
    ;
    If gadget = #PB_Any
      gadget = CanvasGadget(#PB_Any, x, y, l, h, #PB_Canvas_Container | #PB_Container_BorderLess | #PB_Canvas_Keyboard)
      ivalue = gadget
    Else
      ivalue = CanvasGadget(gadget,  x, y, l, h, #PB_Canvas_Container | #PB_Container_BorderLess | #PB_Canvas_Keyboard) 
    EndIf
    AddMapElement(_CREATE_RIBBON(), Str(gadget), #PB_Map_ElementCheck)
    CloseGadgetList()
    ;
    _CREATE_RIBBON()\WINDOW               = GetActiveWindow     ()
    _CREATE_RIBBON()\gadget               = gadget
    _CREATE_RIBBON()\gadgetid             = ivalue
    _CREATE_RIBBON()\WINDOWID             = WindowID            (_CREATE_RIBBON()\WINDOW)
    _CREATE_RIBBON()\TITLE_Y              =_WINDOW_Title_Height (_CREATE_RIBBON()\WINDOW)
    _CREATE_RIBBON()\WINDOW_X             = WindowX             (_CREATE_RIBBON()\WINDOW)
    _CREATE_RIBBON()\WINDOW_Y             = WindowY             (_CREATE_RIBBON()\WINDOW)
    _CREATE_RIBBON()\BORDER_X             = WindowWidth         (_CREATE_RIBBON()\WINDOW)
    _CREATE_RIBBON()\BORDER_Y             = 90
    _CREATE_RIBBON()\TAB_X                = 96
    _CREATE_RIBBON()\TAB_Y                = 24
    _CREATE_RIBBON()\RIBBON_TABBAR_SELECT = 1
    _CREATE_RIBBON()\RIBBON_MENU_X        = 40
    _CREATE_RIBBON()\RIBBON_MENU_DISABLE  = #False
    ;
    CompilerSelect #PB_Compiler_OS
      CompilerCase #PB_OS_Windows
        ;
        _CREATE_RIBBON()\RIBBON_FONT_ID1      = LoadFont(#PB_Any, "Century Gothic", 8,  #PB_Font_Bold)
        _CREATE_RIBBON()\RIBBON_FONT_ID2      = LoadFont(#PB_Any, "Century Gothic", 9,  #PB_Font_Bold)
        _CREATE_RIBBON()\RIBBON_FONT_ID3      = LoadFont(#PB_Any, "Century Gothic", 11, #PB_Font_Bold)
        ;
      CompilerCase #PB_OS_Linux
        ;
        _CREATE_RIBBON()\RIBBON_FONT_ID1      = LoadFont(#PB_Any, "Century Gothic", 7,  #PB_Font_Bold)
        _CREATE_RIBBON()\RIBBON_FONT_ID2      = LoadFont(#PB_Any, "Century Gothic", 8,  #PB_Font_Bold)
        _CREATE_RIBBON()\RIBBON_FONT_ID3      = LoadFont(#PB_Any, "Century Gothic", 10, #PB_Font_Bold)
        ;
    CompilerEndSelect
    ;
    SetWindowColor    (_CREATE_RIBBON()\WINDOW, $9f9588)
    ResizeGadget      (gadget, #PB_Ignore, #PB_Ignore, _CREATE_RIBBON()\BORDER_X, _CREATE_RIBBON()\BORDER_Y + _CREATE_RIBBON()\TAB_Y)
    ;
    _RIBBON_BackGround(gadget)
    ;
    BindGadgetEvent   (gadget, @_RIBBON_OnEvent())
    BindEvent         (#PB_Event_SizeWindow, @_RIBBON_Resize(), _CREATE_RIBBON()\WINDOW)
    BindEvent         (#PB_Event_MoveWindow, @_RIBBON_Resize(), _CREATE_RIBBON()\WINDOW)
    ;
    ProcedureReturn ivalue
  
  EndProcedure
  ;
  Procedure _AddRibbonTab(gadget.i, name.s)
    ;
    ;
    ;
    FindMapElement(_CREATE_RIBBON(), Str(gadget))
    ;
    _CREATE_RIBBON()\RIBBON_TABBAR_NUMBER + 1
    ReDim _CREATE_RIBBON()\RIBBON_TABBAR  .s(_CREATE_RIBBON()\RIBBON_TABBAR_NUMBER)
    ReDim _CREATE_RIBBON()\RIBBON_TABPAGE ._STRUCTURE_RIBBON_BUTTON(_CREATE_RIBBON()\RIBBON_TABBAR_NUMBER)
    ;
    _CREATE_RIBBON()\RIBBON_TABBAR(_CREATE_RIBBON()\RIBBON_TABBAR_NUMBER) = name
    ;
    _RIBBON_BackGround(gadget)
    
  EndProcedure
  ;
  Procedure _AddRibbonItem(gadget.i, tab_number.i, gadget_number.i, name.s, type.i, option.i, image.i)
    ;
    ; SI L'ITEM EST UNE SEPARATION.
    ;
    If type = #Ribbon_Separator
      name      = #Null$
      option    = 0
      image     = 0
    EndIf
    ;
    ; AJOUT DES INFORMATIONS DE L'ITEM.
    ;
    FindMapElement(_CREATE_RIBBON(), Str(gadget))
    ;
    If tab_number > _CREATE_RIBBON()\RIBBON_TABBAR_NUMBER
      ProcedureReturn  
    EndIf
    ;
    If _CREATE_RIBBON()\RIBBON_TABPAGE(tab_number)\RIBBON_PAGE_NUMBER + 1 <= #_RIBBON_MAX_BUTTON
      _CREATE_RIBBON()\RIBBON_TABPAGE(tab_number)\RIBBON_PAGE_NUMBER  + 1
      _CREATE_RIBBON()\RIBBON_TABPAGE(tab_number)\RIBBON_PAGE_GADGET    [_CREATE_RIBBON()\RIBBON_TABPAGE(tab_number)\RIBBON_PAGE_NUMBER] = type
      _CREATE_RIBBON()\RIBBON_TABPAGE(tab_number)\RIBBON_PAGE_STEXTE    [_CREATE_RIBBON()\RIBBON_TABPAGE(tab_number)\RIBBON_PAGE_NUMBER] = name
      _CREATE_RIBBON()\RIBBON_TABPAGE(tab_number)\RIBBON_PAGE_HANDLE    [_CREATE_RIBBON()\RIBBON_TABPAGE(tab_number)\RIBBON_PAGE_NUMBER] = gadget_number
      _CREATE_RIBBON()\RIBBON_TABPAGE(tab_number)\RIBBON_PAGE_OPTION    [_CREATE_RIBBON()\RIBBON_TABPAGE(tab_number)\RIBBON_PAGE_NUMBER] = option
      _CREATE_RIBBON()\RIBBON_TABPAGE(tab_number)\RIBBON_PAGE_IIMAGE    [_CREATE_RIBBON()\RIBBON_TABPAGE(tab_number)\RIBBON_PAGE_NUMBER] = image
      _CREATE_RIBBON()\RIBBON_TABPAGE(tab_number)\RIBBON_PAGE_FRONTCOLOR[_CREATE_RIBBON()\RIBBON_TABPAGE(tab_number)\RIBBON_PAGE_NUMBER] = -1
      _CREATE_RIBBON()\RIBBON_TABPAGE(tab_number)\RIBBON_PAGE_BACKCOLOR [_CREATE_RIBBON()\RIBBON_TABPAGE(tab_number)\RIBBON_PAGE_NUMBER] = -1
      ;
      If option & #Ribbon_Toggle_Option And _CREATE_RIBBON()\RIBBON_TABPAGE(tab_number)\RIBBON_SELS_TOGGLE = 0
        _CREATE_RIBBON()\RIBBON_TABPAGE(tab_number)\RIBBON_SELS_TOGGLE = _CREATE_RIBBON()\RIBBON_TABPAGE(tab_number)\RIBBON_PAGE_NUMBER
        _CREATE_RIBBON()\RIBBON_TABPAGE(tab_number)\RIBBON_PAGE_TOGGLE[  _CREATE_RIBBON()\RIBBON_TABPAGE(tab_number)\RIBBON_PAGE_NUMBER] = #True
      EndIf
    EndIf
    ;
    _RIBBON_BackGround(gadget)
    
  EndProcedure
  ;
  Procedure.i _RibbonColor(gadget.i, Color.l)
    ;
    ;
    ;
    Define.i i, ires
    Define Dim _RIBBON_tabColor_Temps.i(14)
    ;
    _SAV_COLOR = 3
    ;
    Select Color
      Case #Ribbon_Default
        ires        = CopyArray(_RIBBON_tabColor_Grey(),   _RIBBON_tabColor_Temps())
      Case #Ribbon_Red
        ires        = CopyArray(_RIBBON_tabColor_Red(),    _RIBBON_tabColor_Temps())
      Case #Ribbon_Green
        ires        = CopyArray(_RIBBON_tabColor_Green(),  _RIBBON_tabColor_Temps())
      Case #Ribbon_Blue
        ires        = CopyArray(_RIBBON_tabColor_Blue(),   _RIBBON_tabColor_Temps())
      Case #Ribbon_Yellow
        ires        = CopyArray(_RIBBON_tabColor_Yellow(), _RIBBON_tabColor_Temps())
      Case #Ribbon_Pink
        ires        = CopyArray(_RIBBON_tabColor_Pink(),   _RIBBON_tabColor_Temps())
      Case #Ribbon_Dark
        _SAV_COLOR  = 14
        ires        = CopyArray(_RIBBON_tabColor_Dark(),   _RIBBON_tabColor_Temps())
    EndSelect
    ;
    If ires <> 0
      For i=0 To ArraySize(_RIBBON_tabColor_Default())
        If _RIBBON_tabColor_Temps(i) > 0
          _RIBBON_tabColor_Default(i) = _RIBBON_tabColor_Temps(i)
        EndIf
      Next i
    EndIf
    ;
    FreeArray(_RIBBON_tabColor_Temps())
  
  EndProcedure
  ;
  Procedure _RibbonItemColor(gadget.i, item.i, color.i)
    ;
    ;
    ;
    Define.i i
    ;
    FindMapElement(_CREATE_RIBBON(), Str(gadget))
    ;
    For i=1 To _CREATE_RIBBON()\RIBBON_TABPAGE(_CREATE_RIBBON()\RIBBON_TABBAR_SELECT)\RIBBON_PAGE_NUMBER
      If item = _CREATE_RIBBON()\RIBBON_TABPAGE(_CREATE_RIBBON()\RIBBON_TABBAR_SELECT)\RIBBON_PAGE_HANDLE[i]
        Debug "Color Change ..."
      EndIf
    Next i
    ;
    _RIBBON_BackGround(gadget)
    
  EndProcedure
  ;
  Procedure _AttachRibbonButtonPopup(gadget.i, button.i, popup.i)
    ;
    ;
    ;
    Protected.i i, j
    ;
    FindMapElement(_CREATE_RIBBON(), Str(gadget))
    ;
    For j=1 To _CREATE_RIBBON()\RIBBON_TABBAR_NUMBER
      For i=1 To _CREATE_RIBBON()\RIBBON_TABPAGE(j)\RIBBON_PAGE_NUMBER
        If _CREATE_RIBBON()\RIBBON_TABPAGE(j)\RIBBON_PAGE_HANDLE[i] = button
          _CREATE_RIBBON()\RIBBON_TABPAGE(j)\RIBBON_PAGE_BUTTONMENU[i] = popup
        EndIf
      Next i
    Next j
  
  EndProcedure
  
  Procedure.i _DisableMenuRibbon(gadget.i, state.b)
    ;
    ;
    ;
    FindMapElement(_CREATE_RIBBON(), Str(gadget))
    ;
    If _CREATE_RIBBON()\RIBBON_MENU_DISABLE <> state
      _CREATE_RIBBON()\RIBBON_MENU_DISABLE = state
    EndIf
    
  EndProcedure
  ;
  Procedure _DisableGadget(gadget.i, value.b)
    ;
    ;
    ;
    If FindMapElement(_CREATE_RIBBON(), Str(gadget)) <> #Null
      ;_CREATE_RIBBON()\disable = value
      ;
    EndIf    
    
  EndProcedure
  ;
  Procedure _HideGadget(gadget.i, value.b)
    ;
    ;
    ;
    If FindMapElement(_CREATE_RIBBON(), Str(gadget)) <> #Null
      ;_CREATE_RIBBON()\hide = value
      HideGadget(gadget, value)
    EndIf
  
  EndProcedure
  
  Procedure _FreeGadget(gadget.i)
    ;
    ;
    ;
    If FindMapElement(_CREATE_RIBBON(), Str(gadget)) <> #Null
      FreeGadget(_CREATE_RIBBON()\gadget)
      DeleteMapElement(_CREATE_RIBBON(), Str(gadget))
    EndIf
  
  EndProcedure
  ;
  DataSection
  icon_menu_system_png_start:
    Data.q $0A1A0A0D474E5089,$524448490D000000,$1000000060000000,$7ABAE90000000608,$59487009000000F9,$0B0000130B000073,$0000189C9A000113,$00004D5248632000
    Data.q $000085800000447A,$00000E82000041FB,$0000F2F00000947C,$2C9D671A0000923A,$44491E020000A2D8,$4B4B58DCDA785441,$48B452773E145102,$AB415573BDB69822
    Data.q $AAAE203FC2D95681,$FF0AB575C48BF8B5,$5AA12B30936C3D80,$D2443038216918B5,$7BD464642DBAB14B,$7C0E203D464C63EE,$731E7BBEF9DCCCE7,$70291E1FEE14A509
    Data.q $0C101C4C381C71CC,$EC2DAF78DCD2546F,$C74A2D9F27DCF45D,$F5EBC5C3353D6CB2,$3EF73F111F1C9C3A,$C65E3BE000A73B3D,$A8D08A800000AC88,$02FDB401316869A4
    Data.q $822D26AB6FC0EDB4,$7CE8B5292E4C8057,$F25D121F8024A8B6,$4DF38A9A08951B5D,$98A13F5A84C296E9,$96830D97844FCF0F,$4C8BEA9A60AA830D,$BDC227E58C5E08AB
    Data.q $2F3F34C3CD13F6E4,$8D12E61FF099ED32,$2A08A34C0250C465,$97849A6FBBE59E35,$AEBA81E6485F9815,$D6D818951FC91C4F,$A75DF91BB12C002B,$4B856582497267F9
    Data.q $49A6FB474D8E3F74,$D4A60852259E3B78,$89493B9593E3E43A,$022B20BEB1AF77C8,$D812ADB00440FC8B,$CBC6F08729E34E96,$0B4112C414DE3549,$087A2C7D054FA16A
    Data.q $D4562B0F5345FB56,$87D1209558F85970,$7AD51189910C9F98,$BD491AC3B2B0D119,$45B3E70A5B8DA099,$53C6C0EFCDDAD229,$640FF6AC64975F19,$66AFE0B4A2346CC0
    Data.q $DCD8556B9EA1502B,$01E595D5800002D8,$35E8A3559A2A82DC,$66EB0F3A4FDEDDDE,$6F6905FA561C3840,$652A7D68BFCF67CE,$DB1725DC22312B08,$A2244880CDD618F1
    Data.q $39F4C402607BC2C8,$B7F21A3841AFCE88,$D64D63E7EC86C576,$26D9DDDB31434EA4,$5EEA55B6D1C76A00,$933A38E6190E53C7,$55BC666BABCB924B,$3CA3F5A9978A91F8
    Data.q $634EEE9C001BFE8E,$00000000A51A5984,$826042AE444E4549
  icon_menu_system_png_end:
EndDataSection

EndModule

; ****************************************************************************
; ****************************************************************************
; ****************************************************************************
;-
;- ROUTINE DE TEST DES FONCTIONS (MODULE).

CompilerIf #PB_Compiler_IsMainFile = 1
 
  Define.i event, i, j = 1
  Define.i aa, bb, ab, bb
  OpenWindow   (0, 0, 0, 800, 600, "Custum Gadget", #PB_Window_MinimizeGadget | #PB_Window_MaximizeGadget | #PB_Window_SizeGadget | #PB_Window_ScreenCentered)
  
  aa = RibbonBar::_CreateGadget(#PB_Any, "Purelight Pro")
  RibbonBar::_RibbonColor(0, #Ribbon_Default)
  
  RibbonBar::_AddRibbonTab(aa, "File")
  RibbonBar::_AddRibbonTab(aa, "Project")
  RibbonBar::_AddRibbonTab(aa, "Compiler")
  RibbonBar::_AddRibbonTab(aa, "Language")
  
  RibbonBar::_AddRibbonItem(0, 1, 1,   "New",       #Ribbon_Button,     #Ribbon_Size_48x64, 0)
  RibbonBar::_AddRibbonItem(0, 1, 2,   "Open",      #Ribbon_Button,     #Ribbon_Size_48x64, 0)
  RibbonBar::_AddRibbonItem(0, 1, 3,   "Save",      #Ribbon_Button,     #Ribbon_Size_48x64, 0)
  RibbonBar::_AddRibbonItem(0, 1, 0,   #Null$,      #Ribbon_Separator,  0, 0)
  RibbonBar::_AddRibbonItem(0, 1, 99,  "Dark",      #Ribbon_Button,     #Ribbon_Size_48x64, 0)
  RibbonBar::_AddRibbonItem(0, 1, 100, "Default",   #Ribbon_Button,     #Ribbon_Size_48x32, 0)
  RibbonBar::_AddRibbonItem(0, 1, 101, "Red",       #Ribbon_Button,     #Ribbon_Size_48x32 | #Ribbon_Bottom, 0)
  RibbonBar::_AddRibbonItem(0, 1, 102, "Green",     #Ribbon_Button,     #Ribbon_Size_48x32, 0)
  RibbonBar::_AddRibbonItem(0, 1, 103, "Blue",      #Ribbon_Button,     #Ribbon_Size_48x32 | #Ribbon_Bottom, 0)
  RibbonBar::_AddRibbonItem(0, 1, 104, "Yellow",    #Ribbon_Button,    #Ribbon_Size_48x32, 0)
  RibbonBar::_AddRibbonItem(0, 1, 105, "Pink",      #Ribbon_Button,     #Ribbon_Size_48x32 | #Ribbon_Bottom, 0)
  RibbonBar::_AddRibbonItem(0, 1, 0,  #Null$,       #Ribbon_Separator,  0, 0)
  RibbonBar::_AddRibbonItem(0, 1, 4,  "Toggle 1",   #Ribbon_Button,     #Ribbon_Toggle | #Ribbon_Size_96x32 | #Ribbon_Menu, 0)
  RibbonBar::_AddRibbonItem(0, 1, 5,  "Toggle 2",   #Ribbon_Button,     #Ribbon_Toggle | #Ribbon_Size_96x32 | #Ribbon_Menu | #Ribbon_Bottom, 0)
  RibbonBar::_AddRibbonItem(0, 1, 6,  "Toggle 3",   #Ribbon_Button,     #Ribbon_Toggle | #Ribbon_Size_48x32 | #Ribbon_Menu, 0)
  RibbonBar::_AddRibbonItem(0, 1, 7,  "Toggle 4",   #Ribbon_Button,     #Ribbon_Toggle | #Ribbon_Size_48x32 | #Ribbon_Menu | #Ribbon_Bottom, 0)
  RibbonBar::_AddRibbonItem(0, 1, 0,  #Null$,       #Ribbon_Separator,  0, 0)
  RibbonBar::_AddRibbonItem(0, 1, 8,  "Toggle 5",   #Ribbon_Button,     #Ribbon_Size_48x64 | #Ribbon_Toggle | #Ribbon_Toggle_Option | #Ribbon_Menu, 0)
  RibbonBar::_AddRibbonItem(0, 1, 9,  "Toggle 6",   #Ribbon_Button,     #Ribbon_Toggle | #Ribbon_Size_48x32 | #Ribbon_Toggle_Option, 0)
  RibbonBar::_AddRibbonItem(0, 1, 10,  "Toggle 7",  #Ribbon_Button,     #Ribbon_Toggle | #Ribbon_Size_48x32 | #Ribbon_Bottom | #Ribbon_Toggle_Option, 0)
  RibbonBar::_AddRibbonItem(0, 1, 11, "Toggle 8",   #Ribbon_Button,     #Ribbon_Toggle | #Ribbon_Size_48x32 | #Ribbon_Toggle_Option, 0)
  RibbonBar::_AddRibbonItem(0, 1, 12, "Toggle 9",   #Ribbon_Button,     #Ribbon_Toggle | #Ribbon_Size_48x32 | #Ribbon_Bottom | #Ribbon_Toggle_Option, 0)
  RibbonBar::_AddRibbonItem(0, 1, 0,  #Null$,       #Ribbon_Separator,  0, 0)
  RibbonBar::_AddRibbonItem(0, 1, 13, "Button 4",   #Ribbon_Button,     #Ribbon_Size_48x32, 0)
  RibbonBar::_AddRibbonItem(0, 1, 14, "Button 5",   #Ribbon_Button,     #Ribbon_Size_48x32 | #Ribbon_Bottom, 0)
  
  RibbonBar::_AddRibbonItem(0, 4, 15, "French",     #Ribbon_Button,     #Ribbon_Toggle | #Ribbon_Toggle_Option, 0)
  RibbonBar::_AddRibbonItem(0, 4, 16, "English",    #Ribbon_Button,     #Ribbon_Toggle | #Ribbon_Toggle_Option, 0)
  RibbonBar::_AddRibbonItem(0, 4, 17, "German",     #Ribbon_Button,     #Ribbon_Toggle | #Ribbon_Toggle_Option, 0)
  RibbonBar::_AddRibbonItem(0, 4, 18, "Italian",    #Ribbon_Button,     #Ribbon_Toggle | #Ribbon_Toggle_Option, 0)
  RibbonBar::_AddRibbonItem(0, 4, 19, "Spanish",    #Ribbon_Button,     #Ribbon_Toggle | #Ribbon_Toggle_Option, 0)

  Repeat
    event = WaitWindowEvent(10)
  Until event = #PB_Event_CloseWindow

CompilerEndIf
Cordialement,
GallyHC
Configuration : Tower: Windows 10 (Processeur: i7 "x64") (Mémoire: 16Go) (GeForce GTX 760 - 2Go) - PureBasic 5.72 (x86 et x64)
Avatar de l’utilisateur
Micoute
Messages : 2584
Inscription : dim. 02/oct./2011 16:17
Localisation : 35520 La Mézière

Re: Ribbon > avoir vos avis de ce test...

Message par Micoute »

C'est très joli, j'adore, merci pour le partage.
Microsoft Windows 10 Famille 64 bits : Carte mère : ASRock 970 Extreme3 R2.0 : Carte Graphique NVIDIA GeForce RTX 3080 : Processeur AMD FX 6300 6 cœurs 12 threads 3,50 GHz PB 6.20 LTS (x64)
Un homme doit être poli, mais il doit aussi être libre !
Avatar de l’utilisateur
venom
Messages : 3137
Inscription : jeu. 29/juil./2004 16:33
Localisation : Klyntar
Contact :

Re: Ribbon > avoir vos avis de ce test...

Message par venom »

Bonjour GallyHC,

Bravo, en effet le résultat est sympa. J'aime bien ce type de gadget, ça change du menu classic.






@++
Windows 10 x64, PureBasic 5.73 x86 & x64
GPU : radeon HD6370M, CPU : p6200 2.13Ghz
Répondre