Changes On Branch sosnae-dev Вы: nobody
Вход

Many hyperlinks are disabled.
Use anonymous login to enable hyperlinks.

Changes In Branch sosnae-dev Excluding Merge-Ins

This is equivalent to a diff from fcab43444d to 4d83140f80

2013-03-17
09:39
SciColorerV8 1.0.1.5 - поправлена работа с длинными строками (убран скролл в конец строки), - контекстное меню на номерах строк, пункт "Свернуть всё" теперь сворачивает не все блоки, а только те, которые указаны в настройках "Группировать - Сворачивать" check-in: c151d44bbd user: metaeditor tags: trunk
2013-03-16
13:45
Добавлен скрипт, перехватывающий сообщения об ошибках и группирует их Leaf check-in: 4d83140f80 user: sosnae tags: sosnae-dev
13:36
merge trunk check-in: ba484cb4b1 user: sosnae tags: sosnae-dev
2013-03-13
13:31
SessionManager исправленна ошибка максимизации окон. check-in: fcab43444d user: sosnae tags: trunk
2013-03-12
13:56
SciColorerV8 check-in: 6330c39d7f user: metaeditor tags: trunk

Changes to SciColorerV8/SciColorerV8Manager.js.

     1      1   $engine JScript
     2      2   $uname SciColorerV8Manager
     3      3   $dname SciColorerV8 Manager
            4  +$addin stdlib
     4      5   
     5      6   ReadScintillaMessageDefs()
            7  +stdlib.require('TextWindow.js', SelfScript);
     6      8   
     7      9   function macros_ПриКликеПоГиперссылке(){ //предопределенная, вызывается при Ctrl+Click на любом идентификаторе в тексте модуля
     8     10       addins.byUniqueName("SnegopatMainScript").invokeMacros("ПерейтиКОпределению")
           11  +    stdlib.setTimeout(function(){
           12  +
           13  +        var twnd = new TextWindow();
           14  +        if (twnd.IsActive()){
           15  +            //Message('dddd');
           16  +            var pos = twnd.GetSelection();
           17  +            var view = windows.getActiveView();
           18  +            if (!view){
           19  +            } else {
           20  +                    if (view.mdObj && view.mdProp) {
           21  +                        view.mdObj.openModule(view.mdProp.id);
           22  +                        twnd = new TextWindow();
           23  +                        twnd.SetCaretPos(5, 5);
           24  +                        twnd.SetSelection(pos.beginRow, pos.beginCol, pos.endRow, pos.endCol);
           25  +                    }
           26  +
           27  +            }
           28  +        }
           29  +    }, 3000);
           30  +    
     9     31   }
    10     32   
    11     33   function macros_ПриКонтекстномМенюНаНомерахСтрок(){ //предопределенная, вызывается при правом клике на номерах строк
    12     34       //addins.byUniqueName("SciColorerV8").invokeMacros("_РазвернутьВсе"); // например
    13     35       addins.byUniqueName("SciColorerV8").invokeMacros("_ПоказатьМеню");
    14     36   }
    15     37   

Added epf/ExtendedSearchРасширенныйОтбор.epf.

cannot compute difference between binary files

