Deutsch
IDEs/ Entwicklungsumgebungen

XProfed SE

 

Sven
Bader
Auf Basis von Rolands Open Source XProfEd  [...]  habe ich eine an meine Bedürfnisse angepasste Version erstellt, welche ich im Sinne des Open-Source-Gedankens auch wieder zur Verfügung stellen möchte.

Herunterladen


Neue Funktionen in der SE-Version

  • Parallelbetrieb von bis zu 10 Profan/XProfan Versionen, 1-Klick Wechsel der Version
  • Profan2Cpp Integration
  • Darkmode und erweitertes Syntaxhighlighting
  • Integration von WinMerge, um Quelltexte zu vergleichen (Auswahl oder Dateien)
  • Umfangreiche Versionierung/Sicherung von Quelltexten
  • Verbesserte Tabs mit Icons und Schließen-Button
  • Codeformatierung
  • Ein-/Ausrücken, Ein-Auskommentieren und Codeformatierung mit einem Undo-Schritt
  • Suchen und Ersetzen auch von Zeilenumbrüchen und Tabs
  • Suchfeld in der Toolbar
  • Suche automatisch in beide Richtungen
  • Per Strg+Klick auf eine Funktion springt man direkt zum entsprechenden Proc oder Def
  • Übersetzung von OpenGL Befehlen aus C++
  • Farbkonvertierungen per Rechtsklickmenü
  • Datei-Öffnen Menü zeigt direkt alle kompatiblen Dateien
  • Live-Syntaxhilfe in der Statusleiste
  • Farbvorschau in der Statusleiste
  • Sprung zur letzten Position mit Strg+B
  • F5 als Hotkey zur Aktualisierung der Navigation
  • Navigationsspalte per Drag&Drop vergrößerbar
  • Header-Dateien in Navigationsspalte öffnen auf Klick
  • Kommentare für mehrere Zeilen setzen und entfernen






Bugfixes am Originalcode

  • "Ausrücken" hat irgendwann den Code vorne gelöscht
  • GetLine$-Funktion lieferte teilweise das letzte Zeichen nicht
  • Performance Verbesserungen

97 kB
Hochgeladen:17.08.2021
Ladeanzahl91
Herunterladen
42 kB
Hochgeladen:17.08.2021
Ladeanzahl102
Herunterladen
32 kB
Hochgeladen:17.08.2021
Ladeanzahl89
Herunterladen
39 kB
Hochgeladen:17.08.2021
Ladeanzahl100
Herunterladen
39 kB
Hochgeladen:17.08.2021
Ladeanzahl78
Herunterladen
30 kB
Hochgeladen:17.08.2021
Ladeanzahl76
Herunterladen
8 kB
Hochgeladen:17.08.2021
Ladeanzahl85
Herunterladen
1.943 kB
Bezeichnung:XProfed SE
Version:SE 2.0.3
Hochgeladen:17.08.2021
Ladeanzahl192
Herunterladen
 
17.08.2021  
 




p.specht

Sehr löblich!
 
XProfan 11
Computer: Gerät, daß es in Mikrosekunden erlaubt, 50.000 Fehler zu machen, zB 'daß' statt 'das'...
17.08.2021  
 




Sven
Bader
Neu in Version 1.02:

1. Umschalten von XProfan Versionen
Man kann recht schnell zwischen zwei Versionen hin und her schalten und hat hierzu jeweils einen Indikator in der Toolbar.



Ja, mein X4 Installationspfad ist merkwürdig

2. Integration von Profan2Cpp:
Beim drücken von F6 wird das korrekte Profan2Cpp Projekt geöffnet, compiliert und gestartet. Voraussetzung ist lediglich eine .p2c - Projektdatei mit gleichem Namen wie die .prf. Der Projektname innerhalb der Datei sollte auch identisch sein. Die Sache ist über virtuelle Mausklicks im P2C-Fenster gelöst also Hände von der Maus nach dem Drücken von F6

Hier noch ein Beispiel wie man die compilierte Datei automatisch ausführen kann. Da ich sie auch noch in den Projektordner kopiere muss ich den Austausch der Ressourcen noch vorab forcieren.



