[profitpy commit] r314 - in trunk: . profit/lib/strategy profit/lib/widgets profit/workbench

3 views
Skip to first unread message

codesite...@google.com

unread,
Jul 26, 2008, 6:23:03 PM7/26/08
to profitp...@googlegroups.com
Author: troy.melhase
Date: Sat Jul 26 15:22:23 2008
New Revision: 314

Modified:
trunk/README
trunk/profit/lib/strategy/builder.py
trunk/profit/lib/widgets/plot.py
trunk/profit/workbench/centraltabs.py
trunk/profit/workbench/main.py
trunk/profit/workbench/sessiontree.py

Log:
Account plot save/restore working.

Modified: trunk/README
==============================================================================
--- trunk/README (original)
+++ trunk/README Sat Jul 26 15:22:23 2008
@@ -1,9 +1,5 @@
== To Do for 0.2 ==

-0. replace Signals.tickerClicked emits with more descriptive signals
-
-1. fix account display plot save/restore settings
-
4. add viewable historical data requests and plots

5. finish strategy design tool and its integration with the workbench

Modified: trunk/profit/lib/strategy/builder.py
==============================================================================
--- trunk/profit/lib/strategy/builder.py (original)
+++ trunk/profit/lib/strategy/builder.py Sat Jul 26 15:22:23 2008
@@ -113,12 +113,11 @@
except (TypeError, ):
pass

- def load_TickerItem(self, instance):
- print '## load ticker item', instance
- self.tickerItems.append(instance)
+ def load_TickerItem(self, item):
+ self.tickerItems.append(item)
+ self.emit(Signals.createdTicker, item['tickerId'], item)

def requestActivation(self, strategy, activate=False):
- print '## requestActivation of strategy', strategy, activate
filename = strategy.get('filename', None)
if activate:
if filename:

Modified: trunk/profit/lib/widgets/plot.py
==============================================================================
--- trunk/profit/lib/widgets/plot.py (original)
+++ trunk/profit/lib/widgets/plot.py Sat Jul 26 15:22:23 2008
@@ -467,8 +467,10 @@
item.setColor(self.loadItemPen(item).color())
for index in getattr(series, 'indexes', []):
self.addSeries(index.key, index, parent=item)
+ self.loadSelection(item)
return item

+
def anyCheckedItems(self):
""" True if any control is checked.

@@ -650,28 +652,30 @@
def loadLegend(self):
""" Restores the plot legend visibility from saved settings.

- @return None
"""
key = '%s/legend/enabled' % self.plotName()
if self.settings.value(key).toBool():
self.actionDrawLegend.trigger()

- def loadSelections(self):
- """ Restores the control tree items state from saved settings.
+ def loadSelection(self, item):
+ """ Restores an item check state and pen from saved settings.

- @return None
"""
key = '%s/checkeditems' % self.plotName()
- names = self.settings.valueLoad(key, '')
+ if self.itemName(item) in self.settings.valueLoad(key, ''):
+ item.setCheckState(Qt.Checked)
+ item.setColor(self.loadItemPen(item).color())
+
+ def loadSelections(self):
+ """ Restores each control tree item check state and pen.
+
+ """
for item in self.controlsTreeItems:
- if self.itemName(item) in names:
- item.setCheckState(Qt.Checked)
- item.setColor(self.loadItemPen(item).color())
+ self.loadSelection(item)

def saveSelections(self):
""" Saves the selected control item names.

- @return None
"""
key = '%s/checkeditems' % self.plotName()
names = self.checkedNames()

Modified: trunk/profit/workbench/centraltabs.py
==============================================================================
--- trunk/profit/workbench/centraltabs.py (original)
+++ trunk/profit/workbench/centraltabs.py Sat Jul 26 15:22:23 2008
@@ -29,6 +29,11 @@
@param parent ancestor of this widget
"""
QTabWidget.__init__(self, parent)
+ self.createHandlers = [
+ self.createBrowserTab,
+ self.createTickerPlotTab,
+ self.createDisplayTab
+ ]
self.closeTabButton = CloseTabButton(self)
self.detachTabButton = DetachTabButton(self)
self.setCornerWidget(self.closeTabButton, Qt.TopRightCorner)
@@ -47,8 +52,7 @@
@param value string or model item
@return None
"""
- hs = [self.createBrowserTab, self.createTickerPlotTab, self.createDisplayTab]
- for handler in hs:
+ for handler in self.createHandlers:
try:
if handler(value):
break
@@ -122,9 +126,8 @@
return dict([(str(self.tabText(i)), i) for i in range(self.count())])

