AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Projekte Desktop Widget Engine (v0.72)

Desktop Widget Engine (v0.72)

Ein Thema von littleDave · begonnen am 27. Aug 2008 · letzter Beitrag vom 14. Aug 2011
Antwort Antwort
Seite 2 von 26     12 3412     Letzte » 
Benutzerbild von littleDave
littleDave
Registriert seit: 27. Apr 2006
Hallo

ich hab mal wieder ein Projekt, welches ich hier veröffentlichen will: Eine ...


Downloads
  • hier ist eine Übersicht über alle Versionen
  • hier (ca. 1.5 MB) kann die aktuellste Version heruntergeladen werden
  • hier könnt ihr weitere Widgets herunterladen und eure eigenen Widgets hochladen
  • hier ist jetzt der komplette ChangeLog seit Version 0.1 aufgelistet
  • hier sind jetzt die möglichen Startparameter aufgelistet

Was ist eine Widget Engine?
Widget? Was ist das denn? ... Hm, das ist nicht so schnell zu beschreiben. Kurz gesagt: Widgets sind kleine Fenster, die auf dem Desktop sitzen und unterschiedliche Aufgaben übernehmen können. Jedes Widget ist dabei nur eine Ansammlungen von Anweisungen, Bildern oder sonstigen Daten. Diese Daten werden dann von einem Hauptprogramm visualisiert und verarbeiten. Diese Widget-Engine ist dabei dieses Hauptprogramm.

Wie funktioniert das ganze?
Das ist ganz einfach. Im Hauptprogramm klickt ihr einfach auf Widgets und dann auf Add widget. In einem Dialog wählt ihr dann die Widget-Datei aus, die ihr starten wollt. Danach erscheint ein neues Fenster auf dem Bildschirm - fertig: das Widget läuft jetzt.

Screenshots (für größere Version einfach auf das Bild klicken)
Mal ein Paar Widgets auf dem Desktop
http://widgets.godlikesoft.de/progra...p001-small.jpg http://widgets.godlikesoft.de/progra...p002-small.jpg http://widgets.godlikesoft.de/progra...p006-small.jpg
Der Editor
http://widgets.godlikesoft.de/progra...p003-small.jpg http://widgets.godlikesoft.de/progra...p004-small.jpg
Die Widget-Auswahl
http://widgets.godlikesoft.de/progra...p005-small.jpg

Kann ich selbst Widgets erstellen?
Natürlich! Im Hauptprogramm ist ein Widget-Editor dabei, mit dem ihr neue Widgets erstellen und bearbeiten könnt.

Wie erstelle ich eigene Widgets?
Das ist schon nicht so einfach zu beschreiben, da ihr durch die Script-Sprache extrem viel Möglichkeiten habt.
Zuerst wählt ihr im Menü unter Edit den Punkt Create new Widget aus. Dort gibst du die ersten groben Daten zu deinem Widget ein (diese können natürlich später noch geändert werden). Unten müsst ihr noch die Zieldatei eingeben, in dem die Daten gespeichert werden sollen. Danach erscheint der Editor. Der Editor ist ungefähr so aufgebaut wie ihr es von Delphi gewohnt seid. Es gibt einen Form-Designer und einen Code-Editor. Im Formdesigner könnt ihr Komponenten hinzufügen, bearbeiten und löschen. Im Code-Editor bearbeitet ihr die Funktionalität des Widgets. Die Programmiersprache des Widgets ist Pascal, somit könnt ihr wahrscheinlich gleich loslegen. Als Scriptsprache verwende ich (wie könnte es anders sein ), meine Script-Engine. Um alle Funktionen zu beschreiben bräuchte ich jetzt sehr lange - am besten schaut ihr euch bereits mitgelieferten Widgets im Editor an.

Wie veröffentliche ich meine eigenen Widgets
Das ist ganz einfach: sobald ihr euer Widget fertig habt, klickt ihr im Editor auf Datei -> Publish-Datei erstellen.... Nachdem ihr die Publish-Datei gespeichert habt, geht ihr auf Website der Desktop Widget Engine. Dort loggt ihr euch mit eurem Account ein (wenn ihr noch keinen habt, einfach kurz registrieren) und wählt dann rechts unten den Eintrag Publish own widget. Dann wählt ihr die gerade erstellte Publish-Datei aus und wählt noch die Kategorie des Widgets - fertig.