Das Batch-Skript tum Copy & Pasten:
%RunPlugins% ResXChange
copy %PN%.exe  .. /Y
cd..
%PN%.exe

3. Kommentare von markierten Zeilen entfernen und hinzufügen, auch über Hotkeys. In alten Profan Versionen (oder wenn man Profan2Cpp verwendet) gibt es ja die /* */-Kommentare noch nicht. Die Funktion ist recht robust und löscht nicht weiter, falls keine Hochkommas vorhanden sind.

4. Die Farbgebung des Standard Farbschemas (hell) habe ich etwas überarbeitet.

5. Ordner automatisch wechseln.
Beim Öffnen einer Datei oder Wechseln eines Tabs, wird jeweils das Arbeitsverzeichnis mit geändert, sodass bei Verwendung des Öffnen Dialogs der korrekte Ordner vorgewählt ist. Zudem lässt sich per Strg+Alt+E das jeweilige Verzeichnis einer geöffneten Datei im Explorer öffnen.

6. Unerwünschte Hotkeys blockiert.
Mit passiert es bei Vertippern gelegentlich, dass unerwünschte Steuerzeichen im Quelltext liegen, da es hierzu Editor Hotkeys gibt, diese überlagere ich (Strg+N, P, Q) Strg+E habe ich vergessen, kommt im nächsten Build.

7. Zur letzten Position springen, die man bearbeitet hat
Hierfür habe ich den Hotkey Strg+B eingeführt

8. Sprung zur angeklickten Funktion
Per Strg+Klick wird automatisch zum entsprechenden Proc oder Def gesprungen, sofern diese in der gleichen Datei sind.

9. Bugfixes
Ich habe nicht alle Fixes dokumentiert aber an der Quelltextformatierung z.B. bin ich eigentlich immer wieder mal dran und vermutlich habe ich den Liste hier sogar Features unterschlagen

66 kB
Hochgeladen:28.09.2021
Ladeanzahl36
Herunterladen
134 kB
Hochgeladen:28.09.2021
Ladeanzahl41
Herunterladen
 
28.09.2021  
 




Georg
Teles
Sehr sehr gut endlich kann ich alle Compiler in ein ProfED Verzeichnis zusammenlegen

Sven Bader (28.09.2021)
Ja, mein X4 Installationspfad ist merkwürdig


zumindest hast du keine 5 Editoren

Zeile 2767 ( ShowToolbar(0) ) sollte vllt zur Zeile 2910 verschoben werden
Das Hauptfenster ist da noch nicht sichtbar, sodass der Suchbutton der Toolbar ganz link erscheint, oder ist es nur bei mir so ?

Grüße
 
TC-Programming [...] 
XProfan 8.0 - 10.0 - X2 - X3 - X4

07.11.2021  
 




Georg
Teles
Kleiner Nachtrag:
Ab der Zeile 2316 müsste 6 Mal ein + "\\" + zwischen AppData und ProgSprache abgeändert werden

