Changes On Branch testSettingsReload Вы: nobody
Вход

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

Changes In Branch testSettingsReload Excluding Merge-Ins

This is equivalent to a diff from 26b83521b1 to 05929eb51e

2012-11-11
10:25
Исправлена ошибка: при повторной загрузке настроек при помощи LoadSettings() происходила ошибка инициализации менеджера настроек из-за того, что при первом вызове изменялось значение свойства settings формы. Leaf check-in: 05929eb51e user: kuntashov tags: testSettingsReload
2012-11-08
11:22
Пофиксена установка положения каретки при разворачивании шаблонов в SciColorer check-in: 085644d193 user: orefkov tags: trunk
2012-11-07
12:44
Добавил форму настроек check-in: ef802b48e3 user: sosnae tags: testSettingsReload
12:42
Create new branch named "testSettingsReload" check-in: c96bfbc8f3 user: sosnae tags: testSettingsReload
2012-11-06
14:25
Испраленна ошибка определения позиции текста для некоторых окон (СКД, конструктор запросов) check-in: 26b83521b1 user: sosnae tags: trunk
14:17
Добавлен скрипт Менеджер сессий, позволяет запоминать при выходе из Конфигуратора список открытых окон и воссатнавливать их при следующем входе. check-in: 8185b47180 user: sosnae tags: trunk

Changes to CfgStore.js.

    43     43   
    44     44           res = stdcommands.CfgStore.CaptureIntoCfgStore.send() // true если успешно
    45     45   
    46     46           if(isEventConnected)
    47     47               events.disconnect(windows, "onDoModal", SelfScript.self, "hookCaptureCfgStoreWindow")
    48     48           if(view)
    49     49               view.activate();
           50  +    }catch(e)
           51  +    {
           52  +        Message("Ошибка : " + e.description)
           53  +    }
           54  +
           55  +    return true;
           56  +}
           57  +
           58  +SelfScript.self['macrosПоместить объект в хранилище'] = function() {
           59  +
           60  +    try{ //иногда вылетают странные исключения :( при работе с элементами форм
           61  +        view = windows.getActiveView();
           62  +        if (!view || !view.mdObj || view.mdObj.container != metadata.current) return false;
           63  +        
           64  +        
           65  +        res1 = view.mdObj.activateInTree();
           66  +        
           67  +        isEventConnected = true
           68  +
           69  +        res = stdcommands.CfgStore.StoreIntoCfgStore.send() // true если успешно
           70  +
    50     71       }catch(e)
    51     72       {
    52     73           Message("Ошибка : " + e.description)
    53     74       }
    54     75   
    55     76       return true;
    56     77   }

