Hades

MikeHart

Administrator
Joined
Jun 19, 2017
Location
Germany
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:

Phil7

Moderator
Joined
Jun 26, 2017
Great feature! Especially for displaying examples in the docs this could be enhancing the user experience.
 

Holzchopf

Moderator
Joined
Jul 31, 2017
Location
Bern, Switzerland
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)
 

Holzchopf

Moderator
Joined
Jul 31, 2017
Location
Bern, Switzerland
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 ;-)
 

MikeHart

Administrator
Joined
Jun 19, 2017
Location
Germany
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:
 

Phil7

Moderator
Joined
Jun 26, 2017
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!?
 

Phil7

Moderator
Joined
Jun 26, 2017
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:

MikeHart

Administrator
Joined
Jun 19, 2017
Location
Germany
Ok, that is what i ment. I thought you opened a small file and then just copy and paste its content.
 
Top Bottom