Page 1 sur 2

Un petit truc que j'ai fait

Publié : lun. 02/janv./2006 11:57
par Chris
Bon, c'est pas grand chose, mais si ça peut servir. :roll:

Comme je suis un peu bordélique dans mes codes, je met souvent des noms de fichier qui ne veulent rien dire, du genre Test1, Test2, Test3.

Le problème, c'est qu'au bout d'un moment, je ne sais plus à quoi correspond tel ou tel code, et je dois les ouvrir un par un pour voir ce qu'il y a dedans, et c'est pas trop pratique.

Alors, j'ai fait un petit prog pour visualiser les codes sans passer par l'éditeur, un peu dans le genre du Code Template de JaPBe. Il permet également de coller le code directement dans JaPBe ou de faire une copie dans le Presse-papiers pour coller dans l'éditeur de Pure.

Il retiens également le dernier dossier exploré, la position et la taille de la fenêtre.

Code : Tout sélectionner

;- Constantes  fenêtres
Enumeration
  #Win_0
EndEnumeration

;- Constantes Gadgets
Enumeration
  #List_Files
  #Edit_Code
  #Explorer
  #Btn_Insert
  #PureBasic
  #Split_1
  #Split_2
EndEnumeration

;{- Constantes diverses
#WMCD_OpenFile            = 1
#WMCD_InsertText          = 2
#wmCD_ReplaceCompleteText = 3
#wmcd_ReplaceCurrentLine  = 4
#wmcd_NewText             = 5
;}

;{- Variables
Global Chemin$, Img, WinStyle, PosX, PosY, SizeH, SizeV,Spl1_Pos,Spl2_Pos,UsedEditor, TypeEditor, Bulles

WinStyle = #PB_Window_MaximizeGadget | #PB_Window_MinimizeGadget | #PB_Window_SystemMenu | #PB_Window_SizeGadget
;}

;{- Déclarations des procédures
Declare.s GetPath(Type)
Declare SendDatasToEditor(MainWin, Datas$, Mode.l)
Declare CallBack(hWin,Msge,wParam,lParam)
Declare LoadTemplate(Fichier.s)
Declare ScanFolder(Folder.s)
Declare SavePreferences()
Declare LoadPreferences()
Declare Open_Win_0()
;}

