Hi @ all,
Tjoar, nach längerer Auszeit melde ich mich auch mal wieder... Ich habe in AutoIt einen kleinen Notizverwalter erstellt, was in Etwa den Umfang von "Tomboy Notizen" (falls das jemand kennt; ist ein Programm aus der Unixwelt^^) entspricht. Mit dem Ding lassen sich Notizen verwalten^^.
Hier zwei Screenshots:
[Blockierte Grafik: http://img130.imageshack.us/img130/3610/notessc1sz0.png]
Die ganzen Notizen werden in einer INI-Datei gespeichert und können jederzeit über die Trayicons angesehen werden. Neben dem Titel, die im Traymenü angezeigt werden, lassen sich durch Klick darauf weiterführende Infos abrufen (sofern man welche erstellt hat)
[Blockierte Grafik: http://img130.imageshack.us/img130/6995/notessc2nj2.png]
Tjoar, die Notizen lassen sich natürlich auch bearbeiten, als Gelöst markieren (bzw. die Markierung wieder rückgängig machen), bearbeiten und löschen.
---
Benötigt habe ich für das Programm zwei Tage... Das kommt davon, wenn man fast jeden Befehl in der Hilfe nachschlagen muss, weil man die Syntax noch nicht auswendig kennt^^.
Ich habe das Programm unter Windows XP SP2 getestet; sofern man es nicht in geschützte Verzeichnisse kopiert, sollte es auch unter Vista einwandfrei laufen; selbst unter einem Windows 98 sollte es mit allein Updates noch lauffähig sein, was ich allerdings noch nicht(!) getestet habe. Ich habe natürlich auf Bugfreiheit geachtet, kann für genanntes aber auch nicht die Hand ins Feuer legen^^. Damit das Programm Multiuser-tauglich wird, braucht man nur die Zeile 29 "Global Directory" in die entsprechenden Verzeichnissen ändern.
Nun denn, hier mal die Downloadlinks: (Grafiken und Quelltext vorhanden, ca. 260 KB groß, gezippt)
Portable Version (alles wird im Hauptverzeichnis gespeichert)
Multiuser-Version (Daten laden im Anwendungsdaten-Ordner des Benutzers)
Nun denn, ich warte auf Feedback
EDIT: Auf allgemeinen Wunsch hin, der Quellcode in Reinform, ohne Download . Allerdings werden ca. 99% aller Strings aus einer INI-Datei namens "lang.ini" gelesen (die in den beiden Downloads oben natürlich enthalten ist), der Großteil davon ist aber (glaube ich^^) kommentiert:
Spoiler anzeigen
#NoTrayIcon
#Region ;**** Directives created by AutoIt3Wrapper_GUI ****
#AutoIt3Wrapper_icon=notes.ico
#AutoIt3Wrapper_Compression=4
#AutoIt3Wrapper_UseAnsi=y
#AutoIt3Wrapper_Res_Fileversion=0.5.0.1
#AutoIt3Wrapper_Res_LegalCopyright=Manuel Kammermeier aka Astorek
#AutoIt3Wrapper_Res_Language=1031
#AutoIt3Wrapper_AU3Check_Stop_OnWarning=y
#AutoIt3Wrapper_Run_Tidy=y
#AutoIt3Wrapper_Run_Obfuscator=y
#EndRegion ;**** Directives created by AutoIt3Wrapper_GUI ****
#Include <Constants.au3>
#include <GUIConstants.au3>
If $CmdLine[0] > 0 Then
If $CmdLine[1] = StringUpper("-EASTEREGG") Then MsgBox(0, "Credits:", "Vielen Dank an:" & @CRLF & "- Meine Betatester (ich hatte keinen Einzigen)")
EndIf
Opt("TrayMenuMode", 1)
Global $f = 500 ; Feldgroesse
Global $title[$f] ; Control-ID der Traytitel
Global $text[$f] ; Zusaetzliche Kommentare bei einer Notizanzeige
Global $solved[$f] ; Geloeste Notizen
Global $options ; Neue Notiz erstellen
Global $exit ; Beenden
Global $erasesolved ; Alle geloesten Notizen
Global $emty[2] ; Fuer die zwei Leerstellen^^
DirCreate(@AppDataDir & "\Astorek Software")
Global $directory = @AppDataDir & "\Astorek Software\notes.ini" ; Verzeichnis, wo die Notizen gespeichert werden. Das Verzeichnis
; laesst sich problemlos z. B. in den "Anwendungsdaten"-Ordner verlegen.
Global $sp ; Sprachdateien^^
$sp = IniReadSection(@ScriptDir & "\lang.ini", "lang")
; Fehler beim Laden der Sprachdateien
If @error Then
MsgBox(64, "Fehler - Error", "Konnte Sprachdatei nicht finden. Programm wird beendet." _
& @CRLF & "Could not find the language-file. Program will now quit.")
EndIf
; Existiert die Datei nicht, was die Notizen speichert? Dann legen wir sie an.
If Not FileExists($directory) Then
IniWrite($directory, $sp[16][1], "text", $sp[17][1])
EndIf
Global $var = IniReadSectionNames($directory) ; Das $var-Array haelt alle Ueberschriften einer Notiz fest
AktualisiereTray()
While 1
$msg = TrayGetMsg()
For $i = 1 To $var[0]
If $msg = $title[$i] Then
$popup = GUICreate("Notes - " & $var[$i], 420, 340, -1, -1, $WS_POPUPWINDOW)
$popuptitle = GUICtrlCreateLabel($var[$i], 5, 5, 410, 70, $BS_MULTILINE)
GUICtrlSetFont(-1, 20)
$popuptext = GUICtrlCreateLabel($text[$i], 5, 75, 410, 180, $BS_MULTILINE)
$popupclosensolve = GUICtrlCreateButton($sp[1][1], 25, 255, 90, 50, $BS_MULTILINE) ; Auf [Geloest] setzen
$popupclose = GUICtrlCreateButton($sp[2][1], 115, 255, 90, 50) ; Schliessen
$popupedit = GUICtrlCreateButton($sp[3][1], 205, 255, 90, 50) ; Bearbeiten
$popuperase = GUICtrlCreateButton($sp[4][1], 295, 255, 90, 50) ; Loeschen
TraySetState(2)
GUISetState(@SW_SHOW)
While 1
$msg2 = GUIGetMsg()
Select
Case $msg2 = $popupclosensolve ; Speichern und als Geloest markieren
If IniRead($directory, $var[$i], "solved", 0) <> 0 Then ; Ist Notiz bereits als Geloest markiert?
If MsgBox(292, $sp[18][1], $sp[20][1]) = 6 Then ; Sicherheitsabfrage, um Geloest-Notiz zu negieren
IniWrite($directory, $var[$i], "solved", 0)
SpeichernMeldung()
LoescheTray()
AktualisiereTray()
GUIDelete($popup)
ExitLoop
EndIf
Else
IniWrite($directory, $var[$i], "solved", 1) ; Notiz als Geloest markieren
SpeichernMeldung()
LoescheTray()
AktualisiereTray()
GUIDelete($popup)
ExitLoop
EndIf
If @error Then
MsgBox(48, $sp[5][1], $sp[6][1] & _ ; Fehler, falls Wert nicht
@CRLF & $directory & @CRLF & $sp[7][1]) ; geschrieben werden kann
EndIf
Case $msg2 = $popupclose ; Schliessen
TraySetState(1)
GUIDelete($popup)
ExitLoop
Case $msg2 = $popuperase ; Loeschen
If $var[0] = 1 Then
MsgBox(64, $sp[5][1], $sp[21][1] & @CRLF & $sp[22][1]) ; Die einzigste Notiz ist unloeschbar
Else
If MsgBox(292, $sp[18][1], $sp[19][1]) = 6 Then ; Sicherheitsabfrage zum Loeschen
IniDelete($directory, $var[$i])
SpeichernMeldung()
LoescheTray()
AktualisiereTray()
GUIDelete($popup)
ExitLoop
EndIf
EndIf
Case $msg2 = $popupedit ; Notiz bearbeiten
; Editfelder erstellen und die Werte in die Editfelder verfrachten.
GUIDelete($popup)
$popup = GUICreate("Notes - " & $var[$i], 420, 340, -1, -1, $WS_POPUPWINDOW)
GUICtrlCreateLabel($sp[23][1], 5, 5)
$popuptitle = GUICtrlCreateEdit("", 5, 25, 410, 70, $ES_MULTILINE)
GUICtrlSetData($popuptitle, $var[$i])
GUICtrlSetFont($popuptitle, 20)
GUICtrlCreateLabel($sp[24][1], 5, 100)
$popuptext = GUICtrlCreateEdit("", 5, 125, 410, 180, $ES_MULTILINE)
GUICtrlSetData($popuptext, $text[$i])
; Buttons erstellen
$popupclosensolve = GUICtrlCreateButton($sp[25][1], 15, 310, 110, 25) ; Ueberschreibe Notiz
$popuperase = GUICtrlCreateButton($sp[26][1], 295, 310, 110, 25) ; Abbrechen
GUISetState(@SW_SHOW)
While 1
$msg3 = GUIGetMsg()
Select
Case $msg3 = $popupclosensolve ; Notiz speichern und schliessen
If MsgBox(292, $sp[18][1], $sp[27][1]) = 6 Then
IniDelete($directory, $var[$i])
$var[$i] = GUICtrlRead($popuptitle)
$text[$i] = GUICtrlRead($popuptext)
IniWrite($directory, $var[$i], "text", $text[$i])
SpeichernMeldung()
LoescheTray()
AktualisiereTray()
GUIDelete($popup)
ExitLoop
EndIf
Case $msg3 = $popuperase ; Notizbearbeitung abbrechen
If MsgBox(292, $sp[18][1], $sp[28][1]) = 6 Then
GUIDelete($popup)
TraySetState(1)
ExitLoop
EndIf
EndSelect
WEnd
ExitLoop
EndSelect
WEnd
EndIf
Next
If $msg = $exit Then
If MsgBox(292, $sp[8][1], $sp[9][1] & _ ; Beenden-
@CRLF & $sp[10][1]) = 6 Then ExitLoop ; Message
EndIf
If $msg = $options Then ; Neue Notiz anlegen
; Editfelder erstellen
TraySetState(2)
$popup = GUICreate("Notes", 420, 340, -1, -1, $WS_POPUPWINDOW)
GUICtrlCreateLabel($sp[23][1], 5, 5)
$popuptitle = GUICtrlCreateEdit("", 5, 25, 410, 70, $ES_MULTILINE)
GUICtrlSetFont($popuptitle, 20)
GUICtrlCreateLabel($sp[24][1], 5, 100)
$popuptext = GUICtrlCreateEdit("", 5, 125, 410, 180, $ES_MULTILINE)
; Buttons erstellen
$popupclosensolve = GUICtrlCreateButton($sp[34][1], 15, 310, 110, 25) ; Notiz speichern
$popuperase = GUICtrlCreateButton($sp[26][1], 295, 310, 110, 25) ; Abbrechen
GUISetState(@SW_SHOW)
While 1
$msg = GUIGetMsg()
Select
Case $msg = $popupclosensolve
If MsgBox(292, $sp[18][1], $sp[35][1]) = 6 Then
IniWrite($directory, GUICtrlRead($popuptitle), "text", GUICtrlRead($popuptext))
SpeichernMeldung()
LoescheTray()
AktualisiereTray()
GUIDelete($popup)
ExitLoop
EndIf
Case $msg = $popuperase
If MsgBox(292, $sp[18][1], $sp[28][1]) = 6 Then
GUIDelete($popup)
TraySetState(1)
ExitLoop
EndIf
EndSelect
WEnd
EndIf
If $msg = $erasesolved Then
TraySetState(2)
If MsgBox(292, $sp[18][1], $sp[30][1]) = 6 Then ; Alle geloesten Notizen loeschen
$count = 0
For $j = 1 To $var[0]
If IniRead($directory, $var[$j], "solved", 0) = 1 Then ; Sicherheitsabfrage
IniDelete($directory, $var[$j])
$count = $count + 1
EndIf
Next
MsgBox(64, $sp[31][1], $sp[32][1] & " " & $count & " " & $sp[33][1]) ; Anzahl geloeschter Notizen anzeigen
SpeichernMeldung()
LoescheTray()
AktualisiereTray()
Else
TraySetState(1)
EndIf
EndIf
WEnd
Exit
Func AktualisiereTray()
IniReadSectionNames($directory)
If @error Then IniWrite($directory, $sp[16][1], "text", $sp[17][1])
$var = IniReadSectionNames($directory)
For $i = 1 To $var[0]
$title[$i] = $var[$i]
If IniRead($directory, $var[$i], "solved", 0) = 0 Then
$title[$i] = TrayCreateItem($title[$i]) ; Titel einfuegen
Else
$title[$i] = TrayCreateItem($sp[11][1] & " " & $title[$i]) ; Titel mit "Geloest"-Flag einfuegen
EndIf
$text[$i] = IniRead($directory, $var[$i], "text", $sp[12][1]) ; Text in Array verfrachten
Next
$emty[0] = TrayCreateItem("")
$erasesolved = TrayCreateItem($sp[29][1]) ; Geloeste Notizen loeschen
$options = TrayCreateItem($sp[13][1]) ; Neue Notiz erstellen
$emty[1] = TrayCreateItem("")
$exit = TrayCreateItem($sp[14][1]) ; Beenden
TraySetState(1)
EndFunc ;==>AktualisiereTray
Func LoescheTray()
For $i = 1 To $var[0]
TrayItemDelete($title[$i])
Next
TrayItemDelete($emty[0])
TrayItemDelete($emty[1])
TrayItemDelete($options)
TrayItemDelete($exit)
TrayItemDelete($erasesolved)
EndFunc ;==>LoescheTray
Func SpeichernMeldung()
SplashTextOn("Notes", $sp[15][1], 100, 50)
Sleep(500)
SplashOff()
EndFunc ;==>SpeichernMeldung
Alles anzeigen