Results 1 to 20 of 104

Thread: [DevQt] New versions, feature requests and bug reports

Hybrid View

Previous Post Previous Post   Next Post Next Post
  1. #1
    Join Date
    Feb 2006
    Location
    Österreich
    Posts
    35
    Qt products
    Qt3 Qt4
    Platforms
    Unix/X11

    Default Re: new highlighter

    Quote Originally Posted by Townk
    Becouse this is the best way to implement a highlight. If you use QRegExp like syntaxhighlight exemple your code will be very slow. So its better to use a compiler aproach like in the lex analizers.
    It depends. I also made a syntax highlighter using regexp strings for practice (I don't know regexp very well and needed an excuse to learn it) with a text editor I made in Qt3 when I first began to learn the library, and when typing code in manually or opening from a file there is no noticable difference in human time from the one I made using while loops and if-else statements. The only trouble is if you be evil and copy a large amount of code into the clipboard and then hold down the Ctrl+V keys for about ten seconds to paste it all over and over again a lot. Then the program freezes for about fifteen seconds before displaying anything :DDDD. Probably for formatting a large input filestream the difference isn't so bad (so it depends if you want easy-to-read code from using the regexp or two hundred lines of loops and if statements--look at devqt's code for highlighting, for example, it works but it's a mess--whereas my regexp highlighter practice was maybe twenty lines, and if there was something wrong with how it was reading it I could just edit the string holding the pattern instead of weaving through all the branches) but for real-time highlighting of keyboard input the lexical analyzation is definitely the way to go. You know, it's funny. Such an awful lot of work for what seems like such a trivial feature of the IDE. You practically have to write half a C++ compiler just to pretty print the code. I'm having similar issues with another project I am working on in my spare time. It is a frontend for editing qmake files. It is no problem when the project file is straightforward, but now I have two lexical analyzers to make. One is to reimplement my syntax highlighter for the scripting style used by qmake (one of the tabs lets you edit the raw file instead of using the interface), the other is to handle all of the nesting and scopes within the project file and display the hierarchies correctly in the frontend's widgets. The first is much much easier (for me, at least) than the second.
    Last edited by michel; 18th February 2006 at 14:03.
    My philosophy is: If you can use a free, open-source alternative: do it. And if you can't, pretend it's free and open-source and hope you don't get caught.

  2. #2
    Join Date
    Feb 2006
    Location
    Österreich
    Posts
    35
    Qt products
    Qt3 Qt4
    Platforms
    Unix/X11

    Default Re: [DevQt] New versions, feature requests and bug reports

    Two bugfixes to your latest version. The first is mentioned already by wysota (but I hadn't read his message so it took me 30 minutes to figure out with gdb why I was getting core dumps on startup before realizing you were trying to run setupMenu() on Editor before initializing it). The second fixes the problem that when you close a file that has been opened, the tab disappears but not the source code. When no files are open the Editor widget shouldn't display anything. Below are my modified lines.

    --devgui.cpp---line 51--DevGUI() constructor--
    Qt Code:
    1. Editor = new QTabWidget(this);
    2. Editor->setWindowState(Qt::WindowMaximized);
    3. Editor->setContextMenuPolicy(Qt::CustomContextMenu);
    4. setupMenu();
    5. setupFileActions();
    6. setupEditActions();
    7. //setupTextActions();
    8. setupCompiler();
    9. setupExplorer();
    To copy to clipboard, switch view to plain text mode 

    --devgui.cpp---line 602--DevGUI::close()--
    Qt Code:
    1. //Your old function which removes the tab, but not the actual page Editor->removeTab(pos);
    2. delete Editor->widget(pos);
    To copy to clipboard, switch view to plain text mode 

    I'll let you know if I see anything else.
    My philosophy is: If you can use a free, open-source alternative: do it. And if you can't, pretend it's free and open-source and hope you don't get caught.

  3. #3
    Join Date
    Jan 2006
    Location
    travelling
    Posts
    1,116
    Thanks
    8
    Thanked 127 Times in 121 Posts
    Qt products
    Qt4
    Platforms
    Unix/X11 Windows

    Default Re: [DevQt] New versions, feature requests and bug reports

    thanks for your interest! I'll try to fix them all!

    elcuco's kindness has no limits : he's gonna open a project on SF.net or Berlios because, for some reasons I can't do it on my own. That'll give us a better framework to speed up the developpement process.

    I've no code to post today but I'm working on the project handling, damn progress : scopes are now understood and functions skipped

    as soon as I'll get the project working I'll start compilation process stuff and post a version with as many fixes as possible.
    Current Qt projects : QCodeEdit, RotiDeCode

  4. #4
    Join Date
    Feb 2006
    Location
    Österreich
    Posts
    35
    Qt products
    Qt3 Qt4
    Platforms
    Unix/X11

    Default Re: [DevQt] New versions, feature requests and bug reports

    Quote Originally Posted by fullmetalcoder
    thanks for your interest! I'll try to fix them all! :D

    elcuco's kindness has no limits : he's gonna open a project on SF.net or Berlios because, for some reasons I can't do it on my own. That'll give us a better framework to speed up the developpement process.

    I've no code to post today but I'm working on the project handling, damn progress : scopes are now understood and functions skipped

    as soon as I'll get the project working I'll start compilation process stuff and post a version with as many fixes as possible.
    Will your new version fix the syntax highlighter yet? I was going to post a modification to devhighlighter.cpp because the one from your latest zip file doesn't handle backslashes in preprocessor directives, but of course, now that it does handle them, the way your loops are set up it is not easy to check for a line that has both a backslash and a comment. It's rather simple. In your if loop for c=='#' just do an indexOf search for "\\" and if found set the state to preprocessor, and in your switch (previousBlockState()) - case statement at the top of the function put something like

    Qt Code:
    1. case preprocessor :
    2. i = text.indexOf("\\");
    3. if (i != -1)
    4. {
    5. setFormat(0, i+1, fmts[preprocessor]);
    6. return preprocessor;
    7. }
    8. setFormat(0, len, fmts[preprocessor]);
    9. return normal;
    To copy to clipboard, switch view to plain text mode 

    I haven't done a lot of error checking but it seems to work fine for things like

    Qt Code:
    1. #define THIS "that" \
    2. "plus this" \
    3. "plus that"
    4. int main(){ printf(THIS); }....blahblah...
    To copy to clipboard, switch view to plain text mode 

    In your old version only the first line would be green whereas all three lines which are part of the preprocessing should be.

    Don't know if your comments scanner bothers to check for /* */ comments after the backslash, but it should be easy to implement. And you don't have to worry about the C++ style // comments after a backslash, because afaik they aren't legal to use in this syntax anyway and the compiler will complain about it.

    ok going to bed. bbl
    My philosophy is: If you can use a free, open-source alternative: do it. And if you can't, pretend it's free and open-source and hope you don't get caught.

  5. #5
    Join Date
    Jan 2006
    Posts
    371
    Thanks
    14
    Thanked 18 Times in 17 Posts
    Qt products
    Qt4
    Platforms
    Unix/X11 Windows

    Default Re: [DevQt] New versions, feature requests and bug reports

    Not really a new release... but...

    I have opened a site on berlios for this project. FMC and a few others already have write access to the SVN.

    I would like to try the berlios forums for development communication, but IMHO, they are just lame. We will try it for a while, and if it does not work, we can still abuse this site (thanks!)

    The site for this project is available at:
    http://devqt.berlios.de/

    We already have some downloads, check the download link on that site.

    The development forum is at:
    http://developer.berlios.de/forum/fo...forum_id=18460

    Thanks for all that have been helping us with this project!

  6. #6
    Join Date
    Feb 2006
    Posts
    209
    Thanks
    13
    Qt products
    Qt4
    Platforms
    Unix/X11 Windows

    Default Re: [DevQt] New versions, feature requests and bug reports

    I downloarded the 0.1.0.zip and compiled.
    This is the result on my linux qt 4.1 machine when trying to run it.

    Qt Code:
    1. $ ./devqt
    2. Segmentation fault
    To copy to clipboard, switch view to plain text mode 

    Dang!

  7. #7
    Join Date
    Jan 2006
    Location
    travelling
    Posts
    1,116
    Thanks
    8
    Thanked 127 Times in 121 Posts
    Qt products
    Qt4
    Platforms
    Unix/X11 Windows

    Default Re: [DevQt] New versions, feature requests and bug reports

    Quote Originally Posted by Morea
    I downloarded the 0.1.0.zip and compiled.
    This is the result on my linux qt 4.1 machine when trying to run it.

    Qt Code:
    1. $ ./devqt
    2. Segmentation fault
    To copy to clipboard, switch view to plain text mode 

    Dang!
    Wysota has already explained how to get rid of that AFAIK.

    The embarrassing stuff pointed out by that stupid bug is that Qt doesn't behave the same on every system : on my Athlon 1,4GHz, 512Mb SDRAM, GeForce 2 MX400, Win ME (I know my config sucks but that's not the point!) no bug occured.

    Anyway it has been removed but, I'm damn sorry, I can't post the last version here because the zipfile is 150kb while the limits set by the admins is 100kb!!!
    So, if you want to keep updated you've got to visit http://devqt.berlios.de

    Due to my 56kb internet connection and the troubles I get building an SVN client I can't post the code on my own so you also have to wait for elcuco doing it (I seny him the source a few minutes ago...)
    Current Qt projects : QCodeEdit, RotiDeCode

  8. The following 2 users say thank you to fullmetalcoder for this useful post:

    incapacitant (2nd March 2006), Morea (24th February 2006)

  9. #8
    Join Date
    Jan 2006
    Location
    Warsaw, Poland
    Posts
    33,368
    Thanks
    3
    Thanked 5,018 Times in 4,794 Posts
    Qt products
    Qt3 Qt4 Qt5 Qt/Embedded
    Platforms
    Unix/X11 Windows Android Maemo/MeeGo
    Wiki edits
    10

    Default Re: [DevQt] New versions, feature requests and bug reports

    Quote Originally Posted by fullmetalcoder
    The embarrassing stuff pointed out by that stupid bug is that Qt doesn't behave the same on every system : on my Athlon 1,4GHz, 512Mb SDRAM, GeForce 2 MX400, Win ME (I know my config sucks but that's not the point!) no bug occured.
    It's not Qt. It's C++ and I can't believe you were able to dereference a random pointer on your system everytime you started the application

    Anyway it has been removed but, I'm damn sorry, I can't post the last version here because the zipfile is 150kb while the limits set by the admins is 100kb!!!
    AFAIK the limit was changed to 300kB. Besides, you can always send a patch (diff) or only upload modified files. Using some better compressor than zip or reducing the size of icons is also an option.

  10. #9
    Join Date
    Jan 2006
    Location
    travelling
    Posts
    1,116
    Thanks
    8
    Thanked 127 Times in 121 Posts
    Qt products
    Qt4
    Platforms
    Unix/X11 Windows

    Default Re: [DevQt] New versions, feature requests and bug reports

    Quote Originally Posted by wysota
    It's not Qt. It's C++ and I can't believe you were able to dereference a random pointer on your system everytime you started the application
    As weird as it can seem it worked! And it comes from Qt because it's Qt that used the non initialized pointer, not my app!!!

    Quote Originally Posted by wysota
    AFAIK the limit was changed to 300kB. Besides, you can always send a patch (diff) or only upload modified files. Using some better compressor than zip or reducing the size of icons is also an option.
    That's right damn it!!! (sorry, private joke...)
    I didn't noticed, thanks a lot!!!

    What about a better compressor? I tried .rar but it only saved a few kb and not everybody has a decompressor for .rar files
    BTW if you know a better, and as universal, compressor please tell me!
    Attached Files Attached Files
    Current Qt projects : QCodeEdit, RotiDeCode

  11. #10
    Join Date
    Feb 2006
    Posts
    209
    Thanks
    13
    Qt products
    Qt4
    Platforms
    Unix/X11 Windows

    Default Re: [DevQt] New versions, feature requests and bug reports

    What about putting new versions on berlios.de more often?
    Then posting links from here to berlios?

  12. #11
    Join Date
    Feb 2006
    Posts
    209
    Thanks
    13
    Qt products
    Qt4
    Platforms
    Unix/X11 Windows

    Default Re: [DevQt] New versions, feature requests and bug reports

    Well 0.2.1 (or 0.2.0 as the app called it self, or 0 as the resulting file is called ) looks promising.

    One question though, will I be able to compile a single C++ file and run it, like a hello world program or should everything be in projects?

    I will try to use it more as soon as I can change the font size in the editing window to something that is 400% larger. (on my linux box)

  13. #12
    Join Date
    Jan 2006
    Location
    travelling
    Posts
    1,116
    Thanks
    8
    Thanked 127 Times in 121 Posts
    Qt products
    Qt4
    Platforms
    Unix/X11 Windows

    Default Re: [DevQt] New versions, feature requests and bug reports

    Quote Originally Posted by Morea
    Well 0.2.1 (or 0.2.0 as the app called it self, or 0 as the resulting file is called ) looks promising.

    One question though, will I be able to compile a single C++ file and run it, like a hello world program or should everything be in projects?

    I will try to use it more as soon as I can change the font size in the editing window to something that is 400% larger. (on my linux box)
    Sorry, compilation isn't implemented yet but single file comilation will be possible.
    It will come with version 0.3.x!

    Font settings should come soon but, well, they're not the part I'm focused on!
    Current Qt projects : QCodeEdit, RotiDeCode

  14. #13
    Join Date
    Jan 2006
    Location
    Warsaw, Poland
    Posts
    33,368
    Thanks
    3
    Thanked 5,018 Times in 4,794 Posts
    Qt products
    Qt3 Qt4 Qt5 Qt/Embedded
    Platforms
    Unix/X11 Windows Android Maemo/MeeGo
    Wiki edits
    10

    Default Re: [DevQt] New versions, feature requests and bug reports

    Quote Originally Posted by fullmetalcoder
    As weird as it can seem it worked! And it comes from Qt because it's Qt that used the non initialized pointer, not my app!!!
    It is your app which passes an invalid pointer to Qt routines, Qt just dereferences it using C++ "->" operator, so it is strictly a C++ issue. If you had zeroed the pointer at the beginning of the constructor, like you should, Qt would behave correctly (but with an unexpected result).

    What about a better compressor? I tried .rar but it only saved a few kb and not everybody has a decompressor for .rar files
    BTW if you know a better, and as universal, compressor please tell me!
    Use bzip2. It has much better compression ratios than zip. Or tune the zip compressor to use the best strength available. And reduce the size of images. You can get rid of that .qm file too. It can be generated during compilation from .ts file.
    Last edited by wysota; 24th February 2006 at 11:11.

  15. #14
    Join Date
    Jan 2006
    Location
    Curitiba - Brazil
    Posts
    23
    Qt products
    Qt4
    Platforms
    Unix/X11 Windows

    Default Re: new highlighter

    Quote Originally Posted by michel
    It depends. I also made a syntax highlighter using regexp strings for practice (I don't know regexp very well and needed an excuse to learn it) with a text editor I made in Qt3 when I first began to learn the library, and when typing code in manually or opening from a file there is no noticable difference in human time from the one I made using while loops and if-else statements. The only trouble is if you be evil and copy a large amount of code into the clipboard and then hold down the Ctrl+V keys for about ten seconds to paste it all over and over again a lot. Then the program freezes for about fifteen seconds before displaying anything DDD. Probably for formatting a large input filestream the difference isn't so bad (so it depends if you want easy-to-read code from using the regexp or two hundred lines of loops and if statements--look at devqt's code for highlighting, for example, it works but it's a mess--whereas my regexp highlighter practice was maybe twenty lines, and if there was something wrong with how it was reading it I could just edit the string holding the pattern instead of weaving through all the branches) but for real-time highlighting of keyboard input the lexical analyzation is definitely the way to go. You know, it's funny. Such an awful lot of work for what seems like such a trivial feature of the IDE. You practically have to write half a C++ compiler just to pretty print the code. I'm having similar issues with another project I am working on in my spare time. It is a frontend for editing qmake files. It is no problem when the project file is straightforward, but now I have two lexical analyzers to make. One is to reimplement my syntax highlighter for the scripting style used by qmake (one of the tabs lets you edit the raw file instead of using the interface), the other is to handle all of the nesting and scopes within the project file and display the hierarchies correctly in the frontend's widgets. The first is much much easier (for me, at least) than the second.
    Ok, as I'm creating a new editor for C++ codes too, I do a lot of tests between RegExp and Lexical aproachs, let me share here what I discovery:

    With RegExp proach what the QSyntaxHinghlighter do is to take every RegExp and see if the actual line matches to it, if match, coloring if not, pass to the next RegExp and check the entire text again, no mather if it founds any parts before.

    As you can see, a lexical aproach avoid unnecessary check to the actual text and is that the reason that your code freezes a little when you paste a lot of text, and has more, if you had about 10Kloc to highlight (what is not unusual) if your editor has to repaind the entire screen, the highlight with RegExp will make your editor unusable.
    Well, at least to me the beneficies of lexical aproach justify the hard work to implement it!
    --
    Thiago dos Santos Alves
    Computer Scientist

    thiago.salves@gmail.com
    -----------------------------------------------------
    "A mind that opens to a new idea never gets its original size again."
    - Albert Einstein

Bookmarks

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •  
Qt is a trademark of The Qt Company.