Word fera un document qui ne ressemblera jamais à un document notepad alors que ton interface et japbe peuvent (dans la limite d'une fenêtre certes) donner le même résultat.
Mais bon, autant pour moi ne te brusque pas hein
Oh si j'imagine, et heureusement que tu t'en tamponnes, manquerait plus que çaChris a écrit :Je ne me brusque pas, ni moi, ni personne d'autre.
Personnellement, je m'en tamponne à un point que tu n'imagine même pas.
Oui, j'ai pas trop réfléchi quand j'ai mis ce label.falsam a écrit :Merci Chris de faire partager ce code qui trouve très bien sa place quand on a besoin que de ce qu'il sait faire. Peut être que tu pourrez remplacer le champ Constante par Id Gadget.
Code : Tout sélectionner
; ==============================
; **** Création de fenêtres ****
; ==============================
;
Global Auteur$
Auteur$="Grand Chris & un petit peu GeBonet"
;
;- Enumerations
;{/ Fenêtres
Enumeration
  #Window_Main
EndEnumeration
;/ Gadgets
Enumeration
  #CheckBox_SystemMenu
  #CheckBox_MinimizeGadget
  #CheckBox_MaximizeGadget
  #CheckBox_SizeGadget
  #CheckBox_Invisible
  #CheckBox_TitleBar
  #CheckBox_BorderLess
  #CheckBox_Tool
  #CheckBox_ScreenCentered
  #CheckBox_WindowCentered
  #CheckBox_Maximize
  #CheckBox_Minimize
  #CheckBox_NoGadgets
  ;
  #CheckBox_Smart
  #CheckBox_Bound
  #CheckBox_Loop
  #CheckBox_Menus
  #CheckBox_Status
  
  #Button_OnPlace
  #Button_Cancel
  #Button_NewTab
  
  #String_W
  #String_H
  #String_X
  #String_Y
  #String_WindowIdent
  #String_Bound_W_Mini
  #String_Bound_H_Mini
  #String_Bound_W_Maxi
  #String_Bound_H_Maxi
  #String_Titre
  #String_StatusChamp
  
  #Edit_Code
  
  #Frame3D_Attributs
  #Frame3D_Taille
  #Frame3D_Constante
  #Frame3D_TailleBound
  #Frame3D_Action
  #Frame3D_Titre
  #Frame3D_Options
  #Frame3D_Loop
  #Frame3D_Menus
  #Frame3D_Status
  
  #Text_Taille
  #Text_Position
  #Text_Largeur
  #Text_Hauteur
  #Text_PosX
  #Text_PosY
  #Text_TailleMin
  #Text_TailleMax
  #Text_LargeurMin
  #Text_HauteurMin
  #Text_LargeurMax
  #Text_HauteurMax
  #Text_StatusChamp
EndEnumeration
;/ Polices
Enumeration
  #Font
  #LF=10
EndEnumeration;}
;{- Constantes spéciales
;/ Constantes utilisées pour le transfert sous jaPBe
#WMCD_OpenFile            = 1 ; Ouvre un fichier dans une nouvelle page
#WMCD_InsertText          = 2 ; Insère le texte à la position du curseur.
#wmCD_ReplaceCompleteText = 3 ; Remplace la totalité du texte
#wmcd_ReplaceCurrentLine  = 4 ; Remplace la ligne ou se trouve le curseur
#wmcd_NewText             = 5 ; Ouvre un nouvel onglet, et lui passe le texte
;}
;{- Variables Globales
Global Button_OnPlace_Tooltip
Global Button_NewTab_Tooltip
Global Smart$
Global RunOneWin = FindWindow_(@"WindowClass_0", @"jaPBe-RunOneWindow")
Global PosX, PosY, On
;}
;{- Tableaux, Listes et Structures
Global Dim Chaines.s(1, 12)
Chaines(1,0)  = "#PB_Window_SystemMenu|"
Chaines(1,1)  = "#PB_Window_MinimizeGadget|"
Chaines(1,2)  = "#PB_Window_MaximizeGadget|"
Chaines(1,3)  = "#PB_Window_SizeGadget|"
Chaines(1,4)  = "#PB_Window_Invisible|"
Chaines(1,5)  = "#PB_Window_TitleBar|"
Chaines(1,6)  = "#PB_Window_BorderLess|"
Chaines(1,7)  = "#PB_Window_Tool|"
Chaines(1,8)  = "#PB_Window_ScreenCentered|"
Chaines(1,9)  = "#PB_Window_WindowCentered|"
Chaines(1,10) = "#PB_Window_Maximize|"
Chaines(1,11) = "#PB_Window_Minimize|"
Chaines(1,12) = "#PB_Window_NoGadgets|"
;}
;- Creation tooltip
Procedure GadgetBalloonToolTip(WindowNumber.l, GadgetNumber.l, Text.s)
  Protected Tooltip.l, Balloon.TOOLINFO
  Tooltip = CreateWindowEx_(0, "ToolTips_Class32", "", #WS_POPUP | #TTS_NOPREFIX | #TTS_BALLOON, 0, 0, 0, 0, WindowID(WindowNumber), 0, GetModuleHandle_(0), 0)
  SendMessage_(Tooltip, #TTM_SETTIPTEXTCOLOR, GetSysColor_(#COLOR_INFOTEXT), 0)
  SendMessage_(Tooltip, #TTM_SETTIPBKCOLOR, GetSysColor_(#COLOR_INFOBK), 0)
  SendMessage_(Tooltip, #TTM_SETMAXTIPWIDTH, 0, 180)
  Balloon\cbSize = SizeOf(TOOLINFO)
  Balloon\uFlags = #TTF_IDISHWND | #TTF_SUBCLASS
  If IsGadget(GadgetNumber)
    Balloon\hwnd = GadgetID(GadgetNumber)
    Balloon\uId = GadgetID(GadgetNumber)
  Else
    Balloon\hwnd = GadgetNumber
    Balloon\uId = GadgetNumber
  EndIf
  Balloon\lpszText = @Text
  SendMessage_(Tooltip, #TTM_ADDTOOL, 0, @Balloon)
  ProcedureReturn Tooltip
EndProcedure
Procedure ChangeGadgetBalloonToolTip(Tooltip.l, GadgetNumber.l, Text.s)
  Protected Balloon.TOOLINFO
  Balloon\cbSize = SizeOf(TOOLINFO)
  Balloon\uFlags = #TTF_IDISHWND | #TTF_SUBCLASS
  If IsGadget(GadgetNumber)
    Balloon\hwnd = GadgetID(GadgetNumber)
    Balloon\uId = GadgetID(GadgetNumber)
  Else
    Balloon\hwnd = GadgetNumber
    Balloon\uId = GadgetNumber
  EndIf
  Balloon\lpszText = @Text
  SendMessage_(Tooltip, #TTM_ADDTOOL, 0, @Balloon)
EndProcedure
Procedure FreeBalloonTooltip(Tooltip.l)
  DestroyWindow_(Tooltip.l)
EndProcedure 
; - Procédures
;/ Création de la fenêtre
Procedure OpenWin_Main()
  ;
  ;If OpenWindow(#Window_Main, PosX, PosY, 465, 465, "WindowMaker", #PB_Window_Tool|#PB_Window_SystemMenu|#PB_Window_TitleBar|#PB_Window_WindowCentered|#PB_Window_SizeGadget)
  If OpenWindow(#Window_Main, PosX, PosY, 465, 550, "WindowMaker", #PB_Window_Tool|#PB_Window_SystemMenu|#PB_Window_TitleBar|#PB_Window_WindowCentered|#PB_Window_SizeGadget)
    WindowBounds(#Window_Main, 465, 465, #PB_Ignore, 600)
    StickyWindow(#Window_Main, 1)
    ;
    Font = LoadFont(#Font, "Courrier", 8, #PB_Font_HighQuality)
    ;
    CheckBoxGadget(#CheckBox_SystemMenu,     15,  80,100, 20, "SystemMenu")
    CheckBoxGadget(#CheckBox_Tool,          120,  80,100, 20, "Tool")
    CheckBoxGadget(#CheckBox_MinimizeGadget, 15, 105,100, 20, "MinimizeGadget")
    CheckBoxGadget(#CheckBox_ScreenCentered,120, 105,100, 20, "ScreenCentered ")
    CheckBoxGadget(#CheckBox_MaximizeGadget, 15, 130,100, 20, "MaximizeGadget")
    CheckBoxGadget(#CheckBox_WindowCentered,120, 130,100, 20, "WindowCentered ")
    CheckBoxGadget(#CheckBox_SizeGadget,     15, 155,100, 20, "SizeGadget")
    CheckBoxGadget(#CheckBox_Maximize,      120, 155,100, 20, "Maximize")
    CheckBoxGadget(#CheckBox_Smart,         240, 155, 90, 20, "SmartWindow")
    CheckBoxGadget(#CheckBox_Bound,         365, 155, 90, 20, "WindowBound")
    CheckBoxGadget(#CheckBox_Invisible,      15, 180,100, 20, "Invisible")
    CheckBoxGadget(#CheckBox_Minimize,      120, 180,100, 20, "Minimize")
    CheckBoxGadget(#CheckBox_TitleBar,       15, 205,100, 20, "TitleBar")
    CheckBoxGadget(#CheckBox_NoGadgets,     120, 205,100, 20, "NoGadgets")
    CheckBoxGadget(#CheckBox_BorderLess,     15, 230,100, 20, "BorderLess")
    CheckBoxGadget(#CheckBox_Loop,          135, 280, 90, 20, "Inclure Boucle")
    ;
    CheckBoxGadget(#CheckBox_Menus,100,325,100,20,"Menu O/N)")
    CheckBoxGadget(#CheckBox_Status,240,325,90,20,"Status O/N")
    ;
    ButtonGadget(#Button_NewTab,  240, 280, 75, 20, "", #PB_Button_Default)
    ButtonGadget(#Button_OnPlace, 315, 280, 75, 20, "Sur place")
    ButtonGadget(#Button_Cancel,  400, 280, 55, 20, "Quitter")
    ;
    If RunOneWin
      SetGadgetText(#Button_NewTab, "Nouvel onglet")
    Else
      DisableGadget(#Button_OnPlace, 1)
      SetGadgetText(#Button_NewTab, "Copier")
    EndIf
    ;
    StringGadget(#String_W, 240, 105, 45, 20, "", #ES_CENTER)
    StringGadget(#String_H, 300, 105, 45, 20, "", #ES_CENTER)
    StringGadget(#String_X, 355, 105, 45, 20, "", #ES_CENTER)
    StringGadget(#String_Y, 410, 105, 45, 20, "", #ES_CENTER)
    StringGadget(#String_WindowIdent, 10, 280, 110, 20, "")
    StringGadget(#String_Bound_W_Mini, 240, 230, 45, 20, "")
    StringGadget(#String_Bound_H_Mini, 300, 230, 45, 20, "")
    StringGadget(#String_Bound_W_Maxi, 355, 230, 45, 20, "")
    StringGadget(#String_Bound_H_Maxi, 410, 230, 45, 20, "")
    StringGadget(#String_Titre, 10, 25, 445, 20, "")
    ;
    StringGadget(#String_StatusChamp,400,325,50, 20, "")
    ;
    ; EditorGadget(#Edit_Code, 5, 320, 455, 140, #PB_Editor_ReadOnly)
    EditorGadget(#Edit_Code, 5, 355, 455, 190, #PB_Editor_ReadOnly)
    SetGadgetFont(#Edit_Code, FontID(#Font))
    SetGadgetColor(#Edit_Code, #PB_Gadget_BackColor , $00E1FFFF)
    ; 
    Frame3DGadget(#Frame3D_Attributs, 5, 55, 225, 200, "Attributs de la fenêtre")
    Frame3DGadget(#Frame3D_Taille, 235, 55, 225, 75, "Taille - Position de la fenêtre")
    Frame3DGadget(#Frame3D_Constante, 5, 260, 120, 50, "Constante")
    Frame3DGadget(#Frame3D_Loop, 130, 260, 100, 50, "Boucle")
    Frame3DGadget(#Frame3D_TailleBound, 235, 185, 225, 70, "Taille Mini/Maxi de la fenêtre")
    Frame3DGadget(#Frame3D_Action, 235, 260, 160, 50, "Coller dans")
    Frame3DGadget(#Frame3D_Titre, 5, 5, 455, 45, "Titre de la fenêtre")
    Frame3DGadget(#Frame3D_Options, 235, 135, 225, 45, "Options")
    ; ----------------------------------------------------------------
    Frame3DGadget(#Frame3D_Menus,   5, 310, 225,40, "Menus Standard")
    Frame3DGadget(#Frame3D_Status,235, 310, 225,40, "Status Barre")
    ;
    ; ---------------------------------------------------------------- 
    TextGadget(#Text_Taille, 245, 75, 100, 15, "Taille", #PB_Text_Center)
    TextGadget(#Text_Position, 355, 75, 100, 15, "Position", #PB_Text_Center)
    TextGadget(#Text_Largeur, 245, 90, 50, 15, "Largeur", #PB_Text_Center)
    TextGadget(#Text_Hauteur, 295, 90, 50, 15, "Hauteur", #PB_Text_Center)
    TextGadget(#Text_PosX, 355, 90, 45, 15, "X", #PB_Text_Center)
    TextGadget(#Text_PosY, 410, 90, 45, 15, "Y", #PB_Text_Center)
    TextGadget(#Text_TailleMin, 245, 200, 100, 15, "Taille mini", #PB_Text_Center)
    TextGadget(#Text_TailleMax, 355, 200, 100, 15, "Taille maxi", #PB_Text_Center)
    TextGadget(#Text_LargeurMin, 240, 215, 45, 15, "Largeur", #PB_Text_Center)
    TextGadget(#Text_HauteurMin, 300, 215, 45, 15, "Hauteur")
    TextGadget(#Text_LargeurMax, 355, 215, 45, 15, "Largeur")
    TextGadget(#Text_HauteurMax, 410, 215, 45, 15, "Hauteur")
    ;
    TextGadget(#Text_StatusChamp,330,327,65, 20,"Nb. Champs")
    ; 
    For i =#String_Bound_W_Mini To #String_Bound_H_Maxi
      DisableGadget(i, 1)
    Next
    DisableGadget(#CheckBox_Status, 1)
    DisableGadget(#Text_StatusChamp, 1)
    DisableGadget(#String_StatusChamp, 1)
    DisableGadget(#CheckBox_Bound, 1)
    ; 
    AddKeyboardShortcut(#Window_Main, #PB_Shortcut_Return, #Button_NewTab)
    AddKeyboardShortcut(#Window_Main, #PB_Shortcut_Control|#PB_Shortcut_Return, #Button_OnPlace)
    ; 
    Button_OnPlace_Tooltip = GadgetBalloonToolTip(#Window_Main, #Button_OnPlace, "Coller la fenêtre à la position du curseur."+Chr(10)+Chr(10)+"[Ctrl]+[Entrée]")
    Button_NewTab_Tooltip  = GadgetBalloonToolTip(#Window_Main, #Button_NewTab, "Coller dans un nouvel onglet."+Chr(10)+Chr(10)+"[Entrée]")
    ; 
    CheckBox_BorderLess_TT = GadgetBalloonToolTip(#Window_Main ,#CheckBox_BorderLess ,"Créer une fenêtre sans bordures" )
    CheckBox_Bound_TT = GadgetBalloonToolTip(#Window_Main ,#CheckBox_Bound , "Définit les dimensions maxi et mini de la fenêtre" )
    CheckBox_Invisible_TT = GadgetBalloonToolTip(#Window_Main ,#CheckBox_Invisible ,"Créer une fenêtre invisible" )
    CheckBox_Loop_TT = GadgetBalloonToolTip(#Window_Main ,#CheckBox_Loop , "Inclure la boucle dans le code")
    CheckBox_Maximize_TT = GadgetBalloonToolTip(#Window_Main ,#CheckBox_Maximize , "Ouvrir la fenêtre en mode maximisé")
    CheckBox_MaximizeGadget_TT = GadgetBalloonToolTip(#Window_Main ,#CheckBox_MaximizeGadget , "Ajouter le bouton 'Maximiser' en haut de la fenêtre")
    CheckBox_Minimize_TT = GadgetBalloonToolTip(#Window_Main ,#CheckBox_Minimize , "Ouvrir la fenêtre en mode Minimisé" )
    CheckBox_MinimizeGadget_TT = GadgetBalloonToolTip(#Window_Main ,#CheckBox_MinimizeGadget , "Ajouter le bouton 'Minimiser' en haut de la fenêtre")
    CheckBox_NoGadgets_TT = GadgetBalloonToolTip(#Window_Main ,#CheckBox_NoGadgets , "Créer une fenêtre sans gadgets")
    CheckBox_ScreenCentered_TT = GadgetBalloonToolTip(#Window_Main ,#CheckBox_ScreenCentered , "Créer une fenêtre centrée dans l'écran")
    CheckBox_SizeGadget_TT = GadgetBalloonToolTip(#Window_Main ,#CheckBox_SizeGadget , "Créer une fenêtre redimensionnable")
    CheckBox_Smart_TT = GadgetBalloonToolTip(#Window_Main ,#CheckBox_Smart , "Tente d'empecher le scintillement de la fenêtre lors des redimensionnements" )
    CheckBox_SystemMenu_TT = GadgetBalloonToolTip(#Window_Main ,#CheckBox_SystemMenu , "Créer une fenêtre avec le menu système")
    CheckBox_TitleBar_TT = GadgetBalloonToolTip( #Window_Main,#CheckBox_TitleBar , "Créer une fenêtre avec une barre de titre")
    CheckBox_Tool_TT = GadgetBalloonToolTip(#Window_Main ,#CheckBox_Tool , "Créer une fenêtre avec une barre de titre réduite")
    CheckBox_Window_Menu = GadgetBalloonToolTip(#Window_Main ,#CheckBox_WindowCentered , "Créer une fenêtre centrée dans la fenêtre mère")
    ; 
    CheckBox_WindowCentered_TT = GadgetBalloonToolTip(#Window_Main ,#CheckBox_Menus, "Créer un Menu Standard")
    CheckBox_WindowCentered_TT = GadgetBalloonToolTip(#Window_Main ,#CheckBox_Status,"Créer un Statud Barre")
    CheckBox_WindowCentered_TT = GadgetBalloonToolTip(#Window_Main ,#String_StatusChamp,"Nombre de champs"+Chr(#LF)+"pour le status barre")
    ProcedureReturn #True
  Else
    ProcedureReturn #False
  EndIf
  
EndProcedure
;/ Création et affichage du code
Procedure BuildString()
  ;/ Initialisation de l'affichage
  Option$ = ""
  ClearGadgetItems(#Edit_Code)
  ;
  ;/ Création de la chaine d'options
  For i = #CheckBox_SystemMenu To #CheckBox_NoGadgets
    If Chaines(0,i) = "1"
      Option$ + Chaines(1,i) 
    EndIf
  Next
  ;
  If Right(Option$, 1) = "|"
    Option$ = Left(Option$, Len(Option$)-1) 
  EndIf
  ;
  Ident$ = GetGadgetText(#String_WindowIdent)
  If Left(Ident$,1) <> "#"
    Ident$ = "#"+Ident$
  EndIf
  ;
  If Ident$ = "#" : Ident$ = "#Win_0" : EndIf
  ;
  X$ = GetGadgetText(#String_X) : If X$ = "" : X$ = "#PB_Ignore" : EndIf
  Y$ = GetGadgetText(#String_Y) : If Y$ = "" : Y$ = "#PB_Ignore" : EndIf
  W$ = GetGadgetText(#String_W) : If W$ = "" : W$ = "#PB_Ignore" : EndIf
  H$ = GetGadgetText(#String_H) : If H$ = "" : H$ = "#PB_Ignore" : EndIf
  ;
  Titre$ = Chr(34)+GetGadgetText(#String_Titre)+Chr(34)
  ;
  Temp$ = Ident$+", "+X$+", "+Y$+", "+W$+", "+H$+", "+Titre$+", "+Option$
  If Right(Trim(Temp$), 1) = "," : Temp$ = Left(Temp$, Len(Temp$)-2) : EndIf
  ; 
  Fenetre$ = "If OpenWindow("+Temp$+")"
  ;/ Création de la commande "WindowBound()"
  If GetGadgetState(#CheckBox_Bound) = 1
    BWMax$ = GetGadgetText(#String_Bound_W_Maxi) : If BWMax$ = "" : BWMax$ = "#PB_Ignore" : EndIf
    BHMax$ = GetGadgetText(#String_Bound_H_Maxi) : If BHMax$ = "" : BHMax$ = "#PB_Ignore" : EndIf
    BWMin$ = GetGadgetText(#String_Bound_W_Mini) : If BWMin$ = "" : BWMin$ = "#PB_Ignore" : EndIf
    BHMin$ = GetGadgetText(#String_Bound_H_Mini) : If BHMin$ = "" : BHMin$ = "#PB_Ignore" : EndIf
    Bound$ = "WindowBounds("+Ident$+", "+BWMin$+", "+BHMin$+", "+BWMax$+", "+BHMax$+")" 
  ElseIf GetGadgetState(#CheckBox_Bound) = 0
    Bound$ = ""
  EndIf
  ;/ Création de la commande "SmartWindowRefresh()"
  If GetGadgetState(#CheckBox_Smart) = 1
    Smart$ = "SmartWindowRefresh("+ Ident$+", 1)"
  ElseIf GetGadgetState(#CheckBox_Smart) = 0
    Smart$ = ""
  EndIf
  ;/ Affichage du code
  Date$ = FormatDate("%dd/%mm/%yyyy", Date())
  Time$ = FormatDate("%hh:%ii:%ss", Date())
  
  AddGadgetItem(#Edit_Code, -1,"; ==================================================")
  AddGadgetItem(#Edit_Code, -1,"; Code crée par : "+ Auteur$)
  AddGadgetItem(#Edit_Code, -1,"; Le : "+Date$+" a "+Time$) 
  AddGadgetItem(#Edit_Code, -1,"; ==================================================")
  AddGadgetItem(#Edit_Code, -1, "Enumeration")
  AddGadgetItem(#Edit_Code, -1, "  "+Ident$)
  AddGadgetItem(#Edit_Code, -1, "EndEnumeration")
  AddGadgetItem(#Edit_Code, -1, "")
  ; -----------------------------------------------------
  If On=1
    AddGadgetItem(#Edit_Code, -1, "Enumeration")
    AddGadgetItem(#Edit_Code, -1, "  #MenuBar_Form1_titre_FICHIER")
    AddGadgetItem(#Edit_Code, -1, "  #MenuBar_Form1_Nouveau")
    AddGadgetItem(#Edit_Code, -1, "  #MenuBar_Form1_Ouvrir")
    AddGadgetItem(#Edit_Code, -1, "  #MenuBar_Form1_Sauver")
    AddGadgetItem(#Edit_Code, -1, "  #MenuBar_Form1_Sortie")
    AddGadgetItem(#Edit_Code, -1, "  #MenuBar_Form1_titreEDIT")
    AddGadgetItem(#Edit_Code, -1, "  #MenuBar_Form1_Copier")
    AddGadgetItem(#Edit_Code, -1, "  #MenuBar_Form1_Coller")
    AddGadgetItem(#Edit_Code, -1, "  #MenuBar_Form1_Effacer")
    AddGadgetItem(#Edit_Code, -1, "  #MenuBar_Form1_Chercher")
    AddGadgetItem(#Edit_Code, -1, "  #MenuBar_Form1_titreAIDES")
    AddGadgetItem(#Edit_Code, -1, "  #MenuBar_Form1_Aides")
    AddGadgetItem(#Edit_Code, -1, "  #MenuBar_Form1_About")
    AddGadgetItem(#Edit_Code, -1, "EndEnumeration")
    AddGadgetItem(#Edit_Code, -1, "")
  EndIf   
  ; ----------------------------------------------------
  AddGadgetItem(#Edit_Code, -1, Fenetre$)
  ;
  If Bound$ <> ""
    AddGadgetItem(#Edit_Code, -1, Bound$)
  EndIf
  If Smart$ <> ""
    AddGadgetItem(#Edit_Code, -1, Smart$)
  EndIf
  ;
  AddGadgetItem(#Edit_Code, -1, "")
  AddGadgetItem(#Edit_Code, -1, "")
  AddGadgetItem(#Edit_Code, -1, "Endif")
  AddGadgetItem(#Edit_Code, -1, "")
  ;
  If On=1
    AddGadgetItem(#Edit_Code, -1, "; ---- Menus ---------")
    AddGadgetItem(#Edit_Code, -1, "")
    AddGadgetItem(#Edit_Code, -1, "MenuBar_Form1=CreateMenu(#PB_Any,WindowID(#Win_0))")
    ;
    AddGadgetItem(#Edit_Code, -1, "MenuTitle("+Chr(34)+"Fichier"+Chr(34)+")")
    AddGadgetItem(#Edit_Code, -1, "  MenuItem(#MenuBar_Form1_Nouveau,"+Chr(34)+"Nouveau"+Chr(34)+")")
    AddGadgetItem(#Edit_Code, -1, "  MenuItem(#MenuBar_Form1_Ouvrir,"+Chr(34)+"Ouvrir"+Chr(34)+")")
    AddGadgetItem(#Edit_Code, -1, "  MenuItem(#MenuBar_Form1_Sauver,"+Chr(34)+"Sauver"+Chr(34)+")")
    AddGadgetItem(#Edit_Code, -1, "  MenuBar()")
    AddGadgetItem(#Edit_Code, -1, "  MenuItem(#MenuBar_Form1_Sortie,"+Chr(34)+"Sortie"+Chr(34)+")")
    AddGadgetItem(#Edit_Code, -1, "MenuTitle("+Chr(34)+"Editer"+Chr(34)+")")
    AddGadgetItem(#Edit_Code, -1, "  MenuItem(#MenuBar_Form1_Copier,"+Chr(34)+"Copier"+Chr(34)+")")
    AddGadgetItem(#Edit_Code, -1, "  MenuItem(#MenuBar_Form1_Coller,"+Chr(34)+"Coller"+Chr(34)+")")
    AddGadgetItem(#Edit_Code, -1, "  MenuItem(#MenuBar_Form1_Effacer,"+Chr(34)+"Effacer"+Chr(34)+")")
    AddGadgetItem(#Edit_Code, -1, "  MenuItem(#MenuBar_Form1_Chercher,"+Chr(34)+"Chercher"+Chr(34)+")")
    AddGadgetItem(#Edit_Code, -1, "MenuTitle("+Chr(34)+"Aides"+Chr(34)+")")
    AddGadgetItem(#Edit_Code, -1, "  MenuItem(#MenuBar_Form1_Aides,"+Chr(34)+"Aides"+Chr(34)+")")
    AddGadgetItem(#Edit_Code, -1, "  MenuItem(#MenuBar_Form1_Coller,"+Chr(34)+"A Propos"+Chr(34)+")")
    AddGadgetItem(#Edit_Code, -1, "")
    If GetGadgetState(#CheckBox_Status)
      AddGadgetItem(#Edit_Code, -1, "; ---- Status barre -------------------")
      AddGadgetItem(#Edit_Code, -1, "StatusBar_Form1=CreateStatusBar(#PB_Any,WindowID(#Win_0))")
      Nb=Val(GetGadgetText(#String_StatusChamp))
      If Nb<>0
        For i=1 To Nb
          AddGadgetItem(#Edit_Code, -1, "  AddStatusBarField(100)")
        Next i
      EndIf  
      AddGadgetItem(#Edit_Code, -1, "")
    EndIf  
  EndIf
  ; 
  AddGadgetItem(#Edit_Code, -1, "; ---- Boucle --------------------------")
  AddGadgetItem(#Edit_Code, -1, "")
  If GetGadgetState(#CheckBox_Loop ) = 1
    AddGadgetItem(#Edit_Code, -1, "quitte=0")
    AddGadgetItem(#Edit_Code, -1, "Repeat")
    AddGadgetItem(#Edit_Code, -1, "  EventID  =WaitWindowEvent()")
    AddGadgetItem(#Edit_Code, -1, "  MenuID   =EventMenu()")
    AddGadgetItem(#Edit_Code, -1, "  GadgetID =EventGadget()")
    AddGadgetItem(#Edit_Code, -1, "  WindowID =EventWindow()")
    AddGadgetItem(#Edit_Code, -1, "")
    AddGadgetItem(#Edit_Code, -1, "  Select EventID")
    AddGadgetItem(#Edit_Code, -1, "    Case #PB_Event_CloseWindow")
    AddGadgetItem(#Edit_Code, -1, "       If WindowID=Window_Form1")
    AddGadgetItem(#Edit_Code, -1, "          quitte=1")
    AddGadgetItem(#Edit_Code, -1, "       EndIf")   
    AddGadgetItem(#Edit_Code, -1, "")
    ; ----------- Cas Menu -----------------------
    If On=1
      AddGadgetItem(#Edit_Code, -1,"    Case #PB_Event_Menu")
      AddGadgetItem(#Edit_Code, -1,"     Select MenuID")
      AddGadgetItem(#Edit_Code, -1,"        Case #MenuBar_Form1_Nouveau")
      AddGadgetItem(#Edit_Code, -1,"        Case #MenuBar_Form1_Ouvrir")
      AddGadgetItem(#Edit_Code, -1,"        Case #MenuBar_Form1_Sauver")
      AddGadgetItem(#Edit_Code, -1,"        Case #MenuBar_Form1_Sortie")
      AddGadgetItem(#Edit_Code, -1,"             quitte=1")
      AddGadgetItem(#Edit_Code, -1,"        Case #MenuBar_Form1_Copier")
      AddGadgetItem(#Edit_Code, -1,"        Case #MenuBar_Form1_Coller")
      AddGadgetItem(#Edit_Code, -1,"        Case #MenuBar_Form1_Effacer")
      AddGadgetItem(#Edit_Code, -1,"        Case #MenuBar_Form1_Chercher")
      AddGadgetItem(#Edit_Code, -1,"        Case #MenuBar_Form1_Aides")
      AddGadgetItem(#Edit_Code, -1,"        Case #MenuBar_Form1_About")
      AddGadgetItem(#Edit_Code, -1,"     EndSelect")
    EndIf  
    ; 
    AddGadgetItem(#Edit_Code, -1, "")
    AddGadgetItem(#Edit_Code, -1, "    Case #PB_Event_Gadget")
    AddGadgetItem(#Edit_Code, -1, "      Select GadgetID")
    AddGadgetItem(#Edit_Code, -1, "")
    AddGadgetItem(#Edit_Code, -1, "        ; Votre code selection gadget <ici>") 
    AddGadgetItem(#Edit_Code, -1, "")
    AddGadgetItem(#Edit_Code, -1, "      EndSelect")
    AddGadgetItem(#Edit_Code, -1, "")
    AddGadgetItem(#Edit_Code, -1, "  EndSelect")
    AddGadgetItem(#Edit_Code, -1, "Until quitte")
    AddGadgetItem(#Edit_Code, -1, "End")
    AddGadgetItem(#Edit_Code, -1, ";>>>>>>> =========== FIN ========== <<<<<<<")
    ; ----- Fin de Loop ---------
  EndIf
  ;
EndProcedure
;/ Transfert des données sous jaPBe
Procedure SendDatasToEditor(MainWin, Text$, Mode.l)
  ; RunOneWin = FindWindow_(@"WindowClass_0", @"jaPBe-RunOneWindow")
  If RunOneWin
    If Text$
      cd.COPYDATASTRUCT
      cd\dwData = Mode
      cd\cbData = Len(Text$)+1
      cd\lpData = @Text$
      SendMessage_(RunOneWin, #WM_COPYDATA, MainWin, cd)  
    EndIf
  Else
    ClearClipboard()
    SetClipboardText(Text$)
    MessageRequester("Terminé", "jaPBe n'a pas été détecté." + Chr(10) + "Les données ont été placées dans le presse-papier.", #MB_OK|#MB_ICONWARNING)
  EndIf
EndProcedure
;/ Sauvegarde de la position de la fenêtre
Procedure SavePref()
  If CreatePreferences(GetCurrentDirectory()+"WindowMaker.ini")
    PosX = WindowX(#Window_Main)
    PosY = WindowY(#Window_Main)
    
    PreferenceGroup("Position")
    WritePreferenceInteger("PosX", PosX)
    WritePreferenceInteger("PosY", PosY)
    ClosePreferences()
  EndIf
  
EndProcedure
;/ Rappel de la position précédente de la fenêtre
Procedure LoadPref()
  If OpenPreferences(GetCurrentDirectory()+"WindowMaker.ini")
    PreferenceGroup("Position")
    PosX = ReadPreferenceInteger("PosX", 800)
    PosY = ReadPreferenceInteger("PosY", 400)
    ClosePreferences()
  EndIf
EndProcedure
;/ Gestion des messages de l'application
Procedure WinCallback(hWin, Msge, wParam, lParam)
  Ret = #PB_ProcessPureBasicEvents
  Select Msge
    Case #WM_SIZE
      ResizeGadget(#Edit_Code, #PB_Ignore, #PB_Ignore, WindowWidth(#Window_Main) - 10, WindowHeight(#Window_Main) - 325)
  EndSelect
  ProcedureReturn Ret
EndProcedure
;}
;{- Initialisation du programme
LoadPref()
If OpenWin_Main() = 0
  End
Else
  BuildString()
  SetWindowCallback(@WinCallback())
EndIf
;}
On=0
;{- Boucle
Repeat
  Select WaitWindowEvent()
    Case #PB_Event_CloseWindow
      SavePref()
      Quit = #True
    Case #PB_Event_Menu
      Select EventMenu()
          ;/ Raccourcis clavier
        Case #Button_NewTab
          SendMessage_(GadgetID(#Edit_Code), #EM_SETSEL, 0, -1)
          StringToSend$ = GetGadgetText(#Edit_Code)
          SendDatasToEditor(WindowID(#Window_Main), Trim(StringToSend$), #wmcd_NewText)
          SendMessage_(GadgetID(#Edit_Code), #EM_SETSEL, -1, -1)
      EndSelect
      
    Case #PB_Event_Gadget
      Select EventGadget()
          ;{/ Cases à cocher Paramètres
        Case #CheckBox_SystemMenu
          Chaines(0,0) = Str(GetGadgetState(#CheckBox_SystemMenu))
          BuildString()
          
        Case #CheckBox_MinimizeGadget
          Chaines(0,1) = Str(GetGadgetState(#CheckBox_MinimizeGadget))
          BuildString()
          
        Case #CheckBox_MaximizeGadget
          Chaines(0,2) = Str(GetGadgetState(#CheckBox_MaximizeGadget))
          BuildString()
          
        Case #CheckBox_SizeGadget
          Chaines(0,3) = Str(GetGadgetState(#CheckBox_SizeGadget))
          DisableGadget(#CheckBox_Bound, (Not GetGadgetState(#CheckBox_SizeGadget)))
          BuildString()
          
        Case #CheckBox_Invisible
          Chaines(0,4) = Str(GetGadgetState(#CheckBox_Invisible))
          BuildString()
          
        Case #CheckBox_TitleBar
          Chaines(0,5) = Str(GetGadgetState(#CheckBox_TitleBar))
          BuildString()
          
        Case #CheckBox_BorderLess
          Chaines(0,6) = Str(GetGadgetState(#CheckBox_BorderLess))
          BuildString()
          
        Case #CheckBox_Tool
          Chaines(0,7) = Str(GetGadgetState(#CheckBox_Tool))
          BuildString()
          
        Case #CheckBox_ScreenCentered
          Chaines(0,8) = Str(GetGadgetState(#CheckBox_ScreenCentered))
          BuildString()
          
        Case #CheckBox_WindowCentered
          Chaines(0,9) = Str(GetGadgetState(#CheckBox_WindowCentered))
          BuildString()
          
        Case #CheckBox_Maximize
          Chaines(0,10) = Str(GetGadgetState(#CheckBox_Maximize))
          BuildString()
          
        Case #CheckBox_Minimize
          Chaines(0,11) = Str(GetGadgetState(#CheckBox_Minimize))
          BuildString()
          
        Case #CheckBox_NoGadgets
          Chaines(0,12) = Str(GetGadgetState(#CheckBox_NoGadgets))
          BuildString()
          ;}
          
          ;{/ Cases à cocher Fonctions additionnelles
        Case #CheckBox_Smart
          BuildString()
          
        Case #CheckBox_Bound
          For i = #String_Bound_W_Mini To #String_Bound_H_Maxi
            DisableGadget(i,(Not GetGadgetState(#CheckBox_Bound)) )
          Next
          If GetGadgetState(#CheckBox_Bound) = 1 : SetActiveGadget(#String_Bound_W_Mini) : EndIf
          BuildString()
          
        Case #CheckBox_Loop
          BuildString()
          ;}
          
          ;{/ Strings
        Case #String_W
          If EventType() = #PB_EventType_Change
            BuildString()
          EndIf
          
        Case #String_H
          If EventType() = #PB_EventType_Change
            BuildString()
          EndIf
          
        Case #String_X
          If EventType() = #PB_EventType_Change
            BuildString()
          EndIf
          
        Case #String_Y
          If EventType() = #PB_EventType_Change
            BuildString()
          EndIf
          
        Case #String_WindowIdent
          If EventType() = #PB_EventType_Change
            BuildString()
          EndIf
          
        Case #String_Bound_W_Mini
          If EventType() = #PB_EventType_Change
            BuildString()
          EndIf
          
        Case #String_Bound_H_Mini
          If EventType() = #PB_EventType_Change
            BuildString()
          EndIf
          
        Case #String_Bound_W_Maxi
          If EventType() = #PB_EventType_Change
            BuildString()
          EndIf
          
        Case #String_Bound_H_Maxi
          If EventType() = #PB_EventType_Change
            BuildString()
          EndIf
          
        Case #String_Titre
          If EventType() = #PB_EventType_Change
            BuildString()
          EndIf
          ; --------------------------------------------------------------
        Case #CheckBox_Menus
          If On=0
            DisableGadget(#CheckBox_Status, 0)
            DisableGadget(#Text_StatusChamp, 0)
            DisableGadget(#String_StatusChamp,0)
            On=1:BuildString()
          Else 
            DisableGadget(#CheckBox_Status, 1)
            DisableGadget(#Text_StatusChamp, 1)
            DisableGadget(#String_StatusChamp,1)
            On=0:BuildString()
          EndIf
          If EventType() = #PB_EventType_Change
            BuildString()
          EndIf
        Case #CheckBox_Status
          If On=1
            BuildString()
          EndIf
          ;}; --------------------------------------------------------------
          ;{/ Boutons
        Case #Button_OnPlace
          SendMessage_(GadgetID(#Edit_Code), #EM_SETSEL, 0, -1)
          StringToSend$ = GetGadgetText(#Edit_Code)
          SendDatasToEditor(WindowID(#Window_Main), Trim(StringToSend$), #WMCD_InsertText)
          SendMessage_(GadgetID(#Edit_Code), #EM_SETSEL, -1, -1)
          
        Case #Button_NewTab
          SendMessage_(GadgetID(#Edit_Code), #EM_SETSEL, 0, -1)
          StringToSend$ = GetGadgetText(#Edit_Code)
          SendDatasToEditor(WindowID(#Window_Main), Trim(StringToSend$), #wmcd_NewText)
          SendMessage_(GadgetID(#Edit_Code), #EM_SETSEL, -1, -1)
          
        Case #Button_Cancel
          SavePref()
          Quit = #True
          ;}
      EndSelect
  EndSelect
Until Quit
;}
End
; IDE Options = PureBasic 4.51 (Windows - x86)
; CursorPosition = 277
; FirstLine = 255
; IDE Options = PureBasic 4.51 (Windows - x86)
; CursorPosition = 362
; FirstLine = 346
C'est vrai, et d'accord avec toi, du moins en partie.Chris a écrit :Pas mal, mais soit c'est trop, soit c'est pas assez.
Quitte à ajouter les menus, autant faire en sorte qu'on puisse choisir ce qu'on veut y mettre : Libellé du titre, libellés des menus, nombre de rubriques, etc, etc...
C'est l'esprit du programme initial
Pareil pour la barre d'état. On peut choisir le nombre de cases, mais pas leur largeur.
Bref, t'as encore du boulot![]()
PS : La barre d'état est verrouillée si on ne crée pas de menu. Ça ne devrait pas.![]()
GeBonet a écrit :C'est vrai, et d'accord avec toi, du moins en partie.Chris a écrit :Pas mal, mais soit c'est trop, soit c'est pas assez.
Quitte à ajouter les menus, autant faire en sorte qu'on puisse choisir ce qu'on veut y mettre : Libellé du titre, libellés des menus, nombre de rubriques, etc, etc...
C'est l'esprit du programme initial
Pareil pour la barre d'état. On peut choisir le nombre de cases, mais pas leur largeur.
Bref, t'as encore du boulot![]()
PS : La barre d'état est verrouillée si on ne crée pas de menu. Ça ne devrait pas.![]()
Tout comme toi, ce n'est pas fait pour être complet et comme pour l'original, c'est seulement pour donner une trame de base sans plus.
En réalité je n'ai ajouté que deux case a cocher pour avoir un menu et une barre d'état quand on demande un menu... Mais rien n'empêche de la rendre indépendante
Le reste = Avec du copier/coller/supprimer permet très vite de compléter ou d'adapter.
Soit avoir rapidement un base sans trop avoir à coder.Et de fait si on veux plus que ça, "PureForm" ou "Visual Designer" font l'affaire.
![]()
Encore merci pour l'idée de départ.
Personnellement, je trouve que l'idée est excellente, à encourager, ne serait ce que pour le code, pour l'idée, elle a le mérite d'exister !!
Un grand bravo à de telles initiatives !!
Phil
PS: En réalité, j'aimerais travailler sur un RAD dans lequel j'intégrerais un SGBDR style Access mais totalement sous PB (libéré des SQL, Lite ou moins Lite).
Pour les développeurs, avec le RAD on crée le corps de l'application : Menus, Fenêtre, Fichiers et relations.
Et avec des librairies open sources d'exploitation du SGDGR sous PB, chacun peux réaliser ses spécificités.
En gros et raccourcis, un "PureForm" mais étendu avec gestion de fichier relationnel.
J'ai déjà fait ça sous DOS et a existé de 1987-1994... Mais voilà, pas trop le courage de m'y remettre, trop vieux ? Peut-être !
Alors de temps en temps, je fait un bout de quelques chose... Qui sais, un jours, j'en aurais peut-être suffisamment des bouts qui bout a bout, ferons ce que je veux