WindowMaker

Programmation d'applications complexes
Avatar de l’utilisateur
Ar-S
Messages : 9539
Inscription : dim. 09/oct./2005 16:51
Contact :

Re: WindowMaker

Message par Ar-S »

Ba ton prog permet de créer une fenêtre et pureform une fenêtre et des gadgets. Pourquoi ne pas comparer ?
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 :wink:
~~~~Règles du forum ~~~~
⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳Ar-S ˳.⋅ॱ˙˙ॱ⋅.˳˳.⋅
W11x64 PB 6.x
Section HORS SUJET : ICI
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
UPLOAD D'IMAGES : Uploader des images de vos logiciels
Avatar de l’utilisateur
Chris
Messages : 3731
Inscription : sam. 24/janv./2004 14:54
Contact :

Re: WindowMaker

Message par Chris »

Je ne me brusque pas, ni moi, ni personne d'autre.

Que tu aimes ou pas ce programme, que tu l'utilise ou pas, c'est ton problème, pas le mien. Personnellement, je m'en tamponne à un point que tu n'imagine même pas. :mrgreen:
Avatar de l’utilisateur
Ar-S
Messages : 9539
Inscription : dim. 09/oct./2005 16:51
Contact :

Re: WindowMaker

Message par Ar-S »

Chris 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. :mrgreen:
Oh si j'imagine, et heureusement que tu t'en tamponnes, manquerait plus que ça :mrgreen: :mrgreen:
~~~~Règles du forum ~~~~
⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳Ar-S ˳.⋅ॱ˙˙ॱ⋅.˳˳.⋅
W11x64 PB 6.x
Section HORS SUJET : ICI
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
UPLOAD D'IMAGES : Uploader des images de vos logiciels
Avatar de l’utilisateur
venom
Messages : 3128
Inscription : jeu. 29/juil./2004 16:33
Localisation : Klyntar
Contact :

Re: WindowMaker

Message par venom »

Bonjour,

L'idée est bonne :) fallait y penser. :wink:






@++
Windows 10 x64, PureBasic 5.73 x86 & x64
GPU : radeon HD6370M, CPU : p6200 2.13Ghz
jbernard13
Messages : 1501
Inscription : dim. 18/avr./2004 15:04
Localisation : sud de la france

Re: WindowMaker

Message par jbernard13 »

Bonjour Chris

tu as fait un trés bon logiciel , j'adore .... :D
Jbernard13
Avatar de l’utilisateur
Chris
Messages : 3731
Inscription : sam. 24/janv./2004 14:54
Contact :

Re: WindowMaker

Message par Chris »

J'ai un peu retravaillé le code pour en faire quelque chose d'un peu moins "brouillon". (C'est vrai que c'était un peu le foutoir dans ce code :oops: )
J'ai aussi ajouté la mémorisation de la position de la fenêtre.
La fenêtre est redimensionnable pour pouvoir afficher la totalité du code

Téléchargement ici
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Re: WindowMaker

Message par Backup »

Merci , je vais essayer ça :)
jbernard13
Messages : 1501
Inscription : dim. 18/avr./2004 15:04
Localisation : sud de la france

Re: WindowMaker

Message par jbernard13 »

Merci Chris
Jbernard13
Avatar de l’utilisateur
falsam
Messages : 7321
Inscription : dim. 22/août/2010 15:24
Localisation : IDF (Yvelines)
Contact :

Re: WindowMaker

Message par falsam »

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.
Configuration : Windows 11 Famille 64-bit - PB 6.20 x64 - AMD Ryzen 7 - 16 GO RAM
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
Avatar de l’utilisateur
Chris
Messages : 3731
Inscription : sam. 24/janv./2004 14:54
Contact :

Re: WindowMaker

Message par Chris »

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.
Oui, j'ai pas trop réfléchi quand j'ai mis ce label.

C'est vrai que "Id Window" serait plus approprié. (Id Gadget, c'est bon pour un gadget pas pour une fenêtre)

Mais bon... vous avez tous le code, alors ...
Avatar de l’utilisateur
GeBonet
Messages : 453
Inscription : ven. 29/févr./2008 16:17
Localisation : Belgique

Re: WindowMaker

Message par GeBonet »

Merci pour ce code, ça peux servir 8)
Tiens c'est tellement vrai que j'y ai ajouté un petit rien.
- Création d'un menu standard (base de) et la "status barre". Deux cases à cocher ou non...

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
Voilà, c'est tout.
Et merci encore :lol:
Windows 7 et Windows 8.1 Pb 5.0 jusque 5.24 Lts 64 et 5.3 (64)/b]
“Ceux qui rêvent éveillés ont conscience de mille choses qui échappent à ceux qui ne rêvent qu’endormis.”
-Edgar Allan Poe-
Avatar de l’utilisateur
Chris
Messages : 3731
Inscription : sam. 24/janv./2004 14:54
Contact :

Re: WindowMaker

Message par Chris »

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 :mrgreen:

PS : La barre d'état est verrouillée si on ne crée pas de menu. Ca ne devrait pas. :| :wink:
Avatar de l’utilisateur
GeBonet
Messages : 453
Inscription : ven. 29/févr./2008 16:17
Localisation : Belgique

Re: WindowMaker

Message par GeBonet »

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 :mrgreen:
PS : La barre d'état est verrouillée si on ne crée pas de menu. Ça ne devrait pas. :| :wink:
C'est vrai, et d'accord avec toi, du moins en partie.
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. :mrgreen: Et de fait si on veux plus que ça, "PureForm" ou "Visual Designer" font l'affaire. :wink:
Encore merci pour l'idée de départ.

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 :lol:
Windows 7 et Windows 8.1 Pb 5.0 jusque 5.24 Lts 64 et 5.3 (64)/b]
“Ceux qui rêvent éveillés ont conscience de mille choses qui échappent à ceux qui ne rêvent qu’endormis.”
-Edgar Allan Poe-
Avatar de l’utilisateur
Philippe_GEORGES
Messages : 138
Inscription : mer. 28/janv./2009 13:28

Re: WindowMaker

Message par Philippe_GEORGES »

GeBonet a écrit :
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 :mrgreen:
PS : La barre d'état est verrouillée si on ne crée pas de menu. Ça ne devrait pas. :| :wink:
C'est vrai, et d'accord avec toi, du moins en partie.
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. :mrgreen: Et de fait si on veux plus que ça, "PureForm" ou "Visual Designer" font l'affaire. :wink:
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 :lol:
Philippe GEORGES
"La simplicité est la sophistication suprême" (De Vinci)
assistance informatique, création de logiciels
georges.informatique@gmail.com
dayvid
Messages : 1242
Inscription : mer. 11/nov./2009 18:17
Localisation : Poitiers (Vienne)

Re: WindowMaker

Message par dayvid »

C pas mal sa dic donc :)

moi j'aimerais faire un truc du genre aussi donc sa pourra me servire sa !
http://www.purebasic.fr/french/viewtopi ... =1&t=11495
La vie, C'est comme, Une boitte, De startis, On en voie, De toutes, Les couleurs !

Mon forum http://purebasic.forumphp3.com/index.php
Répondre