Wichtige Sachen für den Editor
  • Events zuweisen:
    Um einer Komponente ein Event zuzuweisen solltet ihr im Object-Inspector den Tab "Events" auswählen. Dort klickst ihr doppelt auf den Namen des Events. Dann wird automatisch alles nötige erstellt. Ihr könnt die Events natürlich auch manuell eintragen, jedoch ist solltet ihr dann genau wissen, welche Parameter wann wo kommen. Wenn eine Event-Funktion falsche Parameter hat, wird das Widget zwar erfolgreich kompiliert, die Event-Funktion wird aber niemals erreicht.
  • Bilder zuweisen:
    Widgets sind meistens mit einer aufwendigeren grafischen Oberfläche ausgestattet. In dieser Widget-Engine geht das natürlich auch. Dafür fügt ihr einfach ein Image hinzu und wählt im Objekt-Inspektor den Eintrag "Graphic" aus. Dort findet ihr einen Eintrag "ImageFile", welcher einen Dialog öffnet. In diesem Dialog wählt ihr das gewünschte Bild aus. Dabei könnt ihr nur Bilder auswählen, die sich in der Wiget-Datei befinden. Um eine Datei hinzuzufügen wählt ihr links den Eintrag Add file to folder.
    ACHTUNG: Bei den Bildern werden nur PNGs, JPEGs, Bitmaps und Gifs unterstützt. Andere Bildtypen funktionieren nicht!

Was ist alles dabei?
Das Hauptpacket besteht nur aus einer analogen Uhr und einer SideBar. Wenn ihr weitere Widgets haben wollt, geht ihr auf die Website der Desktop Widget Engine. Dort könnt ihr viele weitere Widgets herunterladen.

Eigene PlugIns?
Die Funktionalität von Widgets kann man mit Hilfe von PlugIns erweitern. Die Erweiterbarkeit mit Hilfe durch PlugIns ist extrem groß. Um ein PlugIn zu erstellen, solltet ihr vorher die PlugIn-API-Reference herunterladen (der Download-Link befindet sich am Ende dieses Abschnitts). Dort findet ihr einen Pascal-Header sowie eine Hilfe, die euch anhand des mitgelieferten Beispiels erklärt, wie ihr ein PlugIn erstellen könnt und worauf ihr achten müsst. Die PlugIn-API findet ihr hier (ca. 1 MB)

Noch ein paar Hinweise
  • Getestet mit Windows XP
  • Verwende Komponenten: Sysygy Script Engine, SynEdit, Jedi Component Library, GraphicEx, GR32 (TBitmap32)
  • Aktuelle Version: 0.72
  • Programmiert mit Delphi 7
  • Das Programm erstellt folgende Ordner:
    • Den Ordner "Desktop Widget Engine" in %APPDATA%
  • Das Programm erstellt folgende Registry-Einträge:
    • "Desktop Widget Engine" in "HKCU\Software\Microsoft\Windows\CurrentVersion\Ru n\" (nur falls die Einstellung "Autostart" aktiviert wurde)
Jabber: littleDave@jabber.org
in case of 1 is 0 do external raise while in public class of object array else repeat until 1 is 0
 
Benutzerbild von littleDave
littleDave

 
Delphi 7 Professional
 
#11
  Alt 27. Aug 2008, 23:41
Ich hab mir mal die Kritikpunkte von NameLozer vorgenommen:
Zitat von NamenLozer:
- es gibt keine "Immer im Hintergrund"-Funktion
- die Widgets sind recht sperrig und nicht in der Größe veränderbar
- das Ein- und Ausklappen der Widgets dauert ewig
Die Widgets Feed-Widgets sind jetzt im Minimierten Zustand kleiner und das Ein- und Ausklappen geht jetzt doppelt so schnell. Außerdem hab ich mal die "Immer im Hintergrund" - Funktion eingebaut bzw. sie aktiviert. Hoffentlich funktioniert die einigermaßen.

@BullsEye: Danke für den Screenshot - werd mir den mal genauer anschauen.
  Mit Zitat antworten Zitat
Namenloser

 
FreePascal / Lazarus
 
#12
  Alt 28. Aug 2008, 08:19
