forked from openlp/openlp
Merging multiple items done
bzr-revno: 374
This commit is contained in:
parent
5660ef45fd
commit
940eb089e9
@ -42,14 +42,18 @@ class ServiceData(QAbstractItemModel):
|
|||||||
global log
|
global log
|
||||||
log=logging.getLogger("ServiceData")
|
log=logging.getLogger("ServiceData")
|
||||||
def __init__(self):
|
def __init__(self):
|
||||||
|
QAbstractItemModel.__init__(self)
|
||||||
self.items=[]
|
self.items=[]
|
||||||
log.info("Starting")
|
log.info("Starting")
|
||||||
|
def columnCount(self, parent):
|
||||||
|
return 1; # always only a single column (for now)
|
||||||
def rowCount(self, parent):
|
def rowCount(self, parent):
|
||||||
return len(self.items)
|
return len(self.items)
|
||||||
def insertRow(self, row, service_item):
|
def insertRow(self, row, service_item):
|
||||||
# self.beginInsertRows(QModelIndex(),row,row)
|
# self.beginInsertRows(QModelIndex(),row,row)
|
||||||
log.info("insert row %d:%s"%(row,service_item))
|
log.info("insert row %d:%s"%(row,service_item))
|
||||||
self.items.insert(row, service_item)
|
self.items.insert(row, service_item)
|
||||||
|
log.info("Items: %s" % self.items)
|
||||||
# self.endInsertRows()
|
# self.endInsertRows()
|
||||||
def removeRow(self, row):
|
def removeRow(self, row):
|
||||||
self.beginRemoveRows(QModelIndex(), row,row)
|
self.beginRemoveRows(QModelIndex(), row,row)
|
||||||
@ -58,7 +62,11 @@ class ServiceData(QAbstractItemModel):
|
|||||||
def addRow(self, item):
|
def addRow(self, item):
|
||||||
self.insertRow(len(self.items), item)
|
self.insertRow(len(self.items), item)
|
||||||
|
|
||||||
|
def index(self, row, col, parent = QModelIndex()):
|
||||||
|
return self.createIndex(row,col)
|
||||||
|
|
||||||
|
def parent(self, index=QModelIndex()):
|
||||||
|
return QModelIndex() # no children as yet
|
||||||
def data(self, index, role):
|
def data(self, index, role):
|
||||||
"""
|
"""
|
||||||
Called by the service manager to draw us in the service window
|
Called by the service manager to draw us in the service window
|
||||||
@ -87,12 +95,19 @@ class ServiceData(QAbstractItemModel):
|
|||||||
for i in self.items:
|
for i in self.items:
|
||||||
yield i
|
yield i
|
||||||
|
|
||||||
|
def item(self, row):
|
||||||
|
log.info("Get Item:%d -> %s" %(row, str(self.items)))
|
||||||
|
return self.items[row]
|
||||||
|
|
||||||
|
|
||||||
class ServiceManager(QWidget):
|
class ServiceManager(QWidget):
|
||||||
|
|
||||||
"""Manages the orders of service. Currently this involves taking
|
"""Manages the orders of service. Currently this involves taking
|
||||||
text strings from plugins and adding them to an OOS file. In
|
text strings from plugins and adding them to an OOS file. In
|
||||||
future, it will also handle zipping up all the resources used into
|
future, it will also handle zipping up all the resources used into
|
||||||
one lump"""
|
one lump.
|
||||||
|
Also handles the UI tasks of moving things up and down etc.
|
||||||
|
"""
|
||||||
|
|
||||||
def __init__(self, parent):
|
def __init__(self, parent):
|
||||||
QWidget.__init__(self)
|
QWidget.__init__(self)
|
||||||
@ -122,7 +137,7 @@ class ServiceManager(QWidget):
|
|||||||
|
|
||||||
self.TreeView = QtGui.QTreeView(self)
|
self.TreeView = QtGui.QTreeView(self)
|
||||||
self.service_data=ServiceData()
|
self.service_data=ServiceData()
|
||||||
# self.TreeView.setModel(self.service_data)
|
self.TreeView.setModel(self.service_data)
|
||||||
self.Layout.addWidget(self.TreeView)
|
self.Layout.addWidget(self.TreeView)
|
||||||
|
|
||||||
def addServiceItem(self, item):
|
def addServiceItem(self, item):
|
||||||
@ -132,28 +147,22 @@ class ServiceManager(QWidget):
|
|||||||
assert len(indexes) <= 1 # can only have one selected index in this view
|
assert len(indexes) <= 1 # can only have one selected index in this view
|
||||||
if indexes == []:
|
if indexes == []:
|
||||||
log.info("No row")
|
log.info("No row")
|
||||||
row = 0
|
row = None
|
||||||
selected_item = None
|
selected_item = None
|
||||||
else:
|
else:
|
||||||
row=index.row()
|
row=indexes[0].row()
|
||||||
# if currently selected is of correct type, add it to it
|
# if currently selected is of correct type, add it to it
|
||||||
selected_item=self.service_data(row)
|
|
||||||
log.info("row:%d"%row)
|
log.info("row:%d"%row)
|
||||||
|
selected_item=self.service_data.item(row)
|
||||||
if type(selected_item) == type(item):
|
if type(selected_item) == type(item):
|
||||||
log.info("Add to existing item")
|
log.info("Add to existing item")
|
||||||
selected_item.add(item)
|
selected_item.add(item)
|
||||||
else:
|
else:
|
||||||
log.info("Create new item")
|
log.info("Create new item")
|
||||||
# otherwise create a new one
|
if row is None:
|
||||||
# print item
|
self.service_data.addRow(item)
|
||||||
# print item.imgs
|
else:
|
||||||
# i=deepcopy(item)
|
self.service_data.insertRow(row+1, item)
|
||||||
# print i
|
|
||||||
# print i.imgs
|
|
||||||
self.service_data.insertRow(row+1, item)
|
|
||||||
# for i in self.service_data:
|
|
||||||
# print item.imgs
|
|
||||||
# print i.imgs
|
|
||||||
def removeServiceItem(self):
|
def removeServiceItem(self):
|
||||||
"""Remove currently selected item"""
|
"""Remove currently selected item"""
|
||||||
pass
|
pass
|
||||||
|
@ -20,7 +20,8 @@ import time
|
|||||||
import sys
|
import sys
|
||||||
import os, os.path
|
import os, os.path
|
||||||
from PyQt4 import QtGui, QtCore
|
from PyQt4 import QtGui, QtCore
|
||||||
|
from PyQt4.QtCore import *
|
||||||
|
from PyQt4.QtGui import *
|
||||||
mypath=os.path.split(os.path.abspath(__file__))[0]
|
mypath=os.path.split(os.path.abspath(__file__))[0]
|
||||||
sys.path.insert(0,(os.path.join(mypath, '..','..', '..','..')))
|
sys.path.insert(0,(os.path.join(mypath, '..','..', '..','..')))
|
||||||
from openlp.core.ui import ServiceManager
|
from openlp.core.ui import ServiceManager
|
||||||
@ -59,6 +60,8 @@ class TestServiceManager_base:
|
|||||||
self.expected_answer="Don't know yet"
|
self.expected_answer="Don't know yet"
|
||||||
self.answer=None
|
self.answer=None
|
||||||
self.s=ServiceManager(None)
|
self.s=ServiceManager(None)
|
||||||
|
# get a selection model so we can pretend to be a user and click different items
|
||||||
|
# self.sm_selection_model=self.s.service_data.selectionModel()
|
||||||
log.info("--------------- Setup Done -------------")
|
log.info("--------------- Setup Done -------------")
|
||||||
|
|
||||||
def teardown_method(self, method):
|
def teardown_method(self, method):
|
||||||
@ -103,8 +106,18 @@ class TestServiceManager_base:
|
|||||||
log.info("test_2items_merged")
|
log.info("test_2items_merged")
|
||||||
item=ImageServiceItem(None)
|
item=ImageServiceItem(None)
|
||||||
item.add("test.gif")
|
item.add("test.gif")
|
||||||
# now select the line
|
|
||||||
self.s.addServiceItem(item)
|
self.s.addServiceItem(item)
|
||||||
|
# now select the line we just added
|
||||||
|
# first get the index
|
||||||
|
i=self.s.service_data.index(0,0)
|
||||||
|
# make a selection of it
|
||||||
|
sm=QItemSelectionModel(self.s.service_data)
|
||||||
|
# selection=QItemSelection(i,i)
|
||||||
|
sm.select(i, QItemSelectionModel.ClearAndSelect)
|
||||||
|
log.info(str(sm.selectedIndexes()))
|
||||||
|
self.s.TreeView.setSelectionModel(sm)
|
||||||
|
log.info("Slected indexes = " + str(self.s.TreeView.selectedIndexes()))
|
||||||
|
|
||||||
item=ImageServiceItem(None)
|
item=ImageServiceItem(None)
|
||||||
item.add("test2.gif")
|
item.add("test2.gif")
|
||||||
item.add("test3.gif")
|
item.add("test3.gif")
|
||||||
@ -119,24 +132,11 @@ class TestServiceManager_base:
|
|||||||
assert lines[3] == "test3.gif"
|
assert lines[3] == "test3.gif"
|
||||||
log.info("done")
|
log.info("done")
|
||||||
|
|
||||||
# def test_moving_selection(self):
|
# add different types of service item
|
||||||
# log.info("test_easy")
|
# move up, down
|
||||||
# item=ImageServiceItem(None)
|
# move to top, bottom
|
||||||
# item.add("test1.gif")
|
# new and save as
|
||||||
# item.add("test2.gif")
|
# deleting items
|
||||||
# item.add("test3.gif")
|
|
||||||
# item.add("test2a.gif")
|
|
||||||
# self.s.addServiceItem(item)
|
|
||||||
# answer = self.s.oos_as_text()
|
|
||||||
# log.info("Answer = " + str(answer))
|
|
||||||
# lines=answer.split("\n")
|
|
||||||
# log.info("lines = " + str(lines))
|
|
||||||
# assert lines[0].startswith("# <openlp.plugins.images.imageserviceitem.ImageServiceItem object")
|
|
||||||
# assert lines[1] == "test1.gif"
|
|
||||||
# assert lines[2] == "test2.gif"
|
|
||||||
# assert lines[3] == "test2a.gif"
|
|
||||||
# assert lines[4] == "test3.gif"
|
|
||||||
# log.info("done")
|
|
||||||
|
|
||||||
if __name__=="__main__":
|
if __name__=="__main__":
|
||||||
|
|
||||||
|
@ -92,7 +92,7 @@ class ImagePlugin(Plugin, PluginUtils):
|
|||||||
self.ImageListView.setGeometry(QtCore.QRect(10, 100, 256, 591))
|
self.ImageListView.setGeometry(QtCore.QRect(10, 100, 256, 591))
|
||||||
self.ImageListView.setSpacing(1)
|
self.ImageListView.setSpacing(1)
|
||||||
self.ImageListView.setAlternatingRowColors(True)
|
self.ImageListView.setAlternatingRowColors(True)
|
||||||
# return self.MediaManagerItem
|
return self.MediaManagerItem
|
||||||
|
|
||||||
def initialise(self):
|
def initialise(self):
|
||||||
log.info("Plugin Initialising")
|
log.info("Plugin Initialising")
|
||||||
|
@ -90,7 +90,7 @@ class ImageServiceItem(ServiceItem):
|
|||||||
self.imgs.addRow(data)
|
self.imgs.addRow(data)
|
||||||
else: # it's another service item to be merged in
|
else: # it's another service item to be merged in
|
||||||
log.info("add Item..."+str(data))
|
log.info("add Item..."+str(data))
|
||||||
for filename in data.get_file_list():
|
for filename in data.imgs.get_file_list():
|
||||||
self.add(filename)
|
self.add(filename)
|
||||||
|
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user