Seite 3 von 4

Re: Werkzeug-Wünsche für PureBasic/SpiderBasic

Verfasst: 25.06.2019 00:14
von Josh
RSBasic hat geschrieben:Nur frage ich mich, wenn ich es eh in einem separaten Fenster bereitstellen kann, dann könnte man auch zwei PB-IDEs gleichzeitig nebeneinander laufen lassen oder? Oder gibt es einen Nachteil?
Das hat folgende Nachteile:
  • Mit dem Splitter kann man die Codeausschnitte schön untereinander sehen, was bei einem zweiten Fenster nicht der Fall ist.
  • Mit dem Splitter ändert sich der Code im zweiten SCI Fenster automatisch mit, da beide mit dem gleichen Dokumenten Zeiger arbeiten.
  • Zwei Ide's mit dem gleichen Quelltext zu öffnen ist eine Schuss ins eigene Knie (mach ich trotzdem auch öfter mal :). Da machst die ganzen Änderungen in der einen Ide, speicherst, schließt die Ide und aus irgendeinen blöden Grund speicherst du dann aus der zweiten Ide noch mal. Alles futsch :(
Glaube auch nicht, dass das so einfach zu verwirklichen ist, da der Splitter, soweit ich weiß, keine Funktion von SCI ist. Wünschen würde ich mir es trotzdem :D

Re: Werkzeug-Wünsche für PureBasic/SpiderBasic

Verfasst: 25.06.2019 10:24
von Kurzer
Moin RSBasic,

sorry, ich meinen den Rechner gestern auf Energiesparen geschaltet statt herunterzufahren, von daher war ich vermutlich im DiscordChat noch als angemeldet angezeigt worden. Ich habe deine Nachricht in Discord daher nicht ignoriert, ich war schlicht nicht mehr am Rechner. :oops:

Wegen des Splitviews: Ja, das hattest Du oder jemand anderes schon mal erwähnt, dass es nicht geht sich so tief in die IDE zu hacken, dass man dort ein Splitter Gadget installieren könnte.

Mir fallen dazu folgenden Überlegungen ein:

1) Du hast ja in Deinem Multicolor Prozedur List Tool bereits einen Tab im Werkzeugpanel vom PB "hijacken" können. Wäre es denkbar das zweite Scintilla Gadget in das Panel zu legen in dem die IDE eigene Debugausgabe liegt? Also direkt unter dem jetzigen Scintillagadget des Editors. Evtl. kannst Du dort auch eine Buttonleiste platzieren, mit der man zwischen Debugausgabe und Splitview umschalten kann?

Bild

2) Eine andere Möglichkeit wäre ein borderless Window, welches sich exakt über der unteren Hälfte des PB eigenen ScintillaGadgets platziert. Dies würde allerdings voraussetzen, dass Du in der Lage bist die Höhe des PB eigenen Scintillagadgets zu verkleinern, so dass das Gadget nur noch bis zum Anfang deiner Overlay-Fensters reicht.

Bei genauer Überlegung wird es hier aber vermutlich Fokusprobleme mit der IDE geben. Wenn Dein Fenster den Fokus hat, dann hat die IDE ihn nicht. Kurz mal F5 zum compilieren drücken wird dann nicht funktionieren. Hmmm.

Bild

Gruß Kurzer

Re: Werkzeug-Wünsche für PureBasic/SpiderBasic

Verfasst: 25.06.2019 11:29
von RSBasic
Hi Kurzer,

danke für deine Vorschläge. Ich werde heute Abend mal schauen, prüfen und testen, was ich machen kann.

Re: Werkzeug-Wünsche für PureBasic/SpiderBasic

Verfasst: 25.06.2019 12:07
von Kurzer
Supi.

Die Höhe des PB eigenen Scintillas zu verändern geht zumindest Nebenwirkungsfrei.
Ich habe das gerade mal mit dem WinSpy Tool getestet:

Bild

Re: Werkzeug-Wünsche für PureBasic/SpiderBasic

Verfasst: 25.06.2019 12:12
von RSBasic
Was passiert, wenn du den Tab wechselst oder die Fenstergröße änderst oder die Splitter-Leiste benutzt? Ich glaube, spätestens dann wird die ScintillaGadget-Größe resetet.
Das müsste mein Tool dann abfragen und die Größe automatisch neu setzen.

Re: Werkzeug-Wünsche für PureBasic/SpiderBasic

Verfasst: 25.06.2019 13:33
von Kurzer
Ja, das stimmt. Sobald Du den Tab wechselst oder die Fenstergröße änderst oder den Splitter unten bewegst, wird das Scintillagadget wieder angepasst. Das könnte ne flackerige Angelegenheit werden. Wirklich zu schade, dass Fred das nicht nativ einbaut.

