forked from openlp/openlp
parent
5660ef45fd
commit
940eb089e9
|
@ -42,14 +42,18 @@ class ServiceData(QAbstractItemModel):
|
|||
global log
|
||||
log=logging.getLogger("ServiceData")
|
||||
def __init__(self):
|
||||
QAbstractItemModel.__init__(self)
|
||||
self.items=[]
|
||||
log.info("Starting")
|
||||
def columnCount(self, parent):
|
||||
return 1; # always only a single column (for now)
|
||||
def rowCount(self, parent):
|
||||
return len(self.items)
|
||||
def insertRow(self, row, service_item):
|
||||
# self.beginInsertRows(QModelIndex(),row,row)
|
||||
log.info("insert row %d:%s"%(row,service_item))
|
||||
self.items.insert(row, service_item)
|
||||
log.info("Items: %s" % self.items)
|
||||
# self.endInsertRows()
|
||||
def removeRow(self, row):
|
||||
self.beginRemoveRows(QModelIndex(), row,row)
|
||||
|
@ -58,7 +62,11 @@ class ServiceData(QAbstractItemModel):
|
|||
def addRow(self, 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):
|
||||
"""
|
||||
Called by the service manager to draw us in the service window
|
||||
|
@ -87,12 +95,19 @@ class ServiceData(QAbstractItemModel):
|
|||
for i in self.items:
|
||||
yield i
|
||||
|
||||
def item(self, row):
|
||||
log.info("Get Item:%d -> %s" %(row, str(self.items)))
|
||||
return self.items[row]
|
||||
|
||||
|
||||
class ServiceManager(QWidget):
|
||||
|
||||
"""Manages the orders of service. Currently this involves taking
|
||||
text strings from plugins and adding them to an OOS file. In
|
||||
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):
|
||||
QWidget.__init__(self)
|
||||
|
@ -122,7 +137,7 @@ class ServiceManager(QWidget):
|
|||
|
||||
self.TreeView = QtGui.QTreeView(self)
|
||||
self.service_data=ServiceData()
|
||||
# self.TreeView.setModel(self.service_data)
|
||||
self.TreeView.setModel(self.service_data)
|
||||
self.Layout.addWidget(self.TreeView)
|
||||
|
||||
def addServiceItem(self, item):
|
||||
|
@ -132,28 +147,22 @@ class ServiceManager(QWidget):
|
|||
assert len(indexes) <= 1 # can only have one selected index in this view
|
||||
if indexes == []:
|
||||
log.info("No row")
|
||||
row = 0
|
||||
row = None
|
||||
selected_item = None
|
||||
else:
|
||||
row=index.row()
|
||||
row=indexes[0].row()
|
||||
# if currently selected is of correct type, add it to it
|
||||
selected_item=self.service_data(row)
|
||||
log.info("row:%d"%row)
|
||||
selected_item=self.service_data.item(row)
|
||||
if type(selected_item) == type(item):
|
||||
log.info("Add to existing item")
|
||||
selected_item.add(item)
|
||||
else:
|
||||
log.info("Create new item")
|
||||
# otherwise create a new one
|
||||
# print item
|
||||
# print item.imgs
|
||||
# i=deepcopy(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
|
||||
if row is None:
|
||||
self.service_data.addRow(item)
|
||||
else:
|
||||
self.service_data.insertRow(row+1, item)
|
||||
def removeServiceItem(self):
|
||||
"""Remove currently selected item"""
|
||||
pass
|
||||
|
|
|
@ -20,7 +20,8 @@ import time
|
|||
import sys
|
||||
import os, os.path
|
||||
from PyQt4 import QtGui, QtCore
|
||||
|
||||
from PyQt4.QtCore import *
|
||||
from PyQt4.QtGui import *
|
||||
mypath=os.path.split(os.path.abspath(__file__))[0]
|
||||
sys.path.insert(0,(os.path.join(mypath, '..','..', '..','..')))
|
||||
from openlp.core.ui import ServiceManager
|
||||
|
@ -59,6 +60,8 @@ class TestServiceManager_base:
|
|||
self.expected_answer="Don't know yet"
|
||||
self.answer=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 -------------")
|
||||
|
||||
def teardown_method(self, method):
|
||||
|
@ -103,8 +106,18 @@ class TestServiceManager_base:
|
|||
log.info("test_2items_merged")
|
||||
item=ImageServiceItem(None)
|
||||
item.add("test.gif")
|
||||
# now select the line
|
||||
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.add("test2.gif")
|
||||
item.add("test3.gif")
|
||||
|
@ -118,26 +131,13 @@ class TestServiceManager_base:
|
|||
assert lines[2] == "test2.gif"
|
||||
assert lines[3] == "test3.gif"
|
||||
log.info("done")
|
||||
|
||||
# def test_moving_selection(self):
|
||||
# log.info("test_easy")
|
||||
# item=ImageServiceItem(None)
|
||||
# item.add("test1.gif")
|
||||
# item.add("test2.gif")
|
||||
# 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")
|
||||
|
||||
|
||||
# add different types of service item
|
||||
# move up, down
|
||||
# move to top, bottom
|
||||
# new and save as
|
||||
# deleting items
|
||||
|
||||
if __name__=="__main__":
|
||||
|
||||
t=TestServiceManager_base()
|
||||
|
|
|
@ -92,7 +92,7 @@ class ImagePlugin(Plugin, PluginUtils):
|
|||
self.ImageListView.setGeometry(QtCore.QRect(10, 100, 256, 591))
|
||||
self.ImageListView.setSpacing(1)
|
||||
self.ImageListView.setAlternatingRowColors(True)
|
||||
# return self.MediaManagerItem
|
||||
return self.MediaManagerItem
|
||||
|
||||
def initialise(self):
|
||||
log.info("Plugin Initialising")
|
||||
|
|
|
@ -90,7 +90,7 @@ class ImageServiceItem(ServiceItem):
|
|||
self.imgs.addRow(data)
|
||||
else: # it's another service item to be merged in
|
||||
log.info("add Item..."+str(data))
|
||||
for filename in data.get_file_list():
|
||||
for filename in data.imgs.get_file_list():
|
||||
self.add(filename)
|
||||
|
||||
|
||||
|
|
Loading…
Reference in New Issue