Deutsch
XProfEd - Opensource IDE

Plugin Schnittstelle integrieren

 
Dem Tools im Benutzermenü kann man ja leider nichts übergeben, deshalb dachte ich, diesen entweder erweitern oder was neues zu Integrieren.

Das einfachste scheint mir in Form von EnvironmentVariablen zu sein. Übergeben werden sollten so Dinge, wie aktueller Dateiname, Wort unter Cursor (für HilfePlugins), hWnd des aktuellen Scintillas usw.

Zum veranschaulichen hab ich mal ein Demo-Plugin geschrieben
Dieses Wertet %XPRF_TEST% aus und zeigt es an:
KompilierenMarkierenSeparieren
!
Declare Var$
Var$ = GetEnv$("XPRF_TEST")
cls
print Var$
waitkey

Aufruf von XProFEd würde so aussehen:
KompilierenMarkierenSeparieren
!
Def SetEnv(2) !"Kernel32.dll", "SetEnvironmentVariableA"
SetEnv("XPRF_TEST", "Hallo")
WinExec("test.exe", 1)

Ist jetzt nur ein Primitiv-Beispiel
 
24.09.2006  
 




Michael
Wodrich
Wie fängst Du den Fehler ab, das nicht genug ins Env hineinpaßte und dann kommentarlos abgeschnitten wurde...

Für einfache Übergaben ist es schon schön, aber leider gibt es zu viele Huuuuch, wieso daaaas dennnn.

Da gelten immer noch einige Grenzen aus Uralt-DOS-Zeiten. Das das Env nach dem Programmaufruf entsorgt wird ist im Plugin-Fall eher vorteilhaft.

Sehr viele für und wider bei dieser Art der Übergabe. Aber eine einheitliche Plugin-Schnittstelle brauchen wir wirklich.

Schöne Grüße
Michael Wodrich
 
Programmieren, das spannendste Detektivspiel der Welt.
25.09.2006  
 




RGH
Environment-Variablen halte ich für keine gute Idee. In meinen AUgen sind sie ein Relikt aus DOS-Zeiten. Der Platz ist beschränkt und man weiß nie, ob auf dem aktuellen Rechner noch Platz im Environment vorhanden ist.

Ich habe geplant, das Benutzermenu zu erweitern, so dass dann Kommandozeilenparameter übergeben werden können und es wird dann Tags geben, die z.B. für den aktuellen Dateinamen, die aktuelle Zeilennummer, das aktuelle Wort, etc. gelten sollen. Außerdem soll es ein Flag geben, daß XProfed veranlaßt, nach dem Aufruf des externen Programmes (Plugins) die Datei neu zu laden, etwa wenn sie durch das Programm verändert wurde.

Aber das werde ich sicher erst nach der endgültigen Version XProfan 10 mit XProfed 1.0 für XProfan 10 angehen können ... ansonsten wird XProfan 10 nie fertig. ;)

Gruß
Roland
 
Intel Duo E8400 3,0 GHz / 4 GB RAM / 1000 GB HDD - ATI Radeon HD 4770 512 MB - Windows 7 Home Premium 32Bit - XProfan X4
25.09.2006  
 



Pipe-Unit ^^ also FileMapping.
 
25.09.2006  
 



[quote:f5c7607e98=RGH]Environment-Variablen halte ich für keine gute Idee. In meinen AUgen sind sie ein Relikt aus DOS-Zeiten. Der Platz ist beschränkt und man weiß nie, ob auf dem aktuellen Rechner noch Platz im Environment vorhanden ist.
[/quote:f5c7607e98]Das gilt doch nicht für lokale Environmentvariablen, diese unterstützen sogar UNICODE, wenn mann möchte. Environmentvaraiblen die im Editor gesetzt werden haben ja auch nur Gültigkeit in Anwendungen die dieser startet. Ich glaube hier gibts ein Mißverständnis. Jedenfalls unter Windows ab 2000 sind mir solche Einschränkungen nicht bekannt.
[quote:f5c7607e98=RGH]
Ich habe geplant, das Benutzermenu zu erweitern, so dass dann Kommandozeilenparameter übergeben werden können und es wird dann Tags geben, die z.B. für den aktuellen Dateinamen, die aktuelle Zeilennummer, das aktuelle Wort, etc. gelten sollen. Außerdem soll es ein Flag geben, daß XProfed veranlaßt, nach dem Aufruf des externen Programmes (Plugins) die Datei neu zu laden, etwa wenn sie durch das Programm verändert wurde.

