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 4 von 26   « Erste     234 5614     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 toms
toms

 
Delphi XE Professional
 
#31
  Alt 10. Sep 2008, 19:05
Hallo,

- Wenn ich WidgetEngine.exe starte, wird das Fenster "Widget Engine" für 1 Sek. angezeigt und verschwindet dann sogleich in der TNA. Ist das so gewollt?

- Das Programm sollte man via TrayIcon PopupMenu beenden können.

- Bei Klick auf das TrayIcon wird das Fenster "Widget Engine" nicht immer in den Vordergrund gebracht.

- Bei Klick auf ein Widget im "Select Window" Fenster sollte "Open" ausgeführt werden.
Thomas
  Mit Zitat antworten Zitat
Benutzerbild von littleDave
littleDave

 
Delphi 7 Professional
 
#32
  Alt 10. Sep 2008, 19:30
Hallo Toms

Zitat von toms:
Wenn ich WidgetEngine.exe starte, wird das Fenster "Widget Engine" für 1 Sek. angezeigt und verschwindet dann sogleich in der TNA. Ist das so gewollt?
Das ist im Moment noch so gewollt. Ich hab noch ein kleines Problem mit meiner "MinimizeToTray"-Funktion. Falls die Form zu früh (z.B. nach dem Start) in den Tray minimiert wird, verschwindet die Form nicht sondern ist dann nur im Hintergrund. Daher hab ich im Moment erstmal diese "Stütze" eingebaut, so dass die Form nach 1 Sek. minimiert wird. Werd das aber noch ändern

Zitat von toms:
Das Programm sollte man via TrayIcon PopupMenu beenden können.
Das Popup hab ich bisher noch nicht gemacht - wird aber in der nächsten Version mit dabei sein.

Zitat von toms:
Bei Klick auf das TrayIcon wird das Fenster "Widget Engine" nicht immer in den Vordergrund gebracht.
Das hab ich auch bei mir schon beobachtet. Woran das genau liegt hab ich noch nicht herausgefunden, da es im Debugger immer funktioniert . Aber sobald ich mich an das Popup-Menü mache, werd ich nochmal genau nach dem Fehler suchen. Mit einem Doppelklick auf das Icon sollte es aber funktionieren.

Zitat von toms:
Bei Klick auf ein Widget im "Select Window" Fenster sollte "Open" ausgeführt werden.
Arg ich wusste, dass ich was in der Thumbnail-Komponente vergessen hatte. Danke für den Hinweis.
  Mit Zitat antworten Zitat
Benutzerbild von toms
toms

 
Delphi XE Professional
 
#33
  Alt 10. Sep 2008, 19:31
Zitat von littleDave:
Das ist im Moment noch so gewollt. Ich hab noch ein kleines Problem mit meiner "MinimizeToTray"-Funktion. Falls die Form zu früh (z.B. nach dem Start) in den Tray minimiert wird, verschwindet die Form nicht sondern ist dann nur im Hintergrund. Daher hab ich im Moment erstmal diese "Stütze" eingebaut, so dass die Form nach 1 Sek. minimiert wird. Werd das aber noch ändern
Setze doch in der Projekt Datei Application.ShowMainForm := False;
Thomas
  Mit Zitat antworten Zitat
Benutzerbild von littleDave
littleDave

 
Delphi 7 Professional
 
#34
  Alt 10. Sep 2008, 19:52
Das macht (so wie ich es gelöst hatte) noch mehr probleme. Ich hab auf Application.OnMinimize und auf .OnRestore reagiert, um die Form in den TNA zu minimieren. Jedoch hab ich jetzt die "MinimizeToTray"-Funktion komplett verworfen und mach es jetzt anders. Jetzt ist der Timer unnötig. Für die nächste Version ist das schon mal behoben - und weil ich gerade drann bin, kümmer ich mich noch schnell um ein Popup-Menü für das Tray-Icon.

[Edit]
Weil ich gerade so gut vorran gekommen bin, hab ich mal eben noch eine neue Version hochgeladen.. Ich hab jetzt alle Vorschläge von Toms mit eingebaut. Das Programm wird minimiert gestartet, das TrayIcon hat jetzt ein Popup-Menü und im Select-Widget-Dialog kann man jetzt einen Eintrag per DoubleClick auswählen. Danke toms für die guten Vorschläge
[/Edit]
  Mit Zitat antworten Zitat
Benutzerbild von littleDave
littleDave

 
Delphi 7 Professional
 
#35
  Alt 11. Sep 2008, 11:56
Es gibt nochmal ein Update: Version 0.31 ist jetzt online.

In der letzten Version hat sich noch ein kleiner Bug eingeschlichen: die aktuell offenen Widgets wurden beim Beenden nicht gespeichert, wenn man das Programm über das TrayIcon-Popup-Menü geschlossen hat.