def closeTab(self):
- """ Closes the current tab tab.
+ """ Closes the current tab.

- @return None
"""
index = self.currentIndex()
widget = self.widget(index)
@@ -132,6 +135,13 @@
self.removeTab(index)
widget.setAttribute(Qt.WA_DeleteOnClose)
widget.close()
+
+ def closeTabs(self):
+ """ Closes all tabs.
+
+ """
+ while self.pageMap():
+ self.closeTab()

def detachTab(self):
""" Deatches the current tab and makes it a top-level window.

Modified: trunk/profit/workbench/main.py
==============================================================================
--- trunk/profit/workbench/main.py (original)
+++ trunk/profit/workbench/main.py Sat Jul 26 15:22:23 2008
@@ -19,7 +19,7 @@
from PyQt4.QtGui import QAction, QApplication, QColor, QMainWindow
from PyQt4.QtGui import QFileDialog, QMessageBox, QProgressDialog, QMenu
from PyQt4.QtGui import QSystemTrayIcon, QToolBar
-from PyQt4.QtGui import QIcon, QDesktopServices
+from PyQt4.QtGui import QIcon, QDesktopServices, QFrame

from profit.lib import defaults
from profit.lib import Signals, Settings, instance
@@ -387,7 +387,8 @@
bottom = Qt.BottomDockWidgetArea
tabify = self.tabifyDockWidget
self.sessionDock = Dock('Session', self, SessionTree)
- tabify(self.sessionDock, self.sessionDock)
+ self.anyWidget = Dock('Empty', self, QFrame)
+ tabify(self.anyWidget, self.sessionDock)
self.stdoutDock = Dock('Standard Output', self, OutputWidget, bottom)
self.stderrDock = Dock('Standard Error', self, OutputWidget, bottom)
makeShell = partial(
@@ -473,11 +474,14 @@

def warningOpenTabs(self):
if self.centralTabs.count():
+ buttons = QMessageBox.Ignore|QMessageBox.Abort|QMessageBox.Close
button = QMessageBox.warning(self, 'Warning',
- 'Session loading is very slow with open tabs.\n'
- 'Close all tabs for fastest possible loading.',
- QMessageBox.Ignore|QMessageBox.Abort)
- return button == QMessageBox.Ignore
+ 'Session loading is very slow with open tabs.\n\n'
+ 'Close tabs for fastest possible loading.',
+ buttons)
+ if button == QMessageBox.Close:
+ self.centralTabs.closeTabs()
+ return button in (QMessageBox.Ignore, QMessageBox.Close)
return True

def centralTabState(self):

Modified: trunk/profit/workbench/sessiontree.py
==============================================================================
--- trunk/profit/workbench/sessiontree.py (original)
+++ trunk/profit/workbench/sessiontree.py Sat Jul 26 15:22:23 2008
@@ -173,6 +173,17 @@
root.appendRow(item)
connect = self.connect
connect(session, Signals.createdTicker, self.on_session_createdTicker)
+ connect(session.strategy, Signals.createdTicker, self.on_strategy_createdTicker)
+
+ def on_strategy_createdTicker(self, tickerId, tickerData):
+ tickers = self.findItems('tickers')
+ if tickers:
+ tickers = tickers[0]
+ else:
+ return
+ tickerData = tickerData or {}
+ item = mkTickerItem(tickerData.get('symbol', ''), tickerId)
+ tickers.appendRow(item)

def on_session_createdTicker(self, tickerId, tickerData):
print '## new session tree ticker', tickerId, tickerData

Reply all
Reply to author
Forward
0 new messages