Hi, die "Always in Background"-Funktion ist eine echte Verbesserung. Ich habe jetzt das Wetter- und das Shoutbox-Widget testweise im Hintergrund laufen.
Kleiner Bug: Wenn man mit Alt+Tab (oder dem tollen Flip3d ) direkt zum Desktop wechselt, sind die Widgets verschwunden. Kommt natürlich auf die betrachtungsweise an, ob man das als Bug oder als Feature ansieht.
Eine Sache ist mir noch aufgefallen: Wenn man im Widgeteditor im Objektinspektor bei den Ereignissen eine Kategorie schnell ein/ausblendet, gibt es eine Zugriffsverletzung.

Eine Frage habe ich noch: Du nutzt eine TBitmap32Ex-Klasse. Ist das eine eigene Klasse? Inwiefern unterscheidet sie sich vom normalen Bitmap32?
  Mit Zitat antworten Zitat
Benutzerbild von littleDave
littleDave

 
Delphi 7 Professional
 
#13
  Alt 28. Aug 2008, 13:57
Zitat von NamenLozer:
Hi, die "Always in Background"-Funktion ist eine echte Verbesserung. Ich habe jetzt das Wetter- und das Shoutbox-Widget testweise im Hintergrund laufen.
Kleiner Bug: Wenn man mit Alt+Tab (oder dem tollen Flip3d ) direkt zum Desktop wechselt, sind die Widgets verschwunden. Kommt natürlich auf die betrachtungsweise an, ob man das als Bug oder als Feature ansieht.
Danke für den Hinweis, ich werd mir das auf jeden fall nochmal anschauen.

Zitat von NamenLozer:
Eine Sache ist mir noch aufgefallen: Wenn man im Widgeteditor im Objektinspektor bei den Ereignissen eine Kategorie schnell ein/ausblendet, gibt es eine Zugriffsverletzung.
Da muss ich mal schauen - im Moment geh ich von einem Bug in der JvInspector-Komponente aus - aber ich schau mal ob ich das im Debugger reproduzieren kann.

Zitat von NamenLozer:
Eine Frage habe ich noch: Du nutzt eine TBitmap32Ex-Klasse. Ist das eine eigene Klasse? Inwiefern unterscheidet sie sich vom normalen Bitmap32?
Die TBitmap32Ex-Klasse hab ich selbst nur ein wenig erweitert. Ich habe ein paar Funktionen zum Ausgeben von Text verändern bzw. überschrieben. Die TBitmap32-Klasse kam (außer bei RenderText) nicht mit den Farben + Alpha zurecht - es wurde immer mit einem Alpha-Wert von 0 gezeichnet.
  Mit Zitat antworten Zitat
Benutzerbild von littleDave
littleDave

 
Delphi 7 Professional
 
#14
  Alt 28. Aug 2008, 22:56
Ich hab gerade eine neue Version hochgeladen. Ich habe jetzt eine grobe Einstellungsmöglichkeit für jedes Widget eingebaut. Bisher wird aber nur die Position jedes Widgets gespeichert. Zusätzlich wird beim beenden automatisch gespeichert, welches Widget aktiv war. Die letzten aktiven Widgets werden dann meim Start automatisch wieder geladen.

Jetzt werd ich mich dran setzen, Edits, Checkboxen sowie ComboBoxen zu der Komponentenliste hinzuzufügen. Danach werd ich die aktuellen Widgets um eine eigene Konfiguration erweitern.

Grüße
Dave
  Mit Zitat antworten Zitat
Crazy Ivan
 
#15
  Alt 29. Aug 2008, 08:26
Ich hab mir die Widgets auch mal angesehn. top!

Ich habe aber auch noch Vorschläge^^ Was mir als Erstes eingefallen ist, drag'n'drop von Widgets aus dem Hauptfenster wär sehr klasse, sprich um das Widget irgendwo zu platzieren, einfach aus der Liste raus auf den Desktop bzw. auch die Widgets wieder in die Liste verbannen, wenn ich sie dahin ziehe

Zweitens wär es nett, wenn jedes Widget so eine art "Systemmenü" (wie halt bei Windows: Minimieren, Schließen, etc) hätte, bloß denke ich da eher an zwei Sachen, Schließen und ein Feld, das man zum Rumschieben des Widgets verwenden kann, damit man nicht genau auf den Text klicken muss etc. (zum Beispiel beim Kalender).

Und auch noch eine Frage. Gemäß dem Fall, ich würde jetzt mehrere Widgets erstellen, kommen denn noch Veränderungen im System in der Richtung, das diese Widgets nochmal überarbeitet werden müssten? (ansonsten fang ich gleich an )
  Mit Zitat antworten Zitat