;- Procedures
Procedure Open_Win_0()
  If OpenWindow(#Win_0, PosX, PosY, SizeH, SizeV, WinStyle, "Routines")
    hwnd = WindowID(#Win_0)
    If CreateGadgetList(WindowID())
      ListIconGadget(#List_Files, 5, 170, 230, 250, "Fichiers", 220, #PB_ListIcon_GridLines | #PB_ListIcon_FullRowSelect | #PB_ListIcon_AlwaysShowSelection)
      EditorGadget(#Edit_Code, 240, 5, 320, 390)
      ExplorerTreeGadget(#Explorer, 5, 5, 230, 160, "", #PB_Explorer_NoDriveRequester | #PB_Explorer_NoFiles | #PB_Explorer_NoMyDocuments | #PB_Explorer_AlwaysShowSelection)
      ButtonGadget(#Btn_Insert, WindowWidth()-105, WindowHeight()-25, 100, 20, "Insérer")
      CheckBoxGadget(#PureBasic, 5, WindowHeight()-25,100,20,"PureBasic")
      SplitterGadget(#Split_2,5,5,(WindowWidth()-10)/2,WindowHeight(),#Explorer,#List_Files)
      SplitterGadget(#Split_1,5,5,WindowWidth()-10,WindowHeight()-35,#Split_2,#Edit_Code,#PB_Splitter_Vertical)
    EndIf
  EndIf
  SetGadgetAttribute(#Split_1,#PB_Splitter_FirstMinimumSize,150)
  SetGadgetAttribute(#Split_1,#PB_Splitter_SecondMinimumSize,150)
  SetGadgetAttribute(#Split_2,#PB_Splitter_FirstMinimumSize,40)
  SetGadgetAttribute(#Split_2,#PB_Splitter_SecondMinimumSize,60)
  
  SetGadgetState(#Split_1,Spl1_Pos)
  SetGadgetState(#Split_2,Spl2_Pos)
  SetGadgetState(#PureBasic,1)
  ProcedureReturn hwnd
EndProcedure

Procedure LoadPreferences()
  OpenPreferences("Templates.cfg")
  PreferenceGroup("General")
  Chemin$ = ReadPreferenceString("Chemin","C:\")
  PreferenceGroup("Metrics")
  PosX = ReadPreferenceLong("PosX",100)
  PosY = ReadPreferenceLong("PosY",100)
  SizeH = ReadPreferenceLong("SizeH",600)
  SizeV = ReadPreferenceLong("SizeV",400)
  Spl1_Pos = ReadPreferenceLong("Spl1_Pos",300)
  Spl2_Pos = ReadPreferenceLong("Spl2_Pos",200)
  PreferenceGroup("Usage")
  UsedEditor = ReadPreferenceLong("Editor",1)
  ClosePreferences()
EndProcedure

Procedure SavePreferences()
  CreatePreferences("Templates.cfg")
  PreferenceGroup("General")
  WritePreferenceString("Chemin",Chemin$)
  PreferenceGroup("Metrics")
  WritePreferenceLong("PosX",PosX)
  WritePreferenceLong("PosY",PosY)
  WritePreferenceLong("SizeH",SizeH)
  WritePreferenceLong("SizeV",SizeV)
  WritePreferenceLong("Spl1_Pos",Spl1_Pos)
  WritePreferenceLong("Spl2_Pos",Spl2_Pos)
  PreferenceGroup("Usage")
  WritePreferenceLong("Editor",UsedEditor)
  ClosePreferences()
EndProcedure

Procedure ScanFolder(Folder.s)
  ClearGadgetItemList(#List_Files)
  If ExamineDirectory(0, Folder, "*.*")
    Repeat
      Type = NextDirectoryEntry()
      If Type = 1
        Name$ = DirectoryEntryName()
        If LCase(GetExtensionPart(Name$)) = "pb"
          AddGadgetItem(#List_Files,k,Name$,Img)
          
          If k&1 = 0
            SetItemColor(#List_Files,k,0,RGB($0,$0,$0),RGB($5F,$AF,$AF))
          Else
            SetItemColor(#List_Files,k,0,RGB($FF,$FF,$FF),RGB($0,$58,$B0))
          EndIf
          k+1
        EndIf
      EndIf
    Until Type = 0
  EndIf
EndProcedure

Procedure LoadTemplate(Fichier.s)
  If FileSize(Fichier) = 0 : ProcedureReturn : EndIf
  
  ClearGadgetItemList(#Edit_Code)
  If ReadFile(0,Fichier)
    While Eof(0) = 0
      AddGadgetItem(#Edit_Code,-1,ReadString())
    Wend
    CloseFile(0)
  EndIf
EndProcedure

Procedure CallBack(hWin,Msge,wParam,lParam)
  Resultat = #PB_ProcessPureBasicEvents
  Select Msge
    Case #WM_SIZE
      ResizeGadget(#Btn_Insert, WindowWidth()-105, WindowHeight()-25, -1, -1)
      ResizeGadget(#Split_2, -1, -1, (WindowWidth()-10)/2, WindowHeight())
      ResizeGadget(#Split_1, -1, -1, WindowWidth()-10, WindowHeight()-35)
      ResizeGadget(#PureBasic, 5, WindowHeight()-25, 100, 20)
  EndSelect
  ProcedureReturn Resultat 
EndProcedure 

Procedure SendDatasToEditor(MainWin, Datas$, Mode.l)
  RunOneWin = FindWindow_(@"WindowClass_0",@"jaPBe-RunOneWindow")
  If RunOneWin
    If Datas$
      cd.COPYDATASTRUCT
      cd\dwData = Mode
      cd\cbData = Len(Datas$)+1
      cd\lpData = @Datas$
      ProcedureReturn SendMessage_(RunOneWin, #WM_COPYDATA, MainWin, cd)  
    EndIf
  Else
    MessageRequester("JaPBe non trouvé", "Il semblerait que JaPBe ne soit pas ouvert" + Chr(10) + "" + Chr(10) + "Peut-être faudrait-il y penser!!!!", #MB_OK)
  EndIf
EndProcedure

Procedure.s GetPath(Type)
  #GetPath_PureBasic=-7
  location$ = Space (#MAX_PATH+1)
  If Type=#GetPath_PureBasic
    BufferSize=#MAX_PATH
    If GetVersion_() & $FF0000
      If RegOpenKeyEx_(#HKEY_CLASSES_ROOT, "Applications\PureBasic.exe\shell\open\command", 0, #KEY_ALL_ACCESS , @key) = #ERROR_SUCCESS
        If RegQueryValueEx_(key, "", 0, @Type, @location$, @BufferSize) = #ERROR_SUCCESS
          location$ = GetPathPart(Mid(location$, 2, Len(location$)-7))
        EndIf
      EndIf
    Else
      If RegOpenKeyEx_(#HKEY_LOCAL_MACHINE, "Software\Classes\PureBasic.exe\shell\open\command", 0, #KEY_ALL_ACCESS , @key) = #ERROR_SUCCESS
        If RegQueryValueEx_(key, "", 0, @Type, @location$, @BufferSize) = #ERROR_SUCCESS
          location$ = GetPathPart(Mid(location$, 2, Len(location$)-7))
        EndIf
      EndIf
    EndIf
  EndIf
  If location$ And Right(location$,1)<>"\" : location$+"\" : EndIf
  ProcedureReturn location$
EndProcedure

;- Initialisation
LoadPreferences()
Pb_Path$ = GetPath(#GetPath_PureBasic)+ "PureBasic.exe"
Img = ExtractIcon_(GetModuleHandle_(#Null), Pb_Path$, 0)

hMain = Open_Win_0()
SetWindowCallback(@CallBack())
SetGadgetState(#PureBasic,UsedEditor)
SetGadgetText(#Explorer,Chemin$)
ScanFolder(Chemin$)

TypeEditor = FindWindow_("WindowClass_7","jaPBe")

;- Boucle
Repeat
  Select WaitWindowEvent()
    Case #PB_EventGadget
      Select EventGadgetID()
        
        Case #List_Files
          If EventType() = #PB_EventType_LeftClick
            LoadTemplate(Chemin$+GetGadgetItemText(#List_Files,GetGadgetState(#List_Files),0))
          EndIf
          
        Case #Explorer
          If EventType() = #PB_EventType_LeftClick
            Chemin$ = GetGadgetText(#Explorer)
            ScanFolder(Chemin$)
          EndIf
          
        Case #Btn_Insert
          If GetGadgetText(#Edit_Code) <> ""
            If UsedEditor = 0
              If TypeEditor <> 0
                SendDatasToEditor(hMain,GetGadgetText(#Edit_Code), #wmcd_NewText)
              Else
                ClearClipboard()
                SetClipboardText(GetGadgetText(#Edit_Code))
                MessageRequester("jaPBe non trouvé", "JaPBe n'a pas été détecté, les données ont été placées dans le presse-papier", #MB_OK|#MB_ICONINFORMATION)
              EndIf
            Else
              ClearClipboard()
              SetClipboardText(GetGadgetText(#Edit_Code))
            EndIf
          EndIf
          
        Case #PureBasic
          UsedEditor = GetGadgetState(#PureBasic)
      EndSelect
      
    Case #PB_EventCloseWindow
      GetClientRect_(WindowID(#Win_0),@lpRect.RECT)
      PosX = lpRect\left : PosY = lpRect\top
      SizeH =lpRect\right - lpRect\left : SizeV = lpRect\bottom - lpRect\top
      Spl1_Pos = GetGadgetState(#Split_1) : Spl2_Pos = GetGadgetState(#Split_2)
      UsedEditor = GetGadgetState(#PureBasic)
      SavePreferences()
      Quit = #True
  EndSelect
Until Quit
End

Publié : lun. 02/janv./2006 17:03
par bernard13
chris
j'ai une erreur a ligne :

SetItemColor(#List_Files,k,0,RGB($0,$0,$0),RGB($5F,$AF,$AF))

as tu utiliser une lib?

Publié : lun. 02/janv./2006 18:14
par Chris
bernard13 a écrit :chris
j'ai une erreur a ligne :

SetItemColor(#List_Files,k,0,RGB($0,$0,$0),RGB($5F,$AF,$AF))

as tu utiliser une lib?
Ah oui, j'ai oublié de commenter ces lignes.

J'utilisais la lib de Denis, MoreListIconGadget, mais ça ne fonctionne pas. (Va d'ailleurs falloir que je voie pourquoi).


Il faut commenter tout le bloc If / Endif.

Code : Tout sélectionner

          ; If k &1 = 0 
            ; SetItemColor(#List_Files,k,0,RGB($0,$0,$0),RGB($5F,$AF,$AF)) 
          ; Else 
            ; SetItemColor(#List_Files,k,0,RGB($FF,$FF,$FF),RGB($0,$58,$B0)) 
          ; EndIf 
          ; k+1 

Publié : lun. 02/janv./2006 19:06
par Anonyme2
le problème de couleur vient surement du fait que la listicon a comme parent le splittergadget, il me semblait avoir fait une correction mais apparement dans ce cas de figure ça ne marche pas.

C'est assez problématique de subclasser directement dans une librairie car il peut y avoir pas mal de cas de figures, le mieux serait d'utiliser la setwindowcallback de PB, j'en avais parler à Fred il y a bien 2 ans, il pensait pouvoir mettre en place un chainage de callback comme en Java.

Je me demande si la version 4 .......

Publié : lun. 02/janv./2006 19:10
par Chris
Denis a écrit :le problème de couleur vient surement du fait que la listicon a comme parent le splittergadget, il me semblait avoir fait une correction mais apparement dans ce cas de figure ça ne marche pas.

C'est assez problématique de subclasser directement dans une librairie car il peut y avoir pas mal de cas de figures, le mieux serait d'utiliser la setwindowcallback de PB, j'en avais parler à Fred il y a bien 2 ans, il pensait pouvoir mettre en place un chainage de callback comme en Java.

Je me demande si la version 4 .......
Ben, j'ai peut-être pas la bonne version de la lib, parce que ça fait un moment que je l'ai, celle-là.

[Edit]
J'ai installé la version 1.31, (j'avais la 1.30), mais c'est pareil.

Publié : lun. 02/janv./2006 19:48
par Anonyme2
Il faudrait que je regarde ça de plus près car ça ne marche pas (j'ai une version plus avancée qui ne fonctionne pas non plus dans ce cas de figure)

Publié : mar. 03/janv./2006 7:38
par Chris
J'ai fait quelques petites modifications.
- Un stream pour accelerer le chargement des gros fichiers.
- Un pop-up pour copier une partie du code seulement.
- L'éditeur est en lecture uniquement.
- Une petite marge à gauche pour faciliter la sélection du texte à copier.

Code : Tout sélectionner

;{- Constantes  fenêtres
Enumeration
  #Win_0
EndEnumeration
;}

;{- Constantes Gadgets
Enumeration
  #List_Files
  #Edit_Code
  #Explorer
  #Btn_Insert
  #PureBasic
  #Split_1
  #Split_2
EndEnumeration

#Pop = 0
#Pop_Copy = 0
;}

;{- Constantes diverses
#WMCD_OpenFile            = 1
#WMCD_InsertText          = 2
#wmCD_ReplaceCompleteText = 3
#wmcd_ReplaceCurrentLine  = 4
#wmcd_NewText             = 5
;}

;{- Variables
Global Chemin$, Img, WinStyle, PosX, PosY, SizeH, SizeV,Spl1_Pos,Spl2_Pos,UsedEditor, TypeEditor, Bulles, hMain

WinStyle = #PB_Window_MaximizeGadget | #PB_Window_MinimizeGadget | #PB_Window_SystemMenu | #PB_Window_SizeGadget
;}

;{- Déclarations des procédures
Declare FileStreamIn(FileID.l, File.s, Gadget.l, Mode.l)
Declare StreamFileIn_Callback(hFile, pbBuff, cb, pcb)
Declare.s GetPath(Type)
Declare SendDatasToEditor(MainWin, Datas$, Mode.l)
Declare CallBack(hWin,Msge,wParam,lParam)
Declare LoadTemplate(Fichier.s)
Declare ScanFolder(Folder.s)
Declare SavePreferences()
Declare LoadPreferences()
Declare Open_Win_0()
;}

;{- Procedures
Procedure Open_Win_0()
  If OpenWindow(#Win_0, PosX, PosY, SizeH, SizeV, WinStyle, "Routines")
    
    hwnd = WindowID(#Win_0)
    
    If CreatePopupMenu(#Pop)
      MenuItem(#Pop_Copy, "Copier")
    EndIf
    
    If CreateGadgetList(WindowID())
      ListIconGadget(#List_Files, 5, 170, 230, 250, "Fichiers", 220, #PB_ListIcon_GridLines | #PB_ListIcon_FullRowSelect | #PB_ListIcon_AlwaysShowSelection)
      EditorGadget(#Edit_Code, 240, 5, 320, 390)
      ExplorerTreeGadget(#Explorer, 5, 5, 230, 160, "", #PB_Explorer_NoDriveRequester | #PB_Explorer_NoFiles | #PB_Explorer_NoMyDocuments | #PB_Explorer_AlwaysShowSelection)
      ButtonGadget(#Btn_Insert, WindowWidth()-105, WindowHeight()-25, 100, 20, "Insérer")
      CheckBoxGadget(#PureBasic, 5, WindowHeight()-25,100,20,"PureBasic")
      SplitterGadget(#Split_2,5,5,(WindowWidth()-10)/2,WindowHeight(),#Explorer,#List_Files)
      SplitterGadget(#Split_1,5,5,WindowWidth()-10,WindowHeight()-35,#Split_2,#Edit_Code,#PB_Splitter_Vertical)
    EndIf
  EndIf
  
  SetGadgetAttribute(#Split_1,#PB_Splitter_FirstMinimumSize,150)
  SetGadgetAttribute(#Split_1,#PB_Splitter_SecondMinimumSize,150)
  SetGadgetAttribute(#Split_2,#PB_Splitter_FirstMinimumSize,40)
  SetGadgetAttribute(#Split_2,#PB_Splitter_SecondMinimumSize,60)
  
  SetGadgetState(#Split_1,Spl1_Pos)
  SetGadgetState(#Split_2,Spl2_Pos)
  SetGadgetState(#PureBasic,1)
  
  SendMessage_(GadgetID(#Edit_Code), #EM_SETMARGINS  , #EC_LEFTMARGIN , 20)
  SendMessage_(GadgetID(#Edit_Code), #EM_SETEVENTMASK, 0, #ENM_MOUSEEVENTS)
  SendMessage_(GadgetID(#Edit_Code), #EM_EXLIMITTEXT , 0, 100000000)
  SendMessage_(GadgetID(#Edit_Code), #EM_SETREADONLY , #True, 0)
  
  ProcedureReturn hwnd
EndProcedure

Procedure LoadPreferences()
  OpenPreferences("Templates.cfg")
  PreferenceGroup("General")
  Chemin$ = ReadPreferenceString("Chemin","C:\")
  PreferenceGroup("Metrics")
  PosX = ReadPreferenceLong("PosX",100)
  PosY = ReadPreferenceLong("PosY",100)
  SizeH = ReadPreferenceLong("SizeH",600)
  SizeV = ReadPreferenceLong("SizeV",400)
  Spl1_Pos = ReadPreferenceLong("Spl1_Pos",300)
  Spl2_Pos = ReadPreferenceLong("Spl2_Pos",200)
  PreferenceGroup("Usage")
  UsedEditor = ReadPreferenceLong("Editor",1)
  ClosePreferences()
EndProcedure

Procedure SavePreferences()
  CreatePreferences("Templates.cfg")
  PreferenceGroup("General")
  WritePreferenceString("Chemin",Chemin$)
  PreferenceGroup("Metrics")
  WritePreferenceLong("PosX",PosX)
  WritePreferenceLong("PosY",PosY)
  WritePreferenceLong("SizeH",SizeH)
  WritePreferenceLong("SizeV",SizeV)
  WritePreferenceLong("Spl1_Pos",Spl1_Pos)
  WritePreferenceLong("Spl2_Pos",Spl2_Pos)
  PreferenceGroup("Usage")
  WritePreferenceLong("Editor",UsedEditor)
  ClosePreferences()
EndProcedure

Procedure ScanFolder(Folder.s)
  ClearGadgetItemList(#List_Files)
  If ExamineDirectory(0, Folder, "*.*")
    Repeat
      Type = NextDirectoryEntry()
      If Type = 1
        Name$ = DirectoryEntryName()
        If LCase(GetExtensionPart(Name$)) = "pb"
          AddGadgetItem(#List_Files,k,Name$,Img)
        EndIf
      EndIf
    Until Type = 0
  EndIf
EndProcedure

Procedure LoadTemplate(Fichier.s)
  If FileSize(Fichier) = 0 : ProcedureReturn : EndIf
  ClearGadgetItemList(#Edit_Code)
  
  FileStreamIn(0, Fichier, #Edit_Code, #SF_TEXT)
EndProcedure

Procedure CallBack(hWin,Msge,wParam,lParam)
  Resultat = #PB_ProcessPureBasicEvents
  
  Select Msge
    Case #WM_SIZE
      ResizeGadget(#Btn_Insert, WindowWidth()-105, WindowHeight()-25, -1, -1)
      ResizeGadget(#Split_2, -1, -1, (WindowWidth()-10)/2, WindowHeight())
      ResizeGadget(#Split_1, -1, -1, WindowWidth()-10, WindowHeight()-35)
      ResizeGadget(#PureBasic, 5, WindowHeight()-25, 100, 20)
      
      Resultat = 0
      
    Case #WM_NOTIFY
      *Mssge.MSGFILTER = lParam
      If *Mssge\nmhdr\idFrom = #Edit_Code And *Mssge\msg = #WM_RBUTTONDOWN
        DisplayPopupMenu(#Pop, hMain)
      EndIf
      
  EndSelect
  ProcedureReturn Resultat 
EndProcedure 

Procedure SendDatasToEditor(MainWin, Datas$, Mode.l)
  RunOneWin = FindWindow_(@"WindowClass_0",@"jaPBe-RunOneWindow")
  If RunOneWin
    If Datas$
      cd.COPYDATASTRUCT
      cd\dwData = Mode
      cd\cbData = Len(Datas$)+1
      cd\lpData = @Datas$
      ProcedureReturn SendMessage_(RunOneWin, #WM_COPYDATA, MainWin, cd)  
    EndIf
  Else
    MessageRequester("JaPBe non trouvé", "Il semblerait que JaPBe ne soit pas ouvert" + Chr(10) + "" + Chr(10) + "Peut-être faudrait-il y penser!!!!", #MB_OK)
  EndIf
EndProcedure

Procedure.s GetPath(Type)
  #GetPath_PureBasic=-7
  location$ = Space (#MAX_PATH+1)
  If Type=#GetPath_PureBasic
    BufferSize=#MAX_PATH
    If GetVersion_() & $FF0000
      If RegOpenKeyEx_(#HKEY_CLASSES_ROOT, "Applications\PureBasic.exe\shell\open\command", 0, #KEY_ALL_ACCESS , @key) = #ERROR_SUCCESS
        If RegQueryValueEx_(key, "", 0, @Type, @location$, @BufferSize) = #ERROR_SUCCESS
          location$ = GetPathPart(Mid(location$, 2, Len(location$)-7))
        EndIf
      EndIf
    Else
      If RegOpenKeyEx_(#HKEY_LOCAL_MACHINE, "Software\Classes\PureBasic.exe\shell\open\command", 0, #KEY_ALL_ACCESS , @key) = #ERROR_SUCCESS
        If RegQueryValueEx_(key, "", 0, @Type, @location$, @BufferSize) = #ERROR_SUCCESS
          location$ = GetPathPart(Mid(location$, 2, Len(location$)-7))
        EndIf
      EndIf
    EndIf
  EndIf
  If location$ And Right(location$,1)<>"\" : location$+"\" : EndIf
  ProcedureReturn location$
EndProcedure

Procedure StreamFileIn_Callback(hFile, pbBuff, cb, pcb)
  ProcedureReturn ReadFile_(hFile, pbBuff, cb, pcb, 0)!1
EndProcedure
  
Procedure FileStreamIn(FileID.l, File.s, Gadget.l, Mode.l)
  Protected File
  Protected FileID
  Protected Gadget
  Protected StreamData.EDITSTREAM
  
  If Mode <> #SF_RTF : Mode = #SF_TEXT : EndIf
  
  If ReadFile(FileID, File)
    StreamData\dwCookie = UseFile(FileID)
    StreamData\dwError = #Null
    StreamData\pfnCallback = @StreamFileIn_Callback()
    SendMessage_(GadgetID(Gadget), #EM_STREAMIN, Mode, @StreamData)
    CloseFile(FileID)
    NomFichier$ = GetFilePart(File)
    ProcedureReturn #True
  Else
    ProcedureReturn #False
  EndIf
EndProcedure
;}

;{- Initialisation
LoadPreferences()
Pb_Path$ = GetPath(#GetPath_PureBasic)+ "PureBasic.exe"
Img = ExtractIcon_(GetModuleHandle_(#Null), Pb_Path$, 0)

hMain = Open_Win_0()
SetWindowCallback(@CallBack())

SetGadgetState(#PureBasic,UsedEditor)
SetGadgetText(#Explorer,Chemin$)
ScanFolder(Chemin$)

TypeEditor = FindWindow_("WindowClass_7","jaPBe")
;}

;{- Boucle
Repeat
  Select WaitWindowEvent()
    Case #PB_EventMenu
      Select EventMenuID()
        Case #Pop_Copy
          SendMessage_(GadgetID(#Edit_Code), #WM_COPY , 0, 0)
      EndSelect
      
    Case #PB_EventGadget
      Select EventGadgetID()
        Case #List_Files
          If EventType() = #PB_EventType_LeftClick
            LoadTemplate(Chemin$+GetGadgetItemText(#List_Files,GetGadgetState(#List_Files),0))
          EndIf
          
        Case #Explorer
          If EventType() = #PB_EventType_LeftClick
            Chemin$ = GetGadgetText(#Explorer)
            ScanFolder(Chemin$)
          EndIf
          
        Case #Btn_Insert
          If GetGadgetText(#Edit_Code) <> ""
            If UsedEditor = 0
              If TypeEditor <> 0
                SendDatasToEditor(hMain,GetGadgetText(#Edit_Code), #wmcd_NewText)
              Else
                ClearClipboard()
                SetClipboardText(GetGadgetText(#Edit_Code))
                MessageRequester("jaPBe non trouvé", "JaPBe n'a pas été détecté, les données ont été placées dans le presse-papier", #MB_OK|#MB_ICONINFORMATION)
              EndIf
            Else
              ClearClipboard()
              SetClipboardText(GetGadgetText(#Edit_Code))
            EndIf
          EndIf
          
        Case #PureBasic
          UsedEditor = GetGadgetState(#PureBasic)
      EndSelect
      
    Case #PB_EventCloseWindow
      GetClientRect_(WindowID(#Win_0),@lpRect.RECT)
      PosX = lpRect\left : PosY = lpRect\top
      SizeH =lpRect\right - lpRect\left : SizeV = lpRect\bottom - lpRect\top
      Spl1_Pos = GetGadgetState(#Split_1) : Spl2_Pos = GetGadgetState(#Split_2)
      UsedEditor = GetGadgetState(#PureBasic)
      SavePreferences()
      Quit = #True
  EndSelect
Until Quit
End
;}

Publié : mar. 03/janv./2006 8:47
par Droopy
Sympa et utile :wink:

Publié : mar. 03/janv./2006 8:59
par bernard13
super ton programme
cela me donne des idées

merci CHRIS

Publié : mar. 03/janv./2006 13:35
par Backup
....

Publié : mar. 03/janv./2006 14:03
par Chris
Pas besoin de couleurs. Pour moi, c'est très bien comme ça.

Publié : mar. 03/janv./2006 19:56
par Backup
Chris a écrit :Pas besoin de couleurs. Pour moi, c'est très bien comme ça.
nia! nia! nia! nia! nia! :lol:

Publié : mer. 04/janv./2006 10:52
par gnozal
Denis a écrit :le problème de couleur vient surement du fait que la listicon a comme parent le splittergadget, il me semblait avoir fait une correction mais apparement dans ce cas de figure ça ne marche pas.
Cela fonctionne avec PureCOLOR en remplaçant 'SetItemColor' par 'PureCOLOR_SetCellColor' (mais PureCOLOR_SetGadgetColorEx() avec option #PureCOLOR_LV_AlternateColors est bien plus rapide). Dans ma lib (maintenant sans Callback), je sous-classe le gadget et tous ses parents jusqu'à la fenêtre. Je pense que c'est la seule façon qui fonctionne dans 100% (j'espère) des cas.

J'ai fait un outil analogue (plugin pour éditeur) en 2004 : http://forums.purebasic.com/english/vie ... hp?t=11456 (jaPBe) et http://forums.purebasic.com/english/vie ... hp?t=11456 (PBIDE).

Publié : mer. 04/janv./2006 12:43
par lionel_om
Le DoBro il lache rien !!!! :lol: :lol: :P

Tu as fais quoi ? Des études de technico-commercial ??? :lol: :roll:

Publié : mer. 04/janv./2006 12:43
par Anonyme2
Merci gnozal

je vais jeter un oeil au post :D