Broke glade files up into smaller chunks, sort and double click added to all main views.
svn: r541
This commit is contained in:
@ -28,6 +28,7 @@ from RelLib import *
|
||||
import utils
|
||||
import const
|
||||
import os
|
||||
import Config
|
||||
|
||||
from intl import gettext
|
||||
_ = gettext
|
||||
@ -35,23 +36,83 @@ _ = gettext
|
||||
class MediaView:
|
||||
def __init__(self,db,glade,update):
|
||||
self.db = db
|
||||
self.media_list = glade.get_widget("media_list")
|
||||
self.mid = glade.get_widget("mid")
|
||||
self.mtype = glade.get_widget("mtype")
|
||||
self.mdesc = glade.get_widget("mdesc")
|
||||
self.mpath = glade.get_widget("mpath")
|
||||
self.mdetails = glade.get_widget("mdetails")
|
||||
self.preview = glade.get_widget("preview")
|
||||
self.media_list = glade.get_widget("media_list")
|
||||
self.mid = glade.get_widget("mid")
|
||||
self.mtype = glade.get_widget("mtype")
|
||||
self.mdesc = glade.get_widget("mdesc")
|
||||
self.mpath = glade.get_widget("mpath")
|
||||
self.mdetails = glade.get_widget("mdetails")
|
||||
self.mid_arrow = glade.get_widget("mid_arrow")
|
||||
self.mdescr_arrow= glade.get_widget("mdescr_arrow")
|
||||
self.mtype_arrow = glade.get_widget("mtype_arrow")
|
||||
self.mpath_arrow = glade.get_widget("mpath_arrow")
|
||||
self.preview = glade.get_widget("preview")
|
||||
|
||||
self.sort_arrow = [self.mdescr_arrow, self.mid_arrow,
|
||||
self.mtype_arrow, self.mpath_arrow]
|
||||
self.sort_map = [5,1,2,3,-1]
|
||||
self.sort_col = 5
|
||||
self.sort_dir = GTK.SORT_ASCENDING
|
||||
self.media_list.connect('click-column',self.click_column)
|
||||
|
||||
self.mid_arrow.hide()
|
||||
self.mtype_arrow.hide()
|
||||
self.mpath_arrow.hide()
|
||||
|
||||
t = [ ('STRING', 0, 0),
|
||||
('text/plain',0,0),
|
||||
('text/uri-list',0,2),
|
||||
('application/x-rootwin-drop',0,1)]
|
||||
|
||||
self.media_list.drag_source_set(GDK.BUTTON1_MASK|GDK.BUTTON3_MASK,t,GDK.ACTION_COPY)
|
||||
self.media_list.drag_dest_set(GTK.DEST_DEFAULT_ALL,t,GDK.ACTION_COPY|GDK.ACTION_MOVE)
|
||||
self.media_list.drag_source_set(GDK.BUTTON1_MASK|GDK.BUTTON3_MASK,
|
||||
t,
|
||||
GDK.ACTION_COPY)
|
||||
self.media_list.drag_dest_set(GTK.DEST_DEFAULT_ALL,
|
||||
t,
|
||||
GDK.ACTION_COPY|GDK.ACTION_MOVE)
|
||||
|
||||
self.update = update
|
||||
self.media_list.set_column_visibility(4,Config.show_detail)
|
||||
self.media_list.set_column_visibility(5,0)
|
||||
self.media_list.connect('button-press-event',self.on_button_press_event)
|
||||
|
||||
def click_column(self,obj,column):
|
||||
|
||||
new_col = self.sort_map[column]
|
||||
if new_col == -1:
|
||||
return
|
||||
|
||||
data = None
|
||||
if len(obj.selection) == 1:
|
||||
data = obj.get_row_data(obj.selection[0])
|
||||
|
||||
obj.freeze()
|
||||
if new_col == self.sort_col:
|
||||
if self.sort_dir == GTK.SORT_ASCENDING:
|
||||
self.sort_dir = GTK.SORT_DESCENDING
|
||||
else:
|
||||
self.sort_dir = GTK.SORT_ASCENDING
|
||||
else:
|
||||
self.sort_dir = GTK.SORT_ASCENDING
|
||||
|
||||
for a in self.sort_arrow:
|
||||
a.hide()
|
||||
|
||||
a = self.sort_arrow[column]
|
||||
a.show()
|
||||
if self.sort_dir == GTK.SORT_ASCENDING:
|
||||
a.set(GTK.ARROW_DOWN,2)
|
||||
else:
|
||||
a.set(GTK.ARROW_UP,2)
|
||||
|
||||
obj.set_sort_type(self.sort_dir)
|
||||
obj.set_sort_column(new_col)
|
||||
self.sort_col = new_col
|
||||
obj.sort()
|
||||
if data:
|
||||
row = obj.find_row_from_data(data)
|
||||
obj.moveto(row)
|
||||
obj.thaw()
|
||||
|
||||
def on_select_row(self,obj,row,b,c):
|
||||
mobj = obj.get_row_data(row)
|
||||
@ -67,7 +128,15 @@ class MediaView:
|
||||
self.mpath.set_text(path)
|
||||
else:
|
||||
self.mpath.set_text("<local>")
|
||||
self.mdetails.set_text("")
|
||||
self.mdetails.set_text(utils.get_detail_text(mobj,0))
|
||||
|
||||
def on_button_press_event(self,obj,event):
|
||||
if event.button != 1 or event.type != GDK._2BUTTON_PRESS:
|
||||
return
|
||||
if len(self.media_list.selection) <= 0:
|
||||
return
|
||||
object = self.media_list.get_row_data(self.media_list.selection[0])
|
||||
ImageSelect.GlobalMediaProperties(self.db,object,self.load_media)
|
||||
|
||||
def load_media(self):
|
||||
|
||||
@ -78,7 +147,9 @@ class MediaView:
|
||||
|
||||
self.media_list.freeze()
|
||||
self.media_list.clear()
|
||||
|
||||
self.media_list.set_column_visibility(1,Config.id_visible)
|
||||
self.media_list.set_column_visibility(4,Config.show_detail)
|
||||
|
||||
index = 0
|
||||
objects = self.db.getObjectMap().values()
|
||||
|
||||
@ -90,7 +161,9 @@ class MediaView:
|
||||
path = "<local copy>"
|
||||
else:
|
||||
path = src.getPath()
|
||||
self.media_list.append([id,title,type,path,""])
|
||||
details = utils.get_detail_flags(src,0)
|
||||
stitle = string.upper(title)
|
||||
self.media_list.append([title,id,type,path,details,stitle])
|
||||
self.media_list.set_row_data(index,src)
|
||||
index = index + 1
|
||||
|
||||
|
Reference in New Issue
Block a user