Neue Antwort schreiben 
 
Themabewertung:
  • 0 Bewertung(en) - 0 im Durchschnitt
  • 1
  • 2
  • 3
  • 4
  • 5
Gadgetengine 2.0
huttERic Offline
Yet Another Vostro User

Beiträge: 1.969
Registriert seit: Jul 2008
Beitrag #1
Gadgetengine 2.0
So, ich habe meine Gadgetengine jetzt komplett neu gecodet in C#. Hat auch ein paar (wenige) neue Features, aber vor allem sehen die Gadgets, die mitgeliefert werden, jetzt wesentlich besser aus :D
Den Downloadlink gibt es hier: sidebar 2.0.rar (29,29 KB)
Bugs bitte melden. Alte Gadgets sind nicht mehr kompatibel, da das .NET-Framework da Vorgaben setzt.
Nochmal was allgemeines: Das Ziel der Engine ist es, die Gadgets so weit wie möglich vom Programm zu trennen. Die Gadgets haben ein eigenes Einstellungsmanagement. Das heißt, sie bekommen von der Engine den Befehl, die Einstellungen anzuzeigen und sie machen das auch (hoffentlich). Um das Speichern der Einstellungen brauchen die Gadgets sich jedoch weniger Gedanken zu machen.
Ein Gadget ist eine Klassenbibliothek, die folgende Assemblies braucht: System.Windows.Forms und CSSidebarInterface.dll.
Der VB .NET Code für Gadgets wäre dann folgender: (Ins Tutorial der ersten Version schauen, falls Probleme auftauchen)
Gadget ohne Einstellungen:
Das Gadget ohne Einstellungen braucht einfach nur ein UserControl. Im folgenden heißt das Teil UserControl 1.
Code:
Public Class Class1
    Implements CSSidebarInterface.SidebarInterface
    Dim ucontr As UserControl1 = New UserControl1
    Public ReadOnly Property author() As String Implements CSSidebarInterface.SidebarInterface.author
        Get
            Return "DeinName"
        End Get
    End Property

    Public ReadOnly Property hasSettings() As Boolean Implements CSSidebarInterface.SidebarInterface.hasSettings
        Get
            Return False
        End Get
    End Property

    Public Function initialize() As System.Windows.Forms.UserControl Implements CSSidebarInterface.SidebarInterface.initialize
        Return ucontr
    End Function

    Public ReadOnly Property name() As String Implements CSSidebarInterface.SidebarInterface.name
        Get
            Return "GadgetName"
        End Get
    End Property

    Public Property settings() As String Implements CSSidebarInterface.SidebarInterface.settings
        Get
            Return Nothing
        End Get
        Set(ByVal value As String)

        End Set
    End Property

    Public Sub showSettings() Implements CSSidebarInterface.SidebarInterface.showSettings

    End Sub

    Public ReadOnly Property version() As String Implements CSSidebarInterface.SidebarInterface.version
        Get
            Return "GadgetVersion"
        End Get
    End Property
End Class
Gadget mit Einstellungen
Das Gadget mit Einstellungen ist ein Gadget mit zusätzlichem Einstellungsdialog. Im folgenden Form1. Diese Form1 hat noch eine globale Variable, die die Instanz des Gadget-Controls aufnimmt. Ist besser, damit die Settings am Ende zum richtigen Gadget kommen :P
Code:
Public gadget As UserControl1
Und jetzt zur Klasse des Gadgets:
Code:
Public Class Class1
    Implements CSSidebarInterface.SidebarInterface
    Dim ucontr As UserControl1 = New UserControl1
    Public ReadOnly Property author() As String Implements CSSidebarInterface.SidebarInterface.author
        Get
            Return "DeinName"
        End Get
    End Property

    Public ReadOnly Property hasSettings() As Boolean Implements CSSidebarInterface.SidebarInterface.hasSettings
        Get
            Return True 'Settings-Button am Gadget anzeigen lassen von der Engine
        End Get
    End Property

    Public Function initialize() As System.Windows.Forms.UserControl Implements CSSidebarInterface.SidebarInterface.initialize
        Return ucontr
    End Function

    Public ReadOnly Property name() As String Implements CSSidebarInterface.SidebarInterface.name
        Get
            Return "GadgetName"
        End Get
    End Property

    Public Property settings() As String Implements CSSidebarInterface.SidebarInterface.settings
        Get
            Return "Ein String mit den Einstellungen die das Gadget speichern will..."
            'Wenn man die Variablen di und ngs speichern will, kann man z.B. 'di@ngs' zurückgeben.
        End Get
        Set(ByVal value As String)
            'Hier muss der Code hin, damit das Gadget die Einstellungen übernimmt.
            'z.B. kann ankommen 'di@ngs' und das Gadget splittet an dem @ und verarbeitet die Strings weiter.
        End Set
    End Property

    Public Sub showSettings() Implements CSSidebarInterface.SidebarInterface.showSettings
        Dim settings As Form1 = New Form1
        settings.Show()
    End Sub

    Public ReadOnly Property version() As String Implements CSSidebarInterface.SidebarInterface.version
        Get
            Return "GadgetVersion"
        End Get
    End Property