Benutzerbild von littleDave
littleDave

 
Delphi 7 Professional
 
#16
  Alt 29. Aug 2008, 14:06
Zitat von Crazy Ivan:
Ich hab mir die Widgets auch mal angesehn. top!
Erstmal danke für dein Feedback

Zitat von Crazy Ivan:
Ich habe aber auch noch Vorschläge^^ Was mir als Erstes eingefallen ist, drag'n'drop von Widgets aus dem Hauptfenster wär sehr klasse, sprich um das Widget irgendwo zu platzieren, einfach aus der Liste raus auf den Desktop bzw. auch die Widgets wieder in die Liste verbannen, wenn ich sie dahin ziehe
So was ähnliches hab ich bereits geplant - nur halt etwas anders. Ich hab mir das so vorgestellt: Im Hauptmenü wird es einen Punkt names "Widgets positionieren" geben. Sobald man den öffnet, wird man ein Fenster sehen, in dem man die Widgets positionieren kann. Das Fenster wird einfach ein halbtransparentes Vollbild-Fenster, auf dem die Widgets angezeigt und auch verschoben werden können. Meintest du so was?

Zitat von Crazy Ivan:
Zweitens wär es nett, wenn jedes Widget so eine art "Systemmenü" (wie halt bei Windows: Minimieren, Schließen, etc) hätte, bloß denke ich da eher an zwei Sachen, Schließen und ein Feld, das man zum Rumschieben des Widgets verwenden kann, damit man nicht genau auf den Text klicken muss etc. (zum Beispiel beim Kalender).
Das Systemmenü ist bereits geplant. Jedoch dauert das etwas länger, da jedes Widget sein Systemmenü noch selbst um eigene Punkte erweitern können soll. Dafür wird es dann ein neues Event in der Form geben: OnSystemMenuPopup. Dort kann man dann ganz einfach im Script sein eigenes Menü noch ins Systemmenü hinzufügen. Jedoch muss ich mir erst gedanken machen, wie ich das genau Realisiere.

Zitat von Crazy Ivan:
Und auch noch eine Frage. Gemäß dem Fall, ich würde jetzt mehrere Widgets erstellen, kommen denn noch Veränderungen im System in der Richtung, das diese Widgets nochmal überarbeitet werden müssten? (ansonsten fang ich gleich an )
Also garantieren kann ich leider für nichts, jedoch hab ich es so programmiert, dass die Engine auch Widgets laden kann, die mit vorherigen Versionen erstellt wurden. Falls sich jedoch was so ändert, dass man das Widget nochmal anpassen muss, werd ich es natürlich hier hineinschreiben. Ich habe somit einige Sachen so programmiert, dass Änderungen nicht sofort dazu führen, dass man das Widget nochmal bearbeiten/anpassen muss.

@All: Ich hab gerade eine neue Version hochgeladen. Hier mal ein kurzes ChangeLog:
  • Widgets können jetzt eigene Konfigurationen speichern und laden
  • der Ort des Wetter-Widget kann jetzt durch ein einfaches Klicken auf den Stadt-Namen geändert werden
  • Neue Funktionen im Script: InputQuery, InputBox, MessageDlg, ShowMessage
  • Wetter-Widget etwas verkleinert
  • RSS-Feeds speichern jetzt die Form-Größe
  • Neue Eigenschaft + Event im TwgForm: FileCanDrop und OnDropFiles (Drag&Drop von Dateien jetzt möglich)
  • Bug im Kalender behoben
  • Kalender zeigt jetzt die Feiertage an
  • Aussehen des Kalenders überabeitet
  • Man kann im Kalender jetzt durch die einzelnen Monate scrollen
  • Der Editor ist jetzt nicht mehr Modal, somit können jetzt mehrere Editoren gleichzeitig geöffnet werden

[Edit]Ich wollt doch ein Screenshot vom neuen Kalender mit anhängen [/Edit]
Miniaturansicht angehängter Grafiken
widgetengine_125.jpg  
  Mit Zitat antworten Zitat
Benutzerbild von littleDave
littleDave

 
Delphi 7 Professional
 
#17
  Alt 29. Aug 2008, 23:34
Hallo

