Einzelnen Beitrag anzeigen

Benutzerbild von xZise
xZise

Registriert seit: 3. Mär 2006
Ort: Waldbronn
4.303 Beiträge
 
Delphi 2009 Professional
 
#95

Re: PlainEdit 1.7 - Texteditor für Windows

  Alt 1. Jan 2008, 16:41
Zitat von schöni:
[...]Mir fiel als erstes die Möglichkeit auf, dessen Funktionalität durch Plugins an eigene Bedürfnisse anzupassen. Leider hast Du kein Beispiel dazugepackt, das zeigt, wie das geht. Der Dialog zur Plugin Verwaltung ist einfach leer und ich kann auch kein Plugin installieren.[...]
Ich z.B. habe ein Update Plugin für PlainEdit und DevProject Manager geschrieben, was aufgrund der Ähnlichkeiten zwischen den APIs sher einfach realisieren lässt.

Zitat von schöni:
Ist ein Plugin ne Dll mit der gewünschten Funktionalität?
Jap Nur mit der Endung .plg...

Zitat von schöni:
Wie sieht die Schnittstelle aus, an die ich mich haltenmuss?
Direktlink

Zitat von schöni:
Kann das Menü mittels Plugin's erweitert werden, um die hinzugefügten Funktionen per Menü aufzurufen?
Ich habe sogar durchgesetzt Untermenüs zu verwenden xD

Zitat von schöni:
Wenn doch, brauch ich dataillierte Infos über die Schnittstelle.
Aus der Plugin API von PlainEdit:
Delphi-Quellcode:
function PEP_GetInfo(InfoId: DWord; var Data: WideString): DWord; stdcall;
begin
  case InfoId of
    PEP_GI_NAME: Data := 'MyPlugin'; // Name des Plugins
    PEP_GI_VERSION: Data := '1.0.0.0'; // Versionsnummer des Plugins
    PEP_GI_MENUTEXT: Data := 'MyPlugin ausführen...'; // Menütext
    PEP_GI_SUBMENUS: Data := 'Item1'#13#10'Item2'#13#10'Item3';
  else
    Data := '';
  end;
  Result := Length(Data);
end;
Die Funktion PEP_GetInfo wird vom Programm nach dem Laden des Plugins aufgerufen, um Informationen über das Plugin abzufragen. Dabei wird im Parameter InfoId eine ID-Nummer übergeben, die die angeforderte Information bezeichnet. Im Parameter Data werden die angeforderten Informationen zurückgegeben. Als Rückgabewert dieser Funktion sollte eine Zahl ungleich 0 übergeben werden, wenn das Plugin die InfoId erkannt hat und Daten zurückgegeben hat. Anderenfalls muss 0 übergeben werden.

Die möglichen Werte für InfoId sind:

PEP_GI_NAME Der Name des Plugins wird angefordert.

PEP_GI_VERSION Die Versionsnummer des Plugins wird angefordert.

PEP_GI_MENUTEXT Der Text, der im Menü "Plugins" erscheinen soll wird angefordert.

PEP_GI_SUBMENUS Es werden die Namen der Untermenüs angefordert.

Existiert diese Funktion nicht, wird das Plugin nicht geladen.

Sollen Untermenüs angezeigt werden um mehrere unterschiedliche Funktionen aufrufen zu können, müssen die Namen der Untermenüs, getrennt mit Zeilenumbrüchen ("#13#10" bzw. "\r\n") übergeben werden.


Delphi-Quellcode:
function PEP_GetMenuItemHandlers(): DWord; stdcall;
begin
  Result := PEP_GMIH_DOCAVAIL;
end;
Der Rückgabewert der Funktion "PEP_GetMenuItemHandlers" gibt an, wann ein Plugin im Menü verfügbar sein soll. Diese Funktion wird nur aufgerufen, sofern die Funktion "DPMP_MenuItem" exportiert wird.

Als Rückgabe werden einer oder mehrere der folgenden Werte erwartet:

PEP_GMIH_DOCAVAIL Das Plugin wird nur angezeigt, wenn ein Dokument geladen ist.

PEP_GMIH_NODOCAVAIL Das Plugin wird nur angezeigt, wenn kein Dokument geladen ist.

PEP_GMIH_ALL Das Plugin ist immer im Menü verfügbar.


In dem SDK ist zwar kein Beispiel, aber die Vorlage dazu ist richtig gut
Besonders, weil die Funktion fast sofort klar ist Ansonsten einfach Gaijin fragen ^^

MfG
xZise

PS: Ich weiß ich nerve, aber wie lange könnte die Implementation der einzelnenen Pluginpunkte dauern?
Fabian
Eigentlich hat MS Windows ab Vista den Hang zur Selbstzerstörung abgewöhnt – mkinzler
  Mit Zitat antworten Zitat