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