(Zeile 2316 bis einschließlich Zeile 2335 angepasst folgen
'$IFDEF VER14.0
RegKlasse$ = $AppDataDir + "\\" + ProgSprache$ + "\\" + pp$ + "\\" + ProgName$ + ".cfg"
' Falls neue Konfigurationsdatei noch nicht existiert, alte Datei an neue Stelle kopieren

IfNot FileExists(RegKlasse$)' Cfg-Datei ist noch nicht im AppData-Verzeichnis

    IfNot DirExists($AppDataDir + "\\" + ProgSprache$ + "\\" + pp$ )' ggf. Verzeichnis anlegen

        MkDir $AppDataDir + "\\" + ProgSprache$ + "\\" + pp$

    EndIf

EndIf

'$ELSE
Def AppData(0) ReadIni$("HKEY_1", "Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\Shell Folders", "AppData")
RegKlasse$ =  AppData() + "\\" + ProgSprache$ + "\\" + pp$ + "\\" + ProgName$ + ".cfg"
' Falls neue Konfigurationsdatei noch nicht existiert, alte Datei an neue Stelle kopieren

IfNot FileExists(RegKlasse$)' Cfg-Datei ist noch nicht im AppData-Verzeichnis

    IfNot DirExists( AppData() + "\\" +  ProgSprache$ + "\\" + pp$ )' ggf. Verzeichnis anlegen

        MkDir  AppData() + "\\" +  ProgSprache$ + "\\" + pp$

    EndIf

EndIf

'$ENDIF

Sonst wird ein Verzeichnis ...\Users\ <User> \ AppData\RoamingXProfan neu angelegt statt im Verzeichnis \AppData\Roaming\XProfan\... gespeichert

Grüße
 
XProfan X2
TC-Programming [...] 
XProfan 8.0 - 10.0 - X2 - X3 - X4

07.11.2021  
 




Sven
Bader
Danke für den Feedback, Georg!

Mit den Pfaden hast du recht, in der $AppDataDir schient schon ein Backslash drinnen zu sein aber bei AppData() fehlte er. Das hatte sicher für das ein oder andere Durcheinander gesorgt.

Mit dem Suchbutton hatte ich kein Problem aber es mag an der Stelle zeitkritisch zu sein, deine Lösung sollte also helfen
Ich hatte eine Weile gebraucht, die Suche dort unterzubringen, ohne das sie wieder verschwindet, die Lösung hier war SetParent()

Bei mit stürzt der Editor alle 1-2 Stunden ab, das Fenster wird nicht neu gezeichnet und das Syntax-Highlighting reagiert nicht mehr. Leider kam ich noch nicht dahinter, ob es nur an der Zeit liegt oder an bestimmten Nutzungsverhalten. Die Fehlersuche gestaltet sich hier schwierig, evtl hast du eine Idee, wie man das Debuggen kann. Sei auf jeden Fall gewarnt, und mache ein Backup deiner Quelltexte, an denen du arbeitest.
 
07.11.2021  
 




Georg
Teles
Ahja genau

ich schaue es mir genau an, ob bei mir das gleiche Phänomen nach 1-2 h auftritt
Die Suchfunktion ist auf jeden Fall sehr hilfreich muss ich sagen

Config habe ich hier mal hochgeladen mit deinen Farbeinstellungen, die Pfade (Include, X4 und Alternative) müssten nur angepasst werden

Herunterladen

(kopieren nach: ...\Users\<USER>\AppData\Roaming\XProfan\Verzeichnis_trägt_PFAD_zum_XProfEDSE)

Grüße

2 kB
Hochgeladen:13.11.2021
Ladeanzahl105
Herunterladen
 
XProfan X2
TC-Programming [...] 
XProfan 8.0 - 10.0 - X2 - X3 - X4

13.11.2021  
 




Sven
Bader
Super, danke!

Meinst du mit der Suchfunktion die Schnellsuche in der Toolbar oder die Möglichkeit, Zeilenumbrüche zu ersetzen?

Was ich auch noch nicht ganz durchschaue, ist das Verbiegen der Pfade in Interpreter und fertigem Programm bzw warum im Interpreter das Syntax-Hightlighting gar nicht geht.
 
13.11.2021  
 




Sven
Bader
Eine neue Version ist online, hauptsächlich sind es Bugfixes:
-Pfad zum Speichern der Einstellungen war teilweise nicht korrekt
-Codeformatierung für ASM / ENDASM
-Prüfung auch auf ausgewogene eckige Klammern
-Klammernausgewogenheit ignorieren, wenn Zeile auf \ endet
-Upper/Lower und Hex-Umwandlung per Kontextmenü
-"Andere Tabs schließen"
-Funktionen und Codesnippets per Kontextmenü, vorerst Stringfunktionen und Profan2CPP-Direktiven
-Include-Dateien aus dem Treeview auch klickbar, wenn zuletzt eine Datei in einem anderen Pfad geöffnet wurde
-Markiertes Wort in der Suche
-Mehrfaches Öffnen einer Datei nicht mehr möglich, stattdessen wird der Tab gewechselt
 
07.03.2023  
 




Sven
Bader
So, nun macht die Arbeit mit XProfed SE richtig Spaß:

Neu in Version 2.0

-Icons auf Tabs
-Schließen-Button für Tabs
-Parallele Konfiguration für bis zu 10 Profanversionen inkl. Profan2Cpp via aP2CCOMP
-1-Klick Wechsel des Compilers über die Toolbar
-Hilfe zu eigenen Procs: Anzeige der Parameter in der Statusbar
-Menüpunkte: Hilfe von für XProfan11, X2, X3, Profan2CPP falls vorhanden
-Visuelle Verbesserungen (Cursor im Darkmode, Farbe der Auswahl)
-Schnellere Codeformatierung
-Verbesserter und deutlich schnellerer Aufbau der Navigation (Treeview und Liste)
-Integration von WinMerge um Quelltexte zu vergleichen, Auswahl oder ganze Dateien
-Umfangreiche Versionierung/Sicherung von Quelltexten
-Verbessertes Undo-Verhalten für Codeformatierung, Ein/Ausrücken etc nur noch ein Undo-Schritt
-Bugfixes
-Weitere kleine Verbesserungen
 
17.03.2023  
 




Georg
Teles
Sehr sehr nice

habe Vorschläge zur Fenstergröße / -positionierung bei nicht gewünschten Werten oder Bildschirmen, die es z.B. nicht mehr gibt (z.B. auf einem externen Monitor gearbeitet dann abgeklemmt und Programm gestartet).

Defs nach Headereinbindung:
Def GetMonitorInfoA(2)!"USER32","GetMonitorInfoA"
Def MonitorFromWindow(2)!"USER32","MonitorFromWindow"

Bildschirmdaten lesen, auf dem das hWnd gestartet wurde und KorrekturProc:
'{ Monitor Zusatz:
' -------------------
Declare rcMonitor#,rcWork#,mon#
Struct MONITORINFO = cbSize&,rcMonitor#(16),rcWork#(16),dwFlags&
Struct RECT = left&,top&,right&,bottom&
Dim rcMonitor#,RECT
Dim rcWork#,RECT
Dim mon#,MONITORINFO
mon#.cbSize& = SizeOf(mon#)
'}

Proc mbm

    Declare mpos#,x1&,y1&,wix&,wiy&
    Dim mpos#,8
    GetCursorPos(mpos#)
    wix& = %winLeft - long(mpos#,0)
    wiy& = %winTop - long(mpos#,4)
    GetMonitorInfoA(MonitorFromWindow(%HWnd,2),mon#)
    GetCursorPos(mpos#)
    x1&=(long(mpos#,0)+wix&)
    case x1&<Long(mon#,20):x1&=Long(mon#,20)
    case x1&>Long(mon#,28)-(%winRight - %winLeft):x1&=Long(mon#,28)-(%winRight - %winLeft)
    y1&=(long(mpos#,4)+wiy&)
    case y1&<Long(mon#,24):y1&=Long(mon#,24)
    case y1&>Long(mon#,32)-(%winBottom - %winTop):y1&=Long(mon#,32)-(%winBottom - %winTop)
    setWindowPos %hWnd=x1&,y1& - (%winRight - %winLeft),(%winBottom - %winTop);0
    SetFocus(%HWnd)
    Dispose mpos#

EndProc


Ab Zeile 572 im Original Programmende, ungewollte Fensterzustände auskommentieren, da die Proc mbm dies übernimmt und DisPose mon#:
Proc ProgrammEnde

    '----------------
    Declare Dateien$, PE_X&, PE_Y&, PE_DX&, PE_DY&
    Geändert(1, 0)
    ShowWindow(%hWnd,0)
    Set("Decimals",0)

    If ~IsZoomed(%hWnd)

        WriteIni RegKlasse$,RegPfad$,"MAX"  = 1

    Else

        WriteIni RegKlasse$,RegPfad$,"MAX"  = 0

    EndIf

    ' Auslesen der Normalen Fenstergröße
    PE_X&  = gWindowData(0)
    PE_Y&  = gWindowData(1)
    PE_DX& = gWindowData(2)
    PE_DY& = gWindowData(3)
    ' Ungewollte Fensterzustände ausfiltern
    'Case ((PE_X& < 0) Or (PE_X& > %MaxX)):PE_X& = %MaxX / 20
    'Case ((PE_Y& < 0) Or (PE_Y& > %MaxY)):PE_Y& = %MaxY / 20
    'Case ((PE_DX& < 540) Or ((PE_DX& + PE_X&) > %MaxX)) : PE_DX& = %MaxX - %MaxX / 10
    'Case ((PE_DY& < 380) Or ((PE_DY& + PE_Y&) > %MaxY)) : PE_DY& = %MaxY - %MaxY / 10
    ' FensterStatus sichern
    WriteIni RegKlasse$,RegPfad$,"X"   = PE_X&
    WriteIni RegKlasse$,RegPfad$,"Y"   = PE_Y&
    WriteIni RegKlasse$,RegPfad$,"DX"  = PE_DX&
    WriteIni RegKlasse$,RegPfad$,"DY"  = PE_DY&
    Dateien$ = ""

    WhileLoop 0,MaxTab%

        Case Datei$[&loop] > "" : Dateien$ = Dateien$ + Datei$[&loop] + ";"

    EndWhile

    WriteIni RegKlasse$,RegPfad$,"Dateien" = Dateien$
    LDat#.SaveList()
    ' Aufräumen
    Edit#[0].Destroy()
    Dispose Edit#[]
    Dispose LDat#
    Dispose mon#
    DeleteObject DFont&
    FreeDLL seDll&

EndProc


Ab Zeile 3147 im Original, DX & DY eventuell fixe Mindestgröße geben (hier x=500 y=400), habe z.B. 32:9 Bildschirm, da geht das Fenster bis 3.456 px in der horizontale ... X% und Y% ignorieren, da mit der Proc mbm die Position automatisch korrigiert wird.
' Fenster erstellen
' -----------------
Set("ErrorLevel",0)' Warnungen beim ersten Programmstart ausblenden
X$  = ReadIni$(RegKlasse$,RegPfad$,"X")
X%  = Val(X$)
'Case (%Error > 0) or (X$ = "") or (X% < 0) or (X% > 32767) : X% = %MaxX / 20
Y$  = ReadIni$(RegKlasse$,RegPfad$,"Y")
Y%  = Val(Y$)
'Case (%Error > 0) or (Y$ = "") or (Y% < 0) or (Y% > 32767) : Y% = %MaxY / 20
DX% = Val(ReadIni$(RegKlasse$,RegPfad$,"DX"))
Case (%Error > 0) or (DX% < 500) or (DX% > 32767) : DX% = 500'%MaxX - %MaxX / 10
DY% = Val(ReadIni$(RegKlasse$,RegPfad$,"DY"))
Case (%Error > 0) or (DY% < 400) or (DY% > 32767) : DY% = 400'%MaxY - %MaxY / 10
Max% = Val(ReadIni$(RegKlasse$,RegPfad$,"MAX"))
Case (%Error > 0) : Max% = 0
Dateien$ = ReadIni$(RegKlasse$,RegPfad$,"Dateien")
Case (%Error > 0) : Dateien$ = ""

Ab Zeile 3773 im Original: bei maximalen Fenster ist X & Y egal, da dieses auf dem aktuellen Bildschirm maximiert wird und zwangsläufig = 0 beträgt (theoretisch) ... bei nicht maximierten Fenster kommt die automatische Korrektur Proc mbm zum Einsatz
If Max% > 0

    SetWindowPos %hWnd = X%,Y% - DX%,DY%
    ShowMax
    WindowPos(Optionen#,0)

Else

    SetWindowPos %hWnd = X%,Y% - DX%,DY%
    mbm()
    WindowPos(Optionen#,0)

EndIf


Ab Zeile 2909 im Original: Was noch aufgefallen ist, das SuchEdit und SuchButton beim erststart auf der selben Stelle starten, da die Fenstergröße nun immer korrigiert wird, kann man die Position von Anfang an fixieren:
TBSuch& = CREATE("EDIT", %hwnd, "", width(%hWnd)-203,1, 175, 22)
TBOk&   = CREATE("ICONBUTTON",%hwnd,icon(20), width(%hWnd)-27, 0, 24, 24)

A Propos die Suche, genial mit der "\n" Suche, funktioniert sehr gut der Schalter, ob er vorwärts oder rückwärts sucht muss leider im Fenster Suchen 1x betätigt werden, damit die "Schnellsuche" also im Edit vorwärts oder rückwärts sucht.

Genial, dass du den Schalter für Versionen bis Profan 6 hinzugefügt hast das wird den einen oder andreren dazu zwingen, neue Verzeichnisstruktur bei XProfan vorzunehmen hehe ... habe auch extra dafür profX2, profX3 und profX4 Verzeichnisse seit deinem ersten SE Edtor angelegt, wo der Interpreter, Kompiler, Linker und Runtime drin liegen ... XProfed dann extra im Verzeichnis darüber

Grüße Georg
 
Alle Sprachen
TC-Programming [...] 
XProfan 8.0 - 10.0 - X2 - X3 - X4

25.03.2023  
 




Sven
Bader
Danke für dein ausführliches Feedback. Die Fenstergrößen muss ich mir nochmal anschauen, habe leider selbst nur 16:10 Monitor aber dafür zwei, weshalb ich das mit dem Ausschalten zumindest testen kann. Der "Poweruser" bekommt das Fenster ja auch ganz leicht wieder mit Windows + Pfeiltaste dorthin, wo er es möchte.

Suchfeld und Suchbutton an gleicher Position dachte ich ist egal, da bei jedem Start mindestens einmal die Subclass zur Änderung der Fenstergröße aufgerufen wird aber eine korrekte Position von Anfang an kann nicht schaden.

Mit der Vor- und Rückwärtssuche bin ich auch noch nicht zufrieden.Ich habe schon einige Verbesserungen daran vorgenommen aber ich denke ich werde wieder ohne Meldung "im Kreis" suchen lassen und ja, die Schnellsuche sollte am besten unbeeindurckt von den Einstellungen des Suchfensters sein.

In der aktuellen "Beta" habe ich folgendes Verhalten eingefügt:
-Im Explorer angeklickte Dateien öffnen im schon offenen XProfan SE-Fenster
-XProfan SE lässt zwar noch beliebig oft öffnen, läd aber nur in der ersten Instanz die zuletzt geöffneten Dateien
-Es lassen sich mehrere Dateien gleichzeitig über den Explorer öffnen
-Drag&Drop unterstützter Dateityp ist möglich (als Ziel leider aktuell nur die linke Spalte oder Kopfbereich, der Editor hat das Drop-Target nicht angenommen)
 
25.03.2023  
 




Antworten


Thementitel, max. 100 Zeichen.
 

Systemprofile:

Kein Systemprofil angelegt. [anlegen]

XProfan:

 Beitrag  Schrift  Smilies  ▼ 

Bitte anmelden um einen Beitrag zu verfassen.
 

Themenoptionen

6.031 Betrachtungen

Unbenanntvor 0 min.
Gast.081511.09.2024
Member 862464103.06.2024
Member 294243016.04.2024
Sven Bader20.11.2023
Mehr...

Themeninformationen

Dieses Thema hat 3 Teilnehmer:

Sven Bader (9x)
Georg Teles (5x)
p.specht (1x)


Statistik

APPx
XProfEd99
XProfan X241
LemonEd35
XProfan X435
XProfan 1126
XProfan X324
XProfed32a13
Alle Sprachen13
XProfan 99
FreeProfan7
PRFellow6
XProfan 105
keine Bestimmte4
TextPad3
Infinity-Profan2
Infinity-Profan Online-IDE1
GDLIDE1
XProfan 81
PSPad-Editor1
Angaben anhand den Einstellungen bei der Programmierumgebung.
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