Aber das werde ich sicher erst nach der endgültigen Version XProfan 10 mit XProfed 1.0 für XProfan 10 angehen können ... ansonsten wird XProfan 10 nie fertig. ;)

Gruß
Roland[/quote:f5c7607e98]
Die Lösung sollte auch für die meisten Dinge reichen, war auch nur ein Vorschlag, weils leichter zu händeln ist

// Nachtrag: Obiges Beispiel ist so ausführbar, nur den ersten Source zur test.exe compilieren. Dann sollte man sehen, das weder der Environment des Systems, noch der des Users benutzt wird, sondern nur der innerhalb des Processes (XProEd), sowie der Processe die diese startet. Aber egal, warum einfach wenns auch anders geht
 
25.09.2006  
 




RGH
ich denke die Geschichte mit den Übergabeparametern hat den Vorteil, daß eben auch nicht speziell dafür geschriebene externe Programme eingebunden werden können, etwa z.B. mein BeyondCompare, um die aktuelle Datei mit der letzten Sicherungskopie zu vergleichen, oder meinen Windowscommander mit dem aktuellen Verzeichnis aufzurufen, oder die aktuelle Datei mit einem speziellen Editor aufzurufen, oder die aktuell bearbeitete XPGL-Datei im XPGL-Viewer zu betrachten, .......

Etwas anderes wäre eine Pluginschnittstelle, um Zusatztools zu integrieren, die einmal geladen dann nicht mehr extra aufgerufen werden, sondern im Hintergrund ihren Dienst tun, so wie z.B. ein alternativer Lexer, ein automatischer Code-Verschönerer, etc. Aber das wird dann eher etwas komplexer ...

Aber wie gesagt: Laßt uns erstmal XProfan 10 auf dem Weg bringen.

Gruß
Roland
 
Intel Duo E8400 3,0 GHz / 4 GB RAM / 1000 GB HDD - ATI Radeon HD 4770 512 MB - Windows 7 Home Premium 32Bit - XProfan X4
25.09.2006  
 



Habs mal mit dem bisherigen Benutzermenü getestet, funktioniert ohne jegliche Code-Änderung. Nur im Editor sind die entsprechenden Variablen zu setzen. Umsetzung sollte also in relativ kurzer Zeit möglich sein. Die andere Möglichkeit kann ja später zusätzlich eingebaut werden.

Am Lösungsvorschlag von iF stört mich, das man entweder die pipe.pcu benutzen muß, bzw. dieses Filemapping selbst hinzufügen muß, was ja nicht ganz so einfach für jeden ist.
 
25.09.2006  
 



Nuja stimmt schon, dennoch bietet die Unit viele Vorteile besonders im Bezug darauf das die Programmteile bidirektional miteinander kommunizieren können ohne sich um das Aufrechterhalten einer Verbindung kümmern zu müssen. Den Source der Unit kann ich ja bei Roland hinterlegen - zudem da nix sensationell oder geheim ist.

Ich kann ja mal - wenn Interesse besteht - ein Beispiel hierfür posten.
 
25.09.2006  
 




RGH
[quote:4fef0e8c6d=TS-Soft]Nur im Editor sind die entsprechenden Variablen zu setzen. Umsetzung sollte also in relativ kurzer Zeit möglich sein.[/quote:4fef0e8c6d]
Ok, überzeugt! ;)

In der nächsten Version ist es drin. In der Kommandozeile gibt es folgende Variablen:
KompilierenMarkierenSeparieren
Mit folgendem Kommando würde also Windows Notepad mit der aktuellen Datei geladen werden:
KompilierenMarkierenSeparieren
!
notepad exe ":D" :!

