Publié : mar. 25/sept./2007 8:29
Bah, ........ et mon asniere !!!!!!!!Et mon idée de catégorie alors ....... (que j'ai volé sans le savoir à ApiGuide )
Tout le monde s'en fous

Bah, ........ et mon asniere !!!!!!!!Et mon idée de catégorie alors ....... (que j'ai volé sans le savoir à ApiGuide )
Tout le monde s'en fous
Mille mercis JACOBUSSi on te l'a pas encore dit, c'est une bonne idée aussi de faire des catégories
Code : Tout sélectionner
;-Declarations
Declare ChargementFiches_API(DossierAPI$, LGadget.l)
Declare Enregistrer_Fiche() ; Format RTF
Declare Enregistrer_Exemple(); Format texte
Declare MoveToRecycleBin(Fiche.s)
Declare Suppression(FichierSelect$, mode.l)
Declare SelectedListview(ListGadget.l,RepAPI$)
Declare GetCurrentEditor()
Declare ReChargerFiches()
; ********* procedure piqué au forum anglais !! ****
Declare Editor_Save(EGid.l,file.s)
Declare Editor_Load(EGid.l, file.s)
Declare StreamFileIn_Callback(hFile, pbBuff, cb, pcb)
Declare StreamFileOut_Callback(hFile, pbBuff, cb, pcb)
;********************non utilisé pour le moment **********
Declare EditorGadgetSelectAll(Gadget_ID) ; selectionne tout
Declare EditorGadgetCOPY(Gadget_ID); copy dans le clip board
Declare EditorGadgetPASTE(Gadget_ID) ; pose dans l'editeur
; ****************************************************
;-constantes
Enumeration
#ApiWin
#ToolBar
#TB_Edit
#TB_New
#TB_Open
#TB_Save
#TB_Print
#TB_Cut
#TB_Copy
#TB_Paste
#TB_Undo
#TB_Redo
#TB_Sel
#TB_Delete
#TB_Recycle
#CONTAINER_REBAR
#Rebar
#Cont_fenetres
#List_View_fenetres
#Cont_Gadgets
#List_View_Gadgets
#Cont_Internet
#List_View_Internet
#Cont_Divers
#List_View_Divers
#String_dossier
#Text_String_APIname
#String_APIname
#Panel
#editeur:#editeur1
#API_choisie
#Text_compte_fichiers
#Text_compte_lignes
#exemple
EndEnumeration
#version = "beta 01 - 2007"
#WindowWidth = 795 ; adaptation au 800x600
#WindowHeight = 560
#CCS_VERT = $00000080 ; pour le rebar
;-Fonts
Global Font0 , Font1, flg
Font0 = LoadFont(0, "courier", 8,#PB_Font_HighQuality)
Font1 = LoadFont(1, "Verdana", 8,#PB_Font_Bold|#PB_Font_HighQuality)
;-variables
Global AppliDir$,RepAPIsave$,RepAPI$,NbFiles.l,Editeur.l,ListGadget.l,g_hinst
AppliDir$ = GetCurrentDirectory()
Global DossierFenetres$, DossierGadgets$, DossierInternet$, DossierDivers$
;Création des dossiers pour contenir ou recevoir les fiches créées
If FileSize(AppliDir$+"DossierAPI") = -1
CreateDirectory(AppliDir$+"DossierAPI")
EndIf
RepAPIsave$ = AppliDir$+"DossierAPI\"
If FileSize(RepAPIsave$+"API_Fenêtres") = -1
CreateDirectory(RepAPIsave$+"API_Fenêtres")
EndIf
DossierFenetres$ = RepAPIsave$+"API_Fenêtres\"
If FileSize(RepAPIsave$+"API_Gadgets") = -1
CreateDirectory(RepAPIsave$+"API_Gadgets")
EndIf
DossierGadgets$ = RepAPIsave$+"API_Gadgets\"
If FileSize(RepAPIsave$+"API_Internet") = -1
CreateDirectory(RepAPIsave$+"API_Internet")
EndIf
DossierInternet$ = RepAPIsave$+"API_Internet\"
If FileSize(RepAPIsave$+"API_Divers") = -1
CreateDirectory(RepAPIsave$+"API_Divers")
EndIf
DossierDivers$ = RepAPIsave$+"API_Divers\"
;--------------------
;-REBAR
Procedure InsertBar(Text.s, Child.l, Parent.l, BarWidth.l, Index.l, BkColor.l, FgColor)
rbBand.REBARBANDINFO
rbBand\cbSize = SizeOf(REBARBANDINFO)
rbBand\fMask = #RBBIM_STYLE | #RBBIM_CHILD | #RBBIM_CHILDSIZE | #RBBIM_TEXT | #RBBIM_HEADERSIZE | #RBBIM_COLORS
rbBand\fStyle = #RBBS_CHILDEDGE
rbBand\clrBack = BkColor
rbBand\clrFore = FgColor
rbBand\lpText = @Text
rbBand\hwndChild = Child
rbBand\cyMinChild = BarWidth
rbBand\cxHeader = 25
rbBand\cx = BarWidth
SendMessage_(Parent, #RB_INSERTBAND, Index, @rbBand)
EndProcedure
Procedure CreateRebar(Gadget, hwndOwner)
rbi.REBARINFO
icex.INITCOMMONCONTROLSEX
icex\dwSize = SizeOf(INITCOMMONCONTROLSEX);
icex\dwICC = #ICC_COOL_CLASSES|#ICC_BAR_CLASSES;
InitCommonControlsEx_(@icex);
hwndRB = CreateWindowEx_(#WS_EX_TOOLWINDOW, "ReBarWindow32", #Null, #WS_CHILD|#WS_VISIBLE|#WS_CLIPSIBLINGS|#CCS_VERT , 0,0,0,0, hwndOwner, Gadget, g_hinst, #Null)
SetWindowTheme_(hwndRB, " ", " ")
ProcedureReturn hwndRB;
EndProcedure
;--------------------
;-Fenêtre
ExamineDesktops() ; on se réfère au bureau pour centrer ou non la fenêtre en fonction de sa taille
Largeur$ = Str(DesktopWidth(0))
Hauteur$ = Str(DesktopHeight(0))
If Val(Largeur$)>800 And Val(Hauteur$)>600 ; 800x600 mini
FlagWin = #PB_Window_SystemMenu|#PB_Window_ScreenCentered | #PB_Window_MinimizeGadget | #PB_Window_SizeGadget |#PB_Window_TitleBar|#PB_Window_MaximizeGadget
Else
FlagWin = #PB_Window_SystemMenu | #PB_Window_MinimizeGadget | #PB_Window_SizeGadget |#PB_Window_TitleBar|#PB_Window_MaximizeGadget
EndIf
If OpenWindow(#ApiWin,0,0, #WindowWidth, #WindowHeight," API PureViewer "+#version, FlagWin) = 0 Or CreateGadgetList(WindowID(#ApiWin)) = 0
End
EndIf
;-Toolbar
hToolBar = CreateToolBar(#ToolBar, WindowID(#ApiWin))
If hToolBar
ToolBarStandardButton(#TB_Edit, #PB_ToolBarIcon_Properties,#PB_ToolBar_Toggle):ToolBarToolTip(#ToolBar,#TB_Edit,"Editer la fiche en cours")
ToolBarStandardButton(#TB_New, #PB_ToolBarIcon_New) :ToolBarToolTip(#ToolBar,#TB_New,"Créer une nouvelle fiche")
ToolBarStandardButton(#TB_Open, #PB_ToolBarIcon_Open) :ToolBarToolTip(#ToolBar,#TB_Open,"Recharger toutes les fiches")
ToolBarStandardButton(#TB_Save, #PB_ToolBarIcon_Save) :ToolBarToolTip(#ToolBar,#TB_Save,"Enregistrer sous")
ToolBarStandardButton(#TB_Print,#PB_ToolBarIcon_Print):ToolBarToolTip(#ToolBar,#TB_Print,"Imprimer la fiche en cours")
ToolBarSeparator()
ToolBarStandardButton(#TB_Cut,#PB_ToolBarIcon_Cut) :ToolBarToolTip(#ToolBar,#TB_Cut,"Couper")
ToolBarStandardButton(#TB_Copy,#PB_ToolBarIcon_Copy) :ToolBarToolTip(#ToolBar,#TB_Copy,"Copier")
ToolBarStandardButton(#TB_Paste,#PB_ToolBarIcon_Paste):ToolBarToolTip(#ToolBar,#TB_Paste,"Coller")
ToolBarSeparator()
ToolBarStandardButton(#TB_Undo,#PB_ToolBarIcon_Undo):ToolBarToolTip(#ToolBar,#TB_Undo,"Annuler")
ToolBarStandardButton(#TB_Redo,#PB_ToolBarIcon_Redo):ToolBarToolTip(#ToolBar,#TB_Redo,"Recommencer")
ToolBarStandardButton(#TB_Sel ,#PB_ToolBarIcon_Find):ToolBarToolTip(#ToolBar,#TB_Sel,"Sélectionner tout")
ToolBarSeparator()
ToolBarStandardButton(#TB_Recycle,#PB_ToolBarIcon_Replace):ToolBarToolTip(#ToolBar,#TB_Recycle,"Envoyer la fiche sélectionnée à la corbeille")
ToolBarStandardButton(#TB_Delete ,#PB_ToolBarIcon_Delete) :ToolBarToolTip(#ToolBar,#TB_Delete ,"Supprimer définitivement la fiche sélectionnée")
EndIf
SetWindowColor(#ApiWin,RGB(173, 191, 193))
g_hinst = GetModuleHandle_(#Null) ; rebar
PanelGadget(#Panel, 205,25,590,515)
;-Panel définition
AddGadgetItem(#Panel, -1, "Définition")
EditorGadget(#editeur,0,0,585,450,#PB_Editor_ReadOnly)
SendMessage_(GadgetID(#editeur), #EM_SETTARGETDEVICE, #Null, 0)
TextGadget(#Text_String_APIname,5,467,50,15,"Fichier :")
TextGadget(#String_APIname,55,465,300,18,"",#PB_String_ReadOnly|#PB_Text_Center)
SetGadgetFont(#String_APIname, Font1)
SetGadgetColor(#String_APIname,#PB_Gadget_FrontColor,RGB(92, 139, 78))
;-Panel exemple
AddGadgetItem(#Panel, -1, "Exemple")
EditorGadget(#editeur1,0,0,585,450)
SendMessage_(GadgetID(#editeur1), #EM_SETTARGETDEVICE, #Null, 0)
SetGadgetColor(#editeur1, #PB_Gadget_BackColor, RGB(245, 243, 199))
SetGadgetColor(#editeur1, #PB_Gadget_FrontColor, RGB(117, 175, 99))
SetGadgetFont(#editeur1, Font0)
TextGadget(#Text_compte_lignes,5,465,570,20,"")
SetGadgetColor(#Text_compte_lignes,#PB_Gadget_FrontColor,RGB(92, 139, 78))
CloseGadgetList();clos le panel
StringGadget(#String_dossier,205,540,590,18,"",#PB_String_ReadOnly)
;----CONTAINER_REBAR
hMainCont = ContainerGadget(#CONTAINER_REBAR,0,25,200,515)
hwndRB = CreateRebar(#Rebar, hMainCont)
;- ---Rebar 1 - Fenetres
hCont_1 = ContainerGadget(#Cont_fenetres, 0, 0, 200,515)
ListViewGadget(#List_View_fenetres,0,0,200,410)
SetGadgetColor(#List_View_fenetres,#PB_Gadget_FrontColor,RGB(32, 233, 221))
SetGadgetColor(#List_View_fenetres,#PB_Gadget_BackColor,RGB(75, 96, 98))
CloseGadgetList()
;- ---Rebar 2 - Gadgets
hCont_2 = ContainerGadget(#Cont_Gadgets, 0, 0, 200,515)
ListViewGadget(#List_View_Gadgets,0,0,200,410)
SetGadgetColor(#List_View_Gadgets,#PB_Gadget_FrontColor,RGB(32, 233, 221))
SetGadgetColor(#List_View_Gadgets,#PB_Gadget_BackColor,RGB(75, 96, 98))
CloseGadgetList()
;- ---Rebar 3 - Internet
hCont_3 = ContainerGadget(#Cont_Internet, 0, 0, 200,515)
ListViewGadget(#List_View_Internet,0,0,200,410)
SetGadgetColor(#List_View_Internet,#PB_Gadget_FrontColor,RGB(32, 233, 221))
SetGadgetColor(#List_View_Internet,#PB_Gadget_BackColor,RGB(75, 96, 98))
CloseGadgetList()
;- ---Rebar 4 - Divers
hCont_4 = ContainerGadget(#Cont_Divers, 0, 0, 200,515)
ListViewGadget(#List_View_Divers,0,0,200,410)
SetGadgetColor(#List_View_Divers,#PB_Gadget_FrontColor,RGB(32, 233, 221))
SetGadgetColor(#List_View_Divers,#PB_Gadget_BackColor,RGB(75, 96, 98))
CloseGadgetList()
CloseGadgetList()
InsertBar("FENETRES" , hCont_1, hwndRB, 200, 0, RGB(173, 191, 193), RGB(255, 255, 255))
InsertBar("GADGETS" , hCont_2, hwndRB, 200, 1, RGB(173, 191, 193), RGB(255, 255, 255))
InsertBar("INTERNET" , hCont_3, hwndRB, 200, 2, RGB(173, 191, 193), RGB(255, 255, 255))
InsertBar("DIVERS" , hCont_4, hwndRB, 200, 3, RGB(173, 191, 193), RGB(255, 255, 255))
TextGadget(#Text_compte_fichiers,2,540,203,20,"Il y a "+ Str(CountGadgetItems(#List_View_fenetres))+" fiches API",#PB_Text_Border)
SetGadgetColor(#Text_compte_fichiers,#PB_Gadget_BackColor,RGB(75, 96, 98))
SetGadgetColor(#Text_compte_fichiers,#PB_Gadget_FrontColor,RGB(208, 219, 220))
;-Chargement des fiches
ReChargerFiches()
SetGadgetText(#String_dossier,RepAPIsave$); adresse du répertoire principal
;-Programme
Repeat
Event = WaitWindowEvent() ; This line waits until an event is received from Windows
WindowID = EventWindow() ; The Window where the event is generated, can be used in the gadget procedures
GadgetID = EventGadget() ; Is it a gadget event?
EventType = EventType() ; The event type
;-Gadgets events
Select Event
Case #PB_Event_Gadget
Select GadgetID
Case #List_View_fenetres
Select EventType
Case #PB_EventType_LeftClick
SelectedListview(#List_View_fenetres,DossierFenetres$)
EndSelect
Case #List_View_Gadgets
Select EventType
Case #PB_EventType_LeftClick
SelectedListview(#List_View_Gadgets,DossierGadgets$)
EndSelect
Case #List_View_Internet
Select EventType
Case #PB_EventType_LeftClick
SelectedListview(#List_View_Internet,DossierInternet$)
EndSelect
Case #List_View_Divers
Select EventType
Case #PB_EventType_LeftClick
SelectedListview(#List_View_Divers,DossierDivers$)
EndSelect
EndSelect
;-Menus events
Case #PB_Event_Menu
Select EventMenu()
Case #TB_New
ClearGadgetItemList(#editeur)
SetGadgetText(#String_APIname, "Nouvelle fiche")
SetGadgetState(#List_View_fenetres, -1)
SetGadgetText(#Text_compte_lignes,"")
ApiName$ = InputRequester("Création de fiche", "Donnez un nom à cette fiche","")
If ApiName$
SetGadgetText(#String_APIname, ApiName$+".rtf")
SetGadgetItemText(#Panel, 0, ApiName$+".rtf",0)
SetActiveGadget(#editeur)
EndIf
Case #TB_Open : ReChargerFiches()
Case #TB_Save
If GetCurrentEditor() = #editeur
Enregistrer_Fiche()
ElseIf GetCurrentEditor() = #editeur1
Enregistrer_Exemple()
EndIf
Case #TB_Cut : GetCurrentEditor()
Vide$ = ""
SendMessage_(GadgetID(Editeur),#EM_GETSEL,@StartSel,@EndSel)
Buffer$ = Space(EndSel-StartSel)
SendMessage_(GadgetID(Editeur),#EM_GETSELTEXT,0,@Buffer$)
ClearClipboard()
SetClipboardText(Buffer$)
SendMessage_(GadgetID(Editeur),#EM_REPLACESEL,#True,@Vide$)
If CountGadgetItems(#editeur1) <> 0
SetGadgetText(#Text_compte_lignes," Cet exemple est composé de "+ Str(CountGadgetItems(#editeur1))+" lignes de codes")
EndIf
Case #TB_Copy : GetCurrentEditor()
SendMessage_(GadgetID(Editeur),#EM_GETSEL,@StartSel,@EndSel)
Buffer$ = Space(EndSel-StartSel)
SendMessage_(GadgetID(Editeur),#EM_GETSELTEXT,0,@Buffer$)
ClearClipboard()
EditorGadgetCOPY(Editeur)
Case #TB_Paste : GetCurrentEditor()
EditorGadgetPASTE(Editeur)
If CountGadgetItems(#editeur1) <> 0
SetGadgetText(#Text_compte_lignes," Cet exemple est composé de "+ Str(CountGadgetItems(#editeur1))+" lignes de codes")
EndIf
Case #TB_Undo : GetCurrentEditor()
SendMessage_(GadgetID(Editeur),#EM_UNDO,0,0)
If CountGadgetItems(#editeur1) <> 0
SetGadgetText(#Text_compte_lignes," Cet exemple est composé de "+ Str(CountGadgetItems(#editeur1))+" lignes de codes")
EndIf
Case #TB_Redo : GetCurrentEditor()
SendMessage_(GadgetID(Editeur),#EM_REDO,0,0)
If CountGadgetItems(#editeur1) <> 0
SetGadgetText(#Text_compte_lignes," Cet exemple est composé de "+ Str(CountGadgetItems(#editeur1))+" lignes de codes")
EndIf
Case #TB_Sel : GetCurrentEditor() : EditorGadgetSelectAll(Editeur)
Case #TB_Print ; impression à faire, j'ai la flemme et pas le temps maintenant... et j'en vois pas l'utilité
Case #TB_Recycle
If GetGadgetText(#String_APIname)=""
MessageRequester("ERREUR","Il n'y a pas de fichier sélectionné",#MB_ICONEXCLAMATION)
Else
Selection$ = GetGadgetText(#String_dossier)+GetGadgetText(#String_APIname)+".rtf"
Suppression(Selection$, 1) ; mode corbeille
EndIf
Case #TB_Delete
If GetGadgetText(#String_APIname)=""
MessageRequester("ERREUR","Il n'y a pas de fichier sélectionné",#MB_ICONEXCLAMATION)
Else
Selection$ = GetGadgetText(#String_dossier)+GetGadgetText(#String_APIname)+".rtf"
Suppression(Selection$, 0) ; mode suppression directe
EndIf
Case #TB_Edit
Beep_(200,200)
btflg = GetToolBarButtonState(#ToolBar, #TB_Edit)
If btflg = 1 ;enfoncé
SetGadgetAttribute(#editeur, #PB_Editor_ReadOnly, 0) ; editable
ElseIf btflg = 0 ;défoncé
SetGadgetAttribute(#editeur, #PB_Editor_ReadOnly, 1) ; non éditable
EndIf
;-Fin
EndSelect
; Case #WM_SIZE
Case #PB_Event_CloseWindow :Quitter = 1
EndSelect
Until Quitter
End
; PLUS BESOIN DE CETTE PROCEDURE LAISSEE POUR INFO/EXEMPLE
; Procedure LoadApiFolder(LGadget.l)
; If DefautRepAPI$ = ""
; DefautRepAPI$ = "c:\"
; EndIf
; NewRepAPI$ = PathRequester("Sélectionner un dossier", DefautRepAPI$)
; If NewRepAPI$
; ClearGadgetItemList(LGadget)
; ClearGadgetItemList(#editeur)
; ClearGadgetItemList(#editeur1)
; SetGadgetState(LGadget, -1)
; SetGadgetText(#String_APIname,"")
; ChargementFiches_API(NewRepAPI$,LGadget)
; DefautRepAPI$ = NewRepAPI$
; EndIf
; EndProcedure
Procedure Enregistrer_Fiche() ; Format RTF
ApiFile$ = GetGadgetText(#String_APIname)
If ApiFile$ = ""
MessageRequester("ERREUR","Il n'y a rien à enregistrer!"+Chr(13)+"Vous devez d'abord créer ou modifier la fiche pour la sauvegarder.",#MB_ICONEXCLAMATION)
Else
; enregistrement dans le dossier par défaut avec nom de fiche en cours
; Il faudra sélectionner le dossier adéquat fenetre, gadget, internet ou divers
fichier.s = SaveFileRequester("Enregistrer une fiche",RepAPIsave$+ApiFile$,"Fichier RTF |*.rtf", 0)
If fichier = ""
Else
If GetExtensionPart(fichier) = ""
fichier = fichier + ".rtf"
EndIf
api.s = GetFilePart(fichier.s)
EnregistreFichier = #True
If FileSize(fichier.s)>0
Reponse = MessageRequester("Cette fiche existe déjà !","Voulez vous remplacer la fiche : " + api +" ?" ,#MB_ICONEXCLAMATION |#PB_MessageRequester_YesNo )
If Reponse <> 6
EnregistreFichier = #False
EndIf
EndIf
EndIf
If EnregistreFichier
Editor_Save(#editeur,fichier.s)
FileName2$=GetFilePart(fichier.s)
FileName2$=Left( FileName2$,Len(FileName2$)-4)
ReChargerFiches()
EndIf
EndIf
EndProcedure
Procedure Enregistrer_Exemple() ; Format texte
ApiFile$ = GetGadgetText(#String_APIname)
If ApiFile$ = ""
MessageRequester("ERREUR","Il n'y a rien à enregistrer!"+Chr(13)+"Vous devez d'abord créer ou modifier l'exemple pour le sauvegarder.",#MB_ICONEXCLAMATION)
Else
; enregistrement dans le dossier par défaut avec nom de fiche en cours
; Il faudra sélectionner le dossier adéquat fenetre, gadget, internet ou divers
Fichier.s = SaveFileRequester("Enregistrer un exemple",RepAPIsave$+ApiFile$,"Fichier Texte |*.txt", 0)
If Fichier = ""
Else
If GetExtensionPart(Fichier) = ""
Fichier = Fichier + ".txt"
EndIf
exemple.s = GetFilePart(Fichier.s)
EnregistreFichier = #True
If FileSize(Fichier.s)>0
Reponse = MessageRequester("Cet exemple existe déjà !","Voulez vous remplacer : " + exemple +" ?" ,#MB_ICONEXCLAMATION |#PB_MessageRequester_YesNo )
If Reponse <> 6
EnregistreFichier = #False
EndIf
EndIf
EndIf
If EnregistreFichier
If CreateFile(0,Fichier.s)
Nombre_de_lignes = CountGadgetItems(#editeur1)
For n = 0 To Nombre_de_lignes -1
TexteEditor.s = GetGadgetItemText(#editeur1,n,0)
WriteStringN(0,TexteEditor)
Next
CloseFile(0)
EndIf
EndIf
EndIf
EndProcedure
Procedure MoveToRecycleBin(Fiche.s)
Protected lpFileOp.SHFILEOPSTRUCT
If FileSize(Fiche) <> - 1
*Mem = AllocateMemory(Len(Fiche) + 2)
If *Mem
lpFileOp\hwnd = 0
lpFileOp\pTo = 0
lpFileOp\wFunc = #FO_DELETE
lpFileOp\pFrom = *Mem
lpFileOp\fFlags = #FOF_ALLOWUNDO | #FOF_NOCONFIRMATION
CopyMemoryString(Fiche, @*Mem)
CopyMemoryString(Chr(0))
CopyMemoryString(Chr(0))
retour=SHFileOperation_(@lpFileOp)
If retour=0 : retour=1 : Else : retour =0 : EndIf
ProcedureReturn retour
FreeMemory(*Mem)
EndIf
EndIf
EndProcedure
Procedure Suppression(FichierSelect$, mode.l) ; une seule procedure pour 2 modes de suppression
If mode = 0
mode$ = "SI VOUS CLIQUEZ SUR OUI LE FICHIER SERA DEFINITIVEMENT SUPPRIME !"
ElseIf mode = 1
mode$ = "SI VOUS CLIQUEZ SUR OUI LE FICHIER SERA ENVOYE A LA CORBEILLE !"
EndIf
Resultat = MessageRequester("AVERTISSEMENT","VOUS ETES SUR LE POINT DE SUPPRIMER UNE FICHE!"+Chr(13)+""+Chr(13)+"VOULEZ VOUS CONTINUER ?"+Chr(13)+""+Chr(13)+"SI VOUS N'ÊTES PAS SÛR CLIQUEZ SUR NON"+Chr(13)+""+Chr(13)+mode$,#MB_ICONEXCLAMATION | #PB_MessageRequester_YesNo)
If Resultat = 6 ;on a cliqué sur oui
If mode = 0
If DeleteFile(FichierSelect$)<>0
SetGadgetItemText(#Panel, 0, "Définition",0)
ReChargerFiches()
Else
MessageRequester("ERREUR","Le fichier n'a pu être effacé!",#MB_ICONERROR)
EndIf
ElseIf mode = 1
If MoveToRecycleBin(FichierSelect$)
SetGadgetItemText(#Panel, 0, "Définition",0)
ReChargerFiches()
Else
MessageRequester("ERREUR","Le fichier n'a pu être effacé!",#MB_ICONERROR)
EndIf
EndIf
ElseIf Resultat = 7 ;on a cliqué sur non,
;donc rien.
EndIf
EndProcedure
Procedure Editor_Save(EGid.l,file.s)
Protected StreamData.EDITSTREAM
Protected FileID.l
If file <> ""
FileID = CreateFile(#PB_Any, file)
If FileID
StreamData\dwCookie = FileID(FileID)
StreamData\dwError = #Null
StreamData\pfnCallback = @StreamFileOut_Callback()
If UCase(GetExtensionPart(file)) = "RTF"
SendMessage_(GadgetID(EGid), #EM_STREAMOUT, #SF_RTF, @StreamData)
Else
SendMessage_(GadgetID(EGid), #EM_STREAMOUT, #SF_TEXT, @StreamData)
EndIf
CloseFile(FileID)
EndIf
Else
ProcedureReturn 0
EndIf
EndProcedure
Procedure Editor_Load(EGid.l, file.s)
Protected StreamData.EDITSTREAM
Protected FileID.l
FileID = ReadFile(#PB_Any, file)
If FileID
StreamData\dwCookie = FileID(FileID)
StreamData\dwError = #Null
StreamData\pfnCallback = @StreamFileIn_Callback()
If UCase(GetExtensionPart(file)) = "RTF"
SendMessage_(GadgetID(EGid), #EM_STREAMIN, #SF_RTF, @StreamData)
Else
SendMessage_(GadgetID(EGid), #EM_STREAMIN, #SF_TEXT, @StreamData)
EndIf
CloseFile(FileID)
EndIf
EndProcedure
Procedure StreamFileIn_Callback(hFile, pbBuff, cb, pcb)
ProcedureReturn ReadFile_(hFile, pbBuff, cb, pcb, 0)!1
EndProcedure
Procedure StreamFileOut_Callback(hFile, pbBuff, cb, pcb)
ProcedureReturn WriteFile_(hFile, pbBuff, cb, pcb, 0)!1
EndProcedure
Procedure EditorGadgetSelectAll(Gadget_ID)
; Select the whole Text of the EditorGadget
RangeAll.CHARRANGE\cpMin = 0
RangeAll\cpMax = -1
ProcedureReturn SendMessage_(GadgetID(Gadget_ID),#EM_EXSETSEL,0,@RangeAll) ; Select All
EndProcedure
Procedure EditorGadgetCOPY(Gadget_ID)
ProcedureReturn SendMessage_(GadgetID(Gadget_ID), #WM_COPY, 0, 0)
EndProcedure
Procedure EditorGadgetPASTE(Gadget_ID)
ProcedureReturn SendMessage_(GadgetID(Gadget_ID), #EM_PASTESPECIAL, 0, 0)
EndProcedure
Procedure GetCurrentEditor()
;permet l'usage de la toolbar sur l'éditeur en cours en fonction de l'onglet affiché
Resultat = GetGadgetState(#Panel)
If Resultat = 0
Editeur.l = #editeur
ElseIf Resultat = 1
Editeur.l = #editeur1
EndIf
ProcedureReturn Editeur
EndProcedure
Procedure SelectedListview(ListGadget.l,RepAPI$)
SetGadgetItemText(#Panel, 1, "Exemple",0)
ClearGadgetItemList(#editeur)
ClearGadgetItemList(#editeur1)
PosElement = GetGadgetState(ListGadget)
NomFichier$ = GetGadgetText(ListGadget)
FicheVue$ = RepAPI$ + NomFichier$+".rtf"
If PosElement >= 0
Editor_Load(#editeur, FicheVue$)
SetGadgetText(#String_APIname, NomFichier$)
SetGadgetText(#String_dossier,RepAPI$)
SetGadgetItemText(#Panel, 0, "API : " +NomFichier$,0);ajouter pour avoir le nom dans l'onglet
;chargement de l'exemple correspondant s'il existe
Exemple$ = RepAPI$ + NomFichier$+".txt"
If FileSize(Exemple$)<>-1
If OpenFile(#exemple, Exemple$)
While Eof(#exemple) = 0 ; Boucle tant que la fin du fichier n'est pas atteinte. (Eof = 'End Of File')
Texte$=Texte$+ ReadString(#exemple) ; lit ligne par ligne le contenu du fichier
Wend
CloseFile(#exemple)
SetGadgetText( #editeur1 , Texte$) ;affichage dans l'onglet exemple
Texte$= "" ; variable remise à zéro
SetGadgetItemText(#Panel, 1, "Exemple d'utilisation de :"+NomFichier$,0) ; averti de l'existence d'un exemple
EndIf
EndIf
LCount = CountGadgetItems(#editeur1)
If LCount <= 0
nblcode$ = "Aucun exemple disponible avec cette fiche"
ElseIf LCount = 1
nblcode$ = " Cet exemple est composé de 1 ligne de code"
ElseIf LCount > 1
nblcode$ = " Cet exemple est composé de "+ Str(LCount)+" lignes de code"
EndIf
SetGadgetText(#Text_compte_lignes,nblcode$)
Else
MessageRequester("ERREUR","Impossible d'ouvrir ce fichier, il est peut être défectueux.",16)
EndIf
EndProcedure
Procedure ChargementFiches_API(DossierAPI$, LGadget.l)
ClearGadgetItemList(LGadget)
If ExamineDirectory(0, DossierAPI$, "*.*") ; on examine tout le dossier
Chemin$ = GetPathPart(DossierAPI$)
Repeat
FileType = NextDirectoryEntry(0)
If FileType
FileName$ = DirectoryEntryName(0)
If FileName$ <> "." And FileName$ <> ".."
Ext$ = GetExtensionPart(FileName$)
If Ext$ = "rtf"
FileName2$=Left(FileName$,Len(FileName$)-4)
AddGadgetItem(LGadget, -1, FileName2$) ; on ajoute chaque fiche trouvée au listviewgadget()
NbFiles = NbFiles + 1 ; à chaque fiche trouvée on incrémente de 1 pour compter le tout
EndIf
EndIf
EndIf
Until FileType = 0
SetGadgetState(LGadget, -1)
Else
MessageRequester("Erreur","Impossible d'examiner le répertoire: "+Chr(10)+ DossierAPI$,64)
EndIf
EndProcedure
Procedure ReChargerFiches()
ClearGadgetItemList(#editeur):ClearGadgetItemList(#editeur1)
SetGadgetText(#String_APIname,"")
SetGadgetText(#Text_compte_lignes,"")
SetGadgetItemText(#Panel, 0, "Définition",0)
SetGadgetItemText(#Panel, 1, "Exemple",0)
NbFiles = 0
ChargementFiches_API(DossierFenetres$ ,#List_View_fenetres)
ChargementFiches_API(DossierGadgets$ ,#List_View_Gadgets )
ChargementFiches_API(DossierInternet$ ,#List_View_Internet)
ChargementFiches_API(DossierDivers$ ,#List_View_Divers)
If NbFiles <= 1
NBfiches$ = "Il y a "+ Str(NbFiles)+" fiche API enregistrée"
Else
NBfiches$ = "Il y a "+ Str(NbFiles)+" fiches API enregistrées"
EndIf
SetGadgetText(#Text_compte_fichiers,NBfiches$)
EndProcedure
Code : Tout sélectionner
SetWindowTheme_(hwndRB, " ", " ")
Ouahhh!, merci jacobus enfin quelque chose que KCC, il a compris la questionTrouver un nom sympa à ce programme, pour l'instant y a rien de définitif, ce serait donc bien de le personnaliser avec un nom bien de chez nous