Ebenfalls hab ich die Konfiguration aus den Widgets ausgelagert. Diese wird jetzt im AppData-Ordner, der dafür ja auch vorgesehen ist, gespeichert. Somit ist es jetzt kein Problem mehr, falls man im Programm-Ordner keine Schreibrechte mehr besitzt. Die einzige Ausnahme ist, wenn man Widgets erstellen/bearbeiten will. Dafür benötigt man noch Schreibrechte. Jedoch bearbeitet man nicht ständig Widgets, somit sollte es kein Problem sein. Schließlich kann man ja vor dem editieren das jeweilige Widget in ein Ordner kopieren, in dem man Schreibrechte hat.

Auch hab ich das Popup-Menü der einzelnen Widgets ein wenig erweitert.

Den kompletten ChangeLog sowie den Download findet ihr im ersten Post.
Grüße
Dave
  Mit Zitat antworten Zitat
Benutzerbild von jokerfacehro
jokerfacehro

 
Delphi 7 Enterprise
 
#36
  Alt 11. Sep 2008, 15:25
hey !

1. wenn man beim objekt inspektor die events zusammen- und wieder ausklappt, kommt ne fehlermeldung: zugriffsverletzung...

2. ich wollte den traffic anzeiger ändern (ich weiß schreibschutz), allerdings reagiert er nicht auf verknüpfte ereignisse, wenn ich

Delphi-Quellcode:
mainform.setFormAlpha(88);
mainform.RenderForm;
in die timer prozedur schreibe klappt es, nur meine eigene prozedur wird nicht aufgerufen, obwohl ich sie mit jeglichem ereignis verknüpft habe
  Mit Zitat antworten Zitat
Alt 11. Sep 2008, 17:48     Erstellt von EWeiss
Dieser Beitrag wurde von fkerber gelöscht. - Grund: Inhalt von Autor entfernt
Benutzerbild von littleDave
littleDave

 
Delphi 7 Professional
 
#37
  Alt 11. Sep 2008, 19:06
Zitat von jokerfacehro:
1. wenn man beim objekt inspektor die events zusammen- und wieder ausklappt, kommt ne fehlermeldung: zugriffsverletzung...
Ah danke, das konnt ich jetzt reproduzieren. Hat zwar schon jemand gesagt, jedoch konnt ich es nicht nachvollziehen. Werd mich drann machen, sobald ich wieder daheim bin

Zitat von jokerfacehro:
2. ich wollte den traffic anzeiger ändern (ich weiß schreibschutz), allerdings reagiert er nicht auf verknüpfte ereignisse, wenn ich

Delphi-Quellcode:
mainform.setFormAlpha(88);
mainform.RenderForm;
in die timer prozedur schreibe klappt es, nur meine eigene prozedur wird nicht aufgerufen, obwohl ich sie mit jeglichem ereignis verknüpft habe
Wie schaut denn deine eigene Procedure aus? Hast du alle nötigen Parameter für das jeweilige Event eingetragen? Wie hast du deine eigene Procedure in den Objekt-Inspektor eingetragen? Wenn du ein paar mehr Infos gebe würdest, könnten wir das Problem schnell lösen.
Wenn du nur den FormAlpha einstellen willst, kannst du das auch im Object-Inspektor machen.

Zitat von EWeiss:
zu 1. Der inspector ist müll
Das würd ich jetzt nicht unterschreiben. Wieso denkst du das? Kennst du nen besseren den in benutzen könnte? Ich denke, dass der OI schon sehr gut ist.
  Mit Zitat antworten Zitat
mkinzler

 
Delphi 10.2 Tokyo Enterprise
 
#38
  Alt 11. Sep 2008, 19:16
Leider funktioniert der Internetzugriff der Widgets nicht hinter einem Proxy, da die Systemeinstellungen dahin ignoriert werden.
Markus Kinzler
  Mit Zitat antworten Zitat
Benutzerbild von littleDave
littleDave

 
Delphi 7 Professional
 
#39
  Alt 11. Sep 2008, 19:25
Proxy-Einstellungen werden von mir noch eingebaut. Diese werden dann global im Programm eingetragen und werden dann beim Widget-Start in alle Komponenten übertragen. Jedoch dauert das noch etwas, da ich ja auch auf dynamische Komponenten reagieren muss. Werd das aber auf jeden Fall noch einbauen. Hab mir das für Version 0.4 vorgenommen, hoffentlich schaff ich das.

Die globalen Proxy-Einstellungen werd ich dann noch versuchen, vom System auszulesen. Sorry, dass ich das bisher noch nicht geschafft habe.
  Mit Zitat antworten Zitat
mkinzler

 
Delphi 10.2 Tokyo Enterprise
 
#40
  Alt 11. Sep 2008, 19:30
Kein Problem; ist mir halt aufgefallen
Markus Kinzler
  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 06:08 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