End Class
Wer das ganze von Anfang an selbst bauen will, der schreibt einfach unter das Public Class Class 1 folgendes:
Code:
Implements CSSidebarInterface.SidebarInterface
Und VB sollte das "automatisch" implementieren, vorrausgesetzt CSSidebarInterface.dll und System.Windows.Forms sind importiert.

Auf Anfrage auch Tutorial für C#

So, ich hoffe, es sind keine Fehler drin und in diesem Sinne: Happy using and bugtesting :D

EDIT Nr. 1:
So, auf speziellen Wunsch hin eine neue Version. Beim Minimieren wird die Form versteckt. Bei erneutem Starten der exe wird sie wieder angezeigt. BTW: Ich merke grade, dass das Icon verschwunden ist. Kommt bald wieder :D
Siehe unten.
EDIT Nr. 2:
Bugfix-Release. Icon ist auch wieder da.
sidebar 2.0.rar (30,30 KB)
EDIT Nr. 3:
Neues Gadget: Kalender. Download:
Calendar.gadget.dll (20,48 KB)
EDIT Nr. 4:
Währungsrechner und Screen: siehe unten.

Auf besonderen Wunsch hin gibt es hier ein Tutorial für C#:

Also. Wir erstellen eine neue Klassenbibliothek mit dem Namen xyz.gadget. In diesem Beispiel tutorial.gadget. Dann importieren wir die Verweise System.Windows.Forms und den Verweis auf die CSSidebarInterface.dll. Nun öffnen wir die Klasse unserer Klassenbibliothek. Wir sollten folgendes Bild haben:
Code:
using System;
using System.Collections.Generic;
using System.Text;

namespace tutorial.gadget
{
    public class Class1
    {
    }
}
Das ganze verändern wir: Wir fügen hinter das Class 1 einen Doppelpunkt ein und ein Leerzeichen. (In dieselbe Zeile wie Class1!) Dann schreiben wir CSSidebarInterface.SidebarInterface ein und drücken Enter. Daraufhin sollte die IDE bei CSSidebarInterface ein blaues Kästchen anzeigen. Wenn wir die Maus darauf bewegen können wir in dem Menü, was erscheint CSSidebarInterface.SidebarInterface-Schnittstelle implementieren auswählen und die IDE implementiert den Kram. Dabei hagelt es für die Engine einige Exceptions, was uns nicht weiter stören sollte. Man sollte nun folgendes Bild haben:
Code:
using System;
using System.Collections.Generic;
using System.Text;

namespace tutorial.gadget
{
    public class Class1 : CSSidebarInterface.SidebarInterface
    {
        #region SidebarInterface Member

        public string author
        {
            get { throw new Exception("The method or operation is not implemented."); }
        }

        public bool hasSettings
        {
            get { throw new Exception("The method or operation is not implemented."); }
        }

        public System.Windows.Forms.UserControl initialize()
        {
            throw new Exception("The method or operation is not implemented.");
        }

        public string name
        {
            get { throw new Exception("The method or operation is not implemented."); }
        }

        public string settings
        {
            get
            {
                throw new Exception("The method or operation is not implemented.");
            }
            set
            {
                throw new Exception("The method or operation is not implemented.");
            }
        }

        public void showSettings()
        {
            throw new Exception("The method or operation is not implemented.");
        }

        public string version
        {
            get { throw new Exception("The method or operation is not implemented."); }
        }

        #endregion
    }
}
So, jetzt müssen wir das ganze erstmal auf unsere Bedürfnisse zuschneiden.
1.) Gadget ohne Einstellungsdialog
Wir fügen dem Projekt ein neues UserControl hinzu, im folgenden heißt das Teil UserControl1. Folgenden Code können wir für unsere Gadgets nutzen:

Das Gadget sollte nach Möglichkeit eine andere Hintergrundfarbe als die Standardfarbe haben, da diese transparent wird (.NET-Framework-bedingt).
2.) Gadget mit Einstellungsdialog.
Wir ändern das ganze einfach so ab, dass bei hasSettings true zurückgegeben wird. Bei void showSettings() sollte dann die Settings-Form (hier: setForm) angezeigt werden. Diese sollte auch eine Instanz des Gadgets haben:
Code:
public UserControl1 gadget;
Die form wird also so aufgerufen:
Code:
setForm settings = new setForm();
public void showSettings()
{
setForm.gadget = this;
setForm.Show();
}
Jetzt kompilieren, in den Gadgets-Ordner und ab geht die Post!
So, bei C# auch: Ich hoffe, dass es geht. Wenn nicht, bitte schreiben.
(Dieser Beitrag wurde zuletzt bearbeitet: 26.12.2008 21:58 von huttERic.)
26.12.2008 16:31
Alle Beiträge dieses Benutzers finden Diese Nachricht in einer Antwort zitieren
Alex Offline
Registriert seit 17.04.06

Beiträge: 6.619
Registriert seit: Jul 2008
Beitrag #2
Gadgetengine 2.0
[Bild: eBay-Gadget-010-Grundfunktionen.png]

Bastel grad an nem kleinen eBay-Gadget

Grundfunktion steht, aber wehe der User macht was falsch, dann explodiert alles :D
-> machs grad Userfreundlich b1

Desktop: AMD FX-6200 @ 6 x 4,3 GHz | 32 GB DDR3 | Intel Arc A380 | SSD: 1 TB @ M.2 to PCIe Adapter + UEFI NVMe Driver Injection | HDD: 15 TB | Win 11 Pro | Dual Monitor 2 x 27"
Notebook: Lenovo ThinkPad T420 | i5 2520M | 16 GB DDR3 | SSD: 250 GB | USB 3.0 | 300 MBit WWAN @ D1 | AC WLAN | BT 4.0 | 2 x 70++ | 1 x 27++ Slice | Win 11 Pro | FHD Display Mod
Internetleitung: Telekom | FTTH | D: 500 MBit / U: 200 MBit | Telekom Glasfasermodem | AVM Fritz!Box 7490
Räder: [Daily: Stevens E-Triton 2016] [Cyclocross: Stevens Prestige 2019] [Cargobike: Urban Arrow Cargo XL 2023]
26.12.2008 20:47
Alle Beiträge dieses Benutzers finden Diese Nachricht in einer Antwort zitieren
Benedikt Offline
this is serious!

Beiträge: 1.674
Registriert seit: Jul 2008
Beitrag #3
Gadgetengine 2.0
Sehr sehr geiles teil =)

C# anleitung wäre geil

b1
26.12.2008 20:58
Alle Beiträge dieses Benutzers finden Diese Nachricht in einer Antwort zitieren
huttERic Offline
Yet Another Vostro User

Beiträge: 1.969
Registriert seit: Jul 2008
Beitrag #4
Gadgetengine 2.0
Benedikt schrieb:  Sehr sehr geiles teil =)

C# anleitung wäre geil
Okay, C# Anleitung gibt es nachher =)
Nen kurzer Screen, um meine bisherigen Gadgets zu zeigen:
[Bild: 231screen.png]
Das Währungsrechner-Teil aktualisiert die Kurse immer mit denen der Europäischen Zentralbank. wie man sieht sehen auch alle meine Gadgets mehr oder weniger einheitlich aus :D
Wer den Währungsumrechner haben will: Wechselkurse.gadget.dll (32,77 KB)
26.12.2008 21:37
Alle Beiträge dieses Benutzers finden Diese Nachricht in einer Antwort zitieren
PacMani
Unregistered

 
Beitrag #5
Gadgetengine 2.0
Ich dachte da kommen jetzt alphatransparente Gadgets...
so hättste auch bei VB bleiben können :traurig:
26.12.2008 23:32
Diese Nachricht in einer Antwort zitieren
huttERic Offline
Yet Another Vostro User

Beiträge: 1.969
Registriert seit: Jul 2008
Beitrag #6
Gadgetengine 2.0
Pac-Man schrieb:  Ich dachte da kommen jetzt alphatransparente Gadgets...
so hättste auch bei VB bleiben können :traurig:
Alphatransparenz geht afaik mit dem .NET-Framework nicht. Und falls du bei Version 1 bleiben meintest: Nur die Version 2.0 wird noch weiterentwickelt ;) Kriegt demnächst coole neue Features.
26.12.2008 23:43
Alle Beiträge dieses Benutzers finden Diese Nachricht in einer Antwort zitieren
Alex Offline
Registriert seit 17.04.06

