Changeset 230

Show
Ignore:
Timestamp:
02/01/07 23:20:23 (2 years ago)
Author:
Alan Knowles
Message:

use GtkD now, Scintilla 1.72 defines, overhall of folding code to use alot of the internal stuff in scintilla for it.

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • trunk/src/leds/BrowserView.d

    r187 r230  
    6666private import gtk.Alignment; 
    6767 
    68 private import gtk.gtktypes; 
     68private import gtkc.gtktypes; 
    6969private import gdk.Event; 
    70 private import gdk.gdktypes; 
    71 private import gobject.gobjecttypes; 
     70private import gtkc.gdktypes; 
     71private import gtkc.gobjecttypes; 
    7272 
    7373private import glib.Str; 
  • trunk/src/leds/BuildConsole.d

    r209 r230  
    3535private import gtk.MenuItem; 
    3636private import gtk.PopupBox; 
    37 private import gtk.gtktypes; 
     37private import gtkc.gtktypes; 
    3838 
    3939private import gdk.Color; 
  • trunk/src/leds/CodeEdit.d

    r181 r230  
    348348    int getFoldParent(int line);  
    349349    int getFoldExpanded(int line);  
     350    void toggleFold(int line); 
    350351    int markerNext(int line, int unknown); 
    351352    int markerPrevious(int line, int unknown); 
  • trunk/src/leds/CodeView.d

    r215 r230  
    9696 
    9797 
    98 private import gtk.gtktypes; 
    99 private import gdk.gdktypes; 
     98private import gtkc.gtktypes; 
     99private import gtkc.gdktypes; 
    100100//debug=notify 
    101101 
     
    308308                bv.parseCurrentView(this); 
    309309                //bv.parse(text, getLanguage()); 
    310                 if ( Leds.leds.getPropValue("codeFolding", false) ) 
    311                 { 
    312                     codeEdit.showCodeFolding(true); 
    313                     this.addFolds(); 
    314                 } 
     310                  
     311                this.addFolds(); 
     312                 
    315313                  
    316314            } 
     
    13311329        if ( lineNumber > 0 ) 
    13321330        { 
    1333             if (!codeEdit.getLineVisible(lineNumber))  { 
    1334                       this.expandFrom(lineNumber); 
    1335             }   
    1336             codeEdit.gotoLine(lineNumber); 
     1331            exposeLine(lineNumber); 
     1332             
    13371333            int currLine = codeEdit.getCurrLine(); 
    13381334            int linesOnScreen = codeEdit.linesOnScreen(); 
     
    26382634                if ( autoIndent ) doAutoIndent(codeEdit.getCurrLine()); 
    26392635                if ( autoDocComments ) doAutoDocComments(); 
     2636                 
    26402637                break; 
    26412638                 
     
    26882685                break; 
    26892686        } 
     2687        this.addFolds(); 
    26902688        return false; 
    26912689    } 
     
    27392737    bool marginClickFolding(int position) 
    27402738    { 
    2741         //printf("CodeView.codeEditCallback SCN_MARGINCLICK\n" ); 
    2742          
     2739          
    27432740        int lineNumber = codeEdit.lineFromPosition(position); 
    2744   
    2745         if (codeEdit.markerGet(lineNumber)) { 
    2746             int curStatus = codeEdit.getFoldExpanded(lineNumber);        
    2747             if (curStatus == 1) {   // open 
    2748                 collapseFrom(lineNumber); 
    2749                 return false; 
    2750             } 
    2751             this.expandFrom(lineNumber); 
    2752               
    2753   
    2754             return false; 
    2755   
    2756         } 
     2741         
     2742        codeEdit.toggleFold(lineNumber); 
    27572743        return false; 
     2744          
    27582745    } 
    27592746  
     
    28762863    void addFolds() 
    28772864    { 
    2878         // at present we dont refold to often..  
    2879         // this needs some better logic - only on open / reload etc. 
    2880         if (this.hasFolds) { 
     2865        if ( !Leds.leds.getPropValue("codeFolding", false) ) { 
    28812866            return; 
    28822867        } 
    2883          
    2884         this.getLanguageHandler().addFolds(); 
    2885         this.collapseAll(); 
     2868                 
     2869          
     2870          
     2871        // set up code folding  
     2872        codeEdit.showCodeFolding(true); 
     2873         
     2874        // if we already have added folder, just refresh the fold markers. 
     2875        // otherwise, we collapse everything. 
     2876        this.getLanguageHandler().addFolds(!this.hasFolds); 
     2877         
     2878        //this.collapseAll(); 
    28862879        this.hasFolds = true;  
    2887   
     2880         
    28882881    } 
    2889   
    2890     int  collapseFrom(int lineNumber)  
    2891     { 
    2892         // what this should do: 
    2893         // collapse a function from start to end. 
    2894         // leaving a trace of if the subfolds are expanded or not. 
    2895  
    2896         // first job - find the end of this fold. 
    2897         // which should be determined by the last line that matches this fold level. 
    2898   
    2899        
    2900         int thisLevel = codeEdit.getFoldLevel(lineNumber); 
    2901         int lastChildLine = this.codeEdit.getLineCount(); 
    2902         for (int i=lineNumber+1; i<this.codeEdit.getLineCount(); i++) { 
    2903         // writefln("Check line: ", i, " - lvl - ", codeEdit.getFoldLevel(i)); 
    2904             if (codeEdit.getFoldLevel(i) < thisLevel) { 
    2905                 lastChildLine = i; 
    2906                 break; 
    2907             } 
    2908         } 
    2909         //writefln("collapseFrom: to ", lastChildLine); 
    2910         int nxtMarkerLine = codeEdit.markerNext(lineNumber+1,255); 
    2911         //writefln("Next Marker Line from %d is %d", lineNumber, nxtMarkerLine); 
    2912         if ((nxtMarkerLine == lineNumber+1) && 
    2913             codeEdit.getFoldLevel(lineNumber) == codeEdit.getFoldLevel(nxtMarkerLine)) { 
    2914             //writefln("altering lastChildline"); 
    2915             lastChildLine = lineNumber; 
    2916         } 
    2917  
    2918           
    2919          
    2920         codeEdit.setFoldExpanded(lineNumber,0); 
    2921         // remove markers,and set the market to collapse (2) 
    2922         codeEdit.markerDelete(lineNumber,2); 
    2923         codeEdit.markerDelete(lineNumber,3); 
    2924         codeEdit.markAdd(lineNumber,2); 
    2925         codeEdit.hideLines(lineNumber+1,lastChildLine); 
    2926         //writefln("hiding lines ", (lineNumber + 1), " to " , lastChildLine); 
    2927         return lastChildLine; 
    2928     } 
    2929       
    2930     void collapseAll() 
    2931     { 
    2932         // collapse all has to find the start and end marker.. 
    29332882   
    2934         int start = codeEdit.markerNext(0,255); 
    2935         collapseFrom(start); 
    2936         int end =  this.codeEdit.getLineCount(); 
    2937         for (int i = start+1; i < end; i++ ) { 
    2938             i = codeEdit.markerNext(i,255); 
    2939             //writefln("got markernext %d", i); 
    2940             if (i < 0) { 
    2941                  break; 
    2942             } 
    2943             codeEdit.setFoldExpanded(i,0); 
    2944             // remove markers,and set the market to collapse (2) 
    2945             codeEdit.markerDelete(i,2); 
    2946             codeEdit.markerDelete(i,3); 
    2947             codeEdit.markAdd(i,2); 
    2948             collapseFrom(i); 
    2949              
    2950         } 
    2951         // open up base level ones.. 
    2952    
    2953         for (int i = 0; i < end; i++ ) { 
    2954             i = codeEdit.markerNext(i,255); 
    2955             if (i < 0) { 
    2956                  break; 
    2957             } 
    2958             if (codeEdit.getFoldLevel(i) < 2) { 
    2959                 expandFrom(i); 
    2960             }   
    2961         } 
    2962     } 
    2963       
    29642883     
    29652884    void exposeLine(int lineNumber) 
     
    29692888            return; 
    29702889        } 
    2971         int fp = codeEdit.markerPrevious(lineNumber,255); 
    2972         //writefln("Exposing line ", fp); 
    2973         expandFrom(fp); 
     2890        codeEdit.toggleFold(lineNumber); 
    29742891        codeEdit.gotoLine(lineNumber); 
    29752892    } 
    29762893     
    2977     void expandFrom(int lineNumber) 
    2978     { 
    2979          
    2980           
    2981         int thisLevel = codeEdit.getFoldLevel(lineNumber); 
    2982           //writefln("expandFrom:", lineNumber, " foldLevel(",thisLevel,")"); 
    2983  
    2984         int lastChildLine = this.codeEdit.getLineCount(); 
    2985         for (int i=lineNumber+1; i<this.codeEdit.getLineCount(); i++) { 
    2986         //writefln("Check line: ", i, " - lvl - ", codeEdit.getFoldLevel(i)); 
    2987             if (codeEdit.getFoldLevel(i) < thisLevel) { 
    2988                 lastChildLine = i; 
    2989                 break; 
    2990             } 
    2991          
    2992         } 
    2993          
    2994          
    2995          
    2996          
    2997         //writefln("Hit marker Closed"); 
    2998         codeEdit.setFoldExpanded(lineNumber,1); 
    2999      
    3000         codeEdit.markerDelete(lineNumber,2); 
    3001         codeEdit.markerDelete(lineNumber,3); 
    3002         codeEdit.markAdd(lineNumber,3); 
    3003         codeEdit.showLines(lineNumber,lastChildLine); 
    3004          
    3005         // writefln("showLines: ", lineNumber, " to ", lastChildLine); 
    3006         for (int i=lineNumber+1; i < lastChildLine; i++) { 
    3007             if (!codeEdit.getFoldExpanded(i)) { 
    3008                 collapseFrom(i); 
    3009             } 
    3010         } 
    3011     } 
     2894      
    30122895      
    30132896  
  • trunk/src/leds/CompilerBox.d

    r209 r230  
    5959private import gtk.ToggleButton; 
    6060private import gtk.CellRendererText; 
    61 private import gtk.gtktypes; 
     61private import gtkc.gtktypes; 
    6262 
    6363private import gdk.Event; 
  • trunk/src/leds/CreateProjectElement.d

    r218 r230  
    4242private import gtk.SizeGroup; 
    4343 
    44 private import gtk.gtktypes; 
     44private import gtkc.gtktypes; 
    4545 
    4646class CreateProjectElement : Window 
  • trunk/src/leds/DSpell.d

    r187 r230  
    4242private import gdk.Event; 
    4343 
    44 private import gtk.gtktypes; 
     44private import gtkc.gtktypes; 
    4545 
    4646public 
  • trunk/src/leds/Docker.d

    r217 r230  
    3939private import gtk.Alignment; 
    4040 
    41 private import gtk.gtktypes; 
    42 private import gdk.gdktypes; 
     41private import gtkc.gtktypes; 
     42private import gtkc.gdktypes; 
    4343 
    4444 
  • trunk/src/leds/DockerFiles.d

    r187 r230  
    3939 
    4040private import gtk.Widget; 
    41 private import gtk.gtktypes; 
     41private import gtkc.gtktypes; 
    4242 
    4343private import std.stdio; 
     
    138138    void dock(Dockable dockable) 
    139139    { 
     140        if (!dockable) {return; } 
    140141        super.dock(dockable, false); 
    141142    } 
  • trunk/src/leds/DockerTools.d

    r187 r230  
    3636private import gdk.Pixbuf; 
    3737 
    38 private import gtk.gtktypes; 
     38private import gtkc.gtktypes; 
    3939 
    4040private import std.stdio; 
  • trunk/src/leds/EventImage.d

    r187 r230  
    2323private import std.stdio; 
    2424     
    25 private import gdk.gdktypes; 
    26 private import gtk.gtktypes; 
     25private import gtkc.gdktypes; 
     26private import gtkc.gtktypes; 
    2727private import gdk.Pixbuf; 
    2828private import gdk.Cursor; 
  • trunk/src/leds/FSTree.d

    r187 r230  
    1414private import gtk.CellRendererText; 
    1515 
    16 private import gobject.gobjecttypes; 
     16private import gtkc.gobjecttypes; 
    1717 
    1818private import glib.FileUtils; 
  • trunk/src/leds/FSView.d

    r187 r230  
    5656private import gdk.Color; 
    5757 
    58 private import gobject.gobjecttypes; 
    59 private import gtk.gtktypes; 
     58private import gtkc.gobjecttypes; 
     59private import gtkc.gtktypes; 
    6060 
    6161private import std.stdio; 
  • trunk/src/leds/FindAndReplace.d

    r187 r230  
    4646private import gtk.Alignment; 
    4747 
    48 private import gtk.gtktypes; 
     48private import gtkc.gtktypes; 
    4949 
    5050private import gdk.Event; 
  • trunk/src/leds/GotoLineDialog.d

    r187 r230  
    3434private import gtk.Table; 
    3535 
    36 private import gtk.gtktypes; 
     36private import gtkc.gtktypes; 
    3737 
    3838private import glib.Str; 
  • trunk/src/leds/HelpBar.d

    r187 r230  
    3535private import gtk.TextView; 
    3636 
    37 private import gtk.gtktypes; 
     37private import gtkc.gtktypes; 
    3838/** 
    3939 * A statusbar for leds 
  • trunk/src/leds/ImageView.d

    r187 r230  
    3030private import gtk.Widget; 
    3131 
    32 private import gtk.gtktypes; 
     32private import gtkc.gtktypes; 
    3333 
    3434/** 
  • trunk/src/leds/InputStringDialog.d

    r187 r230  
    3030private import gtk.Label; 
    3131private import gtk.Table; 
    32 private import gtk.Duit
     32private import gtk.GtkD
    3333 
    34 private import gtk.gtktypes; 
     34private import gtkc.gtktypes; 
    3535 
    3636private import std.stdio; 
     
    174174        this.closed = false; 
    175175        while(!this.closed) { 
    176             Duit.mainIteration(); 
     176            GtkD.mainIteration(); 
    177177        } 
    178178        writefln("closed is %d", this.closed); 
  • trunk/src/leds/Language.d

    r192 r230  
    103103     * @param codeview  
    104104     */ 
    105     void addFolds()  
     105    void addFolds(bool collapse)  
    106106    { 
    107107         
  • trunk/src/leds/LanguageD.d

    r223 r230  
    326326     
    327327     
    328     void addFolds() 
    329     { 
    330          
    331         Element sourceModule = getCachedModule(); 
    332           
    333         this.addFoldsElement(sourceModule, 0); 
    334          
    335     } 
    336      
    337     void addFoldsElement(Element element, int foldOffset) 
     328    void addFolds(bool collapse) 
     329    { 
     330        // we need to make sure we are getting raw data here (unsorted!)   
     331        Element sourceModule = getCachedModule(true); 
     332         
     333        foldActiveLine = 0;  
     334         this.addFoldsElement(sourceModule, 0,collapse); 
     335        debug(folding) for(int i=0;i< codeview.getCodeEdit().getLineCount();i++) { 
     336            writefln("%d : %d / %d : %s",  
     337                i, 
     338                codeview.getCodeEdit().getFoldLevel( i) & SC_FOLDLEVELNUMBERMASK, 
     339                codeview.getCodeEdit().getFoldLevel( i) & SC_FOLDLEVELHEADERFLAG, 
     340                codeview.getCodeEdit().getLineText(i)); 
     341        } 
     342         
     343    } 
     344    int foldActiveLine; 
     345    void addFoldsElement(Element element, int foldOffset, bool collapse) 
    338346    { 
    339          /* 
    340         writefln("got Element: ",    
    341               " Form: ", element.getBrowserForm().toString, // definition. 
    342               " Modifiers: ", element.getModifiers().toString, // return type 
    343               " Element: ", RowType.ELEMENT,     
    344               " Type: ", new String(cast(int)element.getType()), 
    345               " Line: ", new String(element.getLineInCode()), 
    346               "-", new String(element.getLastLineInCode()), 
    347             "" 
    348          ); */ 
    349           
    350          /* Types: 
    351         22 = The file? 
    352         2 = import 
    353         3 = enum 
    354         6 = var? 
    355         9 = version? 
    356         17 = interface? 
    357         20 = class? 
    358         21 = method 
    359         */ 
    360         int newFoldOffset = foldOffset; 
    361         if (element.endLine > 0 && ( 
     347        if ((element.endLine > 0) && (element.startLine >= foldActiveLine) && ( 
    362348                (element.getType() == Element.CLASS) ||  
    363349                (element.getType() == Element.FUNCTION) || 
     
    367353                (element.getType() == Element.ENUM)   
    368354            ))  { 
    369             // add a marker.. 
    370               
    371             codeview.getCodeEdit().markAdd( cast(int)element.startLine , 3); 
    372               
    373                
    374             // set the fold level on all those lines.. 
    375             for (int i = cast(int)element.startLine; i < element.endLine; i++) { 
    376                  
    377                 codeview.getCodeEdit().setFoldLevel( i,  foldOffset); 
    378             } 
    379             newFoldOffset++; 
    380         } 
    381           
    382    
    383         foreach(Element elementChild ; element.elements) { 
    384             addFoldsElement(elementChild,newFoldOffset + 1); 
    385         } 
    386           
    387   
     355                // we do our work later... 
     356        } else { 
     357            debug(folding) writefln("skipping: %d, %s FAL=%d, ENDLINE=%d", element.startLine, element.classinfo.name, foldActiveLine, element.endLine); 
     358             
     359            foreach(Element elementChild ; element.elements) { 
     360                addFoldsElement(elementChild,foldOffset,collapse); 
     361            } 
     362            return; 
     363        } 
     364        debug(folding) writefln("FL %d->%d = %d", foldActiveLine, element.startLine-1, foldOffset); 
     365        for(int i=foldActiveLine; i < element.startLine;i++) { 
     366            codeview.getCodeEdit().setFoldLevel( i,  foldOffset + SC_FOLDLEVELBASE); 
     367        } 
     368        foldActiveLine = element.startLine; 
     369        codeview.getCodeEdit().setFoldLevel( foldActiveLine,  foldOffset + SC_FOLDLEVELBASE + SC_FOLDLEVELHEADERFLAG); 
     370        debug(folding) writefln("HL %d = %d : %s", foldActiveLine, foldOffset +1, element.name); 
     371        foldActiveLine++; 
     372        foreach(Element elementChild ; element.elements) { 
     373            addFoldsElement(elementChild,foldOffset+1,collapse); 
     374        } 
     375        debug(folding) writefln("FL %d->%d = %d", foldActiveLine, element.endLine-1, foldOffset+1); 
     376        for(int i=foldActiveLine; i < element.endLine+1;i++) { 
     377            codeview.getCodeEdit().setFoldLevel( i,  foldOffset + SC_FOLDLEVELBASE + 1); 
     378        } 
     379        foldActiveLine = element.endLine+1; 
     380        if (collapse &&  
     381            ((element.getType() == Element.FUNCTION) || 
     382            (element.getType() == Element.CONSTRUCTOR) || 
     383            (element.getType() == Element.DESTRUCTOR)) 
     384            ) { 
     385            codeview.getCodeEdit().toggleFold(element.startLine); 
     386        } 
    388387    } 
    389388     
     
    644643    { 
    645644        //printf("setDLex 1\n"); 
    646         scintilla.send(SCI_SETLEXER, SCLEX_CPP, 0); 
     645        scintilla.send(SCI_SETLEXER, SCLEX_D, 0); 
     646        scintilla.send(SCI_SETSTYLEBITS, 5, 0); // not sure what this does. 
     647         
    647648        scintilla.send(SCI_SETKEYWORDS, 0, cast(sptr_t)cast(char*) 
    648649            " int bit bool char byte cent ubyte ucent uint ulong union ushort wchar" 
     
    697698        //printf("setDLex 2\n"); 
    698699         
    699         scintilla.send(SCI_STYLESETFORE, SCE_C_COMMENT,         scintilla.getColor("color.Comment.D", 0x009000)); 
    700         scintilla.send(SCI_STYLESETFORE, SCE_C_COMMENTLINE,     scintilla.getColor("color.CommentLine.D", 0x009000)); 
    701         scintilla.send(SCI_STYLESETFORE, SCE_C_COMMENTDOC,      scintilla.getColor("color.CommentDoc.D", 0x009000)); 
    702         scintilla.send(SCI_STYLESETFORE, SCE_C_COMMENTLINEDOC,  scintilla.getColor("color.CommentDoc.D", 0x009000)); 
    703         scintilla.send(SCI_STYLESETFORE, SCE_C_COMMENTDOCKEYWORD, scintilla.getColor("color.CommentDoc.D", 0x00C000)); 
    704         scintilla.send(SCI_STYLESETFORE, SCE_C_COMMENTDOCKEYWORDERROR, scintilla.getColor("color.CommentDoc.D", 0x00C000)); 
    705  
    706         scintilla.send(SCI_STYLESETFORE, SCE_C_NUMBER,          scintilla.getColor("color.number.D", 0xC00000)); 
    707         scintilla.send(SCI_STYLESETFORE, SCE_C_WORD,            scintilla.getColor("color.keyWord.D", 0x0000F0)); 
    708         scintilla.send(SCI_STYLESETFORE, SCE_C_STRING,          scintilla.getColor("color.string.D", 0xC00000)); 
    709         scintilla.send(SCI_STYLESETFORE, SCE_C_STRINGEOL,       scintilla.getColor("color.stringEOL.D", 0xFF0000)); 
    710         scintilla.send(SCI_STYLESETFORE, SCE_C_CHARACTER,       scintilla.getColor("color.char.D", 0xC00000)); 
    711  
    712         scintilla.send(SCI_STYLESETFORE, SCE_C_DEFAULT, 0x000000); 
    713         scintilla.send(SCI_STYLESETFORE, SCE_C_UUID, 0x000000); 
    714         scintilla.send(SCI_STYLESETFORE, SCE_C_PREPROCESSOR, 0x000000); 
    715         scintilla.send(SCI_STYLESETFORE, SCE_C_OPERATOR, 0x000000); 
    716         scintilla.send(SCI_STYLESETFORE, SCE_C_IDENTIFIER, 0x000000); 
    717         scintilla.send(SCI_STYLESETFORE, SCE_C_VERBATIM, 0x000000); 
    718         //send(SCI_STYLESETBACK, SCE_C_VERBATIM, 0x000000); 
    719         scintilla.send(SCI_STYLESETFORE, SCE_C_REGEX, 0x000000); 
    720         scintilla.send(SCI_STYLESETFORE, SCE_C_WORD2, 0x000000); 
    721         scintilla.send(SCI_STYLESETFORE, SCE_C_GLOBALCLASS, 0x000000); 
    722         
    723         scintilla.send(SCI_STYLESETBOLD, SCE_C_OPERATOR, 1); 
    724         scintilla.send(SCI_STYLESETBOLD, SCE_C_STRING, 1); 
    725         scintilla.send(SCI_STYLESETBOLD, SCE_C_STRINGEOL, 1); 
    726         scintilla.send(SCI_STYLESETBOLD, SCE_C_CHARACTER, 1); 
    727         scintilla.send(SCI_STYLESETBOLD, SCE_C_NUMBER, 1); 
    728         scintilla.send(SCI_STYLESETBOLD, SCE_C_WORD, 0); 
     700        scintilla.send(SCI_STYLESETFORE, SCE_D_COMMENT,         scintilla.getColor("color.Comment.D", 0x009000)); 
     701        scintilla.send(SCI_STYLESETFORE, SCE_D_COMMENTLINE,     scintilla.getColor("color.CommentLine.D", 0x009000)); 
     702        scintilla.send(SCI_STYLESETFORE, SCE_D_COMMENTDOC,      scintilla.getColor("color.CommentDoc.D", 0x009000)); 
     703        scintilla.send(SCI_STYLESETFORE, SCE_D_COMMENTNESTED,       scintilla.getColor("color.CommentDoc.D", 0x009000)); 
     704        scintilla.send(SCI_STYLESETFORE, SCE_D_COMMENTLINEDOC,  scintilla.getColor("color.CommentDoc.D", 0x009000)); 
     705        scintilla.send(SCI_STYLESETFORE, SCE_D_COMMENTDOCKEYWORD, scintilla.getColor("color.CommentDoc.D", 0x00C000)); 
     706        scintilla.send(SCI_STYLESETFORE, SCE_D_COMMENTDOCKEYWORDERROR, scintilla.getColor("color.CommentDoc.D", 0x00C000)); 
     707 
     708        scintilla.send(SCI_STYLESETFORE, SCE_D_NUMBER,          scintilla.getColor("color.number.D", 0xC00000)); 
     709        scintilla.send(SCI_STYLESETFORE, SCE_D_WORD,            scintilla.getColor("color.keyWord.D", 0x0000F0)); 
     710        scintilla.send(SCI_STYLESETFORE, SCE_D_STRING,          scintilla.getColor("color.string.D", 0xC00000)); 
     711        scintilla.send(SCI_STYLESETFORE, SCE_D_STRINGEOL,       scintilla.getColor("color.stringEOL.D", 0xFF0000)); 
     712        scintilla.send(SCI_STYLESETFORE, SCE_D_CHARACTER,       scintilla.getColor("color.char.D", 0xC00000)); 
     713 
     714        scintilla.send(SCI_STYLESETFORE, SCE_D_DEFAULT, 0x000000); 
     715        //send(SCI_STYLESETBACK, SCE_D_VERBATIM, 0x000000); 
     716        scintilla.send(SCI_STYLESETFORE, SCE_D_WORD2, 0x000000); 
     717        scintilla.send(SCI_STYLESETFORE, SCE_D_WORD3, 0x000000); 
     718         
     719         
     720        scintilla.send(SCI_STYLESETBOLD, SCE_D_OPERATOR, 1); 
     721         
     722        scintilla.send(SCI_STYLESETBOLD, SCE_D_TYPEDEF, 1); 
     723        scintilla.send(SCI_STYLESETBOLD, SCE_D_STRING, 1); 
     724        scintilla.send(SCI_STYLESETBOLD, SCE_D_STRINGEOL, 1); 
     725        scintilla.send(SCI_STYLESETBOLD, SCE_D_CHARACTER, 1); 
     726        scintilla.send(SCI_STYLESETBOLD, SCE_D_NUMBER, 1); 
     727        scintilla.send(SCI_STYLESETBOLD, SCE_D_WORD, 1); 
    729728 
    730729 
     
    763762        scintilla.setBGColor(backGround); 
    764763         
    765         scintilla.send(SCI_STYLESETEOLFILLED, SCE_C_COMMENT, true); 
    766         scintilla.send(SCI_STYLESETEOLFILLED, SCE_C_COMMENTLINE, true); 
    767         scintilla.send(SCI_STYLESETEOLFILLED, SCE_C_COMMENTDOC, true); 
     764        scintilla.send(SCI_STYLESETEOLFILLED, SCE_D_COMMENT, true); 
     765        scintilla.send(SCI_STYLESETEOLFILLED, SCE_D_COMMENTLINE, true); 
     766        scintilla.send(SCI_STYLESETEOLFILLED, SCE_D_COMMENTNESTED, true); 
     767        scintilla.send(SCI_STYLESETEOLFILLED, SCE_D_COMMENTDOC, true); 
     768        scintilla.send(SCI_STYLESETEOLFILLED, SCE_D_COMMENTLINEDOC, true); 
     769        scintilla.send(SCI_STYLESETEOLFILLED, SCE_D_COMMENTDOCKEYWORD, true); 
     770        scintilla.send(SCI_STYLESETEOLFILLED, SCE_D_COMMENTDOCKEYWORDERROR, true); 
     771         
     772        scintilla.send(SCI_STYLESETEOLFILLED, SCE_D_NUMBER, true); 
     773        scintilla.send(SCI_STYLESETEOLFILLED, SCE_D_TYPEDEF, true); 
     774        scintilla.send(SCI_STYLESETEOLFILLED, SCE_D_WORD, true); 
     775        scintilla.send(SCI_STYLESETEOLFILLED, SCE_D_STRING, true); 
     776        scintilla.send(SCI_STYLESETEOLFILLED, SCE_D_STRINGEOL, true); 
     777        scintilla.send(SCI_STYLESETEOLFILLED, SCE_D_CHARACTER, true); 
    768778        
    769         scintilla.send(SCI_STYLESETEOLFILLED, SCE_C_COMMENT, true); 
    770         scintilla.send(SCI_STYLESETEOLFILLED, SCE_C_COMMENTLINE, true); 
    771         scintilla.send(SCI_STYLESETEOLFILLED, SCE_C_COMMENTDOC, true); 
    772         scintilla.send(SCI_STYLESETEOLFILLED, SCE_C_COMMENTLINEDOC, true); 
    773         scintilla.send(SCI_STYLESETEOLFILLED, SCE_C_COMMENTDOCKEYWORD, true); 
    774         scintilla.send(SCI_STYLESETEOLFILLED, SCE_C_COMMENTDOCKEYWORDERROR, true); 
    775          
    776         scintilla.send(SCI_STYLESETEOLFILLED, SCE_C_NUMBER, true); 
    777         scintilla.send(SCI_STYLESETEOLFILLED, SCE_C_WORD, true); 
    778         scintilla.send(SCI_STYLESETEOLFILLED, SCE_C_STRING, true); 
    779         scintilla.send(SCI_STYLESETEOLFILLED, SCE_C_STRINGEOL, true); 
    780         scintilla.send(SCI_STYLESETEOLFILLED, SCE_C_CHARACTER, true); 
    781         
    782         scintilla.send(SCI_STYLESETEOLFILLED, SCE_C_DEFAULT, true); 
    783         scintilla.send(SCI_STYLESETEOLFILLED, SCE_C_UUID, true); 
    784         scintilla.send(SCI_STYLESETEOLFILLED, SCE_C_PREPROCESSOR, true); 
    785         scintilla.send(SCI_STYLESETEOLFILLED, SCE_C_OPERATOR, true); 
    786         scintilla.send(SCI_STYLESETEOLFILLED, SCE_C_IDENTIFIER, true); 
    787         scintilla.send(SCI_STYLESETEOLFILLED, SCE_C_VERBATIM, true); 
    788         scintilla.send(SCI_STYLESETEOLFILLED, SCE_C_REGEX, true); 
    789         scintilla.send(SCI_STYLESETEOLFILLED, SCE_C_WORD2, true); 
    790         scintilla.send(SCI_STYLESETEOLFILLED, SCE_C_GLOBALCLASS, true); 
     779        scintilla.send(SCI_STYLESETEOLFILLED, SCE_D_DEFAULT, true); 
     780        scintilla.send(SCI_STYLESETEOLFILLED, SCE_D_OPERATOR, true); 
     781        scintilla.send(SCI_STYLESETEOLFILLED, SCE_D_IDENTIFIER, true); 
     782        scintilla.send(SCI_STYLESETEOLFILLED, SCE_D_WORD2, true); 
     783        scintilla.send(SCI_STYLESETEOLFILLED, SCE_D_WORD3, true); 
    791784         
    792785    } 
     
    891884    static d_time cachedModuleReadTime; 
    892885     
    893     Module getCachedModule(
     886    Module getCachedModule(bool force=false
    894887    { 
    895888        Project project = codeview.getProject(); 
     
    903896        //writefln("trying to get cached view"); 
    904897        // we probably do not want to keep reloading this.. 
    905         bool usecache = true; 
     898        bool usecache = !force; 
    906899        if (!LanguageD.cachedString || !LanguageD.cachedString.length || !LanguageD.cachedModule)  
    907900        { 
  • trunk/src/leds/LanguageJava.d

    r186 r230  
    6666      
    6767     
    68   
    6968     
    7069    void setLex(Scintilla scintilla) 
  • trunk/src/leds/LanguagePHP.d

    r187 r230  
    4949    static d_time cachedModuleReadTime; 
    5050     
    51     Element getCachedElementBase(char[][] imports
    52     { 
    53         bool usecache = true; 
     51    Element getCachedElementBase(char[][] imports, bool force = false
     52    { 
     53        bool usecache = !force; 
    5454        if (!LanguagePHP.cachedString || !LanguagePHP.cachedString.length || !LanguagePHP.cachedElementBase) { 
    5555            usecache = false; 
     
    216216     
    217217     
    218     void addFolds() 
    219     { 
     218    void addFolds(bool collapse = false) 
     219    { 
     220         
     221          
    220222        BrowserView bv = codeview.getWorkspace().getBrowserView(); 
    221         phpElementBase = getCachedElementBase(getImports() ); 
     223        phpElementBase = getCachedElementBase(getImports(), true ); 
    222224        // fixme!  
    223225        if (phpElementBase is null) { 
    224226                return; 
    225227        } 
     228        foldActiveLine = 0; 
    226229        //phpElementBase.dumpAll(); 
    227         this.addFoldsElementPhp(phpElementBase, 0); 
    228          
    229     } 
    230      
     230        this.addFoldsElementPhp(phpElementBase, 0, collapse); 
     231         
     232    } 
     233    int foldActiveLine = 0; 
    231234    /** 
    232235     * recursively iterate through elements, and add folds. 
    233236     */ 
    234     void addFoldsElementPhp(Element pe, int foldOffset
     237    void addFoldsElementPhp(Element element, int foldOffset, bool collapse
    235238    { 
    236239      
    237         //writefln("ADDING PHP ELEMENT?", n , ":", pe.name , " ", pe.startline ,"...", pe.endline); 
    238         int newFoldOffset = foldOffset; 
    239         if (cast(Class) pe  || cast(Method) pe) { 
    240             codeview.getCodeEdit().markAdd(  pe.startline-1 , 3); 
    241             // set the fold level on all those lines.. 
    242             int end = (pe.endline == pe.startline) ? pe.endline : pe.endline -1; 
    243             for (int i = pe.startline-1; i < end ; i++) { 
    244                 codeview.getCodeEdit().setFoldLevel( i,  foldOffset+1); 
    245             } 
    246             newFoldOffset++; 
    247         } 
    248         if (cast(Method)pe) { // dont iterate down into methods. 
     240        if (cast(Class) element  || cast(Method) element) { 
     241              
     242                // we do our work later... 
     243        } else { 
     244             
     245            foreach(Element elementChild ; element.elements) { 
     246               addFoldsElementPhp(elementChild,foldOffset,collapse); 
     247            } 
     248              
    249249            return; 
    250250        } 
    251         foreach(Element elementChild ; pe.elements) { 
    252                addFoldsElementPhp(elementChild,newFoldOffset); 
    253         } 
     251         
     252        for(int i=foldActiveLine; i < element.startline-1;i++) { 
     253            codeview.getCodeEdit().setFoldLevel( i,  foldOffset + SC_FOLDLEVELBASE); 
     254        } 
     255        foldActiveLine = element.startline-1; 
     256        codeview.getCodeEdit().setFoldLevel( foldActiveLine,  foldOffset + SC_FOLDLEVELBASE + SC_FOLDLEVELHEADERFLAG); 
     257        foldActiveLine++; 
     258        if (cast(Class) element) { 
     259            foreach(Element elementChild ; element.elements) { 
     260               addFoldsElementPhp(elementChild,foldOffset+1,collapse); 
     261            } 
     262        } 
     263         
     264         
     265        for(int i=foldActiveLine; i < element.endline;i++) { 
     266            codeview.getCodeEdit().setFoldLevel( i,  foldOffset + SC_FOLDLEVELBASE + 1); 
     267        } 
     268        foldActiveLine = element.endline; 
     269        if (collapse && (cast(Method) element) ) { 
     270            codeview.getCodeEdit().toggleFold(element.startline-1); 
     271        } 
     272       
    254273    } 
    255274     
  • trunk/src/leds/Leds.d

    r225 r230  
    4242private import dool.io.FileException; 
    4343 
    44 private import gtk.Duit
     44private import gtk.GtkD
    4545 
    4646private import gthread.Thread; 
     
    788788}; 
    789789 
    790 private import lib.Loader; 
     790private import gtkc.Loader; 
    791791private import gdk.Threads; 
    792792version(splash) 
     
    804804    { 
    805805        // TODO threads are still broken on windows 
    806         Duit.init(args); 
     806        GtkD.init(args); 
    807807    } 
    808808    else 
    809809    { 
    810810        //Duit.initMultiThread(args); 
    811         Duit.init(args); 
     811        GtkD.init(args); 
    812812    } 
    813813     
     
    829829        version(splash) w.destroy(); 
    830830        debug(startup) writefln("Leds.main 4"); 
    831         Duit.main(); 
     831        GtkD.main(); 
    832832        debug(startup) writefln("Leds.main 5"); 
    833833    } 
  • trunk/src/leds/ListWindow.d

    r187 r230  
    2828private import gtk.ScrolledWindow; 
    2929 
    30 private import gtk.gtktypes; 
     30private import gtkc.gtktypes; 
    3131 
    3232private import gdk.Event; 
  • trunk/src/leds/Project.d

    r209 r230  
    7171 
    7272// dui imports 
    73 private import gdk.gdktypes; 
     73private import gtkc.gdktypes; 
    7474private import gtk.Widget; 
    7575private import gtk.Menu; 
     
    7979private import gtk.MessageDialog; 
    8080