• Dear Cerberus X User!

    As we prepare to transition the forum ownership from Mike to Phil (TripleHead GmbH), we need your explicit consent to transfer your user data in accordance with our amended Terms and Rules in order to be compliant with data protection laws.

    Important: If you accept the amended Terms and Rules, you agree to the transfer of your user data to the future forum owner!

    Please read the new Terms and Rules below, check the box to agree, and click "Accept" to continue enjoying your Cerberus X Forum experience. The deadline for consent is April 5, 2024.

    Do not accept the amended Terms and Rules if you do not wish your personal data to be transferred to the future forum owner!

    Accepting ensures:

    - Continued access to your account with a short break for the actual transfer.

    - Retention of your data under the same terms.

    Without consent:

    - You don't have further access to your forum user account.

    - Your account and personal data will be deleted after April 5, 2024.

    - Public posts remain, but usernames indicating real identity will be anonymized. If you disagree with a fictitious name you have the option to contact us so we can find a name that is acceptable to you.

    We hope to keep you in our community and see you on the forum soon!

    All the best

    Your Cerberus X Team

DevLog Hades

Status
Not open for further replies.

MikeHart

Administrator
Joined
Jun 19, 2017
Messages
3,597
Hi folks,

Hades???? HADES!!! He was the ruler of the underworld, Cerberus was his hound, his watch dog.

TED is coming of age, its underlying C++ code would need major work to keep it up to date. Personally I am not a big fan of C++, having a love and more hate relationship with it. So in the January 2019 after some discussions it came to the decision to recode/port the code base to Python and still use Qt5 with it.
The port is coming along quite well. Of course there are some quirks you have to work around but so far no showstoppers. HADES will utilize Scintilla as the editor component, so you will hopefully see some enhancements in that department. Hades will not be a pure port, it will have new features as well. Here is a VERY bold list of features that MIGHT make it into Hades. But I have to see if my coding abilities allow to add these or not.
The BOLD parts are what is supported by Ted currently. Everything that is stroked thru is already ported/implemented to Hades.

---GENERAL---
  • Preferences
  • New, Templates, Open, Recent, Close, Save, Quit
  • Cut / Copy / Paste / Delete / Select All
  • Find / Find next / Replace / Find in Files, Goto line, Un/Comment block
  • View Window, View Toolbar, F11 Code only
  • Build, Build’n’Run, Check, Update
  • Debug Step, Step in, Step out, Kill
  • About, Goto Community, Rebuild Help, F1, Help Index
  • Media viewer (images, sound)
  • Validate Targets
  • Drop files to open
  • Themesupport
  • App arguments
  • Save options in user data
  • Screengrab of images and video
  • InApp HTML server so your game displays inside the editor
  • Pre/Post build actions
  • Auto backup
  • Auto save at build
  • Auto update of the whole app
  • Workplace layouts
  • Plugins written in Python (Importlib)
---DOCKERS---
  • Project view
  • Code view
  • Debugger
  • Console
  • Notes
  • Help view (instead as a tab in the coding area)
---QSCINTILLA---
  • Bookmarks (toggle, next, prev, list)
  • Line numbers
  • Change markers
  • Syntax highlighting for CXS,
    CPP, C#, AS, JAVA, JS, HTML, PYTHON, JSON, XML, MARKDOWN, CERBERUSDOC
  • Go To Definition
  • Autocomplete
  • Completition hint
  • Folding
  • Indention guides
  • Split view
  • Export As HTML
  • Export As PDF

---WINDOWS / DIALOGS---
  • MainWindow
  • Find / Replace
  • Find in Files
  • About
  • Preferences
---CONTEXTMENUES---
  • Project view
  • Code Editor
  • Console
  • Code view
  • Notes
  • Help view

---EDITORS implemented as plugins---
  • Bitmap Font editor
  • 2D Map editor
  • UI editor
  • Game editor (maps, UI, objects)
  • Animation editor
  • Physic shape editor
  • 2D Particle editor

  • Image editor
  • Pixel editor
  • Vector editor
  • Sound editor

  • Doc editor
  • Database Editor
---TOOLS implemented as plugins---
  • Refactoring (Rope)
  • Diff-/Merge (difflib)
  • GitHub support
  • Code format/Beautify

  • Snippet manager
  • Task manager
  • To-Do/Issue list manager

  • Module manager
  • Target manager
  • Project manager

  • Code Flow (visualize code flow)

And here are to images that show the current stand of development:

1550568771092.png


I plan to make most things customizable, so you can move each docking window where you want it. You can keep them separate, tabbify them, move them to a secondary screen, anyway you want it.

1550568944535.png


That is all for now.

Cheers
Michael
 
Last edited:
Wow yes it definitely is!
 
Great feature! Especially for displaying examples in the docs this could be enhancing the user experience.
 
Guys, what is the biggest source file you have. Lines i mean.
 
Last edited:
Nothing with more than 2000 lines, approx 60 KB
 
Around 72 KiB - but if I'd put the different components / classes in separate source files, as I should, I wouldn't exceed 40 KiB (approx. by experience)
 
So it seems you guys don't go higher than 3000-4000 lines. I was testing with 50000 lines. Big no no.
 
At which point does it start to struggle? 20000, 10000 lines? I think 10000 should be the minimum it can handle. Not that I plan to write anything that big, but it's always very important to have room to expand into ;-)
 
Currently it is the initial loading of a file. The custom lexer is going through the whole document and colorizes it. And it seems that I can't control that. A document of 50000 lines takes on my machine 1.5 minutes to load. If I manage to use Cython, I might be able to speed it up, but a different editor who uses this method takes also some time to load it. So maybe I need to switch back to the TextEdit widget like we have today as with that I can control the area which will be analyzed. Or dump the Python idea completely :eek::oops:
 
I did a simple test with the Ex.Co IDE which was mentioned in the Python QScintilla tutorial. As far as I know this is done using Python with Qt and QScintilla.
At my system it loads a 600 000 lines file just like that in under a second. It only has a lag when typing into the text of about 200 ms.

My test isn't that good for sure, because I simply copied and pasted the py lexer source on and on untill I had 600 000 lines.

But maybe a cheer up for you and your chosen way!?
 
The python lexer is a build in. These are blazing fast. A custom lexer like Nim, try that.
 
And if you just add, it isnt a big problem. Loading a file so big initially, try that too.
 
What do you mean by loading the file initially?
After creating the file, I restarted the IDE and opened the file.

Tried it with nim lexer. It is slower, but loading time (same for lexer change Ada<->Nim) is around 1 sec for 10 000 lines and 8 sec for 100 000.
Changed the filename for every test, because I have the feeling, there is a cache for each lexer run over a file.
My impression is that the build in lexers are about 10 times faster.
But within 10 000 lines I would be fine with the performance an my system. Have to try on some slow machine ...
 
Last edited:
Ok, that is what i ment. I thought you opened a small file and then just copy and paste its content.
 
Status
Not open for further replies.
Back
Top Bottom