es gibt mal wieder eine neue Version. Die aktuelle Version ist 0.2 Alpha. Diesmal hab ich sehr viel am Editor gearbeitet und endlich ein paar wichtige Grundfunktionen (wie z.B. die Suche) hinzugefügt. Aber auch ein Popup-Menü zu jedem Widget ist jetzt endlich mit dabei. Der ChangeLog sowie der Download ist im ersten Post zu finden.

Grüße
  Mit Zitat antworten Zitat
Benutzerbild von xZise
xZise

 
Delphi 2009 Professional
 
#18
  Alt 30. Aug 2008, 00:25
Zitat von littleDave:
[...]
Zitat von Crazy Ivan:
Ich habe aber auch noch Vorschläge^^ Was mir als Erstes eingefallen ist, drag'n'drop von Widgets aus dem Hauptfenster wär sehr klasse, sprich um das Widget irgendwo zu platzieren, einfach aus der Liste raus auf den Desktop bzw. auch die Widgets wieder in die Liste verbannen, wenn ich sie dahin ziehe
So was ähnliches hab ich bereits geplant - nur halt etwas anders. Ich hab mir das so vorgestellt: Im Hauptmenü wird es einen Punkt names "Widgets positionieren" geben. Sobald man den öffnet, wird man ein Fenster sehen, in dem man die Widgets positionieren kann. Das Fenster wird einfach ein halbtransparentes Vollbild-Fenster, auf dem die Widgets angezeigt und auch verschoben werden können. Meintest du so was?[...]
Nein, soweit ich das gesehen habe, möchte er, dass man in der Widgetliste eins auswählt und dann gedrückt auf den Desktop zieht, eben dahin, wo der Mauszeiger gewesen ist.

Zitat von NamenLozer:
[...]Kleiner Bug: Wenn man mit Alt+Tab (oder dem tollen Flip3d ) direkt zum Desktop wechselt, sind die Widgets verschwunden.[...]
Selbst die Windows Sidebar hat dieses Problem (leider). Muss nix heißen

Zitat von littleDave:
[...]Die Widgets Feed-Widgets sind jetzt im Minimierten Zustand kleiner und das Ein- und Ausklappen geht jetzt doppelt so schnell.[...]
Wie wäre es mit eigener Einstellung?

Achso Ich habe es noch nicht getestet, weil atm reicht mir dir Windows Sidebar.

MfG
xZise
Fabian
  Mit Zitat antworten Zitat
Benutzerbild von littleDave
littleDave

 
Delphi 7 Professional
 
#19
  Alt 30. Aug 2008, 00:32
Zitat von xZise:
Nein, soweit ich das gesehen habe, möchte er, dass man in der Widgetliste eins auswählt und dann gedrückt auf den Desktop zieht, eben dahin, wo der Mauszeiger gewesen ist.
Aber warum sollte man das machen Die Widgets, die in der Liste sind, sind doch bereits aktiv und auf dem Desktop So ganz versteh ich das nicht.

Zitat von xZise:
Zitat von littleDave:
[...]Die Widgets Feed-Widgets sind jetzt im Minimierten Zustand kleiner und das Ein- und Ausklappen geht jetzt doppelt so schnell.[...]
Wie wäre es mit eigener Einstellung?
Super Idee werd mich mal drann setzen

Zitat von xZise:
Achso Ich habe es noch nicht getestet
Dann wirds aber Zeit
  Mit Zitat antworten Zitat
Benutzerbild von xZise
xZise

 
Delphi 2009 Professional
 
#20
  Alt 30. Aug 2008, 01:45
Zitat von littleDave:
Zitat von xZise:
Nein, soweit ich das gesehen habe, möchte er, dass man in der Widgetliste eins auswählt und dann gedrückt auf den Desktop zieht, eben dahin, wo der Mauszeiger gewesen ist.
Aber warum sollte man das machen Die Widgets, die in der Liste sind, sind doch bereits aktiv und auf dem Desktop So ganz versteh ich das nicht.
Okay ich jetzt auch nicht mehr

Zitat von littleDave:
Dann wirds aber Zeit
Was mich stört, ist das ich die nicht wieder hochholen kann. Also die Widgets. Einmal mit Firefox oder was auch immer drüber und schon sind sie fast weg (nur minimieren hilft).

MfG
xZise
Fabian
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 13:17 Uhr.
Powered by vBulletin® Copyright ©2000 - 2020, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2020 by Daniel R. Wolf