"""
@author: `@parkin`_
"""
import os.path
from PySide import QtGui
[docs]class FileListItem(QtGui.QListWidgetItem):
"""
Subclass of QListWidgetItem to handle file names with long file paths.
"""
[docs] def __init__(self, filename):
words = os.path.split(filename)
self.simple_name = words[1]
super(FileListItem, self).__init__(self.simple_name)
self.file_name = filename
self.directory = words[0]
[docs] def get_file_name(self):
"""
:returns: StringType -- the file names with the file path included.
ex /home/user/.../filename
"""
return self.file_name
[docs] def get_simple_name(self):
"""
:returns: StringType -- the file name without the file path included.
"""
return self.simple_name
[docs] def get_directory(self):
"""
:returns: StringType -- the directory containing the file.
"""
return self.directory
[docs]class DataFileListItem(FileListItem):
"""
Is a FileListItem with a parameter.
"""
[docs] def __init__(self, filename, params):
FileListItem.__init__(self, filename)
self.params = params
[docs] def get_params(self):
"""
:returns: DictType -- Dictionary of the item's parameters.
"""
return dict(self.params)
[docs] def get_param(self, param):
"""
:param param: Key in the parameter dictionary, whose value should be returned.
:returns: Parameter value specified by the key 'param'.
"""
if param in self.params:
return self.params[param]
else:
return None
[docs]class FilterListItem(QtGui.QListWidgetItem):
"""
Subclass of QListWidgetItem to handle filter list items.
self.params contain the filter parameters specified by the user.
"""
[docs] def __init__(self, file_names, **params):
"""
:param ListType<String> file_names: File names that define this FilterListItem.
:param params: A dictionary of the parameters for this FilterListItem.
"""
self.file_names = file_names
self.simple_names = []
item_text = 'item'
if len(file_names) > 0:
item_text = ''
index = 0
for filename in file_names:
words = os.path.split(filename)
simple_name = words[1]
item_text += simple_name
self.simple_names.append(simple_name)
index += 1
# don't append ', ' to last item
if index < len(file_names):
item_text += ', '
super(FilterListItem, self).__init__(item_text)
self.params = params
if not 'color' in params:
# give the item a default color
self.params['color'] = QtGui.QColor.fromRgbF(0., 0., 1.)
# set the icon color
# self.setForeground(params['color'])
pix_map = QtGui.QPixmap(20, 20)
pix_map.fill(self.params['color'])
self.setIcon(QtGui.QIcon(pix_map))
[docs] def get_params(self):
"""
:returns: Dict -- dictionary of the parameters of this Item.
"""
return dict(self.params)
[docs] def get_file_names(self):
"""
:returns: List -- list of the full file names of the files that make up this Item.
"""
return list(self.file_names)
[docs] def get_file_name_at(self, index):
"""
:param IntType index: Position of the item.
:returns: String -- Full filename (including path) of the file at index.
"""
if 0 <= index < len(self.file_names):
return self.file_names[index]
else:
return None
[docs] def get_simple_names(self):
"""
:returns: List -- list of the simple names (no path/directory) of the files that make up this Item.
"""
return list(self.simple_names)
[docs] def get_simple_name_at(self, index):
"""
:param IntType index: Index of the list item to get the simple name of.
:returns: String -- Simple name (i.e. no path/directory) of the file at index.
"""
if 0 <= index < len(self.file_names):
return self.simple_names[index]
else:
return None