Page 1 sur 1

[Résolu] Editeur visuel

Publié : mar. 27/nov./2012 9:33
par Micoute
Ne voulant pas perdre mes fichiers créés avec PureForm, j'essaie de recréer cet admirable outil en essayant de rajouter les nouveaux gadgets des versions à venir, bien évidemment, je suis bien loin du résultat, car déjà, je ne sais même pas, comment faire, en cliquant sur un buttonImage, aller afficher ce gadget que je viens de sélectionner, c'est pourquoi, j'aimerais bien qu'on m'aide.

Je joins l'adresse de téléchargement de mon projet : http://dl.free.fr/pJCwgb6JY

Je vous remercie de tout coeur!

Re: Editeur visuel

Publié : mar. 27/nov./2012 10:13
par MLD
Bonjour Micoute

8O je ne comprend pas pourquoi tu perdrais tes fichiers créés avec PureForm :?:
Personellement je n'utilise pas les éditeurs visuel, car je n'aime pas le code issu de ceux-ci.
Je me suis fait une petite biblothèque de codes Type, et le copier collé marche trés bien. Comme ceci je vais plus vite qu'avec les éditeurs. :wink:
Compile ce code c'est une règle qui permet de ce facilité la vie pour la disposition des gadgets dans une fenêtre.

Code : Tout sélectionner

;///////////////////////////////
; Mesure 1.1 : 27/12/2009 - by Z@ph0d
; PB 4.40
; Modifications MLD le 01/01/2010
;///////////////////////////////
EnableExplicit

Enumeration
  #Window_0
EndEnumeration

Enumeration
  #Button_0
  #text_1
  #text_2
  #combo_1
  #trackbar_0
  #checkbox_0
EndEnumeration

