Changeset 489

Show
Ignore:
Timestamp:
2007-07-08 19:19:10 (2 years ago)
Author:
StefanoVerna
Message:

default filters can now be edited and restored

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • trunk/chrome/content/preferences/filtersPane.js

    r395 r489  
    247247                 
    248248                if (idx==-1) { 
    249                         $("filterLabel", "filterTest", "filterText", "filterImage", "filterIsRegex", "removebutton").forEach(function(a){a.disabled=true}); 
     249                        $("filterLabel", "filterTest", "filterText", "filterImage", "filterIsRegex", "restoreremovebutton").forEach(function(a){a.disabled=true}); 
    250250                        $("filterLabel", "filterTest").forEach(function(a){a.value=""}); 
    251251                        $("filterText", "filterImage", "filterIsRegex").forEach(function(a){a.checked=false}); 
     252                        $("restoreremovebutton").label = _('removebutton'); 
    252253                        return; 
    253254                } 
     
    264265                $("filterText").checked = currentFilter.type & 1; 
    265266                $("filterImage").checked = currentFilter.type & 2; 
    266                  
    267                 $("filterLabel", "filterTest", "filterText", "filterImage", "filterIsRegex", "removebutton").forEach(function(a){a.disabled=currentFilter.defFilter}); 
    268                  
     267                $("filterLabel", "filterTest", "filterText", "filterImage", "filterIsRegex", "restoreremovebutton").forEach(function(a){a.disabled=false}); 
     268                 
     269                $("restoreremovebutton").label = currentFilter.defFilter?_('restorebutton'):_('removebutton'); 
    269270                this.doCheckboxValidation(); 
    270271        }, 
     
    275276                var currentFilter = this.getFilter(idx); 
    276277                // invalid idx 
    277                 if (!currentFilter || currentFilter.defFilter) { 
     278                if (!currentFilter) { 
    278279                        return; 
    279280                } 
     
    350351                var currentFilter = this.getFilter(idx); 
    351352                // invalid idx 
    352                 if (!currentFilter || currentFilter.defFilter) { 
     353                if (!currentFilter) { 
    353354                        return; 
    354355                } 
     
    398399        removeFilter: function() { 
    399400                Debug.dump("remove"); 
    400                 var idx = this.getSelectedRow(); 
    401                 var currentFilter = this.getFilter(idx); 
    402  
    403                 // invalid idx 
    404                 if (!currentFilter || currentFilter.defFilter) { 
    405                         return; 
    406                 } 
    407                  
     401                var currentFilter = this.getFilter(this.getSelectedRow()); 
    408402                this._table.view.selection.select(-1); 
    409403                var currentFilter = currentFilter.remove(); 
    410404        }, 
    411         restoreDefaultFilters: function() { 
     405        restoreDefaultFilter: function() { 
    412406                if (DTA_confirm(_('restorefilterstitle'), _('restorefilterstext'), _('restore'), DTA_confirm.CANCEL, null, 1) == 1) { 
    413407                        return; 
    414408                } 
    415                 this._table.view.selection.select(-1); 
    416                 var e = DTA_FilterManager.enumAll(); 
    417                 while (e.hasMoreElements()) { 
    418                         var filter = e.getNext().QueryInterface(Components.interfaces.dtaIFilter); 
    419                         if (!filter.defFilter) 
    420                                 filter.remove(); 
     409                var currentFilter = this.getFilter(this.getSelectedRow()); 
     410                currentFilter.restore(); 
     411        }, 
     412        restoreRemoveFilter: function() { 
     413                var idx = this.getSelectedRow(); 
     414                if (idx==-1){ 
     415                        return; 
     416                } 
     417                var currentFilter = this.getFilter(idx); 
     418                if (currentFilter.defFilter) { 
     419                        this.restoreDefaultFilter() 
     420                } else { 
     421                        this.removeFilter(); 
    421422                } 
    422423        } 
  • trunk/chrome/content/preferences/filtersPane.xul

    r395 r489  
    5252                        <spacer flex="1"/> 
    5353                        <button label="&add.label;" oncommand="Dialog.createFilter();"/> 
    54                         <button label="&remove.label;" oncommand="Dialog.removeFilter();" id="removebutton"/> 
    55                         <button label="&default.label;" oncommand="Dialog.restoreDefaultFilters();" id="defaultbutton"/> 
     54                        <button label="" oncommand="Dialog.restoreRemoveFilter();" id="restoreremovebutton"/> 
    5655                        <spacer flex="1"/> 
    5756                 </hbox> 
  • trunk/chrome/locale/en-US/prefpanes.dtd

    r469 r489  
    88<!ENTITY linksf.label "Links filter"> 
    99<!ENTITY add.label "Add new filter"> 
    10 <!ENTITY remove.label "Delete filter"> 
    11 <!ENTITY default.label "Restore default filters"> 
    1210<!ENTITY highlight.label "Highlight files checked by filters"> 
    1311<!ENTITY dtacontext2.label "Preferences"> 
  • trunk/chrome/locale/en-US/prefpanes.properties

    r262 r489  
    66restoreprefstitle=Restore Preferences 
    77restoreprefstext=Do you want to restore preferences to their default state?\nThere is no way to undo this! 
    8 restorefilterstitle=Restore Filters 
    9 restorefilterstext=Do you want to remove all user filters and restore the built-in ones?\nThere is no way to undo this! 
     8restorefilterstitle=Restore Filter 
     9restorefilterstext=Do you want to restore the built-in values for this filter?\nThere is no way to undo this! 
    1010restore=Restore 
    1111regex=Reg. Ex. 
     
    1414newfilt=New filter 
    1515inserthere=Insert here extensions (split using commas) 
     16removebutton=Delete filter 
     17restorebutton=Restore default filter 
  • trunk/components/filterManager.idl

    r170 r489  
    5353        boolean match(in string test); 
    5454        void save(); 
     55        void restore(); 
    5556        void remove(); 
    5657}; 
  • trunk/components/filterManager.js

    r212 r489  
    5858        LINK_FILTER: (1 << 0), 
    5959        IMAGE_FILTER: (1 << 1), 
     60         
     61        defaultFilters: { 
     62                deffilter0: { 
     63                        test: "/.*/i", 
     64                        regex: true, 
     65                        type: this.LINK_FILTER + this.IMAGE_FILTER 
     66                }, 
     67                deffilter1: { 
     68                        test: "/\\.(?:z(?:ip|[0-9]{2})|r(?:ar|[0-9]{2})|jar|bz2|gz|tar|rpm)$/i", 
     69                        regex: true, 
     70                        type: this.LINK_FILTER 
     71                }, 
     72                deffilter2: { 
     73                        test: "/\\.(?:mpeg|rm|mpe|avi|mpg|mp4|mov|divx|asf|qt|wmv|ram|m1v|m2v|rv|vob|asx)$/i", 
     74                        regex: true, 
     75                        type: this.LINK_FILTER + this.IMAGE_FILTER 
     76                }, 
     77                deffilter3: { 
     78                        test: "/\\.(?:jp(?:e?g|e|2)|gif|png|tif|tiff|bmp|ico)$/i", 
     79                        regex: true, 
     80                        type: this.LINK_FILTER + this.IMAGE_FILTER 
     81                }, 
     82                deffilter4: { 
     83                        test: "/\\.(?:exe|msi|dmg|bin|xpi)$/i", 
     84                        regex: true, 
     85                        type: this.LINK_FILTER 
     86                }, 
     87                deffilter5: { 
     88                        test: "/\\.jp(e?g|e|2)$/i", 
     89                        regex: true, 
     90                        type: this.LINK_FILTER + this.IMAGE_FILTER 
     91                } 
     92        }, 
    6093 
    6194        _modified: false, 
     
    115148        }, 
    116149        set test(value) { 
    117                 if (this._defFilter) { 
    118                         throw new Components.Exception("default filters cannot be modified!"); 
    119                 } 
    120150                if (this._test == value) { 
    121151                        return; 
     
    149179        }, 
    150180        set isRegex(value) { 
    151                 if (this._defFilter) { 
    152                         throw new Components.Exception("default filters cannot be deleted!"); 
    153                 } 
    154181                if (this._isRegex == value) { 
    155182                        return; 
     
    171198        }, 
    172199        set type(t) { 
    173                 if (this._defFilter) { 
    174                         throw new Components.Exception("default filters cannot be modified!"); 
    175                 } 
    176200                if (this._type == t) { 
    177201                        return; 
     
    197221         */ 
    198222        load: function F_load(localizedLabel) { 
     223                this._localizedLabel = localizedLabel; 
    199224                this._label = this.getMultiBytePref(this.pref('label')); 
    200225                if (!this._label || !this._label.length) { 
     
    220245                } 
    221246                this._prefs.setBoolPref(this.pref('active'), this._active); 
    222  
    223                 // do not change defFilters 
    224                 if (!this.defFilter) { 
    225                         this.setMultiBytePref(this.pref('test'), this._test); 
    226                         this._prefs.setIntPref(this.pref('type'), this._type); 
    227                         this._prefs.setBoolPref(this.pref('regex'), this._isRegex); 
    228  
    229                 } 
     247                 
     248                this.setMultiBytePref(this.pref('test'), this._test); 
     249                this._prefs.setIntPref(this.pref('type'), this._type); 
     250                this._prefs.setBoolPref(this.pref('regex'), this._isRegex); 
     251                         
    230252                // save this last as FM will test for it. 
    231253                this.setMultiBytePref(this.pref('label'), this._label); 
    232254 
    233255                this._modified = false; 
     256        }, 
     257 
     258        // exported 
     259        restore: function F_restore() { 
     260                if (!this._defFilter) { 
     261                        throw new Components.Exception("only default filters can be restored!"); 
     262                } 
     263                this._label = this._localizedLabel; 
     264                this._test = defaultFilters[this._id].test; 
     265                this._type = defaultFilters[this._id].type; 
     266                this._isRegex = defaultFilters[this._id].regex; 
     267                 
     268                this.save(); 
    234269        }, 
    235270 
     
    335370 
    336371                // load those localized labels for default filters. 
    337                 this._labels = {}; 
     372                this._localizedLabels = {}; 
    338373                                var b = CC['@mozilla.org/intl/stringbundle;1'] 
    339374                        .getService(CI.nsIStringBundleService) 
     
    342377                while (e.hasMoreElements()) { 
    343378                        var prop = e.getNext().QueryInterface(CI.nsIPropertyElement); 
    344                         this._labels[prop.key] = prop.value; 
     379                        this._localizedLabels[prop.key] = prop.value; 
    345380                } 
    346381 
     
    389424                                // overwrite with localized labels. 
    390425                                var localizedLabel = null; 
    391                                 if (filter.id in this._labels) { 
    392                                         localizedLabel = this._labels[filter.id]; 
     426                                if (filter.id in this._localizedLabels) { 
     427                                        localizedLabel = this._localizedLabels[filter.id]; 
    393428                                } 
    394429                                filter.load(localizedLabel); 
  • trunk/defaults/preferences/filters.js

    r118 r489  
    3535 * ***** END LICENSE BLOCK ***** */ 
    3636pref("extensions.dta.filters.deffilter0.label", "All files"); 
    37 pref("extensions.dta.filters.deffilter0.test", ".*"); 
     37pref("extensions.dta.filters.deffilter0.test", "/.*/i"); 
    3838pref("extensions.dta.filters.deffilter0.regex", true); 
    3939pref("extensions.dta.filters.deffilter0.active", false);