本文整理汇总了Python中wxbanker.lib.pubsub.Publisher.subscribe方法的典型用法代码示例。如果您正苦于以下问题:Python Publisher.subscribe方法的具体用法?Python Publisher.subscribe怎么用?Python Publisher.subscribe使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类wxbanker.lib.pubsub.Publisher
的用法示例。
在下文中一共展示了Publisher.subscribe方法的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: __init__
# 需要导入模块: from wxbanker.lib.pubsub import Publisher [as 别名]
# 或者: from wxbanker.lib.pubsub.Publisher import subscribe [as 别名]
def __init__(self, parent, editing=None):
wx.Panel.__init__(self, parent)
# Create the recurring object we will use internally.
self.recurringObj = RecurringTransaction(None, None, 0, "", datetime.date.today(), RecurringTransaction.DAILY)
self.Sizer = wx.GridBagSizer(0, 3)
self.Sizer.SetEmptyCellSize((0,0))
self.recurringRow = RecurringRow(self, self.RECURRING_ROW)
self.recurringSummaryRow = RecurringSummaryRow(self, self.SUMMARY_ROW)
self.weeklyRecurringRow = WeeklyRecurringRow(self, self.WEEKLY_ROW)
self.transferRow = TransferRow(self, self.TRANSFER_ROW)
self.transactionRow = NewTransactionRow(self, self.TRANSACTION_ROW, editing=editing)
# can not set 2nd column growable in wx3.0 if Sizer is empty
self.Sizer.AddGrowableCol(1, 1)
# RecurringRow needs an update once both it and the other controls exist.
self.recurringRow.Update()
# Hide everything up to the actual transaction row initially.
if not editing:
for i in range(self.TRANSACTION_ROW):
self.ShowRow(i, False)
ctrlId = id(self.transactionRow)
Publisher.subscribe(self.onTransferToggled, "newtransaction.%i.transfertoggled"%ctrlId)
Publisher.subscribe(self.onRecurringToggled, "newtransaction.%i.recurringtoggled"%ctrlId)
示例2: __init__
# 需要导入模块: from wxbanker.lib.pubsub import Publisher [as 别名]
# 或者: from wxbanker.lib.pubsub.Publisher import subscribe [as 别名]
def __init__(self, parent, plotFactory, bankController):
wx.Panel.__init__(self, parent)
self.plotFactory = plotFactory
self.bankController = bankController
self.plotSettings = {'FitDegree': 2, 'Granularity': 100, 'Account': None, 'Months': 12}
self.plotLabels = [_("Trend Degree"), _("Months")]
self.currentPlotIndex = 0
self.cachedData = None
self.dateRange = None
self.isActive = False
# create the plot panel
self.plotPanel = plotFactory.createPanel(self, bankController)
# create the controls at the bottom
controlSizer = wx.BoxSizer()
self.graphChoice = wx.Choice(self, choices=[plot.NAME for plot in plotFactory.Plots])
self.optionCtrl = wx.SpinCtrl(self, min=1, max=24, initial=self.plotSettings['FitDegree'])
# the date range controls
self.startDate = bankcontrols.DateCtrlFactory(self)
self.endDate = bankcontrols.DateCtrlFactory(self)
self.optionText = wx.StaticText(self, label=self.plotLabels[0])
self.fromText = wx.StaticText(self, label=_("From"))
self.toText = wx.StaticText(self, label=_("until"))
controlSizer.Add(wx.StaticText(self, label=_("Graph")), 0, wx.ALIGN_CENTER_VERTICAL)
controlSizer.AddSpacer(5)
controlSizer.Add(self.graphChoice, 0, wx.ALIGN_CENTER_VERTICAL)
controlSizer.AddSpacer(10)
controlSizer.Add(self.fromText, 0, wx.ALIGN_CENTER_VERTICAL)
controlSizer.AddSpacer(5)
controlSizer.Add(self.startDate, 0, wx.ALIGN_CENTER_VERTICAL)
controlSizer.AddSpacer(5)
controlSizer.Add(self.toText, 0, wx.ALIGN_CENTER_VERTICAL)
controlSizer.AddSpacer(5)
controlSizer.Add(self.endDate, 0, wx.ALIGN_CENTER_VERTICAL)
controlSizer.AddSpacer(10)
controlSizer.Add(self.optionText, 0, wx.ALIGN_CENTER_VERTICAL)
controlSizer.AddSpacer(5)
controlSizer.Add(self.optionCtrl, 0, wx.ALIGN_CENTER_VERTICAL)
self.optionCtrl.SetMinSize = (20, -1)
# put it all together
self.Sizer = wx.BoxSizer(wx.VERTICAL)
self.Sizer.Add(self.plotPanel, 1, wx.EXPAND)
self.Sizer.Add(controlSizer, 0, wx.ALIGN_CENTER_HORIZONTAL|wx.ALL, 6)
self.Layout()
# bind to the spin buttons
self.graphChoice.Bind(wx.EVT_CHOICE, self.onGraphChoice)
self.optionCtrl.Bind(wx.EVT_SPINCTRL, self.onOptionSpin)
self.Bind(wx.EVT_DATE_CHANGED, self.onDateRangeChanged)
Publisher.subscribe(self.onAccountSelect, "view.account changed")
示例3: __init__
# 需要导入模块: from wxbanker.lib.pubsub import Publisher [as 别名]
# 或者: from wxbanker.lib.pubsub.Publisher import subscribe [as 别名]
def __init__(self, path, autoSave=True):
self.Subscriptions = []
self.Version = 13
self.Path = path
self.AutoSave = False
self.Dirty = False
self.BatchDepth = 0
self.cachedModel = None
# Upgrades can't enable syncing if needed from older versions.
self.needsSync = False
existed = True
# See if the path already exists to decide what to do.
if not os.path.exists(self.Path):
existed = False
# Initialize the connection and optimize it.
connection = sqlite.connect(self.Path)
self.dbconn = connection
# Disable synchronous I/O, which makes everything MUCH faster, at the potential cost of durability.
self.dbconn.execute("PRAGMA synchronous=OFF;")
# If the db doesn't exist, initialize it.
if not existed:
debug.debug('Initializing', self.Path)
self.initialize()
else:
debug.debug('Loading', self.Path)
self.Meta = self.getMeta()
debug.debug(self.Meta)
while self.Meta['VERSION'] < self.Version:
# If we are creating a new db, we don't need to backup each iteration.
self.upgradeDb(self.Meta['VERSION'], backup=existed)
self.Meta = self.getMeta()
debug.debug(self.Meta)
# We have to subscribe before syncing otherwise it won't get synced if there aren't other changes.
self.Subscriptions = (
(self.onORMObjectUpdated, "ormobject.updated"),
(self.onAccountBalanceChanged, "account.balance changed"),
(self.onAccountRemoved, "account.removed"),
(self.onBatchEvent, "batch"),
(self.onExit, "exiting"),
)
for callback, topic in self.Subscriptions:
Publisher.subscribe(callback, topic)
# If the upgrade process requires a sync, do so now.
if self.needsSync:
self.syncBalances()
self.needsSync = False
self.AutoSave = autoSave
self.commitIfAppropriate()
示例4: __init__
# 需要导入模块: from wxbanker.lib.pubsub import Publisher [as 别名]
# 或者: from wxbanker.lib.pubsub.Publisher import subscribe [as 别名]
def __init__(self, bankmodel, store):
list.__init__(self, store.GetAccounts())
# Make sure all the items know their parent list.
for account in self:
account.Parent = self
self.BankModel = bankmodel
self.Store = store
self.sort()
Publisher.subscribe(self.onAccountRenamed, "ormobject.updated.Account.Name")
示例5: __init__
# 需要导入模块: from wxbanker.lib.pubsub import Publisher [as 别名]
# 或者: from wxbanker.lib.pubsub.Publisher import subscribe [as 别名]
def __init__(self, parent, bankController):
wx.Panel.__init__(self, parent)
self.ID_TIMER = wx.NewId()
self.SearchTimer = wx.Timer(self, self.ID_TIMER)
self.bankController = bankController
self.searchCtrl = bankcontrols.UpdatableSearchCtrl(self, value="", size=(200, -1), style=wx.TE_PROCESS_ENTER)
# Try to grab the GTK system icon for clearing a search, otherwise we'll get the wxPython one.
iconSize = self.searchCtrl.GetClientRect().GetHeight() - 2
clearBitmap = wx.ArtProvider.GetBitmap('edit-clear', wx.ART_OTHER, [iconSize, iconSize])
if clearBitmap:
self.searchCtrl.SetCancelBitmap(clearBitmap)
self.searchCtrl.ShowCancelButton(True)
self.searchCtrl.ShowSearchButton(False)
self.searchCtrl.DescriptiveText = _("Search transactions")
self.searchCtrl.SetForegroundColour('DARK GRAY')
# The More/Less button.
self.moreButton = bankcontrols.MultiStateButton(self, labelDict={True: _("More options"), False: _("Less options")}, state=True)
self.matchChoices = [_("Amount"), _("Description"), _("Date")]
self.descriptionSelection = 1
self.matchBox = bankcontrols.CompactableComboBox(self, value=self.matchChoices[1], choices=self.matchChoices, style=wx.CB_READONLY)
topSizer = wx.BoxSizer()
topSizer.Add(self.searchCtrl, 0, wx.ALIGN_CENTER_VERTICAL)
topSizer.AddSpacer(10)
topSizer.Add(self.moreButton, 0, wx.ALIGN_CENTER_VERTICAL)
self.moreSizer = moreSizer = wx.BoxSizer()
moreSizer.Add(wx.StaticText(self, label=_("Match: ")), 0, wx.ALIGN_CENTER_VERTICAL)
moreSizer.Add(self.matchBox, 0, wx.ALIGN_CENTER_VERTICAL)
self.Sizer = wx.BoxSizer(wx.VERTICAL)
self.Sizer.Add(topSizer, 0, wx.ALIGN_RIGHT|wx.TOP|wx.BOTTOM, 2)
self.Sizer.Add(moreSizer, 0, wx.ALIGN_RIGHT|wx.BOTTOM, 2)
self.matchBox.Compact()
self.Layout()
self.searchCtrl.Bind(wx.EVT_SEARCHCTRL_CANCEL_BTN, self.onCancel)
self.searchCtrl.Bind(wx.EVT_TEXT, self.onText)
#self.searchCtrl.Bind(wx.EVT_SEARCHCTRL_SEARCH_BTN, self.onSearch)
self.searchCtrl.Bind(wx.EVT_TEXT_ENTER, self.onSearch)
self.moreButton.Bind(wx.EVT_BUTTON, self.onToggleMore)
# Bindings to search on settings change automatically.
self.matchBox.Bind(wx.EVT_COMBOBOX, self.onSearchTrigger)
self.Bind(wx.EVT_TIMER, self.onSearchTimer)
Publisher.subscribe(self.onExternalSearch, "SEARCH.EXTERNAL")
# Initially hide the extra search options.
self.onToggleMore()
示例6: __init__
# 需要导入模块: from wxbanker.lib.pubsub import Publisher [as 别名]
# 或者: from wxbanker.lib.pubsub.Publisher import subscribe [as 别名]
def __init__(self, parent, bankController):
GroupListView.__init__(self, parent, style=wx.LC_REPORT|wx.SUNKEN_BORDER, name="TransactionOLV")
self.LastSearch = None
self.CurrentAccount = None
self.BankController = bankController
self.showGroups = False
#WXTODO: figure out these (and the text color, or is that already?) from theme (LP: ???)
self.evenRowsBackColor = wx.Colour(224,238,238)
self.oddRowsBackColor = wx.WHITE
self.cellEditMode = GroupListView.CELLEDIT_DOUBLECLICK
self.SetEmptyListMsg(self.EMPTY_MSG_NORMAL)
# Calculate the necessary width for the date column.
dateStr = str(datetime.date.today())
dateWidth = self.GetTextExtent(dateStr)[0] + 10
# Define some constants to use throughout.
self.COL_DATE = 0
self.COL_DESCRIPTION = 1
self.COL_AMOUNT = 2
self.COL_TOTAL = 3
# If you change these column names, update sizeAmounts()!
self.SetColumns([
ColumnDefn(_("Date"), valueGetter=self.getDateAndIDOf, valueSetter=self.setDateOf, stringConverter=self.renderDateIDTuple, editFormatter=self.renderEditDate, width=dateWidth),
ColumnDefn(_("Description"), valueGetter="Description", isSpaceFilling=True, editFormatter=self.renderEditDescription),
ColumnDefn(_("Amount"), "right", valueGetter=self.getAmount, valueSetter=self.setAmount, stringConverter=self.renderFloat, editFormatter=self.renderEditFloat),
ColumnDefn(_("Balance"), "right", valueGetter=self.getTotal, stringConverter=self.renderFloat, isEditable=False),
])
# Our custom hack in OLV.py:2017 will render amount floats appropriately as %.2f when editing.
# By default, sort by the date column, ascending.
self.SORT_COL = self.COL_DATE
self.SortBy(self.SORT_COL)
self.Bind(wx.EVT_RIGHT_DOWN, self.onRightDown)
self.Subscriptions = (
(self.onSearch, "SEARCH.INITIATED"),
(self.onSearchCancelled, "SEARCH.CANCELLED"),
(self.onSearchMoreToggled, "SEARCH.MORETOGGLED"),
(self.onTransactionAdded, "transaction.created"),
(self.onTransactionsRemoved, "transactions.removed"),
(self.onCurrencyChanged, "currency_changed"),
(self.onShowCurrencyNickToggled, "controller.show_currency_nick_toggled"),
(self.updateTotals, "ormobject.updated.Transaction.Amount"),
(self.onTransactionDateUpdated, "ormobject.updated.Transaction.Date"),
)
for callback, topic in self.Subscriptions:
Publisher.subscribe(callback, topic)
示例7: __init__
# 需要导入模块: from wxbanker.lib.pubsub import Publisher [as 别名]
# 或者: from wxbanker.lib.pubsub.Publisher import subscribe [as 别名]
def __init__(self, bankController, parent, plotSettings=None):
wx.Panel.__init__(self, parent)
baseplot.BasePlot.__init__(self)
self.bankController = bankController
self.Bind(wx.EVT_PAINT, self.OnPaint)
self.Bind(wx.EVT_SIZE, self.OnSize)
self.data = None
self.x_labels = None
self.plotSettings = plotSettings
# watch if there's any currency change to repaint the plot.
Publisher.subscribe(self.currencyChanged, "controller.show_currency_nick_toggled")
Publisher.subscribe(self.currencyChanged, "currency_changed")
示例8: __init__
# 需要导入模块: from wxbanker.lib.pubsub import Publisher [as 别名]
# 或者: from wxbanker.lib.pubsub.Publisher import subscribe [as 别名]
def __init__(self, parent, bankController):
wx.Panel.__init__(self, parent)
self.bankController = bankController
self.mainPanel = managetab.MainPanel(self, bankController)
Publisher.subscribe(self.onRecurringTransactionAdded, "recurringtransaction.created")
Publisher.subscribe(self.onRecurringTransactionUpdated, "recurringtransaction.updated")
self.Sizer = wx.BoxSizer(wx.VERTICAL)
self.Sizer.Add(self.mainPanel, 1, wx.EXPAND)
wx.CallLater(1000, self.CheckRecurringTransactions)
示例9: testAnnouncedAccountHasParent
# 需要导入模块: from wxbanker.lib.pubsub import Publisher [as 别名]
# 或者: from wxbanker.lib.pubsub.Publisher import subscribe [as 别名]
def testAnnouncedAccountHasParent(self):
"""
Make sure the account has a Parent when it announces itself. To do this
we need to test this in a listener.
"""
parent = []
def listener(message):
account = message.data
parent.append(account.Parent)
# Subscribe our listener
Publisher.subscribe(listener, "account.created")
# Create an account, which should trigger the listener
baby = self.Model.CreateAccount("Baby")
# Make sure the listener updated state appropriately
self.assertTrue(parent)
示例10: __init__
# 需要导入模块: from wxbanker.lib.pubsub import Publisher [as 别名]
# 或者: from wxbanker.lib.pubsub.Publisher import subscribe [as 别名]
def __init__(self, parent, row):
bankcontrols.GBRow.__init__(self, parent, row)
self.accountDict = {}
self.nullChoice = ["----------"]
self.fromtoBox = wx.Choice(parent, choices=[_("from"), _("to")])
self.accountSelection = wx.Choice(parent, choices=[])
hSizer = wx.BoxSizer()
hSizer.Add(wx.StaticText(parent, label=_("Transfer")), flag=wx.ALIGN_CENTER_VERTICAL)
hSizer.AddSpacer(3)
hSizer.Add(self.fromtoBox, flag=wx.ALIGN_CENTER_VERTICAL)
self.AddNext(hSizer)
self.AddNext(self.accountSelection)
Publisher.subscribe(self.onAccountChanged, "view.account changed")
示例11: __init__
# 需要导入模块: from wxbanker.lib.pubsub import Publisher [as 别名]
# 或者: from wxbanker.lib.pubsub.Publisher import subscribe [as 别名]
def __init__(self, store, aID, name, currency=0, balance=0.0, mintId=None, currNick=False):
ORMObject.__init__(self)
self.IsFrozen = True
self.Store = store
self.ID = aID
self._Name = name
self._Transactions = None
self._RecurringTransactions = []
self._preTransactions = []
# Make sure that Currency and Balance are not None (bug #653716)
self.Currency = currency or 0
self.Balance = balance or 0.0
self.MintId = mintId or None
self.ShowCurrencyNick = currNick or False
self.IsFrozen = False
Publisher.subscribe(self.onTransactionAmountChanged, "ormobject.updated.Transaction.Amount")
示例12: testDirtyExitWarns
# 需要导入模块: from wxbanker.lib.pubsub import Publisher [as 别名]
# 或者: from wxbanker.lib.pubsub.Publisher import subscribe [as 别名]
def testDirtyExitWarns(self):
"""
This test is kind of hilarious. We want to make sure we are warned of
exiting with a dirty model, so we create an account, register a callback
which will change its name when the dirty warning goes out, then trigger
a dirty exit and make sure the account name has changed.
"""
self.Controller.AutoSave = False
a = self.Model.CreateAccount("Unwarned!")
# Create and register our callback to test for the warning message.
def cb(message):
a.Name = "Warned"
Publisher.subscribe(cb, "warning.dirty exit")
# Now send the exiting message, which should cause our callback to fire if everything is well.
Publisher.sendMessage("exiting")
self.assertEqual(a.Name, "Warned")
示例13: __init__
# 需要导入模块: from wxbanker.lib.pubsub import Publisher [as 别名]
# 或者: from wxbanker.lib.pubsub.Publisher import subscribe [as 别名]
def __init__(self, path=None):
self._AutoSave = True
self._ShowZeroBalanceAccounts = True
self._ShowCurrencyNick = True
self.Models = []
self.InitConfig()
self.LoadPath(path, use=True)
Publisher.subscribe(self.onAutoSaveToggled, "user.autosave_toggled")
Publisher.subscribe(self.onShowZeroToggled, "user.showzero_toggled")
Publisher.subscribe(self.onShowCurrencyNickToggled, "user.show_currency_nick_toggled")
Publisher.subscribe(self.onSaveRequest, "user.saved")
示例14: __init__
# 需要导入模块: from wxbanker.lib.pubsub import Publisher [as 别名]
# 或者: from wxbanker.lib.pubsub.Publisher import subscribe [as 别名]
def __init__(self, parent):
wx.Panel.__init__(self, parent)
self.numberClears = True
sizer = wx.BoxSizer(wx.VERTICAL)
self.display = wx.TextCtrl(self, -1, '0.00', style=wx.TE_RIGHT)
self.display.Bind(wx.EVT_CHAR, self.onChar)
sizer.Add(self.display, 0, wx.EXPAND | wx.TOP | wx.BOTTOM, 4)
gs = wx.GridSizer(4, 4, 3, 3)
for lbl in "C ()789/456*123-0.+=":
if not lbl == ' ':
btn = wx.Button(self, label=lbl)
btn.Bind(wx.EVT_BUTTON, self.onButton)
else:
btn = wx.StaticText(self)
gs.Add(btn, 1, wx.EXPAND)
sizer.Add(gs, 1, wx.EXPAND)
self.SetSizer(sizer)
Publisher.subscribe(self.onPushChars, "CALCULATOR.PUSH_CHARS")
wx.CallLater(50, self.display.SetInsertionPointEnd)
示例15: __init__
# 需要导入模块: from wxbanker.lib.pubsub import Publisher [as 别名]
# 或者: from wxbanker.lib.pubsub.Publisher import subscribe [as 别名]
def __init__(self, parent, bankController):
wx.Panel.__init__(self, parent)
self.searchActive = False
subpanel = wx.Panel(self)
# The search control
self.searchCtrl = searchctrl.SearchCtrl(self, bankController)
self.transactionCtrl = transactionCtrl = TransactionCtrl(subpanel, bankController)
self.newTransCtrl = newTransCtrl = transactionctrl.TransactionCtrl(self)
subpanel.Sizer = wx.BoxSizer()
subpanel.Sizer.Add(transactionCtrl, 1, wx.EXPAND)
self.Sizer = wx.BoxSizer(wx.VERTICAL)
self.Sizer.Add(self.searchCtrl, 0, wx.ALIGN_RIGHT|wx.RIGHT, 6)
self.Sizer.Add(subpanel, 1, wx.EXPAND)
self.Sizer.Add(newTransCtrl, 0, wx.EXPAND|wx.LEFT, 6)
self.Sizer.AddSpacer(3)
for message in ["account.created", "account.removed"]:
Publisher.subscribe(self.onSearchInvalidatingChange, message)