Global Largeur = 405
Procedure.i gettpp(f.i)
Protected hdc.i,r.i
;
hdc=GetDC_(GetDesktopWindow_())
If f=0
r= 1440/GetDeviceCaps_(hdc,#LOGPIXELSX)
Else
r= 1440/GetDeviceCaps_(hdc,#LOGPIXELSY)
EndIf
ReleaseDC_(GetDesktopWindow_(),hdc)
;
ProcedureReturn r
EndProcedure

Procedure ruler()
Protected  px.i,py.i,i.i,x.i,w.i,f.i
    ;
    UpdateWindow_(WindowID(#window_0))
    ;
    f=GetGadgetState(#combo_1)
    Select f
    Case 0
    w=1440/2.54+1
    Case 1
    w=1440
    EndSelect
    ;
    px= (w/gettpp(0))/10
    py= (w/gettpp(1))/10
    ;
    x=0
    ;   
    StartDrawing(WindowOutput(#window_0))
    DrawingFont(FontID(1))
    ;
    If f<>2
    For i=0 To WindowWidth(#window_0) 
    If i%10=0
    Line(x,0,1,10)
    DrawText(x-2,12,Str(i/10),#Black,GetWindowColor( #Window_0))
    
    Line(x,WindowHeight(#window_0)-1,1,-10)
    DrawText(x-2,WindowHeight(#window_0)-20,Str(i/10),#Black,GetWindowColor( #Window_0)) 
   
    ElseIf i%5=0
    Line (x,0,1,5)
    Line(x,WindowHeight(#window_0)-1,1,-5)
    Else
    Line(x,0,1,2)
    Line (x,WindowHeight(#window_0)-1,1,-2)
    EndIf
    ;
    x+px
    Next
    Else
    For i=0 To WindowWidth(#window_0) 
    If i%20=0
    Line(x,0,1,10)
    DrawText(x-2,12,Str(x),#Black,GetWindowColor( #Window_0)) 
    Line(x,WindowHeight(#window_0)-1,1,-10)
    DrawText(x-2,WindowHeight(#window_0)-20,Str(x),#Black,GetWindowColor( #Window_0)) 
    ElseIf i%10=0
    Line (x,0,1,5)
    Line(x,WindowHeight(#window_0)-1,1,-5)
    EndIf
    ;
    x+1
    Next
    EndIf
    ;
    x=30
    If f<>2
    For i=0 To WindowHeight(#window_0) 
    If i%10=0
    Line(1,x,10,1)
    DrawText(15,x-5,Str(i/10),#Black,GetWindowColor( #Window_0)) 
    Line(WindowWidth(#window_0)-1,x,-10,1)
    DrawText(WindowWidth(#window_0)-20,x-5,Str(i/10),#Black,GetWindowColor( #Window_0)) 
    ElseIf i%5=0
    Line (1,x,5,1)
    Line(WindowWidth(#window_0)-1,x,-5,1)
    Else
    Line(1,x,2,1)
    Line (WindowWidth(#window_0)-1,x,-2,1)
    EndIf
    ;
    x+py
    If x>WindowHeight(#window_0)-30
    Break
    EndIf
    Next
    Else
    For i=0 To WindowHeight(#window_0) 
    If i%20=0
    Line(1,x,10,1)
    DrawText(15,x-5,Str(x-30),#Black,GetWindowColor( #Window_0)) 
    Line(WindowWidth(#window_0)-1,x,-10,1)
    DrawText(WindowWidth(#window_0)-20,x-5,Str(x-30),#Black,GetWindowColor( #Window_0)) 
    ElseIf i%10=0
    Line (1,x,5,1)
    Line(WindowWidth(#window_0)-1,x,-5,1)
    EndIf
    ;
    x+1
    If x>WindowHeight(#window_0)-30
    Break
    EndIf
    Next
    EndIf
    ;
    StopDrawing()
EndProcedure


Procedure OpenWindow_Window_0()
   If OpenWindow(#Window_0, 450, 200, Largeur, 100, "",#PB_Window_BorderLess|#WS_BORDER|#WS_THICKFRAME)
   SetWindowColor( #Window_0,$E3DFE0)
   StickyWindow(#window_0,1)
  ;transparence:
  SetWindowLong_(WindowID(#window_0), #GWL_EXSTYLE, GetWindowLong_(WindowID(#window_0), #GWL_EXSTYLE) | #WS_EX_LAYERED)
  SetLayeredWindowAttributes_(WindowID(#window_0), 0, 120, #LWA_ALPHA)
  
    TextGadget(#Text_1, 30, 30, 70, 20, "Transparence")
    TrackBarGadget(#TrackBar_0, 20, 45, 150, 30, 120, 255);, #PB_TrackBar_Ticks)
    SetGadgetState(#trackbar_0,120)
     ComboBoxGadget(#Combo_1, 190, 40, 70, 20)
     AddGadgetItem(#combo_1, -1,"cm")
     AddGadgetItem(#combo_1, -1,"inch")
     AddGadgetItem(#combo_1, -1,"pixel")
     SetGadgetState(#combo_1,2)
     ButtonGadget(#Button_0, 280, 55, 50, 20, "Quitter")
     CheckBoxGadget(#CheckBox_0, 280, 32, 80, 15, "Second plan")
    ;
     LoadFont(1, "small font", 7,#PB_Font_HighQuality) 
    ;
    ruler()
  EndIf
EndProcedure

;////////////////////////////////////////
;
OpenWindow_Window_0()
SmartWindowRefresh(#window_0,1)

Repeat
  Select WaitWindowEvent()
    ; ///////////////////
    Case #PB_Event_Gadget
      Select EventGadget()
       Case #Button_0
        CloseWindow(#window_0)
        Break
        Case #trackbar_0
        SetLayeredWindowAttributes_(WindowID(#window_0), 0, GetGadgetState(#trackbar_0), #LWA_ALPHA)
       Case #combo_1
        If EventType()=#CBN_SELCHANGE
         InvalidateRect_(WindowID(#Window_0), 0, 1)
         ruler()
        EndIf
       Case #checkbox_0
        If GetGadgetState(#checkbox_0)
         StickyWindow(#window_0,0)
        Else
         StickyWindow(#window_0,1)
        EndIf
      EndSelect
    ; ////////////////////////
    Case #WM_SIZE
     InvalidateRect_(WindowID(#Window_0), 0, 1)
     ruler()
    Case #WM_LBUTTONDOWN 
      SendMessage_(WindowID(#window_0), #WM_NCLBUTTONDOWN, #HTCAPTION, 0) 
    Case #PB_Event_CloseWindow
      Select EventWindow()
        Case #Window_0
          CloseWindow(#Window_0)
          Break
      EndSelect
  EndSelect
ForEver


Re: Editeur visuel

Publié : mar. 27/nov./2012 10:38
par Micoute
Je me suis peut-être mal expliqué, je souhaite rester en conformité avec PureForm pour pouvoir utiliser les scripts fabriqués par lui, tout en pouvant rajouter les nouveaux gadgets sortant au gré des versions PureBasic et c'est tout !

Grand merci à toi et à tous les autres de m'aider

Re: Editeur visuel

Publié : mar. 27/nov./2012 11:11
par Ar-S
C'est un beau projet mais qui demande trop d'investissement pour ma part.
Ton interface est bien faite même si contrairement à pureform, j'aurai fait une fenêtre maitresse et une fenêtre aperçu, rien de plus.
As tu analyser les fichiers projets.
ça a l'air pas trop dur à relire et réutiliser.
Ils sont sous la forme

Code : Tout sélectionner

PureFORM_Project_Begin

Project¶base64

Window¶1¶#Win¶348782593¶#PB_Window_SystemMenu|#PB_Window_TitleBar|#PB_Window_ScreenCentered|#PB_Window_MinimizeGadget¶

ButtonGadget¶1¶#GADGET¶1¶-1¶-1¶0¶0¶0¶0¶0¶¶Base64 

TextGadget¶5¶#TXT¶1¶-1¶-1¶0¶0¶26¶0¶513¶#PB_Text_Center|#SS_CENTERIMAGE¶Texte contenu dans le gadget

PureFORM_Project_End
Bonne chance.

A toi de classer toutes les données en récupérant ligne par ligne les options (StringField)

Re: Editeur visuel

Publié : mar. 27/nov./2012 11:17
par Micoute
Je pense que pour la lecture des scripts, c'est comme ça que je conçois de faire, mais mon problème c'est que je voudrais aussi en écrire, mais pour cela, il faudrait que je puisse mettre des gadgets sur ma fenêtre de création et ça, hélas, je ne sais pas le faire !

Merci pour ta contribution.

Re: Editeur visuel

Publié : mar. 27/nov./2012 11:22
par Ar-S
ça sent les callback et thread à gogo, avec de grosses pincées d'API. Je passe mon tour.

Re: Editeur visuel

Publié : mar. 27/nov./2012 11:24
par Micoute
Ar-S a écrit :ça sent les callback et thread à gogo, avec de grosses pincées d'API. Je passe mon tour.
Ok ! Merci quand même !

Re: Editeur visuel

Publié : mar. 27/nov./2012 11:26
par falsam
Micoute a écrit :il faudrait que je puisse mettre des gadgets sur ma fenêtre de création et ça, hélas, je ne sais pas le faire
Regarde ce lien http://www.purebasic.fr/french/viewtopi ... 12#p128312

Les sources sont fournis. Clic droit de la souris pour le menu contextuel.

Re: Editeur visuel

Publié : mar. 27/nov./2012 12:57
par Kwai chang caine
C'est vrai que c'est tentant d'essayer de faire le sien.
Le tiens etait deja bien avancé, tu utilises les gadgets que tu resizes, je crois que j'avais vu cette methode par patrick (de memoire).
Je ne sais pas si le Visual designer natif en faisait de même, la fluidité du resizing est bluffante.

Le plus dur doit etre le PanelGadget je pense...

C'est vrai qu'un convertisseur de format aurait aussi été genial, car il commence a y avoir un sacré nombre de designer.
Moi j'avais pensé que si je me lançait dans cette grande aventure, de pouvoir sortir un code générique en plus du code PB, renseignant juste le type de controle avec ses dimensions et coordonnées en TXT, que n'importe qui pourrait utiliser par la suite même pour un autre langage qui n'aurait pas son designer.

J'avais oublié ton Tiny designer et je me rappellais plus non plus pour la regle
Merci Falsam 8)

Re: Editeur visuel

Publié : mar. 27/nov./2012 14:14
par Micoute
falsam a écrit :
Micoute a écrit :il faudrait que je puisse mettre des gadgets sur ma fenêtre de création et ça, hélas, je ne sais pas le faire
Regarde ce lien http://www.purebasic.fr/french/viewtopi ... 12#p128312

Les sources sont fournis. Clic droit de la souris pour le menu contextuel.
Ton code est franchement génial et je l'avais déjà dans mes archives et comme à l'époque j'étais complètement novice, puisque j'en étais à mon époque d'apprentissage du langage PureBasic, je n'avais même pas remarqué que je détenais une pépite. Je sens renaître l'espoir d'aller plus loin dans mon entreprise et là, franchemnt, ce sera bien grâce à toi !

Je te remercie particulièrement, ainsi que tous ceux qui m'ont soutenu dans cette épreuve.

Re: Editeur visuel

Publié : lun. 03/déc./2012 17:15
par Micoute
Je viens encore vous solliciter parce que cette fois ci, j'ai un problème avec le PanelGadget, car je voudrais ajouter un menu pour ajouter des onglets à mon panneau quand je le sélectionne !

Je vous remercie tous d'avance pour votre aide

Re: Editeur visuel

Publié : lun. 03/déc./2012 21:30
par jbernard13
Merci MLD pour ta partage j'ai adorer ta regle

Re: Editeur visuel

Publié : mar. 04/déc./2012 10:36
par MLD
@ jbernard13

Le code est en grande partie de Z@ph0d. :lol:
Rendons a Z@ph0d ce qui n'apartient pas a César. :mrgreen:

Re: Editeur visuel

Publié : lun. 10/déc./2012 13:14
par gnozal
Micoute a écrit :Je me suis peut-être mal expliqué, je souhaite rester en conformité avec PureForm pour pouvoir utiliser les scripts fabriqués par lui, tout en pouvant rajouter les nouveaux gadgets sortant au gré des versions PureBasic et c'est tout !
Pour information, on peut ajouter des nouveaux gadgets dans PureFORM à l'aide du 'custom' gadget.

Re: Editeur visuel

Publié : mar. 11/déc./2012 13:41
par Micoute
gnozal a écrit :
Micoute a écrit :Je me suis peut-être mal expliqué, je souhaite rester en conformité avec PureForm pour pouvoir utiliser les scripts fabriqués par lui, tout en pouvant rajouter les nouveaux gadgets sortant au gré des versions PureBasic et c'est tout !
Pour information, on peut ajouter des nouveaux gadgets dans PureFORM à l'aide du 'custom' gadget.
Merci beaucoup pour cette information capitale !