J'ai trouvé le code source d'un programme pour prendre des notes rapides. Je ne sais pas qui l'a programmé mais le source n'était pas complet. Je l'ai complété avec un bout de code de Freak, revu et amélioré. Je place ici le source complet. J'ai pas vu de bogue dans cette version. Je travaille à ajouter une fonction Chercher/Remplacer/Enlever/Inserer
Il est possible de traduire le programme dans toute les langues possibles.
Il suffit simplement de modifier le fichier Language.pref.
Code : Tout sélectionner
; <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
; Programme de petites notes
; Version 1.1003
; Programmation = OK
; Programmé par : Guimauve
; Date : 28 Février 2004
; Codé avec PureBasic V3.81
; >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
; >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
; >>>>>>>>>>>>> TRÈS IMPORTANT >>>>>>>>>>>>>>
; >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
; SI VOUS TESTER LE CODE VOUS DEVEZ COMPILER
; L'ÉXÉCUTABLE LE SAUVEGARDER DANS LE MÊME
; RÉPERTOIRE QUE LE SOURCE OU VOUS ASSURER
; LES FICHIER "Petites Notes.pref" ET "Language.pref" SE
; TROUVENT DANS LE RÉPERTOIRE DU SOURCE.
; CECI EST DÛ LA COMMANDE DE REDÉMMARAGE DU
; PROGRAMME.
; <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
; <<<<<<<<<<< TRÈS IMPORTANT <<<<<<<<<<<<<<<<
; <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
; German forum: http://robsite.de/php/pureboard/viewtopic.php?t=1442&highlight=
; Author: Freak
; Date: 22. June 2003
; Update from 12. July 2003 (http://purebasic.myforums.net/viewtopic.php?t=6666&highlight=)
; added background color procedure, needs RichEdit2.0+ (RICHED20.DLL or RICHED32.DLL, RICHED.DLL is RichEdit 1.0)
; * English description:
; Let's you modify the attributes of the selected Text in a EditorGadget()
; I included the Editor_Select() function, so you can modify whatever you
; want, by first selecting it.
; * Deutsche Beschreibung:
; Mit den Funktionen kann man die Attribute des selektierten Texted
; ändern, desshalb hab ich noch die Editor_Select() funktion gemacht, um
; einen bestimmten bereich zu selektieren.
; Selects Text inside an EditorGadget
; Line numbers range from 0 to CountGadgetItems(#Gadget)-1
; Char numbers range from 1 to the length of a line
; Set Line numbers to -1 to indicate the last line, and Char
; numbers to -1 to indicate the end of a line
; selecting from 0,1 to -1, -1 selects all.
Structure CHARFORMAT2_
cbSize.l
dwMask.l
dwEffects.l
yHeight.l
yOffset.l
crTextColor.l
bCharSet.b
bPitchAndFamily.b
szFaceName.b[#LF_FACESIZE]
_wPad2.w
wWeight.w
sSpacing.w
crBackColor.l
lcid.l
dwReserved.l
sStyle.w
wKerning.w
bUnderlineType.b
bAnimation.b
bRevAuthor.b
bReserved1.b
EndStructure
Procedure Editor_BackColor(Gadget, Color.l)
format.CHARFORMAT2_
format\cbSize = SizeOf(CHARFORMAT2_)
format\dwMask = $4000000 ; = #CFM_BACKCOLOR
format\crBackColor = Color
SendMessage_(GadgetID(Gadget), #EM_SETCHARFORMAT, #SCF_SELECTION, @format)
EndProcedure
Procedure Editor_Select(Gadget, LineStart.l, CharStart.l, LineEnd.l, CharEnd.l)
sel.CHARRANGE
sel\cpMin = SendMessage_(GadgetID(Gadget), #EM_LINEINDEX, LineStart, 0) + CharStart - 1
If LineEnd = -1
LineEnd = SendMessage_(GadgetID(Gadget), #EM_GETLINECOUNT, 0, 0) - 1
EndIf
sel\cpMax = SendMessage_(GadgetID(Gadget), #EM_LINEINDEX, LineEnd, 0)
If CharEnd = -1
sel\cpMax + SendMessage_(GadgetID(Gadget), #EM_LINELENGTH, sel\cpMax, 0)
Else
sel\cpMax + CharEnd - 1
EndIf
SendMessage_(GadgetID(Gadget), #EM_EXSETSEL, 0, @sel)
EndProcedure
; Set the Text color for the Selection
; in RGB format
Procedure Editor_Color(Gadget, Color.l)
format.CHARFORMAT
format\cbSize = SizeOf(CHARFORMAT)
format\dwMask = #CFM_COLOR
format\crTextColor = Color
SendMessage_(GadgetID(Gadget), #EM_SETCHARFORMAT, #SCF_SELECTION, @format)
EndProcedure
; Set Font Size for the Selection
; in pt
Procedure Editor_FontSize(Gadget, Fontsize.l)
format.CHARFORMAT
format\cbSize = SizeOf(CHARFORMAT)
format\dwMask = #CFM_SIZE
format\yHeight = FontSize * 20
SendMessage_(GadgetID(Gadget), #EM_SETCHARFORMAT, #SCF_SELECTION, @format)
EndProcedure
; Set Font for the Selection
; You must specify a font name, the font doesn't need
; to be loaded
Procedure Editor_Font(Gadget, FontName.s)
format.CHARFORMAT
format\cbSize = SizeOf(CHARFORMAT)
format\dwMask = #CFM_FACE
PokeS(@format\szFaceName, FontName)
SendMessage_(GadgetID(Gadget), #EM_SETCHARFORMAT, #SCF_SELECTION, @format)
EndProcedure
; Set Format of the Selection. This can be a combination of
; the following values:
; #CFM_BOLD
; #CFM_ITALIC
; #CFM_UNDERLINE
; #CFM_STRIKEOUT
Procedure Editor_Format(Gadget, Flags.l)
format.CHARFORMAT
format\cbSize = SizeOf(CHARFORMAT)
format\dwMask = #CFM_ITALIC | #CFM_BOLD | #CFM_STRIKEOUT | #CFM_UNDERLINE
format\dwEffects = Flags
SendMessage_(GadgetID(Gadget), #EM_SETCHARFORMAT, #SCF_SELECTION, @format)
EndProcedure
; Énumeration des Constantes
Enumeration
; Constante pour le programme
#Fenetre
#Popupmenu
#Editeur
; Constante du popupmenu
#Couper
#Copier
#Coller
#Selection
#Nouveau
#Ouvrir
#Sauver
#Sauversous
#Caractere
#Position0
#Position1
#Position2
#Visibilite
#Quitter
; Constante pour le fichier txt
#Petites_notes_txt
EndEnumeration
Global repertoire$
Global fontname$, fontsize.l, red.l, green.l, blue.l
Global OptionAffichage$
Global Programmenom$
Global Menutxt01$
Global Menutxt02$
Global Menutxt03$
Global Menutxt04$
Global Menutxt05$
Global Menutxt06$
Global Menutxt07$
Global Menutxt08$
Global Menutxt09$
Global Menutxt10$
Global Menutxt11$
Global Menutxt12$
Global Menutxt13$
Global Menutxt14$
Global Menutxt15$
Global Menutxt16$
Global Savefiletxt01$
Global Savefiletxt02$
Global Savefiletxt03$
Global Warningtxt01$
Global Warningtxt02$
Global Warningtxt03$
Global Warningtxt04$
Global Errortxt01$
Global position_fenetre.l
Global textebuffer$
; Gestion des préférences de l'utilisateur
; Choix des caratères et la grosseur du texte
Procedure CreateFontPref(mode.b)
If mode = 0 ; Créer le fichier par défault
If CreatePreferences("Petites Notes.pref")
WritePreferenceString("FontName", "Courier New" )
WritePreferenceLong("FontSize", 8)
WritePreferenceLong("Red", 0)
WritePreferenceLong("Green", 0)
WritePreferenceLong("Blue", 0)
PreferenceComment(" Position on screen : 0 = Centred ; 1 = Lower Right ; 2 = Upper Right")
WritePreferenceLong("Position on screen", 2)
WritePreferenceString("Always on top", "Yes")
ClosePreferences()
EndIf
Else ; Remplacer le fichier avec les nouvelles valeurs
If CreatePreferences("Petites Notes.pref")
WritePreferenceString("FontName", fontname$)
WritePreferenceLong("FontSize", fontsize)
WritePreferenceLong("Red", red)
WritePreferenceLong("Green", green)
WritePreferenceLong("Blue", blue)
PreferenceComment(" Position on screen : 0 = Centred ; 1 = Lower Right ; 2 = Upper Right")
WritePreferenceLong("Position on screen", position_fenetre)
WritePreferenceString("Always on top", OptionAffichage$)
ClosePreferences()
EndIf
EndIf
EndProcedure
Procedure SetEditorUserPref()
Editor_Select(#Editeur, 0, 1, -1, -1)
Editor_Font(#Editeur, fontname$)
Editor_FontSize(#Editeur, fontsize)
Editor_Color(#Editeur, RGB(red, green, blue))
Editor_Format(#Editeur, 0)
Editor_Select(#Editeur, 0, 0, 0, 0)
EndProcedure
; Procedure de redimensionnement de la fenètre
Procedure WindowResize(WindowID, Message, wParam, lParam)
Result = #PB_ProcessPureBasicEvents
If Message = #WM_SIZE
ResizeGadget(#Editeur, 2, 2, WindowWidth() - 4, WindowHeight() - 4)
ReturnValue = 1
EndIf
ProcedureReturn Result
EndProcedure
Procedure Ouvrir()
repertoire$ = OpenFileRequester(Menutxt06$, "C:\", Savefiletxt02$ + "(*.txt)|*.txt|" + Savefiletxt03$ + "(*.*)| *.*", 0)
If OpenFile(#Petites_notes_txt, repertoire$)
; On vide l'éditeur si un fichier est ouvert
ClearGadgetItemList(#Editeur)
; Puis ajoute dans l'éditeur le contenu du fichier txt
Repeat
AddGadgetItem(#Editeur, -1, ReadString())
Until Eof(#Petites_notes_txt)
CloseFile(#Petites_notes_txt)
; On prend tout le texte et on lui applique les préférences de l'utilisateur
; Choix de la police de caractère, la grosseur et la couleur du texte.
SetEditorUserPref()
EndIf
EndProcedure
Procedure.l savingtxt()
If OpenFile(#Petites_notes_txt, repertoire$) = 0
MessageRequester(Programmenom$, Errortxt01$, #MB_ICONWARNING)
Else
For n = 0 To CountGadgetItems(#Editeur) - 1 ; On lit chaque ligne de l'EditorGadget, puis on l'enregistre dans le fichier
WriteStringN(GetGadgetItemText(#Editeur, n, 0)) ; permet d'écrire dans le fichier en cours puis ajoute un saut de ligne
Next
CloseFile(#Petites_notes_txt) ; on ferme le fichier
EndIf
EndProcedure
Procedure.l save_notes_txt()
; On demande à l'utilisateur le répertoire et le nom du fichier à sauvegarder
repertoire$ = SaveFileRequester(Savefiletxt01$, "C:\", Savefiletxt02$ + " (*.txt)|*.txt|" + Savefiletxt03$ + " (*.*)| *.*", 0)
; L'adresse repertoire est non nulle, donc on sauvegarde le fichier
If repertoire$ <> ""
; On prend les informations pour la sauvegarde
; N.B. Ces informations sont utiles seulement dans le cas où
; l'adresse repertoire n'est pas complète.
nomfichier$ = GetFilePart(repertoire$)
repertoiresauve$ = GetPathPart(repertoire$)
If GetExtensionPart(repertoire$) = ""
; Si l'extension est Null on reconstruit le chemin complet
repertoire$ = repertoiresauve$ + nomfichier$ + ".txt"
EndIf
If Right(repertoire$, 5) = "..txt"
; Si l'extension possède 2 points on reconstruit le chemin complet
repertoire$ = repertoiresauve$ + nomfichier$ + "txt"
EndIf
; On vérifie si le fichier existe déja dans le répertoire spécifié
If FileSize(repertoire$) > - 1
If MessageRequester(Programmenom$, Warningtxt01$, #MB_YESNO | #MB_ICONWARNING) = #IDYES
DeleteFile(repertoire$)
EndIf
EndIf
savingtxt()
EndIf
EndProcedure
Procedure SauverAvantSortir()
; Le répertoire de travail est connu et le texte à été modifié depuis la dernière sauvegarde
If repertoire$ <> "" And GetGadgetText(#Editeur) <> textebuffer$
If MessageRequester(Programmenom$, Warningtxt03$ + Chr(10) + Chr(10) + Warningtxt04$, #MB_YESNO | #MB_ICONWARNING) = #IDYES
savingtxt()
EndIf
; Le répertoire de travail est null et il y a du texte dans l'éditeur
ElseIf repertoire$ = "" And GetGadgetText(#Editeur) <> ""
If MessageRequester(Programmenom$, Warningtxt02$ + Chr(10) + Chr(10) + Warningtxt04$, #MB_YESNO | #MB_ICONWARNING) = #IDYES
save_notes_txt()
EndIf
EndIf
EndProcedure
If OpenPreferences("Petites Notes.pref") = 0
; Le fichier n'existe pas, on créer celui par défaut
CreateFontPref(0)
; Le fichier Petites Notes.pref est créé. On relance le programme.
RunProgram("Petites notes.exe")
; Puis on ferme le programme qui à généré le fichier Petites Notes.pref
; afin de ne pas avoir 2 programmes qui tournent en même temps.
End
Else
fontname$ = ReadPreferenceString("FontName", "Courier New")
fontsize = ReadPreferenceLong("FontSize", 8)
red = ReadPreferenceLong("Red", 0)
green = ReadPreferenceLong("Green", 0)
blue = ReadPreferenceLong("Blue", 0)
position_fenetre = ReadPreferenceLong("Position on screen", 2)
OptionAffichage$ = ReadPreferenceString("Always on top", "Yes")
ClosePreferences()
EndIf
; Chargement des textes pour le programme
; Si le fichier Langage.pref n'est pas trouvé dans le répertoire
; du programme, le programme génère le fichier Langage.pref en
; Français et se relance de lui-même
If OpenPreferences("Language.pref") = 0
CreatePreferences("Language.pref")
WritePreferenceString("Program name", "Petites Notes")
WritePreferenceString("Menu txt 01", "Couper")
WritePreferenceString("Menu txt 02", "Copier")
WritePreferenceString("Menu txt 03", "Coller")
WritePreferenceString("Menu txt 04", "Selectioner tout")
WritePreferenceString("Menu txt 05", "Nouveau")
WritePreferenceString("Menu txt 06", "Ouvrir")
WritePreferenceString("Menu txt 07", "Enregistrer")
WritePreferenceString("Menu txt 08", "Enregistrer sous")
WritePreferenceString("Menu txt 09", "Choix de la Police")
WritePreferenceString("Menu txt 10", "Position dans l'écran")
WritePreferenceString("Menu txt 11", "Au centre")
WritePreferenceString("Menu txt 12", "En bas à droite")
WritePreferenceString("Menu txt 13", "En haut à droite")
WritePreferenceString("Menu txt 14", "Toujours visible")
WritePreferenceString("Menu txt 15", "Quitter")
WritePreferenceString("Save File txt 01", "Enregistrer sous")
WritePreferenceString("Save File txt 02", "Fichier texte")
WritePreferenceString("Save File txt 03", "Tout les fichiers")
WritePreferenceString("Warning txt 01", "Ce fichier existe déja. Voulez-vous remplacer le fichier ?")
WritePreferenceString("Warning txt 02", "Le contenu des petites notes n'a pas été sauvegardé.")
WritePreferenceString("Warning txt 03", "Le contenu des petites notes a été modifié.")
WritePreferenceString("Warning txt 04", "Voulez-vous sauvegarder maintenant ?")
WritePreferenceString("Error txt 01", "Erreur ! Impossible d'ouvrir le fichier.")
ClosePreferences()
; Le fichier Language.pref en français est créé. On relance le programme.
RunProgram("Petites notes.exe")
; Puis on ferme le programme qui à généré le fichier Language.pref en français
; afin de ne pas avoir 2 programmes qui tournent en même temps.
End
Else
Programmenom$ = ReadPreferenceString("Program name", "Petites Notes")
Menutxt01$ = ReadPreferenceString("Menu txt 01", "Couper")
Menutxt02$ = ReadPreferenceString("Menu txt 02", "Copier")
Menutxt03$ = ReadPreferenceString("Menu txt 03", "Coller")
Menutxt04$ = ReadPreferenceString("Menu txt 04", "Selectioner tout")
Menutxt05$ = ReadPreferenceString("Menu txt 05", "Nouveau")
Menutxt06$ = ReadPreferenceString("Menu txt 06", "Ouvrir")
Menutxt07$ = ReadPreferenceString("Menu txt 07", "Enregistrer")
Menutxt08$ = ReadPreferenceString("Menu txt 08", "Enregistrer sous")
Menutxt09$ = ReadPreferenceString("Menu txt 09", "Choix de la Police")
Menutxt10$ = ReadPreferenceString("Menu txt 10", "Position dans l'écran")
Menutxt11$ = ReadPreferenceString("Menu txt 11", "Au centre")
Menutxt12$ = ReadPreferenceString("Menu txt 12", "En bas à droite")
Menutxt13$ = ReadPreferenceString("Menu txt 13", "En haut à droite")
Menutxt14$ = ReadPreferenceString("Menu txt 14", "Toujours visible")
Menutxt15$ = ReadPreferenceString("Menu txt 15", "Quitter")
Savefiletxt01$ = ReadPreferenceString("Save File txt 01", "Enregistrer sous")
Savefiletxt02$ = ReadPreferenceString("Save File txt 02", "Fichier texte")
Savefiletxt03$ = ReadPreferenceString("Save File txt 03", "Tout les fichiers")
Warningtxt01$ = ReadPreferenceString("Warning txt 01", "Ce fichier existe déja. Voulez-vous remplacer le fichier ?")
Warningtxt02$ = ReadPreferenceString("Warning txt 02", "Les petites notes n'ont pas été sauvegardé.")
Warningtxt03$ = ReadPreferenceString("Warning txt 03", "Les petites notes ont été modifié.")
Warningtxt04$ = ReadPreferenceString("Warning txt 04", "Voulez-vous sauvegarder maintenant ?")
Errortxt01$ = ReadPreferenceString("Error txt 01", "Erreur ! Impossible d'ouvrir le fichier.")
ClosePreferences()
EndIf
; Variable pour la dimension et la position de la fenètre
; LargeurFenetre = 300
; HauteurFenetre = 225
; Création de la fenètre
#Windows_style = #PB_Window_SystemMenu | #PB_Window_MaximizeGadget | #PB_Window_MinimizeGadget | #PB_Window_SizeGadget
If OpenWindow(#Fenetre, GetSystemMetrics_(#SM_CXSCREEN) - 300 - (GetSystemMetrics_(#SM_CXEDGE) * 15), 20, 300, 225, #Windows_style, Programmenom$)
; On créé le PopupMenu
CreatePopupMenu(#Popupmenu)
MenuItem(#Couper, Menutxt01$ + Chr(9) + "Ctrl+X")
MenuItem(#Copier, Menutxt02$ + Chr(9) + "Ctrl+C")
MenuItem(#Coller, Menutxt03$ + Chr(9) + "Ctrl+V")
MenuItem(#Selection, Menutxt04$ + Chr(9) + "Ctrl+A")
MenuBar()
MenuItem(#Nouveau, Menutxt05$ + Chr(9) + "Ctrl+N")
MenuItem(#Ouvrir, Menutxt06$ + Chr(9) + "Ctrl+O")
MenuItem(#Sauver, Menutxt07$ + Chr(9) + "Ctrl+S")
MenuItem(#Sauversous, Menutxt08$)
MenuBar()
MenuItem(#Caractere, Menutxt09$)
MenuBar()
OpenSubMenu(Menutxt10$)
MenuItem(#Position0, Menutxt11$)
MenuItem(#Position1, Menutxt12$)
MenuItem(#Position2, Menutxt13$)
CloseSubMenu()
MenuBar()
MenuItem(#Visibilite, Menutxt14$)
MenuBar()
MenuItem(#Quitter, Menutxt15$)
AddKeyboardShortcut(#Fenetre, #PB_Shortcut_Control | #PB_Shortcut_X, #Couper)
AddKeyboardShortcut(#Fenetre, #PB_Shortcut_Control | #PB_Shortcut_C, #Copier)
AddKeyboardShortcut(#Fenetre, #PB_Shortcut_Control | #PB_Shortcut_V, #Coller)
AddKeyboardShortcut(#Fenetre, #PB_Shortcut_Control | #PB_Shortcut_A, #Selection)
AddKeyboardShortcut(#Fenetre, #PB_Shortcut_Control | #PB_Shortcut_N, #Nouveau)
AddKeyboardShortcut(#Fenetre, #PB_Shortcut_Control | #PB_Shortcut_O, #Ouvrir)
AddKeyboardShortcut(#Fenetre, #PB_Shortcut_Control | #PB_Shortcut_S, #Sauver)
If CreateGadgetList(WindowID())
EditorGadget(#Editeur, 2, 2, 300 - 4, 225 - 4)
EndIf
SetWindowCallback(@WindowResize())
EndIf
SetEditorUserPref()
If OptionAffichage$ = "Yes"
SetMenuItemState(#Popupmenu, #Visibilite, 1)
SetWindowPos_(WindowID(), #HWND_TOPMOST, 0, 0, 0, 0, #SWP_NOMOVE | #SWP_NOSIZE)
Else
SetMenuItemState(#Popupmenu, #Visibilite, 0)
SetWindowPos_(WindowID(), #HWND_NOTOPMOST, 0, 0, 0, 0, #SWP_NOMOVE | #SWP_NOSIZE)
EndIf
; Au centre
If position_fenetre = 0
SetMenuItemState(#Popupmenu, #Position0, 1)
SetMenuItemState(#Popupmenu, #Position1, 0)
SetMenuItemState(#Popupmenu, #Position2, 0)
MoveWindow((GetSystemMetrics_(#SM_CXSCREEN) / 2) - (WindowWidth() / 2), (GetSystemMetrics_(#SM_CYSCREEN) / 2) - (WindowHeight() / 2))
; En bas à Droite
ElseIf position_fenetre = 1
SetMenuItemState(#Popupmenu, #Position0, 0)
SetMenuItemState(#Popupmenu, #Position1, 1)
SetMenuItemState(#Popupmenu, #Position2, 0)
MoveWindow(GetSystemMetrics_(#SM_CXSCREEN) - WindowWidth() - (GetSystemMetrics_(#SM_CXEDGE) * 15), GetSystemMetrics_(#SM_CYSCREEN) - WindowHeight() - (GetSystemMetrics_(#SM_CYMIN) * 2))
Else ; En haut à Droite
SetMenuItemState(#Popupmenu, #Position0, 0)
SetMenuItemState(#Popupmenu, #Position1, 0)
SetMenuItemState(#Popupmenu, #Position2, 1)
MoveWindow(GetSystemMetrics_(#SM_CXSCREEN) - WindowWidth() - (GetSystemMetrics_(#SM_CXEDGE) * 15), 20)
EndIf
Repeat
EventID = WaitWindowEvent()
Select EventID
Case #PB_EventMenu
Select EventMenuID()
Case #Couper
SendMessage_(getfocus_(), #WM_CUT, 0, 0)
Case #Copier
SendMessage_(getfocus_(), #WM_COPY, 0, 0)
Case #Coller
SendMessage_(getfocus_(), #WM_PASTE, 0, 0)
; Après avoir coller un texte, on applique les options d'affichage à tout le texte
SetEditorUserPref()
Case #Selection
Editor_Select(#Editeur, 0, 1, -1, -1)
Case #Nouveau
ClearGadgetItemList(#Editeur)
; Après avoir vidé l'éditorgadget on doit remettre les options d'affichage
SetEditorUserPref()
; On s'assure que textebuffer et le répertoire de travail sont vide pour ne pas avoir
; de bogue s'il y a eu une sauvegarde depuis que le programme est lancé.
textebuffer$ = ""
repertoire$ = ""
Case #Ouvrir
Ouvrir()
textebuffer$ = GetGadgetText(#Editeur)
Case #Sauver
If repertoire$ <> ""
savingtxt()
textebuffer$ = GetGadgetText(#Editeur)
Else
save_notes_txt()
textebuffer$ = GetGadgetText(#Editeur)
EndIf
Case #Sauversous
save_notes_txt()
textebuffer$ = GetGadgetText(#Editeur)
Case #Caractere
If FontRequester(fontname$, fontsize, #PB_FontRequester_Effects) = 1
fontname$ = SelectedFontName()
fontsize = SelectedFontSize()
red = Red(SelectedFontColor())
green = Green(SelectedFontColor())
blue = Blue(SelectedFontColor())
SetEditorUserPref()
CreateFontPref(1)
EndIf
Case #Position0 ; Position au centre de la fenètre
MoveWindow((GetSystemMetrics_(#SM_CXSCREEN) / 2) - (WindowWidth() / 2), (GetSystemMetrics_(#SM_CYSCREEN) / 2) - (WindowHeight() / 2))
SetMenuItemState(#Popupmenu, #Position0, 1)
SetMenuItemState(#Popupmenu, #Position1, 0)
SetMenuItemState(#Popupmenu, #Position2, 0)
position_fenetre = 0
CreateFontPref(1)
Case #Position1 ; Position en bas à droite de la fenètre
MoveWindow(GetSystemMetrics_(#SM_CXSCREEN) - WindowWidth() - (GetSystemMetrics_(#SM_CXEDGE) * 15), GetSystemMetrics_(#SM_CYSCREEN) - WindowHeight() - (GetSystemMetrics_(#SM_CYMIN) * 2))
SetMenuItemState(#Popupmenu, #Position0, 0)
SetMenuItemState(#Popupmenu, #Position1, 1)
SetMenuItemState(#Popupmenu, #Position2, 0)
position_fenetre = 1
CreateFontPref(1)
Case #Position2 ; Position en haut à droite de la fenètre
MoveWindow(GetSystemMetrics_(#SM_CXSCREEN) - WindowWidth() - (GetSystemMetrics_(#SM_CXEDGE) * 15), 20)
SetMenuItemState(#Popupmenu, #Position0, 0)
SetMenuItemState(#Popupmenu, #Position1, 0)
SetMenuItemState(#Popupmenu, #Position2, 1)
position_fenetre = 2
CreateFontPref(1)
Case #Visibilite
If GetMenuItemState(#Popupmenu, #Visibilite) ; L'option de la fenètre toujours visible n'est pas activé
SetWindowPos_(WindowID(), #HWND_NOTOPMOST, 0, 0, 0, 0, #SWP_NOMOVE | #SWP_NOSIZE)
SetMenuItemState(#Popupmenu, #Visibilite, 0)
OptionAffichage$ = "No"
CreateFontPref(1)
Else ; L'option est activé
SetWindowPos_(WindowID(), #HWND_TOPMOST, 0, 0, 0, 0, #SWP_NOMOVE | #SWP_NOSIZE)
SetMenuItemState(#Popupmenu, #Visibilite, 1)
OptionAffichage$ = "Yes"
CreateFontPref(1)
EndIf
Case #Quitter
EventID = #PB_EventCloseWindow
EndSelect
Case #WM_RButtonDown
; On affiche le PopupMenu
DisplayPopupMenu(#Popupmenu, WindowID())
EndSelect
Until EventID = #PB_EventCloseWindow
SauverAvantSortir()
End