Changes to epf/epfloader.js.

    48     48   					loader.loadEpf(file.Path);
    49     49   				}
    50     50   			}
    51     51   		})(this, this.getEpfRootPath());
    52     52   	},
    53     53   	
    54     54   	loadEpf: function(path) {
           55  +		Message(path);
    55     56   		this.macroses = new Array();
    56     57   		var epf = this.v8.LoadEpf(path);
    57     58   		if (epf) {
    58     59   			var epfName = epf.Metadata().Name;
    59     60   			var macroses = this.v8.GetMacroses(epf);
    60     61   			for (var i=0; i<macroses.Count(); i++) {//макрос
    61     62   				this.addEpfMacros(epf, epfName, macroses.Get(i));

Changes to epf/ib/1Cv8.1CD.

cannot compute difference between binary files

Added extSyntaxCheck.js.

            1  +$engine JScript
            2  +$uname extSyntaxCheck
            3  +$dname Расширенние сообщений об ошибках .
            4  +$addin stdlib
            5  +$addin stdcommands
            6  +
            7  +// (c) Сосна Евгений <shenja@sosna.zp.ua>
            8  +
            9  +stdlib.require('TextWindow.js', SelfScript);
           10  +stdlib.require('ScriptForm.js', SelfScript);
           11  +stdlib.require('log4js.js', SelfScript);
           12  +
           13  +var logger = Log4js.getLogger(SelfScript.uniqueName);
           14  +var appender = new Log4js.BrowserConsoleAppender();
           15  +appender.setLayout(new Log4js.PatternLayout(Log4js.PatternLayout.TTCC_CONVERSION_PATTERN));
           16  +logger.addAppender(appender);
           17  +logger.setLevel(Log4js.Level.ERROR);
           18  +
           19  +SelfScript.self['macrosНастройка'] = function() {
           20  +    extSyntaxCheck = GetExtSyntaxCheck();
           21  +    extSyntaxCheck.show();
           22  +}
           23  +
           24  +
           25  +function syntaxAndSpellCheck() {
           26  +    if(stdcommands.Frntend.SyntaxCheck.getState().enabled)
           27  +        stdcommands.Frntend.SyntaxCheck.send();
           28  +    
           29  +    var wnd = GetTextWindow();
           30  +    
           31  +    var text = "";
           32  +    if (wnd){
           33  +        text = wnd.GetText();
           34  +        spellChecker = spell.GetSpellChecker();
           35  +        spellChecker.SpellModule(text, wnd);
           36  +    }
           37  +}
           38  +
           39  +ExtSyntaxCheck = ScriptForm.extend({
           40  +
           41  +    settingsRootPath : SelfScript.uniqueName,
           42  +    
           43  +    settings : {
           44  +        pflSnegopat : {
           45  +            'cathSyntaxCheck': false // Перехватывать комманду синтаксической проверки.
           46  +        }
           47  +    },
           48  +
           49  +    construct : function () {
           50  +        
           51  +        this._super(SelfScript.fullPath.replace(/.js$/, '.ssf')); //Загрузим форму с настройками, форма должна называться так же как и скрипт, только с расширением ssf
           52  +        this.RE = new RegExp("^(\\{.{1,}\\}\:.{1,}\)$", "mig"); 
           53  +        this.re_column = new RegExp("\\(\(\\d{1,})\,(\\d{1,})\\)\\}\:", "i");
           54  +        this.RE_ERROR_TEXT = new RegExp("\\s\\((Проверка\\:\\s.{1,})\\)$", "gim");
           55  +        this.errors = {};
           56  +        this.loadSettings(); //Загрузим сохраненные настройки. 
           57  +        
           58  +        ExtSyntaxCheck._instance = this;
           59  +    }, 
           60  +    
           61  +    loadSettings: function(){
           62  +        this._super();
           63  +        
           64  +        if (this.form.cathSyntaxCheck) { 
           65  +            //Подключаемся к команде проверки текста 
           66  +            logger.debug('loadSettings addHandler')
           67  +             stdcommands.Frntend.SyntaxCheck.addHandler(this, "onSyntaxCheck");
           68  +            
           69  +        } else {
           70  +            logger.debug('loadSettings delHandler')
           71  +            try {
           72  +                stdcommands.Frntend.SyntaxCheck.delHandler(this, "onSyntaxCheck");
           73  +            } catch(e) {
           74  +                logger.debug(e.description);
           75  +            }
           76  +            
           77  +        }
           78  +        
           79  +    },
           80  +    
           81  +    onSyntaxCheck : function (cmd){
           82  +        logger.debug('onSyntaxCheck ')
           83  +        if (cmd.isBefore){
           84  +            this.wnd = new TextWindow();
           85  +        }
           86  +        if(!cmd.isBefore)
           87  +        { 
           88  +            logger.debug('onSyntaxCheck disconnect')
           89  +            try {
           90  +                    events.disconnect(Designer, "onMessage", this);
           91  +
           92  +                 } catch (e) { }
           93  +                 
           94  +            hasErrors = false;
           95  +            
           96  +            for (var k in this.errors){
           97  +                hasErrors = true;
           98  +                text = this.errors[k];
           99  +                var Matches = this.re_column.exec(text);
          100  +                if (Matches != null){
          101  +                    
          102  +                    
          103  +                    var param = {}
          104  +                    param['wnd'] = this.wnd;
          105  +                    param['line'] = Matches[1];
          106  +                    param['column'] = Matches[2];
          107  +                    logger.debug('onSyntaxCheck вывод сообщения по регулярному выражению.');
          108  +                    Message(text, mExc3, (function(param){
          109  +                        logger.debug('on Message Обработчик событий.');
          110  +                        if (!param['wnd']) {
          111  +                            return 
          112  +                        }
          113  +                        if (!param['wnd'].IsActive()) {
          114  +                            return 
          115  +                        }
          116  +                        param['wnd'].SetCaretPos(param['line'], param['column']);
          117  +                        view = param['wnd'].GetView();
          118  +                        if (!view){
          119  +                            
          120  +                        } else {
          121  +                            logger.debug('view activate ');
          122  +                            view.activate();
          123  +                        }
          124  +                        
          125  +                        param = null
          126  +                        
          127  +                        
          128  +    }), param);
          129  +                } else {
          130  +                    logger.debug('onSyntaxCheck вывод сообщения - не смогли определить.');
          131  +                    Message(''+text);
          132  +                }
          133  +            }
          134  +            this.errors = {};
          135  +        } else {
          136  +            logger.debug('onSyntaxCheck connect')
          137  +            events.connect(Designer, "onMessage", this);
          138  +        }
          139  +        logger.debug('onSyntaxCheck end')
          140  +    },
          141  +    
          142  +    onMessage:function(param){
          143  +        text = param.text;
          144  +        if (!text.length)
          145  +            return
          146  +        
          147  +        this.RE = new RegExp("^(\\{.{1,}\\}\:.{1,}\)$", "mig"); 
          148  +        if ((Matches = this.RE.exec(text)) != null){
          149  +            param.cancel = true;
          150  +            str = Matches[1];
          151  +            if (!this.errors[str]){
          152  +                this.errors[str] = text;
          153  +            } else {
          154  +                this.RE_ERROR_TEXT = new RegExp("\\s\\((Проверка\\:\\s.{1,})\\)$", "gim");
          155  +                param.cancel = true;
          156  +                if ((Matches_error = this.RE_ERROR_TEXT.exec(text)) != null){
          157  +                    str_error = Matches_error[0];
          158  +                    this.errors[str] = this.errors[str]+' '+str_error;
          159  +                }
          160  +            }
          161  +        }
          162  +    },
          163  +    
          164  +    Ok_Click:function(Button){
          165  +        this.saveSettings();
          166  +        this.loadSettings();
          167  +        this.form.Close();
          168  +    }, 
          169  +
          170  +    Close_Click:function(Button){
          171  +        this.form.Close();
          172  +    }
          173  +
          174  +})
          175  +
          176  +
          177  +function GetExtSyntaxCheck() {
          178  +    if (!ExtSyntaxCheck._instance)
          179  +        new ExtSyntaxCheck();
          180  +    
          181  +    return ExtSyntaxCheck._instance;
          182  +}
          183  +
          184  +GetExtSyntaxCheck();

Added extSyntaxCheck.ssf.

cannot compute difference between binary files

Changes to wndpanel.js.

    16     16   
    17     17   global.connectGlobals(SelfScript)
    18     18   
    19     19   
    20     20   var form
    21     21   var needActivate, needHide
    22     22   var api = stdlib.require('winapi.js')
           23  +var diff;
    23     24   
    24     25   function getFullMDName(mdObj, mdProp)
    25     26   {
    26     27       var names = []
    27     28       while(true)
    28     29       {
    29     30           names.unshift(mdObj.name)
................................................................................
   550    551   
   551    552   function CmdsConfig(Кнопка)
   552    553   {
   553    554   	var pathToForm=SelfScript.fullPath.replace(/.js$/, 'param.ssf')
   554    555       мФормаНастройки=loadScriptForm(pathToForm, SelfScript.self) // Обработку событий формы привяжем к самому скрипту
   555    556       мФормаНастройки.ОткрытьМодально()
   556    557   }
          558  +
          559  +function КонтекстноеМенюДобавитьКСравнениюА(Кнопка) {
          560  +    if(form.Controls.WndList.ТекущаяСтрока) {
          561  +        var obj = getWindowObject(form.Controls.WndList.ТекущаяСтрока.Окно.view);
          562  +        if (!obj)
          563  +            return
          564  +        diff.addA(obj);
          565  +        
          566  +    }
          567  +}
          568  +
          569  +function КонтекстноеМенюДобавитьКСравнениюВ(Кнопка) {
          570  + if(form.Controls.WndList.ТекущаяСтрока) {
          571  +        var obj = getWindowObject(form.Controls.WndList.ТекущаяСтрока.Окно.view);
          572  +        if (!obj)
          573  +            return
          574  +        diff.addB(obj);
          575  +        
          576  +    }
          577  +}
          578  +
          579  +function КонтекстноеМенюДобавитьКСравнениюС(Кнопка) {
          580  +    if(form.Controls.WndList.ТекущаяСтрока) {
          581  +        var obj = getWindowObject(form.Controls.WndList.ТекущаяСтрока.Окно.view);
          582  +        if (!obj)
          583  +            return
          584  +        diff.addC(obj);
          585  +        
          586  +    }
          587  +}
          588  +
          589  +function КоманднаяПанельСравненияДействиеОчиститьБуфер(Кнопка) {
          590  +    diff.clearCache();
          591  +}
          592  +
          593  +function getWindowObject  (view) {
          594  +   
          595  +        if (view.mdObj && view.mdProp) 
          596  +            return new MdObject(view.mdObj, view.mdProp, view.title);
          597  +            
          598  +        var obj = view.getObject();
          599  +        if (obj && toV8Value(obj).typeName(0) == 'TextDocument')
          600  +            return new TextDocObject(obj, view.title);        
          601  +            
          602  +        if (obj) Message('Неподдерживаемый тип объекта для сравнения: ' + toV8Value(obj).typeName(0));
          603  +        
          604  +        return null;
          605  +}
          606  +
   557    607   
   558    608   function мЗаписатьНастройки() {
   559    609       мДляВнешнихФайловОтображатьТолькоИмяФайла=мФормаНастройки.ДляВнешнихФайловОтображатьТолькоИмяФайла
   560    610       мИспользоватьСессии = мФормаНастройки.ИспользоватьСессии;
   561    611       activateSearchElement = мФормаНастройки.ПриОткрытииФормыАктивизироватьСтрокуПоиска;
   562    612       profileRoot.setValue(pflOnlyNameForExtFiles, мДляВнешнихФайловОтображатьТолькоИмяФайла)
   563    613       profileRoot.setValue(pflUseSessions, мИспользоватьСессии);
................................................................................
   592    642   }
   593    643   
   594    644   function WndListПередУдалением(Элемент, Отказ)
   595    645   {
   596    646       Отказ.val = true
   597    647       closeSelected()
   598    648   }
          649  +
          650  +////////////////////////////////////////////////////////////////////////////////////////
          651  +////{ Вспомогательные объекты.
          652  +////
          653  +
          654  +MdObject = stdlib.Class.extend({           
          655  +    construct: function (obj, prop, title) {
          656  +        this.obj = obj;
          657  +        this.prop = prop;
          658  +        this.title = null;
          659  +        this.md = obj.container;
          660  +        this.isForm = (prop.name(1) == "Форма");
          661  +    },
          662  +    getText: function() {
          663  +        return this.obj.getModuleText(this.prop.id);
          664  +    },
          665  +
          666  +    saveTextToTempFile: function(path){
          667  +        if (!path) path = GetTempFileName('txt');
          668  +
          669  +        text = this.getText();
          670  +        var file = v8New("textDocument");
          671  +        file.setText(text);
          672  +        try{
          673  +            file.Write(path);    
          674  +        } catch (e) {
          675  +            return null;
          676  +        }
          677  +        
          678  +        return path;
          679  +
          680  +    },
          681  +
          682  +    activate: function() {
          683  +        this.obj.openModule(this.prop.id);
          684  +        return GetTextWindow();
          685  +    },
          686  +    getTitle: function() {
          687  +        if (!this.title)
          688  +        {
          689  +            function getMdName(mdObj) {                             
          690  +                if (mdObj.parent && mdObj.parent.mdClass.name(1) != 'Конфигурация')
          691  +                    return getMdName(mdObj.parent) + '.' + mdObj.mdClass.name(1) + '.' + mdObj.name;
          692  +                var cname = mdObj.mdClass.name(1);
          693  +                return  (cname ? cname +'.':'') + mdObj.name;
          694  +            }
          695  +            this.title = getMdName(this.obj) + '.' + this.prop.name(1);
          696  +        }
          697  +        return this.title;
          698  +    },
          699  +
          700  +    getForm: function(){
          701  +        if (!this.isForm) {
          702  +            return null
          703  +        }
          704  +
          705  +        var tempPath = GetTempFileName('ssf');
          706  +
          707  +        var ep = this.obj.getExtProp("Форма");
          708  +        var file = ep.saveToFile();
          709  +        try{
          710  +            // создадим хранилище на базе файла. Для управляемых форм тут вывалится в catch
          711  +            var stg = v8Files.attachStorage(file);
          712  +            // Получим из хранилища содержимое под-файла form
          713  +            var form = ep.getForm();
          714  +            var file1 = v8New("textDocument");
          715  +            file1.setText(' ');
          716  +            file1.Write(tempPath);
          717  +            file1=null;
          718  +
          719  +            var file = ep.saveToFile(v8files.open("file://"+tempPath,  fomIn | fomOut | fomTruncate));
          720  +            file.close();
          721  +            isManagmendForm = false
          722  +        } catch(e) {
          723  +            //logger.error(e.description);
          724  +            //isManagmendForm = true;
          725  +            file.seek(0, fsBegin)
          726  +            var text = file.getString(dsUtf8);
          727  +            var file = v8New("textDocument");
          728  +
          729  +            file.setText(text);
          730  +            var tempPath = GetTempFileName('txt');
          731  +            file.Write(tempPath);
          732  +            newPath = GetTempFileName('ssf');
          733  +            MoveFile(tempPath, newPath);
          734  +            tempPath = newPath;
          735  +        }
          736  +
          737  +        return tempPath;
          738  +    }
          739  +});
          740  +
          741  +TextDocObject = stdlib.Class.extend({
          742  +    construct: function (txtDoc, title) {
          743  +        this.obj = txtDoc;
          744  +        this.title = title;
          745  +    },
          746  +    getText: function() {
          747  +        return this.obj.GetText();
          748  +    },
          749  +    activate: function() {
          750  +        this.obj.Show();
          751  +        return GetTextWindow();
          752  +    },
          753  +    getTitle: function() {
          754  +        if (!this.title)
          755  +            this.title = this.obj.UsedFileName;
          756  +        return this.title;
          757  +    }
          758  +});
          759  +
          760  +diffObject = stdlib.Class.extend({
          761  +    construct: function (bla) {
          762  +        this.kdiffpath = "d:\\WORK\\snegopat\\local\\KDiff3\\kdiff3.exe";
          763  +        this.A = null;
          764  +        this.B = null;
          765  +        this.C = null;
          766  +    },
          767  +
          768  +    addA : function(obj){
          769  +        this.A = obj;
          770  +    }, 
          771  +
          772  +    addB : function(obj){
          773  +        this.B = obj;
          774  +        this.diffObjects();
          775  +    }, 
          776  +
          777  +    addC : function(obj){
          778  +        this.C = obj;
          779  +    }, 
          780  +
          781  +    diffObjects: function(){
          782  +        //debugger;
          783  +        if (!this.A || !this.B) {
          784  +            Message("Не заполенны А или В");
          785  +            return;
          786  +        }
          787  +
          788  +
          789  +        if (this.A.isForm = this.B.isForm) {
          790  +            //diff form...
          791  +
          792  +            //diff files...
          793  +            pathA = this.A.getForm();
          794  +            if (!pathA) return;
          795  +
          796  +            pathB = this.B.getForm();
          797  +            if (!pathB) return
          798  +
          799  +            v8reader = stdlib.require(stdlib.getSnegopatMainFolder() + "scripts\\dvcs\\diff-v8Reader.js").GetBackend();
          800  +            v8reader(pathA, pathB);
          801  +
          802  +        } else {
          803  +            //diff files...
          804  +            pathA = this.A.saveTextToTempFile();
          805  +            if (!pathA) return;
          806  +
          807  +            pathB = this.B.saveTextToTempFile();
          808  +            if (!pathB) return
          809  +
          810  +            if (this.C) {
          811  +                pathC = +this.C.saveTextToTempFile();
          812  +                if (!pathC) return    
          813  +
          814  +                pathC = ' '+pathC;
          815  +            } else {
          816  +                pathC = ''
          817  +            }
          818  +            
          819  +
          820  +            var cmd = this.kdiffpath +' "'+pathA+'" "'+ pathB +'" '+ pathC + ' -o '+ '"d:\\work\\temp\\'+this.A.getTitle()+'.txt"';
          821  +            Message(""+cmd);
          822  +            ЗапуститьПриложение(cmd, "", true);
          823  +
          824  +        }
          825  +
          826  +
          827  +    },
          828  +
          829  +    clearCache: function () {
          830  +        this.A = null;
          831  +        this.B = null;
          832  +        this.C = null;
          833  +    }
          834  +
          835  +});
   599    836   
   600    837   (function(){
   601    838       // Инициализация скрипта
   602    839       WndList.One = new WndList
   603    840       form = loadScriptForm(SelfScript.fullPath.replace(/js$/, 'ssf'), SelfScript.self)
   604    841       form.КлючСохраненияПоложенияОкна = "wndpanel"
   605    842       form.WndList.Columns.Окно.ТипЗначения = v8New("ОписаниеТипов")
................................................................................
   635    872   
   636    873   sessionManager = null;
   637    874   if (мИспользоватьСессии){
   638    875       loadSessionManager();
   639    876   }
   640    877   
   641    878   мФормаНастройки=null
          879  +diff = new diffObject();

Changes to wndpanel.ssf.

cannot compute difference between binary files