Geschlossen: AutoIt-Kalender

    • Offizieller Beitrag

    Hallo!

    Nachdem ich Outlook nicht mag und mein Mozilla Sunbird einige Probleme hat (Beta-Status, kein Drucken, keine richtigen Ausnahmen für wiederehrende Termine, keine zentrale Datenspeicherung in einer Datei), habe ich mich entschlossen, mir meinen Kalender nach meinen Vorstellungen selbst zu basteln.
    Natürlich will ich dazu AutoIt verwenden.

    Ich habe mir zur Abwechslung sogar mal eine strukturierte Analyse gemacht.
    Leider war ich zu faul sie einzuscannen, sie ist auch ein ziemliches Schlachtfeld.
    Ich schreibe mal die einzelnen Hauptfunktionen mit einigen Hinweise auf.
    Die Idee von BugFix war es, bei diesem Projekt mal zu testen, wie gut man mit AutoIt gemeinsam ein Skript entwickeln kann. Da ich so eine gemeinsame Entwicklung auch noch nicht gemacht habe, fände ich das auch interessant. Wenn sich also Helfer finden, die einen (überschaubaren) Aufgabenbereich übernehmen wollen, wäre das super.

    Vielleicht noch mal kurz das, was das Skript am Ende leisten sollte, damit ich einen echten Mehrwert sehe:

    • Druckfunktion, oder zumindest guter HTML-Export
    • ansprechende Darstellung der Termine innerhalb der GUI (muss nicht unbedingt vollgraphisch sein...)
    • Speicherung aller relevanten Daten in einer Datei für einfaches und schnelles Umziehen, Backup und v.a. damit es auf einem USB-Stick funktinoiert
    • Für USB-Stick-Funktionalität wäre es auch wichtig, keine Reg-Schlüssel zu schreiben oder so
    • Ausnahmen für wiederkehrende Termine á la Termin "Schule" nur, wenn nicht gleichzeitig Termin "Ferien


    Kalenderdatei
    Diese Datei ist zentral für alle Operationen des Kalenders. Deshalb muss die Datenstruktur vorher feststehen. Ich dachte an eine Textdatei (mit anderer Endung, die man auf das Programm registrieren könnte), bei der in der ersten Zeile alle Einstellungen und in den folgenden Zeilen jeweils ein Termin oder eine Aufgabe mit allen Eigenschaften. Ich würde die Angaben mit Kommata trennen, dann wäre man mittels StringSplit schnell an den einzelnen Daten dran. Außerdem wäre der Excel-Export sehr einfach, da die Datei ja schon CSV wäre.Wiederkehrende Termine würde ich als Einzeltermine in die Datei schreiben, dann fällt die Aussage leichter, welche Termine an einem bestimmten Tag stattfinden.

    Vorgeschlagen Struktur der Datei
    Für Einzeltermine: Startdatum,Startzeit,EZ,Enddatum,Endzeit,Titel,Beschreibung,Kategorie,Warnzeit,Warn-E-Mail-Adressen,Ausschlusskriterium
    Für Aufgaben: Enddatum,Endzeit,AG,Titel,Beschreibung,Kategorie,Warnzeit,Warn-E-Mail-Adressen,Ausschlusskriterium

    Dazu käme in Zeile 1 die "Einstellungszeile".

    Eintrag hinzufügen
    Hier muss eine GUI bereitgestellt werden, in der man die erforderlichen Einstellungne für einen neuen Termin oder eine neue Aufgabe treffen kann. Auch Termine, die als Ganztagestermine markiert werden, solen möglich sein.Auch das ändern eines Eintrages soll möglich sein.WEnn man darauf achtet, den Termin chronologisch richtig nach dem Startzeitpunkt einzufügen, beschleunigt sich die Ausgabe der Termine eine bestimmten Tages drastisch!

    Einstellungen ändern
    Hier soll eine GUI einige Einstellungen direkt editierbar machen. Beispielsweise die Standardanzeige des Kalenders oder die Standard-Druckausgabe.

    Extrahieren
    Diese Funktion gibt nach Aufruf mit einem Datum die Termine und AUfgaben zurück, die an diesem Tag fällig sind. Darauf muss sich die Anzeige-Funktion und die Export-/Druckfunktion verlassen (können). Optionen sollen die folgenden sein: Datum, Teilkategorien ausschließen (Array).

    HTML-Export
    Hier soll man mit der Option Darstellung Ausgaben in der Monats- , Wochen- und Tagesansicht erzeugen können. Der Parameter Teilkategorien ausschließen muss an "Extrahieren" durchgeschleift werden, die Parameter Startdatum und Enddatum sind durch wiederholte Aufrufe von "Extrahieren" umzusetzen. Der Dateiname auch als Parameter gedacht.

    Drucken
    Diese Funktion benötigt den Dateinamen der zu druckenden Datei. Umsetzung ist noch offen. Kann man den IE7 per Kommandozeile zum Drucken bringen? Der würde das Zuschneiden übernehmen...Sonst könnte mana uch die Seite im Standardbrowser aufrufen und Strg + p simulieren - mal sehen.

    [Edit 1]
    Schwester hat vorgeschlagen, dass man Feiertage einbindet. Dank BugFix' Skript wäre das kein größeres Problem. Könnte man dann auch als Kriterium für wiederkehrende Termine verwenden ("nicht, wenn Feiertag";)...
    [/Edit 1]

    [Edit 2]
    Alarme
    In gewünschten Abständen soll man gewarnt werden können, wenn ein Termin oder eine Aufgabe fällig wird. Man soll auch snoozen können d.h. die Warnzeit um ein Stück reduzieren, sodass nach einiger zeit noch einmal gewarnt wird.
    Alarme auch per Mail an definierte Empfänger (Schwester)
    [/Edit 2]

    Ich hoffe, jemand hilft mir ;)

    peethebee

    p.s. längster Post ohne eine einzige Zeile Code im Forum? :party3:

    Edit 4: Aktuelle Downloads gibt es hier!

    • Offizieller Beitrag

    Hi,

    ich habe ne kleine Anmerkung zu:

    Zitat

    Ich würde die Angaben mit Kommata trennen, dann wäre man mittels StringSplit schnell an den einzelnen Daten dran. Außerdem wäre der Excel-Export sehr einfach, da die Datei ja schon CSV wäre.

    Ich würde nicht das Komma nehmen zum trennen weil das auch bestimmt in der Beschreibung Verwendung findet, nehmt lieber den Backslash oder das Pipe-Zeichen! ;)

    Ansonsten finde ich das Projekt eine gute Idee und stehe euch bei Problemen wie immer gerne zur Verfügung.

    • Offizieller Beitrag

    Ja, hast Recht, bernd.
    Mal wieder nicht dran geacht. Nehemn wir die Pipe (Backslash kommt in Pfaden im Skript zu oft vor (Verwirrung) und kann auch im Comment sein, wenn man einen Pfad zu eine Datei oder so angeben will)...

    peethebee

    • Offizieller Beitrag

    Hallo

    Schwester: -.- ich meinte welchen punkt.. ich mache, so habn wir(pee&ich) es abgesprochen, den Punkt "eintrag Hinzufügen" & "Drucken"

    zu Drucken:

    Bitte Probiert das mal aus,und gibt mir bitte Feadback, das druckt nich direkt sonder öffnet nur ein druckerdialog:

    Code
    Func _PrintFile($printfile)
    	;By GtaSpider
        RunWait('rundll32.exe '&@SystemDir&'\mshtml.dll,PrintHTML "' & $printfile,@SystemDir)
    EndFunc


    Aufruf is gaanz einfach:

    Code
    _PrintFile("DerPfad\DieDatei.dieErweiterung

    Mfg Spider

    • Offizieller Beitrag

    Hallo!

    Back to topic ;)

    Ich habe für mich mal den Arbeitstitel "galenda" gewählt, das heißt (mal nicht auf Hawaiianisch) auf Fränkisch Kalender :rofl:

    Ich werde versuchen heute Abend noch die MainGUI fertig zumachen, von der aus die anderen Funktionen aufgerufen werden. Evlt. lege ich auch schon mal Leerfunktionen an, dann kann man die Einzelteile leichter einbauen.

    peethebee

    • Offizieller Beitrag

    Hallo!

    Der Rahmen steht zumindest zu einem guten Teil schon mal.
    Was im Moment die Fertigstellung der GUI und der damit vverbundenen Funktionen behindert ist die Frage, wie man denn nun die Termine anzeigen soll auf der GUI. Dazu sind mir inzwischen etliche Pläne im Kopf. Jeder hat Vor- und Nachteile...

    Möglichkeit 1: HTML-Seite
    Man könnte ein ActiveX-Control des IE einbinden und darin die HTML-Seite anzeigen lassen, die auch zum Export und Drucken verwendet werden wird.
    + Intern und exern gleich
    + weniger Arbeit
    - Kein Kontextmenü oder Drag & Drop möglich
    - Optik, wenn nicht gut kaschiert

    Möglichkeit 2: "Textmodus"
    Darstellen mit List-Controls
    + einfach
    +schnell
    + Optik okay
    - Kontextmenü?, wenn ja, dann gute Lösung
    - keine Grafik
    - sofortiger Überblick nicht leicht

    Möglichkeit 3: "Grafikmodus"
    Zeichnen in einerm Graphic-Control
    + Optik!!
    + sofortige Übersicht
    - aufwendig

    Ich würde im Moment zu Variante 2 tendieren, was meint ihr?

    Anhang: Version 0.0 Alpha (:D )

    Was schon gut ist: Menü, AboutBox (top, denke ich), SplashScreen, Resizing, Logging

    @Aufgabenverteilung:
    Schwester hat sich bereit erklärt, für die finale Version ein Logo zu machen, Chicago würde testen.
    Was sich noch positiv auswirken würde, wäre ein leicht gemustertes Hintergrundbild für die GUI, aber das geht nicht, oder? Hoffe, dass ich da einen Befehl dazu übersehen habe ;)

    peethebee

    • Offizieller Beitrag

    Geht noch weiter. Aber das Einstellungsmenü würde ich gern machen. *gg*

    • Offizieller Beitrag

    @gun_food Vorsicht du benutzt die gleiche Variable wie peethebee

    Code
    $gui_mnu_file = GUICtrlCreateMenu("&Datei")
    $gui_mnu_file = GUICreate("Einstellungen", 622, 441, 314, 412)


    Mit GuiGetMsg(1) wird GuiGetMsg in den erweiterten Modus geschalten und gibt als ergebnis ein Array zurück in dem auch die ID des Fensters steht von dem die Msg kommt!

    @1: Das mit GuiGetMsg war :schild4: ich habe Opt("GUIOnEventMode", 1) übersehen!

    Du musst die EventFunktion _close anpassen und abfragen für welches Fenster die Funktion aufgerufen wurde!

  • Hi peethebee,

    auch wenn Du schon fleißig am Kalenderprojekt arbeitest, ist EssentialPIM für Dich vielleicht interessant. Das ist ein konstenloser Kalender... essentialPIM