Changes to Libs/ScriptForm.js.

   141    141           return this.settingsRootPath && this.settings;
   142    142       },
   143    143       
   144    144       loadSettings : function () {
   145    145           
   146    146           if (!this.hasSettings())
   147    147               return false;
          148  +            
          149  +        if (!this._defaultSettings) {
          150  +        	this._defaultSettings = {};
          151  +        	for(var prop in this.settings) {
          152  +	        	this._defaultSettings[prop] = this.settings[prop];
          153  +        	}
          154  +        }    
   148    155               
   149    156           var sm = stdlib.require('SettingsManagement.js').SettingsManagement;
   150         -        for (var pflType in this.settings) 
          157  +        for (var pflType in this._defaultSettings) 
   151    158           {
   152         -            var defaults = this.settings[pflType];
          159  +            var defaults = this._defaultSettings[pflType];
   153    160               // Имя ключа = строка - имя значения перечисления. Выполняя строку получаем необходимое значение. 
   154    161               var pflTypeValue = eval(pflType); 
   155    162               var settings = sm.CreateManager(this.settingsRootPath, defaults, pflTypeValue);
   156    163               
   157    164               settings.LoadSettings();
   158    165               if (this.form)
   159    166                   settings.ApplyToForm(this.form);            

Changes to SessionManager.js.

    47     47   }
    48     48   SelfScript.self['macrosОчистить всю историю'] = function() {
    49     49   
    50     50       var sm = GetSessionManager();
    51     51       sm.sessionTreeClear();
    52     52       return true;
    53     53   }
           54  +
           55  +SelfScript.self['macrosОткрыть настройку'] = function() {
           56  +
           57  +    var sms = GetSessionManagerSettings();
           58  +    sms.show(true);
           59  +    sms = null;
           60  +    var sm = GetSessionManager();
           61  +    sm.reloadSettings();
           62  +    return true;
           63  +}
           64  +
           65  +
    54     66   /* Возвращает название макроса по умолчанию - вызывается, когда пользователь
    55     67   дважды щелкает мышью по названию скрипта в окне Снегопата. */
    56     68   function getDefaultMacros() {
    57     69       return 'Восстановить последнюю сессию';
    58     70   }
    59     71   
    60     72   ////} Макросы
................................................................................
    64     76   ////
    65     77   SessionManager = ScriptForm.extend({
    66     78   
    67     79       settingsRootPath : SelfScript.uniqueName,
    68     80   
    69     81       settings : {
    70     82           pflBase : {
    71         -            'SessionsHistory' : "", //Таблица значений.
    72         -            'SassionSaved'     : v8New('ValueList'),
    73         -            'AutoSave'      : false, // Автосохранение сессии.
    74         -            'HistoryDepth'  : 15 // Количество элементов истории сессий.
           83  +            'SessionsHistory' : "", //Таблица значений 
           84  +            'SassionSaved'    : "",
           85  +            'AutoSave'        : true, // Автосохранение сессии.
           86  +            'HistoryDepth'    : 15, // Количество элементов истории сессий.
           87  +            'AutoRestore'     : true,
           88  +            'MarksSave'       : true,
           89  +            'MarksRestore'    : true
    75     90   
    76     91           }
    77     92       },
    78     93   
    79     94       construct : function (isExtend) {
    80     95   
    81     96           if (isExtend == undefined) isExtend = false;
................................................................................
   108    123               this.SessionTree.Columns.Add("prop");
   109    124               this.SessionTree.Columns.Add("rootId");
   110    125               this.SessionTree.Columns.Add("sortkey");
   111    126               this.SessionTree.Columns.Add("curLine");
   112    127           }
   113    128           
   114    129           try{
          130  +
   115    131               this.SessionTree.Columns.Add("curLine");
   116    132           } catch(e){  }
   117    133   
   118    134       },
   119    135   
   120    136       restoreSession:function(sessionName){
   121    137   
   122    138           var sessionsHistory = this.SessionTree;
          139  +        
   123    140           if (sessionsHistory.Rows.Count()==0){
   124    141               return ;
   125    142           }
          143  +
   126    144           if (sessionName==undefined) sessionName = ""
          145  +
          146  +        if (!this.form.AutoRestore) {
          147  +            return;
          148  +        }
   127    149   
   128    150           if (sessionName.length>0){
   129    151               for (var i = 0; i<sessionsHistory.Rows.Count(); i++){
   130    152                   session  = sessionsHistory.Rows.Get(i);
   131    153                   if (session.Name == sessionName){
   132    154                       sessionRow = session;
   133    155                       break;
................................................................................
   235    257               newRow.path = item.path;
   236    258               newRow.uuid = item.uuid;
   237    259               newRow.prop = item.prop;
   238    260               newRow.name = item.name;
   239    261               newRow.curLine = item.curLine;
   240    262               
   241    263           }
          264  +
          265  +        // Не позволяем истории расти более заданной глубины.
          266  +        while (this.SessionTree.Rows.Count() > this.form.HistoryDepth){
          267  +            currRow = this.SessionTree.Rows.Get(0);
          268  +            this.SessionTree.Rows.Delete(currRow);
          269  +        }
   242    270           this.form.SessionsHistory = ValueToStringInternal(this.SessionTree);
   243    271       },
   244    272       saveSettings:function(){
   245    273           this.form.SessionsHistory = ValueToStringInternal(this.SessionTree);
   246    274           this._super();
   247    275       },
   248    276       beforeExitApp:function(){
   249    277           
   250    278           this.watcher.onTimer(1);
   251    279           this.watcher.stopWatch();
   252         -        
   253         -        this.saveSession();
          280  +
          281  +        if (this.form.AutoSave){
          282  +            this.saveSession();    
          283  +        }
          284  +
   254    285           this.saveSettings();
   255    286       },
   256    287   
   257    288       expandTree : function (collapse) {
   258    289           var tree = this.form.Controls.SessionsList;
   259    290           for (var i=0; i < this.form.SessionsList.Rows.Count(); i++)
   260    291           {
................................................................................
   351    382                   //     }
   352    383                   // };
   353    384                    
   354    385       },
   355    386   
   356    387       sessionTreeClear:function(){
   357    388           this.SessionTree.Rows.Clear();
          389  +    }, 
          390  +    reloadSettings:function(){
          391  +        this.loadSettings();
   358    392       }
   359    393   
   360    394   
          395  +})
          396  +
          397  +////////////////////////////////////////////////////////////////////////////////////////
          398  +////{ SessionManagerSettings - Настройки менеджера сессий. 
          399  +////
          400  +SessionManagerSettings = ScriptForm.extend({
          401  +
          402  +    settingsRootPath : SelfScript.uniqueName,
          403  +
          404  +    settings : {
          405  +        pflBase : {
          406  +            'SessionsHistory' : "", //Таблица значений 
          407  +            'SassionSaved'    : "",
          408  +            'AutoSave'        : false, // Автосохранение сессии.
          409  +            'HistoryDepth'    : 15, // Количество элементов истории сессий.
          410  +            'AutoRestore'     : true,
          411  +            'MarksSave'       : true,
          412  +            'MarksRestore'    : true
          413  +
          414  +        }
          415  +    },
          416  +
          417  +    construct : function () {
          418  +
          419  +        this._super("scripts\\SessionManager.settings.ssf");
          420  +
          421  +        this.loadSettings();
          422  +
          423  +        SessionManagerSettings._instance = this;
          424  +
          425  +    },
          426  +    loadSettings:function(){
          427  +        this._super();
          428  +        try{
          429  +            this.SessionTree = ValueFromStringInternal(this.form.SessionsHistory);
          430  +        } catch(e){
          431  +            this.SessionTree = v8New("ValueTree");
          432  +            this.SessionTree.Columns.Add("Name");
          433  +            this.SessionTree.Columns.Add("path");
          434  +            this.SessionTree.Columns.Add("uuid");
          435  +            this.SessionTree.Columns.Add("prop");
          436  +            this.SessionTree.Columns.Add("rootId");
          437  +            this.SessionTree.Columns.Add("sortkey");
          438  +            this.SessionTree.Columns.Add("curLine");
          439  +        }
          440  +        
          441  +        try{
          442  +
          443  +            this.SessionTree.Columns.Add("curLine");
          444  +        } catch(e){  }
          445  +
          446  +    },
          447  +
          448  +    saveSettings:function(){
          449  +        this.form.SessionsHistory = ValueToStringInternal(this.SessionTree);
          450  +        this._super();
          451  +    },
          452  +
          453  +    Ok_Click:function(Button){
          454  +        this.saveSettings();
          455  +        this.form.Close();
          456  +    }, 
          457  +
          458  +    Close_Click:function(Button){
          459  +        this.form.Close();
          460  +    }
          461  +
   361    462   })
          463  +
          464  +
   362    465   
   363    466   ////////////////////////////////////////////////////////////////////////////////////////
   364    467   ////{ TextWindowsWatcher - отслеживает активизацию текстовых окон и запоминает последнее.
   365    468   ////
   366    469   
   367    470   TextWindowsWatcher = stdlib.Class.extend({
   368    471   
................................................................................
   586    689   ////
   587    690   function GetSessionManager() {
   588    691       if (!SessionManager._instance)
   589    692           new SessionManager();
   590    693   
   591    694       return SessionManager._instance;
   592    695   }
          696  +
          697  +function GetSessionManagerSettings() {
          698  +    if (!SessionManagerSettings._instance)
          699  +        new SessionManagerSettings();
          700  +
          701  +    return SessionManagerSettings._instance;
          702  +}
   593    703   
   594    704   function onTimer(Id) {
   595    705   
   596    706       se = GetSessionManager();
   597    707       se.restoreSession();
   598    708       if (!timerId)
   599    709           return;

Added SessionManager.settings.ssf.

cannot compute difference between binary files

Changes to SessionManager.ssf.

cannot compute difference between binary files