Die Anführungszeichen stehen hier, damit es auch mit Leer- und Sonderzeichen im Pfad klappt.
Notepad wird mit der aktuellen Datei, die zuvor gespeichert wird, gestartet. Dann kann man im Notepad die Datei verändern und speichern. Nach dem Beenden von Notepad kann man die veränderte Datei im Profed weiterbearbeiten. (Notepad muß natürlich erst beendet werden, sonst gehts im Profed nicht weiter. Ohne :! geht es nach dem Starten des Kommandos natürlich sofort weiter.)

Gruß
Roland
 
Intel Duo E8400 3,0 GHz / 4 GB RAM / 1000 GB HDD - ATI Radeon HD 4770 512 MB - Windows 7 Home Premium 32Bit - XProfan X4
25.09.2006  
 



Die Lösung von Roland sollte auf jedenfall mal umgesetzt werden, vor allem auch für Fremdtools.

Die Lösung per FileMapping hatte ich für XPrfEdit (also alte Version) ja auch benutzt. Jetzt kommts eigentlich mehr drauf an, werden die Featers dieser Unit benötigt und kann jeder damit Umgehen?

Mit Environmentvariablen ist die Umsetzung die einfachste, jeder Profaner kommt mit GetEnv$ klar, bzw. sollte es

In XProfEd gesetzte Umgebungsvariablen werden auf jedenfall an das Benutzermenü weitervererbt, und auch an die von dort aufgerufenen Tools. Ohne jeglich Änderung, habs extra getestet.

Eine alternative zu Rolands Vorschlag sollte auf jedenfall implementiert werden, weil diese Tools dann auch wesentlich einfacher zu Konfigurieren sind, für den NUR Nutzer.

Einigen sollten wir uns schon irgendwie, will die Addons nicht nur für mich schreiben

// Nachtrag: Hat sich mit Rolands-Posting überschnitten
 
25.09.2006  
 



Aktuell interessieren würde mich das aktuelle Wort unter dem Cursor, möchte nämlich den H2Viewer als Hilfe aufrufen, also Plattform SDK kontextsensitiv, arbeite nunmal viel mit API
 
25.09.2006  
 



Richtig - und in diesem Zusammenhang auch die Selektierung, wobei es hier reichen würde zwei Longs zu übergeben, start -> ende.

Schliesslich will man vielleicht nicht immer ein PlugIn auf den kompletten Source, sondern nur auf einen Teil anwenden.

Und um es komplett zu machen auch die Zeilennummer, und die Cursorposition XY.
 
25.09.2006  
 




Antworten


Thementitel, max. 100 Zeichen.
 

Systemprofile:

Kein Systemprofil angelegt. [anlegen]

XProfan:

 Beitrag  Schrift  Smilies  ▼ 

Bitte anmelden um einen Beitrag zu verfassen.
 

Themenoptionen

3.705 Betrachtungen

Unbenanntvor 0 min.
Peter Max Müller26.08.2013
Roland Schroeter23.02.2013

Themeninformationen



Admins  |  AGB  |  Anwendungen  |  Autoren  |  Chat  |  Datenschutz  |  Download  |  Eingangshalle  |  Hilfe  |  Händlerportal  |  Impressum  |  Mart  |  Schnittstellen  |  SDK  |  Services  |  Spiele  |  Suche  |  Support

Ein Projekt aller XProfaner, die es gibt!


Mein XProfan
Private Nachrichten
Eigenes Ablageforum
Themen-Merkliste
Eigene Beiträge
Eigene Themen
Zwischenablage
Abmelden
 Deutsch English Français Español Italia
Übersetzungen

Datenschutz


Wir verwenden Cookies nur als Session-Cookies wegen der technischen Notwendigkeit und bei uns gibt es keine Cookies von Drittanbietern.

Wenn du hier auf unsere Webseite klickst oder navigierst, stimmst du unserer Erfassung von Informationen in unseren Cookies auf XProfan.Net zu.

Weitere Informationen zu unseren Cookies und dazu, wie du die Kontrolle darüber behältst, findest du in unserer nachfolgenden Datenschutzerklärung.


einverstandenDatenschutzerklärung
Ich möchte keinen Cookie