Changeset 297

Show
Ignore:
Timestamp:
03/21/08 18:08:48 (2 years ago)
Author:
rcrowley
Message:

Adding the helloworld extension to the repository. The hooks are done, the "docs" are done and life is good.

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • trunk/uploadr/MacUploadr.app/Contents/Resources/chrome/content/uploadr/conf.js

    r294 r297  
    3333        // What types of API events should be written to the console? 
    3434        console: { 
    35                 thumb: true, 
     35                thumb: false, 
    3636                request: false, 
    3737                response: false, 
  • trunk/uploadr/MacUploadr.app/Contents/Resources/chrome/content/uploadr/extension.js

    r296 r297  
    1212var extension = { 
    1313 
    14         after_login: { 
    15                 list: [], 
    16                 add: function(fn) { 
    17                         return extension._add('after_login', fn); 
    18                 }, 
    19                 remove: function(id) { 
    20                         extension._remove('after_login', id); 
    21                 }, 
    22                 exec: function(user) { 
    23                         extension._exec('after_login', [user]); 
    24                 } 
     14        // Dispatch a job to a background thread 
     15        //   The parameter must implement nsIRunnable 
     16        background: function(runnable) { 
     17                threads.worker.dispatch(runnable, threads.worker.DISPATCH_NORMAL); 
    2518        }, 
    2619 
    27         after_add: { 
    28                 list: [], 
    29                 add: function(fn) { 
    30                         return extension._add('after_add', fn); 
    31                 }, 
    32                 remove: function(id) { 
    33                         extension._remove('after_add', id); 
    34                 }, 
    35                 exec: function(list) { 
    36                         extension._exec('after_add', [list]); 
    37                 } 
     20        // Event handlers 
     21        //   Please don't call these on your own.  Instead, check out the 
     22        //   helloworld extension on http://code.flickr.com/ and play along. 
     23        Handler: function() { 
     24                this.list = []; 
     25                this.add = function() { return extension._add.apply(this, arguments); }; 
     26                this.remove = function() { extension._remove.apply(this, arguments); }; 
     27                this.exec = function() { extension._exec.apply(this, arguments); }; 
    3828        }, 
    39  
    40         before_upload: { 
    41                 list: [], 
    42                 add: function(fn) { 
    43                         return extension._add('before_upload', fn); 
    44                 }, 
    45                 remove: function(id) { 
    46                         extension._remove('before_upload', id); 
    47                 }, 
    48                 exec: function(list) { 
    49                         extension._exec('before_upload', [list]); 
    50                 } 
    51         }, 
    52  
    53         after_upload: { 
    54                 list: [], 
    55                 add: function(fn) { 
    56                         return extension._add('after_upload', fn); 
    57                 }, 
    58                 remove: function(id) { 
    59                         extension._remove('after_upload', id); 
    60                 }, 
    61                 exec: function(ok, fail) { 
    62                         extension._exec('after_upload', [ok, fail]); 
    63                 } 
    64         }, 
    65  
    66         // Don't call these on your own, use the nice hooks above 
    67         _add: function(e, fn) { 
    68                 var id = extension[e].list.length; 
    69                 extension[e].list.push(fn); 
     29        _add: function(fn) { 
     30                var id = this.list.length; 
     31                this.list.push(fn); 
    7032                return id; 
    7133        }, 
    72         _remove: function(e, id) { 
    73                 if (extension[e].list.length > id) { 
    74                         extension[e].list[id] = null; 
    75                 } 
     34        _remove: function(id) { 
     35                if (this.list.length > id) { this.list[id] = null; } 
    7636        }, 
    77         _exec: function(e, args) { 
    78                 var ii = extension[e].list.length; 
     37        _exec: function() { 
     38                var ii = this.list.length; 
    7939                for (var i = 0; i < ii; ++i) { 
    80                         var fn = extension[e].list[i]; 
    81                         if ('function' == typeof fn) { fn.apply(null, args); } 
     40                        var fn = this.list[i]; 
     41                        if ('function' == typeof fn) { fn.apply(null, arguments); } 
    8242                } 
    8343        } 
    8444 
    8545}; 
     46 
     47// Create the event handlers 
     48extension.after_login = new extension.Handler(); 
     49extension.after_add = new extension.Handler(); 
     50extension.after_thumb = new extension.Handler(); 
     51extension.before_remove = new extension.Handler(); 
     52extension.after_select = new extension.Handler(); 
     53extension.after_edit = new extension.Handler(); 
     54extension.after_reorder = new extension.Handler(); 
     55extension.before_upload = new extension.Handler(); 
     56extension.before_one_upload = new extension.Handler(); 
     57extension.after_one_upload = new extension.Handler(); 
     58extension.on_upload_progress = new extension.Handler(); 
     59extension.after_upload = new extension.Handler(); 
  • trunk/uploadr/MacUploadr.app/Contents/Resources/chrome/content/uploadr/meta.js

    r282 r297  
    199199                } 
    200200 
     201                // Send the selected photos list to extensions 
     202                extension.after_select.exec(photos.selected); 
     203 
    201204        }, 
    202205 
     
    267270                        p.safety_level = parseInt(document.getElementById('single_safety_level').value); 
    268271                } 
     272 
     273                // Send the selected photos list to extensions 
     274                extension.after_edit.exec(photos.selected); 
    269275 
    270276        }, 
  • trunk/uploadr/MacUploadr.app/Contents/Resources/chrome/content/uploadr/mouse.js

    r279 r297  
    467467                                photos.sort = false; 
    468468 
     469                                // Let extensions know we reordered photos 
     470                                extension.after_reorder.exec(true); 
     471 
    469472                        } 
    470473                        mouse.dragging = 0; 
  • trunk/uploadr/MacUploadr.app/Contents/Resources/chrome/content/uploadr/photos.js

    r296 r297  
    372372                var ii = photos.selected.length; 
    373373                if (0 == ii) { return; } 
     374 
     375                // Tell extensions which photos we're removing 
     376                extension.before_remove.exec(photos.selected); 
    374377 
    375378                // Remove selected photos 
     
    796799        this.progress_bar = null; 
    797800        this.nsid = null; 
     801        this.photo_id = null; 
    798802}; 
  • trunk/uploadr/MacUploadr.app/Contents/Resources/chrome/content/uploadr/threads.js

    r291 r297  
    256256                        Components.utils.reportError(err); 
    257257                } 
     258 
     259                // Tell extensions that we got a new thumbnail 
     260                extension.after_thumb.exec(this.id); 
     261 
    258262                unblock_sort(); 
    259263                unblock_remove(); 
     
    316320                unblock_normalize(); 
    317321                photos.list[this.id].path = this.path; 
     322 
     323                // Tell extensions that this photo was edited (rotated) 
     324                extension.after_edit.exec([this.id]); 
     325 
    318326        }, 
    319327        QueryInterface: function(iid) { 
     
    403411                meta.first = false; 
    404412 
     413                // Tell extensions that photos were sorted 
     414                extension.after_reorder.exec(false); 
     415 
    405416        }, 
    406417        QueryInterface: function(iid) { 
  • trunk/uploadr/MacUploadr.app/Contents/Resources/chrome/content/uploadr/upload.js

    r296 r297  
    7171 
    7272                var photo = photos.uploading[id]; 
     73 
     74                // Let extensions have their say 
     75                extension.before_one_upload.exec(photo); 
    7376 
    7477                // EXPERIMENTAL: Pass the photo to the socket uploadr 
     
    245248 
    246249                        } 
    247                         photos.uploaded.push(photo_id); 
     250                        photos.uploading[id].photo_id = photo_id; 
     251                        photos.uploaded.push(photos.uploading[id]); 
    248252 
    249253                        // Add to sets 
     
    312316                        } 
    313317                } 
     318 
     319                // Let extensions have their say 
     320                extension.after_one_upload.exec(photos.uploading[id], 'ok' == stat); 
     321 
    314322                photos.uploading[id] = null; 
    315323 
     
    348356                var a = available >> 10; 
    349357                var kb = upload.progress_last - a; 
     358 
     359                // Tell extensions how many kilobytes went by 
     360                extension.on_upload_progress.exec(kb); 
    350361 
    351362                // Have we made any progress? 
  • trunk/uploadr/MacUploadr.app/Contents/Resources/defaults/preferences/prefs.js

    r296 r297  
    1515 
    1616// Software updates 
    17 pref('app.update.url', 'http://flickr.com/services/uploadr/updates/?product=%PRODUCT%&version=%VERSION%&build_id=%BUILD_ID%&build_target=%BUILD_TARGET%&locale=%LOCALE%&'); 
     17pref('app.update.url', 'https://secure.flickr.com/services/uploadr/updates/?product=%PRODUCT%&version=%VERSION%&build_id=%BUILD_ID%&build_target=%BUILD_TARGET%&locale=%LOCALE%&'); 
    1818pref('app.update.url.manual', 'http://flickr.com/tools/uploadr/'); 
    1919pref('app.update.url.details', 'http://flickr.com/tools/uploadr/');