1. Dashboard
  2. Mitglieder
    1. Letzte Aktivitäten
    2. Benutzer online
    3. Team
    4. Mitgliedersuche
  3. Forenregeln
  4. Forum
    1. Unerledigte Themen
  • Anmelden
  • Registrieren
  • Suche
Alles
  • Alles
  • Artikel
  • Seiten
  • Forum
  • Erweiterte Suche
  1. AutoIt.de - Das deutschsprachige Forum.
  2. Mitglieder
  3. MrB

Beiträge von MrB

  • GDI+ auf unsichtbarer GUI

    • MrB
    • 24. Juli 2012 um 11:42

    Genau das was ich gesucht habe. Ich kam nicht mehr drauf, wie das mit den GUIs war.

    Dank Dir

    LG
    MrB

  • GDI+ auf unsichtbarer GUI

    • MrB
    • 24. Juli 2012 um 10:49

    moin,

    muss kurz mal was fragen.

    Wie bekomme ich es hin, dass ich auf einer unsichtbaren GUI sichtbare Rects zeichnen kann. Sprich man sieht halt nur das Rect.

    Ich hab das mal irgendwo gelesen, finde das aber nicht mehr und von alleine krieg ich´s einfach nicht hin.

    Hoffe einer kann mir helfen

    LG
    MrB

  • Scite und Tidy

    • MrB
    • 13. Juli 2012 um 18:55

    Moin zusammen,


    Passt zwar nicht ganz hierher aber naja.


    Musste meinen Rechner komplett neu aufsetzen. Nachdem ich Scite wieder drauf hatte, funktioniert Tidy nicht mehr bzw. CTRL+T klappt nicht mehr. Manuelles starten von Tidy und Auswahl eines Scriptes sind kein Problem.


    Weis einer wie ich das wieder auf CTRL+T bekomm. Die Scite Version ist sowieso in einigem anders, wie meine vorher. Ist übrigens alles hier von der Seite (AoutIT+Scite)


    LG
    MrB

    Vergestt es, keine Ahnung was ich gameacht habe, aber es war gut ! ?(
    Ist wieder da und funzt

  • TreeView Fokus bei RMT

    • MrB
    • 5. Juli 2012 um 08:30

    RMT = Rechte MausTaste

    Hmm, ich hab das auch falsch beschrieben. Fokus stimmt, denke ich.
    Wenn ich iregnedeine TreeViewItem mit der rechten Maustaste anklicke und den Text mit

    [autoit]

    $Item = GUICtrlRead($MainTreeView)
    $Thema = GUICtrlRead($Item, 1)

    [/autoit]


    auslese, nimmt er immer das zuletzt angewählte Item. Erst wenn ich einmal mit linken Maustaste drauf klicken und dann mit der rechten Maustaste ist alles i.O.

  • TreeView Fokus bei RMT

    • MrB
    • 4. Juli 2012 um 13:13

    Moin zusammen,

    kann mir einer sagen, wie ich den Fokus auf das Item eines treeViews bekomme, welches ich mit der RMT anklicke?

    Spoiler anzeigen
    [autoit]


    #include <File.au3>
    #include <Array.au3>
    #include <GUITreeView.au3>
    #include <GUIConstantsEx.au3>

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

    Global $MainTreeView

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

    ;--------------------GUI erstellen--------------------------------------------------------------------------------------------------------------
    $gui = GUICreate("SQL-Test", 800, 600)
    $EditTitel = GUICtrlCreateInput("Hier bitte den Titel eintragen", 10, 15, 250, 25)
    $EditInhalt = GUICtrlCreateEdit("Hier bitte den Inhalt eintragen", 10, 50, 500, 500)

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

    $NewMainEntry = GUICtrlCreateButton("Neuen Haupteintrag anlegen", 15, 570, 150, 25)

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

    _TreeView()
    $ContextTreeView = GUICtrlCreateContextMenu($MainTreeView)
    $UnterEintrag_erstellen = GUICtrlCreateMenuItem("Untereintrag erstellen", $ContextTreeView)
    GUISetState()
    ;--------------------GUI fertig--------------------------------------------------------------------------------------------------------------

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

    While 1
    $nMsg = GUIGetMsg()

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

    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit
    Case $UnterEintrag_erstellen
    $Item = GUICtrlRead($MainTreeView)
    $text = GUICtrlRead($Item, 1)
    $checkparent = _GUICtrlTreeView_GetChildCount($MainTreeView, $Item) ; >0 dann ist ein Parent und -1 kein Parent
    If $checkparent = -1 Then
    MsgBox(0, "Achtung", "Du kannst nur Themen in Themenbereichen erstellen")
    Else
    MsgBox(0, "", "parent")
    EndIf
    EndSwitch
    WEnd

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

    Func _Themenbereich_anlegen($name)
    DirCreate(@ScriptDir & "\Themen\" & $name)
    EndFunc ;==>_Themenbereich_anlegen

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

    Func _TreeView()
    GUICtrlDelete($MainTreeView)
    $MainTreeView = GUICtrlCreateTreeView(600, 15, 190, 570)
    $aFileList = _FileListToArray(@ScriptDir & "\Themen\")

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

    If IsArray($aFileList) Then
    For $i = 1 To $aFileList[0]
    $Sub = GUICtrlCreateTreeViewItem($aFileList[$i], $MainTreeView)
    $aFileTheme = _FileListToArray(@ScriptDir & "\Themen\" & $aFileList[$i])
    For $f = 1 To $aFileTheme[0]
    GUICtrlCreateTreeViewItem(StringReplace($aFileTheme[$i], ".txt", ""), $Sub)
    Next

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

    Next
    EndIf
    EndFunc ;==>_TreeView

    [/autoit]


    Hier ein kleines Bsp.

    MfG
    MrB

  • Listview Alternativen ??

    • MrB
    • 2. Juni 2012 um 15:57

    Hab´s mitlerweile akzeptiert, dass ich mit HTML arbeiten muss :( . Denke ist der einfachste Weg. Verzichte einfach auf Interaktion, zumindestens vorerst.
    Hatte mal _GUICtrlRichEdit probiert, bekomme da aber keine Bilder rein. Per Copy/Paste aus Paint gehts zwar, bekomm das aber im Script nicht umgesetzt. Wäre sonst eine Alternative gewesen. Optisch akzeptabel und Interaktion möglich.

    Naja, mal sehen.

    THX
    LG
    MrB

  • Listview Alternativen ??

    • MrB
    • 1. Juni 2012 um 19:45

    Hallo zusammen,

    Ich versuch verzweifelt eine optisch schöne Lösung für Tabellen zu finden. Das Standard Listview ermöglicht ja keine Bilder, Links usw. Zumindestens nicht so ohne weiteres.
    Prinzipiell will ich eine Tabelle mit 2 Bildern (45x45px und 20x10px) erstellen, wo dann noch diverse Spalten mit Inhalten (auch Links) hinterher kommen sollen.

    HTML funktioniert eigentlich, nur bin ich kein Fan davon, da es keine Interaktion erlaubt.

    Excel hab ich nicht verstanden (nur das Einbinden in die GUI, hoffe ich ^^). Irgendwie Holzweg. Wie bekomm ich eine Tabelle als Object in einer GUI angezeigt
    Ach ja, Excel muss doch auch auf jedem Rechner installiert sein damit das funktioniert oder ? Dann wäre das nicht machbar.

    Hat einer noch andere Ideen ??

    LG
    MrB

  • _GUICtrlRichEdit Text mit Attributen auslesen

    • MrB
    • 24. Mai 2012 um 07:16

    Soweit gelöst.

    Hat noch einer eine Idee, wie ich die RichEdit in Tabs verwende?

  • _GUICtrlRichEdit Text mit Attributen auslesen

    • MrB
    • 23. Mai 2012 um 12:43

    Prinzipiell machbar, da man ja eigentlich jeden Buchstaben überprüfen muss, finde ich dies aber nicht wirklich praktisch.

    Muss doch noch einfacher gehen.


    P.S.: Man kann zwar auch den ganzen Text auslesen lassen, nur ist das Ergebniss mager. Es werden zwar alle im Text gefunden Attribute angezeigt, nur ohne Zuordnung. Farbe und Größe werden dadurch ja nicht erkannt.

  • _GUICtrlRichEdit Text mit Attributen auslesen

    • MrB
    • 23. Mai 2012 um 11:42

    Hallo zusammen,

    Steh anscheinend wieder ziemlich fest auf´m Schlauch :-(.

    Befasse mich grad mit dem Thema _GUICtrlRichEdit, da diese doch mehr Möglichkeiten bieten. Klappt soweit auch alles wunderbar. Text färben, größer oder kleiner machen und sonstige Formatierungen sind kein Problem. Nur, wie lese ich einen formatierten Text ein ohne das er seine Formatierung verliert. Mit _GUICtrlRichEdit_GetText ist diese ja weg.

    Nochmal zum Verständnis: Ich möchte einen Text aus eine _GUICtrlRichEdit auslesen der mehrere verschiedene CharAttribute hat (farbig,kursiv, fett und unterstrichen) hat ohne diese zu verlieren und einige Änderungen daran vornehmen (CharAttribute ändern). Danach soll der Text wieder ins _GUICtrlRichEdit.

    Hoffe einer kann mir da mal einen Anstoss geben. Hab noch nicht mal einen sinvollen Ansatz.

    LG
    MrB

  • Listview Zeile bzw. SubItem farbig markieren

    • MrB
    • 10. Januar 2012 um 13:45

    :whistling: OK, lesen hätte da wirklich geholfen !

    Muss mir mal mehr Zeit nehmen. Dank Dir !

  • Listview Zeile bzw. SubItem farbig markieren

    • MrB
    • 9. Januar 2012 um 17:18

    Vergesst es. Hab´s so gelöst, dass ich mir mit GDI+ ein Rect um die betreffenden SubItems zeichne. Gefällt mir sogar noch besser so.

    Obwohl ich trotzdem gerne wissen würde, was ich bei der UDF falsch gemacht hab ^^

  • Listview Zeile bzw. SubItem farbig markieren

    • MrB
    • 9. Januar 2012 um 09:35

    BugFix

    Umbauen möchte ich eher nicht. Hab deine UDF gefunden: ListView - SubItem einzeln färben/formatieren, Finale Version! (v1.3)

    Hab die mal versucht zu benutzen, scheitere aber. X(

    Bsp.:

    Spoiler anzeigen
    [autoit]

    #include <GuiListView.au3>
    #include <WindowsConstants.au3>
    #include 'C:\Widget\Snippets\LV_Format_include[1.3].au3'
    #include <GuiListView.au3>

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

    Global $NewSearch = False
    $GUI = GUICreate("Code Snippets", @DesktopWidth - 225, @DesktopHeight - 100, 5, 5, $WS_POPUPWINDOW, $WS_EX_APPWINDOW)
    GUISetBkColor(0x000000, $GUI)

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

    $Exit_Button = GUICtrlCreateButton("X", @DesktopWidth - 225 - 25, 5, 20, 20)
    GUICtrlSetFont(-1, 10, 1000)
    $Mini_Button = GUICtrlCreateButton(Chr(151), @DesktopWidth - 225 - 50, 5, 20, 20)
    GUICtrlSetFont(-1, 10, 400)

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

    $listview1 = GUICtrlCreateListView("Nr|Name|Erweit.", 5, 50, @DesktopWidth - 225 - 10, @DesktopHeight - 100 - 120)
    For $i = 0 To 10
    _GUICtrlListView_AddItem($listview1, Random(1, 10, 1))
    _GUICtrlListView_AddSubItem($listview1, $i, Random(1, 10, 1), 1)
    _GUICtrlListView_AddSubItem($listview1, $i, Random(1, 10, 1), 2) ; Plus der Platz halter für die erste Spalte
    Next

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

    $Input_suche = GUICtrlCreateInput("Suchbegriff eingeben...", @DesktopWidth - 225 - 320, @DesktopHeight - 100 - 47, 200, 20)
    $SearchButton = GUICtrlCreateButton("Suche starten", @DesktopWidth - 225 - 110, @DesktopHeight - 100 - 50, 100, 25)
    GUISetState(@SW_SHOW, $GUI)

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

    While 1
    HotKeySet("^!x", "MeinExit")
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $Exit_Button
    MeinExit()
    Case $Mini_Button
    GUISetState(@SW_MINIMIZE, $GUI)
    Case $SearchButton
    If $NewSearch = False Then
    $SearchString = GUICtrlRead($Input_suche)
    _Suche($SearchString)
    Else
    $SearchString = GUICtrlRead($Input_suche)
    _Suche($SearchString)
    EndIf
    EndSwitch
    WEnd

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

    Func _Suche($search_string)
    Local $AktuelleZeile = 0
    Local $AlteZeile = 0
    $SuchZeile = -1
    _GUICtrlListView_Formatting_Startup($GUI, $listview1)
    $search_string = GUICtrlRead($Input_suche)
    Local $counter = 0
    If $search_string <> "Suchbegriff eingeben..." Then
    Do
    $AktuelleZeile = _GUICtrlListView_FindInText($listview1, $search_string, $AlteZeile);, True, True)
    If $AktuelleZeile <> -1 Then
    If $AktuelleZeile >= $AlteZeile Then
    $AlteZeile = $AktuelleZeile
    _GUICtrlListView_FormattingCell($listview1, $AktuelleZeile, 0, 0x00FF00, 0x008000)
    $SuchZeile = $AktuelleZeile
    EndIf
    EndIf
    $counter += 1
    Until $AktuelleZeile < $AlteZeile Or $counter > 20
    GUICtrlSetData($SearchButton, "neue Suche")
    $NewSearch = True
    Else
    GUICtrlSetData($Input_suche, "")
    EndIf
    $SuchZeile = -1
    _GUICtrlListView_Formatting_Shutdown()
    Return $SuchZeile
    EndFunc ;==>_Suche

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

    Func MeinExit()
    Exit
    EndFunc ;==>MeinExit

    [/autoit]

    AutoIt3.exe schmiert komplett ab. Denke liegt an mir, dass ich was falsch mache, komme nur nicht drauf was.

    LG
    MrB

  • Listview Zeile bzw. SubItem farbig markieren

    • MrB
    • 8. Januar 2012 um 19:47

    Eigentlich schon, nur baue ich das ListView mit

    Spoiler anzeigen
    [autoit]


    _GUICtrlListView_AddItem()
    _GUICtrlListView_AddSubItem()

    [/autoit]

    Somit weis ich nicht wie ich die Items dann ansprechen soll!

  • Listview Zeile bzw. SubItem farbig markieren

    • MrB
    • 8. Januar 2012 um 17:40

    Abend zusammen,

    Hab da leider mal wieder was, wo ich nicht weiter komme. Hab dazu zwar was hier gefunden, nur bekomme ich das nicht umgesetzt.

    Hier mal ein Beispiel Script

    Spoiler anzeigen
    [autoit]

    #include <GuiListView.au3>
    #include <WindowsConstants.au3>
    Global $NewSearch = False
    $GUI = GUICreate("Code Snippets", @DesktopWidth - 225, @DesktopHeight - 100, 5, 5, $WS_POPUPWINDOW, $WS_EX_APPWINDOW)
    GUISetBkColor(0x000000, $GUI)

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

    $Exit_Button = GUICtrlCreateButton("X", @DesktopWidth - 225 - 25, 5, 20, 20)
    GUICtrlSetFont(-1, 10, 1000)
    $Mini_Button = GUICtrlCreateButton(Chr(151), @DesktopWidth - 225 - 50, 5, 20, 20)
    GUICtrlSetFont(-1, 10, 400)

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

    $listview1 = GUICtrlCreateListView("Nr|Name|Erweit.", 5, 50, @DesktopWidth - 225 - 10, @DesktopHeight - 100 - 120)
    For $i = 0 To 10
    GUICtrlCreateListViewItem(Random(1, 10,1) & "|" & Random(1, 10,1) & "|" & Random(1, 10,1), $listview1)
    Next

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

    $Input_suche = GUICtrlCreateInput("Suchbegriff eingeben...", @DesktopWidth - 225 - 320, @DesktopHeight - 100 - 47, 200, 20)
    $SearchButton = GUICtrlCreateButton("Suche starten", @DesktopWidth - 225 - 110, @DesktopHeight - 100 - 50, 100, 25)
    GUISetState(@SW_SHOW, $GUI)

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

    While 1
    HotKeySet("^!x", "MeinExit")
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $Exit_Button
    MeinExit()
    Case $Mini_Button
    GUISetState(@SW_MINIMIZE, $GUI)
    Case $SearchButton
    If $NewSearch = False Then
    $SearchString = GUICtrlRead($Input_suche)
    _Suche($SearchString)
    Else
    $SearchString = GUICtrlRead($Input_suche)
    _Suche($SearchString)
    EndIf
    EndSwitch
    WEnd

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

    Func _Suche($search_string)
    Local $AktuelleZeile = 0
    Local $AlteZeile = 0
    $SuchZeile = -1

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

    $search_string = GUICtrlRead($Input_suche)
    Local $counter = 0
    If $search_string <> "Suchbegriff eingeben..." Then
    Do
    $AktuelleZeile = _GUICtrlListView_FindInText($listview1, $search_string, $AlteZeile);, True, True)
    If $AktuelleZeile <> -1 Then
    If $AktuelleZeile >= $AlteZeile Then
    $AlteZeile = $AktuelleZeile
    _GUICtrlListView_ClickItem($listview1, $AktuelleZeile, "left", False, 1)
    $SuchZeile = $AktuelleZeile
    EndIf
    EndIf
    $counter += 1
    Until $AktuelleZeile < $AlteZeile Or $counter > 20
    GUICtrlSetData($SearchButton, "neue Suche")
    $NewSearch = True
    Else
    GUICtrlSetData($Input_suche, "")
    EndIf
    $SuchZeile = -1
    Return $SuchZeile
    EndFunc ;==>_Suche

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

    Func MeinExit()
    Exit
    EndFunc ;==>MeinExit

    [/autoit]

    Nun die Problemstellung:

    Ich möchte, dass jeder gefundene Eintrag, irgendwie kenntlich gemacht wird und zwar dauerhaft bis entweder eine neue Suche gestartet wird oder die Markierungen per Button aufgehoben werden. Schön wäre es natürlich, wenn nur die SubItems markiert werden würden.
    Das Bsp. was hier gefunden hatte, funktioniert über WM_NOTIFY. Nur da steig ich nicht wirklich durch ! :S
    Siehe hier: Klick

    LG
    MrB

  • Icon in ListView Spalte0 unterdrücken

    • MrB
    • 7. Januar 2012 um 18:55

    Danke AutoBert,

    Reicht mir völlig so. Danke dir !

    Ach ja, Win7 Ultimate 64Bit, funktioniert da auch ohne Probs!

  • Icon in ListView Spalte0 unterdrücken

    • MrB
    • 7. Januar 2012 um 13:41

    Tach zusammen,

    Hab mich mal gerade an Listviews mit Icons probiert. Hintergrund ist der, dass für alle Dateien in einem Ordner das passende Icon n der Liste angezeigt wird. Aber egal was ich mache, es wird immer ein Icon in der Spalte 0 angezeigt. Hier mal ein Bsp.

    Spoiler anzeigen
    [autoit]

    #include <GUIConstantsEx.au3>
    #include <GuiImageList.au3>
    #include <GuiListView.au3>
    #include <ListViewConstants.au3>
    #include <WinAPI.au3>
    #include <WinAPIEx.au3>
    #include <WindowsConstants.au3>

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

    $GUI = GUICreate("tt", @DesktopWidth - 225, @DesktopHeight - 100, 5, 5)
    GUISetBkColor(0x000000, $GUI)

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

    $listview1 = GUICtrlCreateListView("Nr|Name|Erweit.", 5, 50, @DesktopWidth - 225 - 10, @DesktopHeight - 100 - 120)
    $hImageList = _GUIImageList_Create(16, 16, 6)
    _GUICtrlListView_SetImageList($listview1, $hImageList, 1)
    _GUICtrlListView_SetExtendedListViewStyle($listview1, $LVS_EX_SUBITEMIMAGES)

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

    $nr = 1
    $Name = "test"
    $Erweiterung = ".au3"

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

    $hIcon = _WinAPI_ShellExtractAssociatedIcon($Erweiterung, 1)

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

    If @error Then MsgBox(0, "", @error)
    _GUIImageList_ReplaceIcon($hImageList, -1, $hIcon)

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

    _GUICtrlListView_AddItem($listview1, $nr) ;Zeile 0, SubItem 1
    _GUICtrlListView_AddSubItem($listview1, 0, $Name, 1);Zeile 0, SubItem 2
    _GUICtrlListView_AddSubItem($listview1, 0, $Erweiterung, 2, 0);Zeile 0, SubItem 3

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

    _WinAPI_DestroyIcon($hIcon)

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

    GUISetState()

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

    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit
    EndSwitch
    WEnd

    [/autoit]

    Was mache ich da falsch ?
    Oder ist das so gewollt?

    Benötigte Dateien hab ich mal angehangen

    Lg
    MrB

    Dateien

    WinAPIEx.rar 285,41 kB – 267 Downloads
  • _IENavigate() bei lokalen Dateien

    • MrB
    • 5. Januar 2012 um 17:20

    Leider nicht autoBert. Das habe ich auch schon probiert. Sowie wie eigentlich jede mögliche schreibweise.

    Habe aber eben bemerkt, dass das teilweise funktioniert. Meine damit, dass eine Datei funktioniert eine andere nicht.
    Dabei ist die Schreibweise recht egal:

    [autoit]


    _IENavigate($oIE, "file:///" & @ScriptDir & "\temp\index.html")
    _IENavigate($oIE, "file:///" & @ScriptDir & "/temp/index.html")

    [/autoit]

    Beides geht. Hat das irgendetwas mit dem Inhalt zu tun? Naja, sind beides extrem einfach gestrickte Html Dateien .

    Naja, sei´s drum. Dann muss halt ShellExecute reichen

  • _IENavigate() bei lokalen Dateien

    • MrB
    • 4. Januar 2012 um 16:52

    Hmm, da das Problem auch hier im Forum schon existierte (auch ohne Reaktion), denke ich mal, dass da einfach keiner was zu weis.

    Schade, das ist dann doch blöd !

  • _IENavigate() bei lokalen Dateien

    • MrB
    • 3. Januar 2012 um 18:35

    Sry, ich muss das nochmal nach vorne holen.

    Wie rufe ich eine lokale Html Datei auf ?

    Wird dann Embedded in einer GUI angezeigt. Mit Weblinks usw kein Problem, nur lokal geht´s nicht. Bin schier am verzweifeln

Spenden

Jeder Euro hilft uns, Euch zu helfen.

Download

AutoIt Tutorial
AutoIt Buch
Onlinehilfe
AutoIt Entwickler
  1. Datenschutzerklärung
  2. Impressum
  3. Shoutbox-Archiv
Community-Software: WoltLab Suite™