Un petit truc que j'ai fait

Sujets variés concernant le développement en PureBasic
Avatar de l’utilisateur
Chris
Messages : 3731
Inscription : sam. 24/janv./2004 14:54
Contact :

Un petit truc que j'ai fait

Message 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
bernard13
Messages : 1221
Inscription : mer. 05/janv./2005 21:30

Message 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?
Avatar de l’utilisateur
Chris
Messages : 3731
Inscription : sam. 24/janv./2004 14:54
Contact :

Message 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 
Anonyme2
Messages : 3518
Inscription : jeu. 22/janv./2004 14:31
Localisation : Sourans

Message 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 .......
Avatar de l’utilisateur
Chris
Messages : 3731
Inscription : sam. 24/janv./2004 14:54
Contact :

Message 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.
Anonyme2
Messages : 3518
Inscription : jeu. 22/janv./2004 14:31
Localisation : Sourans

Message 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)
Avatar de l’utilisateur
Chris
Messages : 3731
Inscription : sam. 24/janv./2004 14:54
Contact :

Message 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
;}
Avatar de l’utilisateur
Droopy
Messages : 1151
Inscription : lun. 19/juil./2004 22:31

Message par Droopy »

Sympa et utile :wink:
bernard13
Messages : 1221
Inscription : mer. 05/janv./2005 21:30

Message par bernard13 »

super ton programme
cela me donne des idées

merci CHRIS
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Message par Backup »

....
Dernière modification par Backup le mar. 19/août/2014 15:49, modifié 1 fois.
Avatar de l’utilisateur
Chris
Messages : 3731
Inscription : sam. 24/janv./2004 14:54
Contact :

Message par Chris »

Pas besoin de couleurs. Pour moi, c'est très bien comme ça.
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Message par Backup »

Chris a écrit :Pas besoin de couleurs. Pour moi, c'est très bien comme ça.
nia! nia! nia! nia! nia! :lol:
gnozal
Messages : 832
Inscription : mar. 07/déc./2004 17:35
Localisation : France
Contact :

Message 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).
lionel_om
Messages : 1500
Inscription : jeu. 25/mars/2004 11:23
Localisation : Sophia Antipolis (Nice)
Contact :

Message par lionel_om »

Le DoBro il lache rien !!!! :lol: :lol: :P

Tu as fais quoi ? Des études de technico-commercial ??? :lol: :roll:
Webmestre de Basic-univers
Participez à son extension: ajouter vos programmes et partagez vos codes !
Anonyme2
Messages : 3518
Inscription : jeu. 22/janv./2004 14:31
Localisation : Sourans

Message par Anonyme2 »

Merci gnozal

je vais jeter un oeil au post :D
Répondre