dabo Commit
Revision 6013
Date: 2010-09-12 14:34:34 -0700 (Sun, 12 Sep 2010)
Author: Ed
Trac: http://trac.dabodev.com/changeset/6013
Changed:
U trunk/dabo/LICENSE.TXT
U trunk/dabo/__init__.py
U trunk/dabo/__version__.py
U trunk/dabo/biz/RemoteBizobj.py
U trunk/dabo/biz/dAutoBizobj.py
U trunk/dabo/biz/dBizobj.py
U trunk/dabo/biz/test/test_dBizobj.py
U trunk/dabo/dApp.py
U trunk/dabo/dBug.py
U trunk/dabo/dColors.py
U trunk/dabo/dEvents.py
U trunk/dabo/dLocalize.py
U trunk/dabo/dObject.py
U trunk/dabo/dPref.py
U trunk/dabo/dReportWriter.py
U trunk/dabo/dSecurityManager.py
U trunk/dabo/dUserSettingProvider.py
U trunk/dabo/db/__init__.py
U trunk/dabo/db/dBackend.py
U trunk/dabo/db/dConnectInfo.py
U trunk/dabo/db/dConnection.py
U trunk/dabo/db/dDataSet.py
U trunk/dabo/db/dNoEscQuoteStr.py
U trunk/dabo/db/dTable.py
U trunk/dabo/db/dbFirebird.py
U trunk/dabo/db/dbMsSQL.py
U trunk/dabo/db/dbMySQL.py
U trunk/dabo/db/dbOracle.py
U trunk/dabo/db/dbSQLite.py
U trunk/dabo/db/dbTemplate.py
U trunk/dabo/db/dbWeb.py
U trunk/dabo/db/test/test_dCursorMixin.py
U trunk/dabo/icons/__init__.py
U trunk/dabo/lib/DesignerClassConverter.py
U trunk/dabo/lib/DesignerUtils.py
U trunk/dabo/lib/EasyDialogBuilder.py
U trunk/dabo/lib/SimpleCrypt.py
U trunk/dabo/lib/StopWatch.py
U trunk/dabo/lib/autosuper/LICENSE.TXT
U trunk/dabo/lib/autosuper/autosuper.py
U trunk/dabo/lib/autosuper/autosuper_unittest.py
U trunk/dabo/lib/caselessDict.py
U trunk/dabo/lib/connParser.py
U trunk/dabo/lib/datanav/Bizobj.py
U trunk/dabo/lib/datanav/Form.py
U trunk/dabo/lib/datanav/Grid.py
U trunk/dabo/lib/datanav/Page.py
U trunk/dabo/lib/datanav/PageFrame.py
U trunk/dabo/lib/dates.py
U trunk/dabo/lib/dejavuJSON.py
U trunk/dabo/lib/doDefaultMixin.py
U trunk/dabo/lib/eventMixin.py
U trunk/dabo/lib/manifest.py
U trunk/dabo/lib/propertyHelperMixin.py
U trunk/dabo/lib/reportUtils.py
U trunk/dabo/lib/reportWriter.py
U trunk/dabo/lib/reporting_stefano/objects.py
U trunk/dabo/lib/reporting_stefano/serialization/__init__.py
U trunk/dabo/lib/reporting_stefano/serialization/attributes.py
U trunk/dabo/lib/reporting_stefano/serialization/serialization.py
U trunk/dabo/lib/reporting_stefano/util.py
U trunk/dabo/lib/specParser.py
U trunk/dabo/lib/test/test_dates.py
U trunk/dabo/lib/test/test_utils.py
U trunk/dabo/lib/utils.py
U trunk/dabo/lib/uuid.py
U trunk/dabo/lib/xmltodict.py
U trunk/dabo/settings.py
U trunk/dabo/ui/__init__.py
U trunk/dabo/ui/dControlMixinBase.py
U trunk/dabo/ui/dDataControlMixinBase.py
U trunk/dabo/ui/dPemMixinBase.py
U trunk/dabo/ui/dialogs/HotKeyEditor.py
U trunk/dabo/ui/dialogs/PreferenceDialog.py
U trunk/dabo/ui/dialogs/SortingForm.py
U trunk/dabo/ui/dialogs/Wizard.py
U trunk/dabo/ui/dialogs/WizardPage.py
U trunk/dabo/ui/dialogs/about.py
U trunk/dabo/ui/dialogs/login.py
U trunk/dabo/ui/uitk/__init__.py
U trunk/dabo/ui/uitk/dCheckBox.py
U trunk/dabo/ui/uitk/dControlMixin.py
U trunk/dabo/ui/uitk/dFormMain.py
U trunk/dabo/ui/uitk/dFormMixin.py
U trunk/dabo/ui/uitk/dLabel.py
U trunk/dabo/ui/uitk/dPemMixin.py
U trunk/dabo/ui/uitk/test.py
U trunk/dabo/ui/uitk/uiApp.py
U trunk/dabo/ui/uiwx/__init__.py
U trunk/dabo/ui/uiwx/alignmentMixin.py
U trunk/dabo/ui/uiwx/concordance.py
U trunk/dabo/ui/uiwx/dBaseMenuBar.py
U trunk/dabo/ui/uiwx/dBitmap.py
U trunk/dabo/ui/uiwx/dBorderSizer.py
U trunk/dabo/ui/uiwx/dBorderlessButton.py
U trunk/dabo/ui/uiwx/dBox.py
U trunk/dabo/ui/uiwx/dButton.py
U trunk/dabo/ui/uiwx/dCalendar.py
U trunk/dabo/ui/uiwx/dCheckBox.py
U trunk/dabo/ui/uiwx/dCheckList.py
U trunk/dabo/ui/uiwx/dColorDialog.py
U trunk/dabo/ui/uiwx/dComboBox.py
U trunk/dabo/ui/uiwx/dControlItemMixin.py
U trunk/dabo/ui/uiwx/dControlMixin.py
U trunk/dabo/ui/uiwx/dDataControlMixin.py
U trunk/dabo/ui/uiwx/dDateTextBox.py
U trunk/dabo/ui/uiwx/dDockForm.py
U trunk/dabo/ui/uiwx/dDropdownList.py
U trunk/dabo/ui/uiwx/dEditBox.py
U trunk/dabo/ui/uiwx/dEditableList.py
U trunk/dabo/ui/uiwx/dEditor.py
U trunk/dabo/ui/uiwx/dFileDialog.py
U trunk/dabo/ui/uiwx/dFont.py
U trunk/dabo/ui/uiwx/dFontDialog.py
U trunk/dabo/ui/uiwx/dGauge.py
U trunk/dabo/ui/uiwx/dGlWindow.py
U trunk/dabo/ui/uiwx/dGrid.py
U trunk/dabo/ui/uiwx/dGridSizer.py
U trunk/dabo/ui/uiwx/dHtmlBox.py
U trunk/dabo/ui/uiwx/dHyperLink.py
U trunk/dabo/ui/uiwx/dIcons.py
U trunk/dabo/ui/uiwx/dImage.py
U trunk/dabo/ui/uiwx/dImageMixin.py
U trunk/dabo/ui/uiwx/dKeys.py
U trunk/dabo/ui/uiwx/dLabel.py
U trunk/dabo/ui/uiwx/dLed.py
U trunk/dabo/ui/uiwx/dLine.py
U trunk/dabo/ui/uiwx/dLinePlot.py
U trunk/dabo/ui/uiwx/dListBox.py
U trunk/dabo/ui/uiwx/dListControl.py
U trunk/dabo/ui/uiwx/dMaskedTextBox.py
U trunk/dabo/ui/uiwx/dMenu.py
U trunk/dabo/ui/uiwx/dMenuBar.py
U trunk/dabo/ui/uiwx/dMenuItem.py
U trunk/dabo/ui/uiwx/dMessageBox.py
U trunk/dabo/ui/uiwx/dPage.py
U trunk/dabo/ui/uiwx/dPageFrameMixin.py
U trunk/dabo/ui/uiwx/dPageFrameNoTabs.py
U trunk/dabo/ui/uiwx/dPanel.py
U trunk/dabo/ui/uiwx/dPdfWindow.py
U trunk/dabo/ui/uiwx/dPemMixin.py
U trunk/dabo/ui/uiwx/dProgressDialog.py
U trunk/dabo/ui/uiwx/dRadioList.py
U trunk/dabo/ui/uiwx/dReportProgress.py
U trunk/dabo/ui/uiwx/dRichTextBox.py
U trunk/dabo/ui/uiwx/dSearchBox.py
U trunk/dabo/ui/uiwx/dShell.py
U trunk/dabo/ui/uiwx/dSizer.py
U trunk/dabo/ui/uiwx/dSizerMixin.py
U trunk/dabo/ui/uiwx/dSlidePanelControl.py
U trunk/dabo/ui/uiwx/dSlider.py
U trunk/dabo/ui/uiwx/dSpinner.py
U trunk/dabo/ui/uiwx/dSplitForm.py
U trunk/dabo/ui/uiwx/dSplitter.py
U trunk/dabo/ui/uiwx/dStatusBar.py
U trunk/dabo/ui/uiwx/dTextBox.py
U trunk/dabo/ui/uiwx/dTextBoxMixin.py
U trunk/dabo/ui/uiwx/dTimer.py
U trunk/dabo/ui/uiwx/dToggleButton.py
U trunk/dabo/ui/uiwx/dToolBar.py
U trunk/dabo/ui/uiwx/dTreeView.py
U trunk/dabo/ui/uiwx/dUICursors.py
U trunk/dabo/ui/uiwx/gridRenderers.py
U trunk/dabo/ui/uiwx/test/test_dEditBox.py
U trunk/dabo/ui/uiwx/test/test_dForm.py
U trunk/dabo/ui/uiwx/test/test_dTextBox.py
U trunk/dabo/ui/uiwx/test.py
U trunk/dabo/ui/uiwx/uiApp.py
Log:
Mass-removed all trailing whitespace. No code logic changes at all.
Diff:
Modified: trunk/dabo/LICENSE.TXT
===================================================================
--- trunk/dabo/LICENSE.TXT 2010-09-12 20:39:54 UTC (rev 6012)
+++ trunk/dabo/LICENSE.TXT 2010-09-12 21:34:34 UTC (rev 6013)
@@ -2,20 +2,20 @@
Copyright (c) 2004-2007 Ed Leafe, Paul McNett, et. al.
Permission is hereby granted, free of charge, to any person obtaining a copy of
-this software and associated documentation files (the "Software"), to deal in
-the Software without restriction, including without limitation the rights to
-use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies
-of the Software, and to permit persons to whom the Software is furnished to do
+this software and associated documentation files (the "Software"), to deal in
+the Software without restriction, including without limitation the rights to
+use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies
+of the Software, and to permit persons to whom the Software is furnished to do
so, subject to the following conditions:
-The above copyright notice and this permission notice shall be included in all
+The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
Modified: trunk/dabo/__init__.py
===================================================================
--- trunk/dabo/__init__.py 2010-09-12 20:39:54 UTC (rev 6012)
+++ trunk/dabo/__init__.py 2010-09-12 21:34:34 UTC (rev 6013)
@@ -123,7 +123,7 @@
dAppRef = None
# Import global settings (do this first, as other imports may rely on it):
-# NOTE: Yeah, it's namespace pollution, but in this case it is deliberate:
+# NOTE: Yeah, it's namespace pollution, but in this case it is deliberate:
# we want to make them part of the dabo namespace.
from settings import *
@@ -178,7 +178,7 @@
fileFormatter.datefmt = mainLogDateFormat
fileLogHandler.setFormatter(fileFormatter)
log.addHandler(fileLogHandler)
-
+
dbConsoleLogHandler = logging.StreamHandler()
dbConsoleLogHandler.setLevel(dbLogConsoleLevel)
dbConsoleFormatter = logging.Formatter(dbConsoleFormat)
Modified: trunk/dabo/__version__.py
===================================================================
--- trunk/dabo/__version__.py 2010-09-12 20:39:54 UTC (rev 6012)
+++ trunk/dabo/__version__.py 2010-09-12 21:34:34 UTC (rev 6013)
@@ -9,7 +9,7 @@
import lib
_revision = None
-# First, try to get the revision from svninfo, which lets the developer go
back
+# First, try to get the revision from svninfo, which lets the developer go back
# and forth through revisions and the version information will still reflect
# reality.
package_path = os.path.split(os.path.split(lib.__file__)[0])[0]
Modified: trunk/dabo/biz/RemoteBizobj.py
===================================================================
--- trunk/dabo/biz/RemoteBizobj.py 2010-09-12 20:39:54 UTC (rev 6012)
+++ trunk/dabo/biz/RemoteBizobj.py 2010-09-12 21:34:34 UTC (rev 6013)
@@ -61,7 +61,7 @@
kf, crsData = pickle.load(f)
f.close()
biz.KeyField = kf
- # This is a dict with cursor keys as the keys, and
+ # This is a dict with cursor keys as the keys, and
# values as a (dataset, typedef) tuple.
for kk, (ds, typinfo) in crsData.items():
tmpCursor = biz.createCursor(key=kk)
@@ -69,7 +69,7 @@
return biz
- def setConnectionParams(self, cxnfile=None, dbType=None, database=None,
+ def setConnectionParams(self, cxnfile=None, dbType=None, database=None,
host=None, user=None, password=None,
plainTextPassword=None):
if cxnfile:
cxDict = importConnections(cxnfile)
@@ -112,8 +112,8 @@
remoteChar = "~~"
localChar = self._CurrentCursor.BackendObject.nameEnclosureChar
self.UserSQL = sql.replace(remoteChar, localChar)
-
+
def applyDiffAndSave(self, diff, primary=False):
"""Diffs are dicts in the format:
{hashval: (DataSource, KeyField, [changes])}
@@ -127,7 +127,7 @@
be present is the hashval for this bizobj. If this bizobj has
related child
bizobjs, and they have changes, there will be a 'children' key
that will
contain a list of one diff for each child bizobj with changes.
-
+
If this is the primary bizobj called from the web server, the
'primary'
parameter will be true, meaning that this bizobj will handle
transactions.
"""
@@ -171,7 +171,7 @@
abort(404, _("DataSource '%s'
not found") % kidDS)
kidBiz = kidClass.load(kidHash, kidDS)
kidBiz.applyDiffAndSave({kidHash:
kidInfo})
-
+
try:
self.saveAll()
except dException.ConnectionLostException, e:
Modified: trunk/dabo/biz/dAutoBizobj.py
===================================================================
--- trunk/dabo/biz/dAutoBizobj.py 2010-09-12 20:39:54 UTC (rev 6012)
+++ trunk/dabo/biz/dAutoBizobj.py 2010-09-12 21:34:34 UTC (rev 6013)
@@ -283,7 +283,7 @@
self.new()
for col, val in zip(to_insert[0], row):
self.setFieldVal(col, val)
-
+
try:
self.save()
except dException.DBQueryException, e:
Modified: trunk/dabo/biz/dBizobj.py
===================================================================
--- trunk/dabo/biz/dBizobj.py 2010-09-12 20:39:54 UTC (rev 6012)
+++ trunk/dabo/biz/dBizobj.py 2010-09-12 21:34:34 UTC (rev 6013)
@@ -40,11 +40,11 @@
# PKs of rows to be filtered out when filtering Virtual fields
self.__filterPKVirtual = []
-
+
self._beforeInit()
# This starts as a list that will hold cursors created in the
initial process
# if RequeryOnLoad is True. This is necessary because not all
of the required
- # properties will have been set at this point.
+ # properties will have been set at this point.
# It will be set to None in the _afterInit() code, to indicate
that it is no longer relevant.
self.__cursorsToRequery = []
self._requeryOnLoad = self._extractKey((properties, kwargs),
"RequeryOnLoad", False)
@@ -172,8 +172,8 @@
if params or requery:
cur.requery(params)
return cur
-
+
def createCursor(self, key=None):
""" Create the cursor that this bizobj will be using for data,
and store it
in the dictionary for cursors, with the passed value of 'key'
as its dict key.
@@ -731,13 +731,13 @@
If self.ScanRestorePosition is True, the position of the current
record in the recordset is restored after the iteration.
-
+
If self.ScanRequeryChildren is True, any child bizobjs will be
requeried
for each row in the bizobj. Only use this if you know the size
of the data
involved will be small.
You may optionally send reverse=True to scan the records in
reverse
- order, which you'll want to do if, for example, you are
deleting
+ order, which you'll want to do if, for example, you are deleting
records in your scan function. If the reverse argument is not
sent,
self.ScanReverse will be queried to determine the behavior.
"""
@@ -852,7 +852,7 @@
def _fldReplace(self, expr):
- """Takes a user-defined, SQL-like expression, and substitutes
any
+ """Takes a user-defined, SQL-like expression, and substitutes
any
field name with the reference for that value in the bizobj.
Example (assuming 'price' is a column in the data):
self._fldReplace("price > 50")
@@ -1072,13 +1072,13 @@
def filter(self, fld, expr, op="="):
"""
- This takes a field name, an expression, and an optional
operator, and applies that
- to the current dataset. The original dataset is preserved;
calling removeFilter() will
- remove the last filter applied to the bizobj. If the current
record is in the filtered
- dataset, that record will still be current; if it is filtered
out, the current row will
+ This takes a field name, an expression, and an optional
operator, and applies that
+ to the current dataset. The original dataset is preserved;
calling removeFilter() will
+ remove the last filter applied to the bizobj. If the current
record is in the filtered
+ dataset, that record will still be current; if it is filtered
out, the current row will
be row 0.
- If the operator is specified, it will be used literally in the
evaluation instead of the
- equals sign, unless it is one of the following strings, which
will be interpreted
+ If the operator is specified, it will be used literally in the
evaluation instead of the
+ equals sign, unless it is one of the following strings, which
will be interpreted
as indicated:
eq, equals: =
ne, nequals: !=
@@ -2536,7 +2536,7 @@
at the end of the recordset (False). (bool)"""))
ScanRequeryChildren = property(_getScanRequeryChildren,
_setScanRequeryChildren, None,
- _("""When calling the scan() function, this property
determines if we
+ _("""When calling the scan() function, this property
determines if we
requery any child bizobjs for each row in this bizobj.
The default is False,
as this has the potential to cause performance issues.
(bool)"""))
Modified: trunk/dabo/biz/test/test_dBizobj.py
===================================================================
--- trunk/dabo/biz/test/test_dBizobj.py 2010-09-12 20:39:54 UTC (rev 6012)
+++ trunk/dabo/biz/test/test_dBizobj.py 2010-09-12 21:34:34 UTC (rev 6013)
@@ -4,7 +4,7 @@
from dabo.lib import getRandomUUID
## Only tests against sqlite, as we already test dCursorMixin against the
-## various backends.
+## various backends.
class Test_dBizobj(unittest.TestCase):
def setUp(self):
@@ -45,7 +45,7 @@
""" % locals())
def createNullRecord(self):
- self.biz._CurrentCursor.AuxCursor.execute("""
+ self.biz._CurrentCursor.AuxCursor.execute("""
insert into %s (cField, iField, nField) values (NULL, NULL, NULL)
""" % self.temp_table_name)
@@ -85,7 +85,7 @@
biz.DefaultValues["iField"] = 2342
biz.new()
self.assertEqual(biz.Record.iField, 2342)
- self.assertEqual(biz.isChanged(), False)
+ self.assertEqual(biz.isChanged(), False)
def testVirtualFields(self):
biz = self.biz
@@ -148,8 +148,8 @@
self.assertEqual(biz.RowCount, 2)
biz.new()
self.assertEqual(biz.RowCount, 3)
-
+
def test_RowNumber(self):
biz = self.biz
self.assertEqual(biz.RowNumber, 0)
@@ -187,7 +187,7 @@
self.assertEqual(biz.RowCount, 3)
self.assertEqual(biz.RowNumber, 2)
-
+
def test_isChanged(self):
biz = self.biz
self.assertEqual(biz.isChanged(), False)
@@ -197,7 +197,7 @@
self.assertEqual(biz.isChanged(), False)
# isChanged() should be False for new records that haven't
had any field
- # value changes.
+ # value changes.
biz.new()
self.assertEqual(biz.isChanged(), False)
biz.Record.cField = "Hitsville U.K."
@@ -208,7 +208,7 @@
biz = self.biz
self.assertEqual(biz.oldVal("cField"), biz.Record.cField)
self.assertEqual(biz.oldVal("cField", 1),
biz.getFieldVal("cField", 1))
- oldVal = biz.Record.cField
+ oldVal = biz.Record.cField
newVal = "pkm23"
biz.Record.cField = newVal
self.assertEqual(biz.oldVal("cField"), oldVal)
@@ -251,7 +251,7 @@
bizChild.DataSource = self.temp_child_table_name
bizChild.LinkField = "parent_fk"
bizChild.FillLinkFromParent = True
-
+
bizMain.addChild(bizChild)
bizMain.requery()
@@ -293,7 +293,7 @@
# Add a record:
biz.new()
-
+
self.assertEqual(biz.RowCount, 4)
self.assertEqual(biz.RowNumber, 3)
self.assertEqual(cur._newRecords, {-1: None})
@@ -321,7 +321,7 @@
bizChild.DataSource = self.temp_child_table_name
bizChild.LinkField = "parent_fk"
bizChild.FillLinkFromParent = True
-
+
bizMain.addChild(bizChild)
bizMain.requery()
@@ -340,14 +340,14 @@
self.assertEqual(bizChild.isAnyChanged(), False)
bizMain.next()
-
+
# At this point bizMain should be at row 1, and bizChild should
have
# zero records.
self.assertEqual(bizMain.Record.pk, 2)
self.assertEqual(bizMain.RowNumber, 1)
self.assertEqual(bizChild.RowCount, 0)
self.assertEqual(bizChild.RowNumber, -1)
-
+
# Trying to get the field value from the nonexistent record
should raise
# dException.NoRecordsException:
def testGetField():
@@ -367,7 +367,7 @@
self.assertEqual(bizChild.RowNumber, 0)
self.assertEqual(bizChild.Record.pk, 3)
self.assertEqual(bizChild.Record.parent_fk, 3)
-
+
# Try a delete, which takes effect immediately without need to
save:
bizChild.delete()
self.assertEqual(bizMain.RowNumber, 2)
@@ -431,7 +431,7 @@
bizMain.saveAll()
self.assertEqual(bizMain.RowCount, 4)
self.assertEqual(bizMain.RowNumber, 3)
- bizMain.requery()
+ bizMain.requery()
self.assertEqual(bizMain.RowCount, 4)
self.assertEqual(bizMain.RowNumber, 3)
@@ -443,7 +443,7 @@
bizChild.DataSource = self.temp_child_table_name
bizChild.LinkField = "parent_fk"
bizChild.FillLinkFromParent = True
-
+
bizMain.addChild(bizChild)
bizMain.requery()
@@ -453,8 +453,8 @@
self.assertEqual(bizChild.RowCount, 3)
bizMain.cancel()
self.assertEqual(bizChild.RowCount, 2)
-
+
def testChildren_clearParent(self):
"""Requerying bizMain to 0 records should remove bizChild's
records, too."""
bizMain = self.biz
@@ -463,7 +463,7 @@
bizChild.DataSource = self.temp_child_table_name
bizChild.LinkField = "parent_fk"
bizChild.FillLinkFromParent = True
-
+
bizMain.addChild(bizChild)
bizMain.requery()
@@ -471,8 +471,8 @@
bizMain.requery()
self.assertEqual(bizMain.RowCount, 0)
self.assertEqual(bizChild.RowCount, 0)
-
+
def testChildren_moveParentRecordPointer(self):
"""Moving the parent record pointer shouldn't erase child
changes."""
bizMain = self.biz
@@ -481,7 +481,7 @@
bizChild.DataSource = self.temp_child_table_name
bizChild.LinkField = "parent_fk"
bizChild.FillLinkFromParent = True
-
+
bizMain.addChild(bizChild)
bizMain.requery()
@@ -499,7 +499,7 @@
# We are in row 2 of main, and row 0 of child
- # Change a field, and test isChanged() both before and after
moving the
+ # Change a field, and test isChanged() both before and after
moving the
# parent record pointer:
bizChild.Record.cInvNum = "pkm0023"
self.assertEqual(bizChild._CurrentCursor._mementos, {3:
{'cInvNum': u'IN00024'}})
@@ -526,9 +526,9 @@
self.assertEqual(bizChild.isChanged(), True)
self.assertEqual(bizChild._CurrentCursor._mementos, {3:
{'cInvNum': u'IN00024'}, -1: {'cInvNum': u''}})
- # Now, here's the problem. If we add a new record to the child
but don't
- # change any fields in that new record, then move the main
record pointer,
- # all child changes in other records will be lost, not just the
blank
+ # Now, here's the problem. If we add a new record to the child
but don't
+ # change any fields in that new record, then move the main
record pointer,
+ # all child changes in other records will be lost, not just the
blank
# new record which gets removed due to Dabo's design.
bizChild.new()
self.assertEqual(bizChild.RowCount, 3)
@@ -581,7 +581,7 @@
bizChild.DataSource = self.temp_child_table_name
bizChild.LinkField = "parent_fk"
bizChild.FillLinkFromParent = True
-
+
bizMain.addChild(bizChild)
bizMain.requery()
@@ -609,7 +609,7 @@
bizChild2.DataSource = self.temp_child2_table_name
bizChild2.LinkField = "parent_fk"
bizChild2.FillLinkFromParent = True
-
+
bizMain.addChild(bizChild)
bizChild.addChild(bizChild2)
bizMain.requery()
@@ -642,7 +642,7 @@
def testChangesToTwoChildRecords_cancel(self):
"""Do the same test as for save, but with cancelAll()."""
self.testChangesToTwoChildRecords("cancel")
-
+
if __name__ == "__main__":
suite = unittest.TestLoader().loadTestsFromTestCase(Test_dBizobj)
unittest.TextTestRunner(verbosity=2).run(suite)
Modified: trunk/dabo/dApp.py
===================================================================
--- trunk/dabo/dApp.py 2010-09-12 20:39:54 UTC (rev 6012)
+++ trunk/dabo/dApp.py 2010-09-12 21:34:34 UTC (rev 6013)
@@ -180,7 +180,7 @@
# Subdirectories that make up a standard Dabo app
self._standardDirs = dabo._getAppDirectoryNames()
-
+
# Some apps, such as the visual tools, are meant to be run from
directories
# other than that where they are located. In those cases, use
the current dir.
self._ignoreScriptDir = ignoreScriptDir
@@ -254,7 +254,7 @@
self.showMainFormOnStart = False
self.setup()
- ### egl: 2009.06.28 - commented this out. This was added when
the
+ ### egl: 2009.06.28 - commented this out. This was added when
the
### remote proxy code was added, and I'm not sure why. I am
removing
### it for now to satisfy ticket #1241, but I need to do
full testing with
### remote apps to make sure that it is truly not needed.
@@ -565,7 +565,7 @@
if lastcheck is None:
lastcheck = datetime.datetime(1900, 1,
1)
runCheck = (now > (lastcheck + mins))
-
+
if runCheck:
currVers = self._currentUpdateVersion()
# See if there is a later version
@@ -901,7 +901,7 @@
hd = self.HomeDirectory
if not self.AutoImportConnections:
return
-
+
connDefs = {}
if pth is None:
pth = os.getcwd()
@@ -1051,7 +1051,7 @@
def addConnectFile(self, connFile):
"""Accepts a cnxml file path, and reads in the connections
- defined in it, adding them to self.dbConnectionDefs. If the
+ defined in it, adding them to self.dbConnectionDefs. If the
file cannot be found, an exception is raised.
"""
origFile = connFile
@@ -1358,7 +1358,7 @@
# def _getDatabaseActivityLog(self):
# return dabo.dbActivityLog
-#
+#
# def _setDatabaseActivityLog(self, val):
# try:
# dbLogger = dabo.dbActivityLog
@@ -1436,7 +1436,7 @@
d1 =
os.path.split(d1)[0]
if d1 == d2:
return
True
-
+
if issubdir(scriptDir, appDir):
# The directory where
the main script is executing is a subdirectory of the
# location of the
application object in use. So we can safely make the app
@@ -1476,7 +1476,7 @@
import dabo.ui.dialogs.login as login
defaultDialogClass = login.Login
return getattr(self, "_loginDialogClass", defaultDialogClass)
-
+
def _setLoginDialogClass(self, val):
self._loginDialogClass = val
@@ -1638,7 +1638,7 @@
def _setUIAppClass(self, val):
self._uiAppClass = val
-
+
def _getUserSettingProvider(self):
try:
ret = self._userSettingProvider
@@ -1686,7 +1686,7 @@
CryptoKey = property(None, _setCryptoKey, None,
_("""When set, creates a DES crypto object if PyCrypto
is installed. Note that
- each time this property is set, a new PyCrypto instance
is created, and
+ each time this property is set, a new PyCrypto instance
is created, and
any previous crypto objects are released. Write-only.
(varies)"""))
# DatabaseActivityLog = property(_getDatabaseActivityLog,
_setDatabaseActivityLog, None,
@@ -1814,11 +1814,11 @@
UIAppClass = property(_getUIAppClass, _setUIAppClass, None,
_("""The name of the ui-specific app subclass to
instantiate.
-
+
This will allow ui toolkit-specific behaviors to be
added to a Dabo
application. It MUST be either defined in the
application subclass, or
passed in the call to create the app object, since the
UI App cannot
- be changed once the app is running. Defaults to
dabo.ui.uiApp
+ be changed once the app is running. Defaults to
dabo.ui.uiApp
if not specified. (dabo.ui.uiApp)"""))
UserSettingProvider = property(_getUserSettingProvider,
Modified: trunk/dabo/dBug.py
===================================================================
--- trunk/dabo/dBug.py 2010-09-12 20:39:54 UTC (rev 6012)
+++ trunk/dabo/dBug.py 2010-09-12 21:34:34 UTC (rev 6013)
@@ -19,7 +19,7 @@
output = StringIO()
if msg:
output.write(ustr(msg) + "\n")
-
+
stackSection = stack[-1*levels:]
for stackLine in stackSection:
frame, filename, line, funcname, lines, unknown = stackLine
@@ -39,23 +39,23 @@
def mainProgram():
"""Returns the name of first program in the call stack"""
return inspect.stack()[-1][1]
-
+
def loggit(fnc):
"""Decorator function to create a log of all methods as they are
called. To use
it, modify all your methods from:
-
+
def someMethod(...):
-
+
to:
-
+
@loggit
def someMethod(...):
-
+
Be sure to add:
-
+
from dabo.dBug import loggit
-
+
to the import statements for every file that uses loggit. You can set
the name and
location of the log file by overriding the setting for dabo.loggitFile.
By default, this
value will be 'functionCall.log'.
Modified: trunk/dabo/dColors.py
===================================================================
--- trunk/dabo/dColors.py 2010-09-12 20:39:54 UTC (rev 6012)
+++ trunk/dabo/dColors.py 2010-09-12 21:34:34 UTC (rev 6013)
@@ -11,155 +11,155 @@
class LengthError(ColorTupleError): pass
class IntegerTypeError(ColorTupleError): pass
-colorDict = {"aliceblue" : (240, 248, 255),
- "antiquewhite" : (250, 235, 215),
- "aqua" : (0, 255, 255),
- "aquamarine" : (127, 255, 212),
- "azure" : (240, 255, 255),
- "beige" : (245, 245, 220),
- "bisque" : (255, 228, 196),
- "black" : (0, 0, 0),
- "blanchedalmond" : (255, 235, 205),
- "blue" : (0, 0, 255),
- "blueviolet" : (138, 43, 226),
- "brown" : (165, 42, 42),
- "burlywood" : (222, 184, 135),
- "cadetblue" : (95, 158, 160),
- "chartreuse" : (127, 255, 0),
- "chocolate" : (210, 105, 30),
- "coral" : (255, 127, 80),
- "cornflowerblue" : (100, 149, 237),
- "cornsilk" : (255, 248, 220),
- "crimson" : (220, 20, 60),
- "cyan" : (0, 255, 255),
- "darkblue" : (0, 0, 139),
- "darkcyan" : (0, 139, 139),
- "darkgoldenrod" : (184, 134, 11),
- "darkgray" : (169, 169, 169),
- "darkgrey" : (169, 169, 169),
- "darkgreen" : (0, 100, 0),
- "darkkhaki" : (189, 183, 107),
- "darkmagenta" : (139, 0, 139),
- "darkolivegreen" : (85, 107, 47),
- "darkorange" : (255, 140, 0),
- "darkorchid" : (153, 50, 204),
- "darkred" : (139, 0, 0),
- "darksalmon" : (233, 150, 122),
- "darkseagreen" : (143, 188, 143),
- "darkslateblue" : (72, 61, 139),
- "darkslategray" : (47, 79, 79),
- "darkslategrey" : (47, 79, 79),
- "darkturquoise" : (0, 206, 209),
- "darkviolet" : (148, 0, 211),
- "deeppink" : (255, 20, 147),
- "deepskyblue" : (0, 191, 255),
- "dimgray" : (105, 105, 105),
- "dimgrey" : (105, 105, 105),
- "dodgerblue" : (30, 144, 255),
- "feldspar" : (209, 146, 117),
- "firebrick" : (178, 34, 34),
- "floralwhite" : (255, 250, 240),
- "forestgreen" : (34, 139, 34),
- "fuchsia" : (255, 0, 255),
- "gainsboro" : (220, 220, 220),
- "ghostwhite" : (248, 248, 255),
- "gold" : (255, 215, 0),
- "goldenrod" : (218, 165, 32),
- "gray" : (128, 128, 128),
- "grey" : (128, 128, 128),
- "green" : (0, 128, 0),
- "greenyellow" : (173, 255, 47),
- "honeydew" : (240, 255, 240),
- "hotpink" : (255, 105, 180),
- "indianred" : (205, 92, 92),
- "indigo" : (75, 0, 130),
- "ivory" : (255, 255, 240),
- "khaki" : (240, 230, 140),
- "lavender" : (230, 230, 250),
- "lavenderblush" : (255, 240, 245),
- "lawngreen" : (124, 252, 0),
- "lemonchiffon" : (255, 250, 205),
- "lightblue" : (173, 216, 230),
- "lightcoral" : (240, 128, 128),
- "lightcyan" : (224, 255, 255),
- "lightgoldenrodyellow" : (250, 250, 210),
- "lightgray" : (211, 211, 211),
+colorDict = {"aliceblue" : (240, 248, 255),
+ "antiquewhite" : (250, 235, 215),
+ "aqua" : (0, 255, 255),
+ "aquamarine" : (127, 255, 212),
+ "azure" : (240, 255, 255),
+ "beige" : (245, 245, 220),
+ "bisque" : (255, 228, 196),
+ "black" : (0, 0, 0),
+ "blanchedalmond" : (255, 235, 205),
+ "blue" : (0, 0, 255),
+ "blueviolet" : (138, 43, 226),
+ "brown" : (165, 42, 42),
+ "burlywood" : (222, 184, 135),
+ "cadetblue" : (95, 158, 160),
+ "chartreuse" : (127, 255, 0),
+ "chocolate" : (210, 105, 30),
+ "coral" : (255, 127, 80),
+ "cornflowerblue" : (100, 149, 237),
+ "cornsilk" : (255, 248, 220),
+ "crimson" : (220, 20, 60),
+ "cyan" : (0, 255, 255),
+ "darkblue" : (0, 0, 139),
+ "darkcyan" : (0, 139, 139),
+ "darkgoldenrod" : (184, 134, 11),
+ "darkgray" : (169, 169, 169),
+ "darkgrey" : (169, 169, 169),
+ "darkgreen" : (0, 100, 0),
+ "darkkhaki" : (189, 183, 107),
+ "darkmagenta" : (139, 0, 139),
+ "darkolivegreen" : (85, 107, 47),
+ "darkorange" : (255, 140, 0),
+ "darkorchid" : (153, 50, 204),
+ "darkred" : (139, 0, 0),
+ "darksalmon" : (233, 150, 122),
+ "darkseagreen" : (143, 188, 143),
+ "darkslateblue" : (72, 61, 139),
+ "darkslategray" : (47, 79, 79),
+ "darkslategrey" : (47, 79, 79),
+ "darkturquoise" : (0, 206, 209),
+ "darkviolet" : (148, 0, 211),
+ "deeppink" : (255, 20, 147),
+ "deepskyblue" : (0, 191, 255),
+ "dimgray" : (105, 105, 105),
+ "dimgrey" : (105, 105, 105),
+ "dodgerblue" : (30, 144, 255),
+ "feldspar" : (209, 146, 117),
+ "firebrick" : (178, 34, 34),
+ "floralwhite" : (255, 250, 240),
+ "forestgreen" : (34, 139, 34),
+ "fuchsia" : (255, 0, 255),
+ "gainsboro" : (220, 220, 220),
+ "ghostwhite" : (248, 248, 255),
+ "gold" : (255, 215, 0),
+ "goldenrod" : (218, 165, 32),
+ "gray" : (128, 128, 128),
+ "grey" : (128, 128, 128),
+ "green" : (0, 128, 0),
+ "greenyellow" : (173, 255, 47),
+ "honeydew" : (240, 255, 240),
+ "hotpink" : (255, 105, 180),
+ "indianred" : (205, 92, 92),
+ "indigo" : (75, 0, 130),
+ "ivory" : (255, 255, 240),
+ "khaki" : (240, 230, 140),
+ "lavender" : (230, 230, 250),
+ "lavenderblush" : (255, 240, 245),
+ "lawngreen" : (124, 252, 0),
+ "lemonchiffon" : (255, 250, 205),
+ "lightblue" : (173, 216, 230),
+ "lightcoral" : (240, 128, 128),
+ "lightcyan" : (224, 255, 255),
+ "lightgoldenrodyellow" : (250, 250, 210),
+ "lightgray" : (211, 211, 211),
"lightgrey" : (211, 211, 211),
- "lightgreen" : (144, 238, 144),
- "lightpink" : (255, 182, 193),
- "lightsalmon" : (255, 160, 122),
- "lightseagreen" : (32, 178, 170),
- "lightskyblue" : (135, 206, 250),
- "lightslateblue" : (132, 112, 255),
- "lightslategray" : (119, 136, 153),
+ "lightgreen" : (144, 238, 144),
+ "lightpink" : (255, 182, 193),
+ "lightsalmon" : (255, 160, 122),
+ "lightseagreen" : (32, 178, 170),
+ "lightskyblue" : (135, 206, 250),
+ "lightslateblue" : (132, 112, 255),
+ "lightslategray" : (119, 136, 153),
"lightslategrey" : (119, 136, 153),
- "lightsteelblue" : (176, 196, 222),
- "lightyellow" : (255, 255, 224),
- "lime" : (0, 255, 0),
- "limegreen" : (50, 205, 50),
- "linen" : (250, 240, 230),
- "magenta" : (255, 0, 255),
- "maroon" : (128, 0, 0),
- "mediumaquamarine" : (102, 205, 170),
- "mediumblue" : (0, 0, 205),
- "mediumorchid" : (186, 85, 211),
- "mediumpurple" : (147, 112, 216),
- "mediumseagreen" : (60, 179, 113),
- "mediumslateblue" : (123, 104, 238),
- "mediumspringgreen" : (0, 250, 154),
- "mediumturquoise" : (72, 209, 204),
- "mediumvioletred" : (199, 21, 133),
- "midnightblue" : (25, 25, 112),
- "mintcream" : (245, 255, 250),
- "mistyrose" : (255, 228, 225),
- "moccasin" : (255, 228, 181),
- "navajowhite" : (255, 222, 173),
- "navy" : (0, 0, 128),
- "oldlace" : (253, 245, 230),
- "olive" : (128, 128, 0),
- "olivedrab" : (107, 142, 35),
- "orange" : (255, 165, 0),
- "orangered" : (255, 69, 0),
- "orchid" : (218, 112, 214),
- "palegoldenrod" : (238, 232, 170),
- "palegreen" : (152, 251, 152),
- "paleturquoise" : (175, 238, 238),
- "palevioletred" : (216, 112, 147),
- "papayawhip" : (255, 239, 213),
- "peachpuff" : (255, 218, 185),
- "peru" : (205, 133, 63),
- "pink" : (255, 192, 203),
- "plum" : (221, 160, 221),
- "powderblue" : (176, 224, 230),
- "purple" : (128, 0, 128),
- "red" : (255, 0, 0),
- "rosybrown" : (188, 143, 143),
- "royalblue" : (65, 105, 225),
- "saddlebrown" : (139, 69, 19),
- "salmon" : (250, 128, 114),
- "sandybrown" : (244, 164, 96),
- "seagreen" : (46, 139, 87),
- "seashell" : (255, 245, 238),
- "sienna" : (160, 82, 45),
- "silver" : (192, 192, 192),
- "skyblue" : (135, 206, 235),
- "slateblue" : (106, 90, 205),
- "slategray" : (112, 128, 144),
- "slategrey" : (112, 128, 144),
- "snow" : (255, 250, 250),
- "springgreen" : (0, 255, 127),
- "steelblue" : (70, 130, 180),
- "tan" : (210, 180, 140),
- "teal" : (0, 128, 128),
- "thistle" : (216, 191, 216),
- "tomato" : (255, 99, 71),
- "turquoise" : (64, 224, 208),
- "violet" : (238, 130, 238),
- "violetred" : (208, 32, 144),
- "wheat" : (245, 222, 179),
- "white" : (255, 255, 255),
- "whitesmoke" : (245, 245, 245),
- "yellow" : (255, 255, 0),
+ "lightsteelblue" : (176, 196, 222),
+ "lightyellow" : (255, 255, 224),
+ "lime" : (0, 255, 0),
+ "limegreen" : (50, 205, 50),
+ "linen" : (250, 240, 230),
+ "magenta" : (255, 0, 255),
+ "maroon" : (128, 0, 0),
+ "mediumaquamarine" : (102, 205, 170),
+ "mediumblue" : (0, 0, 205),
+ "mediumorchid" : (186, 85, 211),
+ "mediumpurple" : (147, 112, 216),
+ "mediumseagreen" : (60, 179, 113),
+ "mediumslateblue" : (123, 104, 238),
+ "mediumspringgreen" : (0, 250, 154),
+ "mediumturquoise" : (72, 209, 204),
+ "mediumvioletred" : (199, 21, 133),
+ "midnightblue" : (25, 25, 112),
+ "mintcream" : (245, 255, 250),
+ "mistyrose" : (255, 228, 225),
+ "moccasin" : (255, 228, 181),
+ "navajowhite" : (255, 222, 173),
+ "navy" : (0, 0, 128),
+ "oldlace" : (253, 245, 230),
+ "olive" : (128, 128, 0),
+ "olivedrab" : (107, 142, 35),
+ "orange" : (255, 165, 0),
+ "orangered" : (255, 69, 0),
+ "orchid" : (218, 112, 214),
+ "palegoldenrod" : (238, 232, 170),
+ "palegreen" : (152, 251, 152),
+ "paleturquoise" : (175, 238, 238),
+ "palevioletred" : (216, 112, 147),
+ "papayawhip" : (255, 239, 213),
+ "peachpuff" : (255, 218, 185),
+ "peru" : (205, 133, 63),
+ "pink" : (255, 192, 203),
+ "plum" : (221, 160, 221),
+ "powderblue" : (176, 224, 230),
+ "purple" : (128, 0, 128),
+ "red" : (255, 0, 0),
+ "rosybrown" : (188, 143, 143),
+ "royalblue" : (65, 105, 225),
+ "saddlebrown" : (139, 69, 19),
+ "salmon" : (250, 128, 114),
+ "sandybrown" : (244, 164, 96),
+ "seagreen" : (46, 139, 87),
+ "seashell" : (255, 245, 238),
+ "sienna" : (160, 82, 45),
+ "silver" : (192, 192, 192),
+ "skyblue" : (135, 206, 235),
+ "slateblue" : (106, 90, 205),
+ "slategray" : (112, 128, 144),
+ "slategrey" : (112, 128, 144),
+ "snow" : (255, 250, 250),
+ "springgreen" : (0, 255, 127),
+ "steelblue" : (70, 130, 180),
+ "tan" : (210, 180, 140),
+ "teal" : (0, 128, 128),
+ "thistle" : (216, 191, 216),
+ "tomato" : (255, 99, 71),
+ "turquoise" : (64, 224, 208),
+ "violet" : (238, 130, 238),
+ "violetred" : (208, 32, 144),
+ "wheat" : (245, 222, 179),
+ "white" : (255, 255, 255),
+ "whitesmoke" : (245, 245, 245),
+ "yellow" : (255, 255, 0),
"yellowgreen" : (154, 205, 50)
}
@@ -170,7 +170,7 @@
if not isinstance(hx, basestring):
raise TypeError("Input must be a string")
# Define a dict of char-value pairs
- hex = {"0": 0, "1": 1, "2": 2, "3": 3, "4": 4, "5": 5, "6": 6, "7": 7,
"8": 8,
+ hex = {"0": 0, "1": 1, "2": 2, "3": 3, "4": 4, "5": 5, "6": 6, "7": 7,
"8": 8,
"9": 9, "A": 10, "B": 11, "C": 12, "D": 13, "E": 14,
"F": 15}
# Reverse it, and force upper case
rev = hx[::-1].upper()
@@ -221,7 +221,7 @@
def colorTupleFromName(color):
"""Given a color name, such as "Blue" or "Aquamarine", return a color
tuple.
-
+
This is used internally in the ForeColor and BackColor property
setters. The
color name is not case-sensitive. If the color name doesn't exist, an
exception
is raised.
@@ -235,8 +235,8 @@
except InvalidCharError:
ret = colorTupleFromString(color)
return ret
-
-
+
+
def colorTupleFromString(color):
ret = None
colorTuplePat = "\((\d+), *(\d+), *(\d+)\)"
@@ -264,7 +264,7 @@
def colorNameFromTuple(colorTuple, firstOnly=False):
"""Returns a list of color names, if any, whose RGB tuple matches
- the specified tuple. If 'firstOnly' is True, then a single color name
+ the specified tuple. If 'firstOnly' is True, then a single color name
will be returned as a string, not a list; the string will be empty
if there is no match.
"""
Modified: trunk/dabo/dEvents.py
===================================================================
--- trunk/dabo/dEvents.py 2010-09-12 20:39:54 UTC (rev 6012)
+++ trunk/dabo/dEvents.py 2010-09-12 21:34:34 UTC (rev 6013)
@@ -227,8 +227,8 @@
def appliesToClass(eventClass, objectClass):
return issubclass(objectClass, (dabo.ui.dScrollPanel,
dabo.ui.dGrid))
appliesToClass = classmethod(appliesToClass)
-
+
class Activate(dEvent):
"""Occurs when the form or application becomes active."""
def appliesToClass(eventClass, objectClass):
Modified: trunk/dabo/dLocalize.py
===================================================================
--- trunk/dabo/dLocalize.py 2010-09-12 20:39
(854895 bytes were truncated as it was too long for the email (max 40000
bytes.)
_______________________________________________
Post Messages to: [email protected]
Subscription Maintenance: http://leafe.com/mailman/listinfo/dabo-dev
Searchable Archives: http://leafe.com/archives/search/dabo-dev
This message:
http://leafe.com/archives/byMID/[email protected]