Changeset 41

Show
Ignore:
Timestamp:
09/27/07 18:18:09 (1 year ago)
Author:
steve
Message:

Deleting an image now will preserve ordering with an unsorted, sorted, or clustered list

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • mactorii.py

    r40 r41  
    2626from pyglet.window import mouse 
    2727from pyglet import font 
     28 
     29renderables_key_func = lambda x : 0 
    2830 
    2931files = None 
     
    117119        global root 
    118120        global selected 
     121        global renderables_key_func 
    119122         
    120123        if symbol == key.LEFT: 
     
    169172                        print "sorting by %s"%(hovering_over) 
    170173                        selected = images[hovering_over] 
     174                        renderables_key_func = sort_func 
    171175                        update_renderables() 
    172176                        xoffset = 0 
     
    227231        global rows 
    228232         
    229         item_sig = item[1][2
     233        item_sig = images[item[0]][1
    230234         
    231235        mul = 113 
     
    237241        return score 
    238242         
     243def images_to_renderables(images): 
     244        """returns images.items() as a set, minus sig data, which is set to zero""" 
     245        return list( [(t[0],(t[1][0], t[1][2])) for t in images.items()]) 
     246 
    239247def cluster_renderables(): 
    240248        """cluster renderables by their score against the 2 base lines""" 
    241         global images 
    242         global renderables 
    243          
    244         renderables = images.items() 
    245          
    246         # sort the renderables 
    247         renderables.sort(key=cluster_func) 
    248          
    249         #for i, r in enumerate(renderables): 
    250                  
     249        global renderables_key_func 
     250         
     251        renderables_key_func = cluster_func 
     252        update_renderables() 
    251253         
    252254def update_renderables(): 
     
    254256        global renderables 
    255257        global selected 
    256          
    257         renderables = images.items() 
    258          
    259         if selected != None: 
    260                 renderables.sort(key=sort_func) 
     258        global renderables_key_func 
     259         
     260        if renderables: 
     261                n = images_to_renderables(images) 
     262                if len(n) > len(renderables): 
     263                        # images were added, so just re-assign renderables 
     264                        renderables = n 
     265                elif len(n) < len(renderables): 
     266                        # images were removed, we need to remove them from renderables too 
     267                        renderables = n 
     268                         
     269        else: 
     270                renderables = images_to_renderables(images) 
     271                 
     272        renderables.sort(key=renderables_key_func) 
    261273 
    262274def sort_func(item): 
    263275        assert selected != None 
    264276         
    265         selected_sig = selected[2
    266         item_sig = item[1][2
     277        selected_sig = selected[1
     278        item_sig = images[item[0]][1
    267279         
    268280        return -signature_compare(selected_sig, item_sig) 
     
    316328         
    317329        # add to our dictionary 
    318         images[ file ] = (psurf, None, sig, wi.size) 
     330        images[ file ] = (psurf, sig, wi.size) 
    319331         
    320332def to_unicode(s): 
     
    472484                        if is_over_image(x,y,hoverx, hovery): 
    473485                                # draw some information 
    474                                 pix_size = font.Text(ft,"%dx%d"%(image[3][0], image[3][1]), x, y+config.text_yoffset) 
     486                                pix_size = font.Text(ft,"%dx%d"%(image[1][0], image[1][1]), x, y+config.text_yoffset) 
    475487                                pix_name = font.Text(ft, to_unicode(os.path.basename(filename)), x, y+config.text_yoffset+int(pix_size.height))                                          
    476488