Jalenda - CLI-Beta

    • Offizieller Beitrag

    Hallo!

    Ich habe mal angefangen Galenda (Link siehe Signatur) in Java neuzuschrieben bzw. zu portieren (das Konzept habe ich nicht wirklich geändert, da Galenda näher an dem war, was ich ganz persönlich von einem Kalender erwarte als jeder andere, den ich kenne).

    Vorteile:
    - Plattformunabhängigkeit (Linux!)
    - Geschwindigkeit
    - Objektorientierte Programmierung (macht es gefühlsmäßig sehr viel stressfreier ;))

    Bis jetzt habe ich die Datenbank-Struktur (wieder SQLite) gebaut und ein CommandLine-Interface, das zwar vornehmlich Testzwecke hat, aber es ermöglicht auch eine Ausgabe von Kalenderdaten, wenn man beispielsweise nur über eine einfache Terminal verbunden ist. Damit ließe sich langfristig vielleicht auch eine Server-/Client-Architektur aufbauen zum Multi-User-Betrieb, mal sehen.

    Funktionen auf der Kommandozeile bisher:
    jalenda -i file.jal -a init ; Initialize Database
    jalenda -i file.jal -a show_settings
    jalenda -i file.jal -a set_setting -n Name -v Value
    jalenda -i file.jal -a show_cal_details
    jalenda -i file.jal -a set_cal_details [-n Name] [-d Description] [-o Owner]
    jalenda -i file.jal -a list_cats
    jalenda -i file.jal -a add_cat -n Name -d Desc -c Color -v VisLevel
    jalenda -i file.jal -a edit_cat -id ID [-n Name] [-d Desc] [-c Color] [-v VisLevel]
    jalenda -i file.jal -a del_cat -id ID
    jalenda -i file.jal -a list_events [-l LimitDate|today|tomorrow|next_week|next_month]
    jalenda -i file.jal -a add_event -n Name [-d Desc] [-c CatID] -b Begin -e End [-bb BlockBefore (min)] [-ba BlockAfter (min)] [-ex ExternalLink]
    jalenda -i file.jal -a del_event -id ID
    jalenda -i file.jal -a edit_event -id ID [-n Name] [-d Desc] [-c CatId] [-b Begin] [-e End] [-bb BlockBefore] [-ba BlockAfter] [-ex External Link]
    jalenda -i file.jal -a del_old_events [-l limitDate|today]
    jalenda -i file.jal -a add_alarm -d Desc [-e EventID] [-m MultiEventID] [-t time] [-ty type] [-p Parameters]
    jalenda -i file.jal -a list_alarms [-li LimitID] [-ld LimitDesc] [-le EventID] [-lm MultiEventID] [-lt Time] [-lty Type] [-lp Parameters]
    jalenda -i file.jal -a del_alarm -id ID
    jalenda -i file.jal -a edit_alarm -id ID [-d Desc] [-e EventID] [-m MultiEventID] [-t time] [-ty type] [-p Parameters]
    jalenda -i file.jal -a add_task -n Name [-d Desc] [-e End] [-p priority] [-do done] [-ex External Link]
    jalenda -i file.jal -a list_tasks [-li LimitID] [-ln LimitName] [-ld LimitDone] [-le LimitEnd] [-lp LimitPriority] [-ldo LimitDone] [-lex LimitExternalLink] [-o Order]
    jalenda -i file.jal -a del_task -id ID
    jalenda -i file.jal -a edit_task -id ID [-n Name] [-d Details] [-e end] [-p Priority] [-do Done] [-ex External Link]
    jalenda -i file.jal -a del_old_tasks

    In der Regel wird der Aufruf zumindest jalenda.jar am Anfang tragen müssen, evtl. auch "java -jar jalenda.jar ...". Und auch das natürlich nur, wenn ihr im jalenda.jar-Verzeichnis seid :).

    Viel Spaß damit,
    peethebee

    p.s. schöne Grüße an GtaSpider :D

    • Offizieller Beitrag

    Hallo

    Wow. Ich bin ja nicht so der Konsolen Fan, aber das ist für ein Konsolen app sehr gut zu bedienen :)
    Was mich nur verrückt macht, immer das manuelle setzen vom Pfad in der Kommandozeile. Also hab ich mal eine Jalenda Kommandozeile für dich gebastelt, weil du mich so lieb gegrüßt hast :love: ^^

    Spoiler anzeigen
    [autoit]

    #include<WindowsConstants.au3>
    $sJavaPath = RegEnumKey("HKEY_LOCAL_MACHINE\SOFTWARE\JavaSoft\Java Runtime Environment", 1)
    $sJavaPath = RegRead("HKEY_LOCAL_MACHINE\SOFTWARE\JavaSoft\Java Runtime Environment\" & $sJavaPath, "JavaHome")
    If $sJavaPath = '' Then
    $sJavaPath = FileSelectFolder("Bitte den Java ordner auswählen (jreX.X.X_XX)", "")
    If @error Then Exit
    EndIf
    If StringRight($sJavaPath, 1) <> "\" Then $sJavaPath &= "\"
    If StringInStr($sJavaPath, " ") Then
    $sJavaPath = '"' & $sJavaPath & 'bin\java.exe" -jar '
    Else
    $sJavaPath = $sJavaPath & 'bin\java.exe -jar '
    EndIf

    [/autoit] [autoit][/autoit] [autoit]

    $sJalenda = FileOpenDialog("Bitte jalenda.jar öffnen", '', "(jalenda.jar)")
    If @error Then Exit
    $sFullPath = $sJavaPath & '"' & $sJalenda & '" '
    ConsoleWrite($sFullPath & @CRLF)
    $sJalendaPath = StringLeft($sJalenda, StringInStr($sJalenda, "\", -1, -1))
    $sFile = InputBox("", "Name der jal Datei (Wenn nicht im ScriptDir existiert, wird neue erstellt)", "file.jal")
    If Not FileExists($sJalendaPath & $sFile) Then RunWait($sFullPath & '-i "' & $sFile & '" -a init', $sJalendaPath, @SW_SHOW)
    ConsoleWrite($sJalendaPath & $sFile & @CRLF)
    $sFullPath &= '-i "' & $sFile & '" '

    [/autoit] [autoit][/autoit] [autoit]

    $hWnd = GUICreate("Jalenda Box - By GtaSpider", 600, 600, -1, -1, BitOR($WS_CAPTION, $WS_POPUP, $WS_SYSMENU, $WS_MAXIMIZEBOX, $WS_SIZEBOX));WS_MAXBOX+WS_MINBOX+WS_SIZEBOX
    $hEdit = GUICtrlCreateEdit("", 0, 0, 600, 580, 0x0800);Readonly
    GUICtrlCreateInput($sFullPath, 0, 580, 300, 20, 0x0800 + 0x0080);Readonly+autohscroll
    ControlSend($hWnd, "", GUICtrlGetHandle(-1), "{END}")
    $hInp = GUICtrlCreateInput("", 300, 580, 300, 20)
    $hdum = GUICtrlCreateDummy()
    Dim $aAc[1][2] = [["{ENTER}", $hdum]]
    GUISetAccelerators($aAc)

    [/autoit] [autoit][/autoit] [autoit]

    GUISetState()
    While 1
    Switch GUIGetMsg()
    Case - 3
    Exit
    Case $hdum
    GUICtrlSetData($hEdit, @CRLF & "+>" & @HOUR & ":" & @MIN & ":" & @SEC & " Running " & $sFullPath & GUICtrlRead($hInp) & @CRLF, 1)
    $iRun = Run("cmd /k " & $sFullPath & GUICtrlRead($hInp), $sJalendaPath, @SW_HIDE, 2)
    $hTi = TimerInit()
    While ProcessExists($iRun)
    $std = StdoutRead($iRun)
    If $std <> '' Then GUICtrlSetData($hEdit, $std, 1)
    Sleep(50)
    WEnd
    $hTi = TimerDiff($hTi)
    GUICtrlSetData($hEdit, @CRLF & "+>" & @HOUR & ":" & @MIN & ":" & @SEC & " java.exe ended." & @CRLF & "Time: " & Round($hTi / 1000, 3) & " sec", 1)
    GUICtrlSetData($hInp, '')
    EndSwitch
    WEnd

    [/autoit]

    Gruß Zurück :P Spider

    Edit: Mal kurze Beschreibung zu mein Skript:
    Einfach das machen was er von der Will. Bei der GUI ist oben halt das Edit feld was als Commandozeilen ersatz dient.
    Unten links ist der Pfad der gestartet wird. Und unten rechts kann man nun befehle wie "-a show_settings" (ohne ") angeben.
    Dann einfach auf Enter drücken und es wird gestartet. Im Edit seht ihr dann live was rauskommt.