Aber mal sehen, bei manchen Dingen kam es dann ja doch klammheimlich, nachdem einige User sich Behelfslösungen gebaut hatten. Siehe z.B. BindEvent(). Da haben sich einige vorher auch diverse Eventmanager programmiert (mich eingeschlossen) und irgendwann *plopp* gabs dann BindEvent() nativ. <)

Re: Werkzeug-Wünsche für PureBasic/SpiderBasic

Verfasst: 27.06.2019 17:01
von RSBasic
Hi Kurzer,

ich habe angefangen, das Projekt "SplitView" umzusetzen und ist inzwischen größtenteils fertig und es sieht derzeit so aus:
Bild

Grundsätzlich funktioniert es ganz gut und besser, als ich dachte. Man kann es jederzeit verkleinern und vergrößern.
ScintillaGadget inkl. Syntax Highlighting mit den PB-Farben bzw. aus den PB-Einstellungsdatei ist fertig vorbereitet.

Das einzige, was noch fehlt, ist die Implementierung des ScintillaGadgets, was grundsätzlich kein Problem ist, aber ich habe leider was festgestellt.
Ich wollte gerade #SCI_GETDOCPOINTER und #SCI_SETDOCPOINTER benutzen, aber es funktioniert nicht mit fremden Prozessen.
Wenn man zwei ScintillaGadgets auf einem eigenen Fenster hat, dann kann man den DocPointer problemlos ermitteln und setzen, aber wenn ich versuche, den DocPointer von PB auf mein ScintillaGadget zu setzen, dann stürzt mein Werkzeug ohne Fehler ab. Ich bekomme nur die Fehlermeldung "Das mit dem Debugger getestete Executable endete unerwartet", mehr nicht. :evil:
Wenn ich da keine Lösung finde, siehts schlecht aus. Die einzige Alternative wäre, wenn ich den Quellcode manuell ermittle und dort einfüge und mit dem PB-ScintillaGadget manuell syncronisiere, aber die saubere und direkte Lösung wäre schon SCI_SETDOCPOINTER.
Hat jemand von euch eine Idee?

Re: Werkzeug-Wünsche für PureBasic/SpiderBasic

Verfasst: 27.06.2019 19:43
von RSBasic
Ich habe jetzt einen Thread im englischen Forum erstellt: https://www.purebasic.fr/english/viewto ... 0&p=538501
Ich hoffe, jemand kann mir helfen.
Sonst kann ich höchstens nur so machen, dass ich den Quellcode ermittle und im zweiten ScintillaGadget einfüge und auf ReadOnly setze. Es wäre natürlich cool, wenn #SCI_SETDOCPOINTER funktionieren könnte, denn dann wärs perfekt.

Re: Werkzeug-Wünsche für PureBasic/SpiderBasic

Verfasst: 28.06.2019 06:29
von Kurzer
Moin RSBasic,
ich habe den englischen Thread gesehen. Schade, dass das mit dem DOC-Pointer nicht prozessübergreifend funktioniert.

Mit persönlich würde ein ReadOnly-Gadget reichen (ich hoffe, dass man das in Scintilla so einstellen kann, damit man nicht versehentlich in deinem Gadget zu tippen anfängt). Du musst auch keine Klimmzüge machen, um festzustellen, ob sich der Code im PB eigenen Scintilla verändert hat. Ein simpler "Update" Button würde reichen, der den Code in deinem Scintilla Gadget aktualisiert.

Re: Werkzeug-Wünsche für PureBasic/SpiderBasic

Verfasst: 28.06.2019 12:53
von RSBasic
Es gibt Neuigkeiten.
Der User #NULL hat im englischen Forum eine Idee gepostet.
Seine Idee war, dass man ein ScintillaGadget aus einem neuen Tab nimmt und dieses für die SplitView missbraucht.
Das habe ich ausprobiert und es funktioniert gut:
Bild

Jetzt muss ich nur schauen, wie ich im PB-Prozess ein neues ScintillaGadget erstelle oder einen neuen Tab erstelle und verstecke. Auf die Tableiste habe ich mit WinAPI keinen Zugriff, weil das selbstgezeichnet ist. (CanvasGadget)
Vielleicht gibt es eine Möglichkeit, eine interne Funktion/Prozedur im PB-Prozess auszuführen, um ein neues ScintillaGadget zu erstellen.
Wenn ich keine Möglichkeit finde, ein ScintillaGadget erstellen zu lassen, dann kann ich alternativ den Menü-Eintrag (Datei > Neu) simulieren. Muss ich mal schauen.
Wenn das alles nicht geht, dann kann ich nur so machen, dass der User selber einen Tab öffnet, der dann für SplitView verwendet wird.
Oder dafür sorgen, dass beim PB-Start immer eine spezielle PB-Datei aus meinem Werkzeug-Ordner geladen wird.