Beiträge: 6.619
Registriert seit: Jul 2008
Beitrag #7
Gadgetengine 2.0
Pac-Man schrieb:  Ich dachte da kommen jetzt alphatransparente Gadgets...
so hättste auch bei VB bleiben können :traurig:

VB.NET = C#.NET :D

den Code kannste ja 1:1 konvertieren ohne irgendnen pieps umschreiben zu müssen

Desktop: AMD FX-6200 @ 6 x 4,3 GHz | 32 GB DDR3 | Intel Arc A380 | SSD: 1 TB @ M.2 to PCIe Adapter + UEFI NVMe Driver Injection | HDD: 15 TB | Win 11 Pro | Dual Monitor 2 x 27"
Notebook: Lenovo ThinkPad T420 | i5 2520M | 16 GB DDR3 | SSD: 250 GB | USB 3.0 | 300 MBit WWAN @ D1 | AC WLAN | BT 4.0 | 2 x 70++ | 1 x 27++ Slice | Win 11 Pro | FHD Display Mod
Internetleitung: Telekom | FTTH | D: 500 MBit / U: 200 MBit | Telekom Glasfasermodem | AVM Fritz!Box 7490
Räder: [Daily: Stevens E-Triton 2016] [Cyclocross: Stevens Prestige 2019] [Cargobike: Urban Arrow Cargo XL 2023]
26.12.2008 23:45
Alle Beiträge dieses Benutzers finden Diese Nachricht in einer Antwort zitieren
huttERic Offline
Yet Another Vostro User

Beiträge: 1.969
Registriert seit: Jul 2008
Beitrag #8
Gadgetengine 2.0
Alex schrieb:  
Pac-Man schrieb:  Ich dachte da kommen jetzt alphatransparente Gadgets...
so hättste auch bei VB bleiben können :traurig:

VB.NET = C#.NET :D

den Code kannste ja 1:1 konvertieren ohne irgendnen pieps umschreiben zu müssen
Genauer: VB.NET = C#. Es gibt nämlich keine non-.NET-Version von C# :P
27.12.2008 00:03
Alle Beiträge dieses Benutzers finden Diese Nachricht in einer Antwort zitieren
Alex Offline
Registriert seit 17.04.06

Beiträge: 6.619
Registriert seit: Jul 2008
Beitrag #9
Gadgetengine 2.0
Gadget-Name: eBay-Gadget
Version: 0.10
Aufgaben: eBay-Auktionen verfolgen
Support: im Thread
Download: eBay-Gadget.gadget.dll | sz13.ath.cx | 38KB
Screenshots:

[Bild: NormaleAuktion.png] [Bild: StandBy.png]
[Bild: Einstellungen.png]
[Bild: Auktion-Beendet.png]


Das Gadget kann auch Sofort Kaufen, Sofort & Neu, Preisvorschlag und kombinierte Auktionen unterscheiden.

Have Fun, Bugs/Requests melden b1

Desktop: AMD FX-6200 @ 6 x 4,3 GHz | 32 GB DDR3 | Intel Arc A380 | SSD: 1 TB @ M.2 to PCIe Adapter + UEFI NVMe Driver Injection | HDD: 15 TB | Win 11 Pro | Dual Monitor 2 x 27"
Notebook: Lenovo ThinkPad T420 | i5 2520M | 16 GB DDR3 | SSD: 250 GB | USB 3.0 | 300 MBit WWAN @ D1 | AC WLAN | BT 4.0 | 2 x 70++ | 1 x 27++ Slice | Win 11 Pro | FHD Display Mod
Internetleitung: Telekom | FTTH | D: 500 MBit / U: 200 MBit | Telekom Glasfasermodem | AVM Fritz!Box 7490
Räder: [Daily: Stevens E-Triton 2016] [Cyclocross: Stevens Prestige 2019] [Cargobike: Urban Arrow Cargo XL 2023]
27.12.2008 00:54
Alle Beiträge dieses Benutzers finden Diese Nachricht in einer Antwort zitieren
huttERic Offline
Yet Another Vostro User

Beiträge: 1.969
Registriert seit: Jul 2008
Beitrag #10
Gadgetengine 2.0
Wunderbar :) Ich hoffe, die Zahl an qualitativ hochwertigen Gadgets (wie z.B. das eBay-Gadget) wächst schnell :)
27.12.2008 01:05
Alle Beiträge dieses Benutzers finden Diese Nachricht in einer Antwort zitieren
Neue Antwort schreiben 


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste