debian/0000755000000000000000000000000011650665564007204 5ustar debian/control0000644000000000000000000000170211650655615010603 0ustar Source: python-dsv Section: python Priority: optional Maintainer: Debian Python Modules Team Uploaders: Aaron M. Ucko Build-Depends: debhelper (>= 8), python (>= 2.6.6-3~) Standards-Version: 3.9.2 Vcs-Svn: svn://svn.debian.org/python-modules/packages/python-dsv/trunk Vcs-Browser: http://svn.debian.org/viewsvn/python-modules/packages/python-dsv/trunk/ Homepage: http://python-dsv.sourceforge.net/ Package: python-dsv Architecture: all Depends: ${misc:Depends}, ${python:Depends} Suggests: python-wxgtk2.8 Provides: ${python:Provides} Description: Python module for delimiter-separated-value files Python-DSV is an alternative to Python's standard csv module, with somewhat different usage and optional support for wxWidgets-mediated user interaction in the course of format autodetection. Like the standard module, it supports a wide range of delimiters and handles both import and export. debian/source/0000755000000000000000000000000011650665564010504 5ustar debian/source/format0000644000000000000000000000001411650651773011707 0ustar 3.0 (quilt) debian/docs0000644000000000000000000000000711650647656010056 0ustar README debian/copyright0000644000000000000000000000604311650647656011144 0ustar This package was debianized by Aaron M. Ucko on Fri, 3 Feb 2006 11:55:27 -0500. It was downloaded from https://sourceforge.net/projects/python-dsv/. Copyright Holder: Cliff Wells License: Copyright (c) 2002 Cliff Wells All Rights Reserved. This is the Python license. In short, you can use this product in commercial and non-commercial applications, modify it, redistribute it. A notification to the author when you use and/or modify it is welcome. TERMS AND CONDITIONS FOR ACCESSING OR OTHERWISE USING THIS SOFTWARE =================================================================== LICENSE AGREEMENT ----------------- 1. This LICENSE AGREEMENT is between the copyright holder of this product, and the Individual or Organization ("Licensee") accessing and otherwise using this product in source or binary form and its associated documentation. 2. Subject to the terms and conditions of this License Agreement, the copyright holder hereby grants Licensee a nonexclusive, royalty-free, world-wide license to reproduce, analyze, test, perform and/or display publicly, prepare derivative works, distribute, and otherwise use this product alone or in any derivative version, provided, however, that copyright holders License Agreement and copyright holders notice of copyright are retained in this product alone or in any derivative version prepared by Licensee. 3. In the event Licensee prepares a derivative work that is based on or incorporates this product or any part thereof, and wants to make the derivative work available to others as provided herein, then Licensee hereby agrees to include in any such work a brief summary of the changes made to this product. 4. The copyright holder is making this product available to Licensee on an "AS IS" basis. THE COPYRIGHT HOLDER MAKES NO REPRESENTATIONS OR WARRANTIES, EXPRESS OR IMPLIED. BY WAY OF EXAMPLE, BUT NOT LIMITATION, THE COPYRIGHT HOLDER MAKES NO AND DISCLAIMS ANY REPRESENTATION OR WARRANTY OF MERCHANTABILITY OR FITNESS FOR ANY PARTICULAR PURPOSE OR THAT THE USE OF THIS PRODUCT WILL NOT INFRINGE ANY THIRD PARTY RIGHTS. 5. THE COPYRIGHT HOLDER SHALL NOT BE LIABLE TO LICENSEE OR ANY OTHER USERS OF THIS PRODUCT FOR ANY INCIDENTAL, SPECIAL, OR CONSEQUENTIAL DAMAGES OR LOSS AS A RESULT OF MODIFYING, DISTRIBUTING, OR OTHERWISE USING THIS PRODUCT, OR ANY DERIVATIVE THEREOF, EVEN IF ADVISED OF THE POSSIBILITY THEREOF. 6. This License Agreement will automatically terminate upon a material breach of its terms and conditions. 7. Nothing in this License Agreement shall be deemed to create any relationship of agency, partnership, or joint venture between the copyright holder and Licensee. This License Agreement does not grant permission to use trademarks or trade names from the copyright holder in a trademark sense to endorse or promote products or services of Licensee, or any third party. 8. By copying, installing or otherwise using this product, Licensee agrees to be bound by the terms and conditions of this License Agreement. debian/rules0000755000000000000000000000005411650652605010253 0ustar #!/usr/bin/make -f %: dh $@ --with python2 debian/compat0000644000000000000000000000000211650655115010371 0ustar 8 debian/changelog0000644000000000000000000001021511650665461011051 0ustar python-dsv (1.4.1-2) unstable; urgency=low * debian/source/format: advance to 3.0 (quilt). * debian/README.source: retire accordingly. * debian/rules: - Simplify accordingly; now fully minimal. - Invoke dh --with python2. * debian/control: - Tighten build dependency on python to (>= 2.6.6-3~) for dh_python2. - Drop build dependencies on python-support and quilt, now superfluous. - Formally set Provides: ${python:Provides}. - Retire alternative suggestion of python-wxgtk2.6, now obsolescent. - Advance Standards-Version to 3.9.2. (Already compliant.) - Tighten build dependency on debhelper to (>= 8). * debian/compat: proceed to advance to 8, the currently recommended level. * debian/pycompat: belatedly retire as obsolete. -- Aaron M. Ucko Sat, 22 Oct 2011 21:17:37 -0400 python-dsv (1.4.1-1) unstable; urgency=low [ Aaron M. Ucko ] * New upstream release. * debian/patches/*.patch: formally refresh. (All still apply.) * debian/control: - Suggest python-wxgtk2.8 as a preferred alternative to 2.6. - Depend on ${misc:Depends} in case Debhelper ever populates it. - Eliminate spurious build-dependency on python-dev (vs. python). - Note (preexisting) compliance with Policy version 3.8.3. * debian/examples: retire (contents no longer shipped upstream). * debian/NEWS (new): note minor incompatible API change. * debian/rules: minimize further. [Carlos Galisteo] * debian/control: - Added Homepage field. [ Sandro Tosi ] * debian/control - switch Vcs-Browser field to viewsvn -- Aaron M. Ucko Tue, 26 Jan 2010 22:14:29 -0500 python-dsv (1.4.0-7) unstable; urgency=low * Migrate from CDBS's simple-patchsys to quilt. * Migrate altogether from CDBS to Debhelper 7. * Add a README.source pointing to quilt's. * Declare compliance with Policy 3.8.0. -- Aaron M. Ucko Wed, 11 Jun 2008 19:50:12 -0400 python-dsv (1.4.0-6) unstable; urgency=low [ Piotr Ożarowski ] * Rename XS-Vcs-* fields to Vcs-* (dpkg supports them now) [ Aaron M. Ucko ] * Formally advance to Debhelper 6 on principle. * Declare compliance with Policy 3.7.3; no changes needed. -- Aaron M. Ucko Sat, 29 Mar 2008 19:01:54 -0400 python-dsv (1.4.0-5) unstable; urgency=low [Piotr Ożarowski] * Fix typo in XS-Vcs-Svn: control field (misconverted from +ssh version) [Aaron M. Ucko] * debian/patches/02-wx-namespace-transition.patch (new, via Joe Pham ): use the modern wx package rather than the clunkier wxPython package, which wxWidgets 2.8 will no longer provide. * debian/patches/03-avoid-unicoditis.patch (new): Try to convert Unicode delimiters back to ASCII (wxPython can be overenthusiastic), but ultimately support either. * Supply XS-Vcs-Browser in addition to XS-Vcs-Svn. -- Aaron M. Ucko Fri, 4 May 2007 20:02:56 -0400 python-dsv (1.4.0-4) unstable; urgency=low * Stop suggesting python-wxgtk2.4, which is obsolete and no longer installable. (Closes: #391992.) * Update for recent Python policy tweaks. * Add an XS-Vcs-Svn field (pointing to svn.debian.org). -- Aaron M. Ucko Mon, 9 Oct 2006 19:49:03 -0400 python-dsv (1.4.0-3) unstable; urgency=low * Patch DSV.py indirectly, via CDBS's simple patch system, in preparation for switching to pure merge-with-upstream mode per DPMT conventions. * Tweak packaging to comply with the new Python policy (version 0.4); continue using python-support, as python-central is overkill here. (Closes: #373530.) * Standards-Version: 3.7.2 (no changes required). -- Aaron M. Ucko Wed, 14 Jun 2006 20:21:56 -0400 python-dsv (1.4.0-2) unstable; urgency=low * Maintain in conjunction with the new Debian Python Modules Team . * Migrate to python-support (in public-module mode, of course). -- Aaron M. Ucko Tue, 18 Apr 2006 20:51:11 -0400 python-dsv (1.4.0-1) unstable; urgency=low * Initial release. (Closes: #351276.) -- Aaron M. Ucko Fri, 3 Feb 2006 15:19:35 -0500 debian/watch0000644000000000000000000000011711650647656010236 0ustar # See uscan(1) for format version=3 http://sf.net/python-dsv/DSV-(.*)\.tar\.gz debian/NEWS0000644000000000000000000000047311650647656007711 0ustar python-dsv (1.4.1-1) unstable; urgency=low As the README notes, 1.4.1 incompatibly changes the type of importDSV's optional errorHandler argument. This change does not affect any official Debian packages, but it may affect other code. -- Aaron M. Ucko Tue, 26 Jan 2010 22:00:10 -0500 debian/patches/0000755000000000000000000000000011650665564010633 5ustar debian/patches/series0000644000000000000000000000014011650647656012045 0ustar 01-leave-env-alone.patch -p1 02-wx-namespace-transition.patch -p1 03-avoid-unicoditis.patch -p1 debian/patches/02-wx-namespace-transition.patch0000644000000000000000000005171711650647656016670 0ustar Index: python-dsv-1.4.1/DSV/DSV.py =================================================================== --- python-dsv-1.4.1.orig/DSV/DSV.py 2010-01-26 20:35:23.000000000 -0500 +++ python-dsv-1.4.1/DSV/DSV.py 2010-01-26 20:37:59.000000000 -0500 @@ -2,6 +2,9 @@ DSV.py - Cliff Wells, 2002 Import/export DSV (delimiter separated values, a generalization of CSV). +2007-01-09: Modified by Joe Pham to accommodate + wxPython 2.8+ + Basic use: from DSV import DSV @@ -133,8 +136,14 @@ # import os # os.putenv('LANG', 'C') +##try: +## from wxPython import wx, grid +##except ImportError: +## wx = None + try: - from wxPython import wx, grid + import wx + import wx.grid as gridlib except ImportError: wx = None @@ -625,19 +634,19 @@ if wx is not None: # ------------------------------------------------------------------------------ - class ImportWizardPanel_Delimiters(wx.wxPanel): + class ImportWizardPanel_Delimiters(wx.Panel): """ CLASS(SUPERCLASS): - ImportWizardPanel_Delimiters(wx.wxPanel) + ImportWizardPanel_Delimiters(wx.Panel) DESCRIPTION: - A wx.wxPanel that provides a basic interface for validating and changing the + A wx.Panel that provides a basic interface for validating and changing the parameters for importing a delimited text file. Similar to MS Excel's CSV import wizard. Can be used in a series of wizards or embedded in an application. PROTOTYPE: ImportWizardPanel_Delimiters(parent, id, file, data, isValidCallback = None, - pos = wx.wxDefaultPosition, size = wx.wxDefaultSize, - style = wx.wxTAB_TRAVERSAL, name = 'ImportWizardPanel') + pos = wx.DefaultPosition, size = wx.DefaultSize, + style = wx.TAB_TRAVERSAL, name = 'ImportWizardPanel') ARGUMENTS: - parent is the parent window - id is the id of this wizard panel @@ -657,24 +666,24 @@ """ def __init__(self, parent, id, file, data, isValidCallback = None, - pos = wx.wxDefaultPosition, size = wx.wxDefaultSize, - style = wx.wxTAB_TRAVERSAL, name = "ImportWizardPanel"): - wx.wxPanel.__init__(self, parent, id, pos, size, style, name) - self.SetAutoLayout(wx.true) - mainSizer = wx.wxFlexGridSizer(3, 1) + pos = wx.DefaultPosition, size = wx.DefaultSize, + style = wx.TAB_TRAVERSAL, name = "ImportWizardPanel"): + wx.Panel.__init__(self, parent, id, pos, size, style, name) + self.SetAutoLayout(True) + mainSizer = wx.FlexGridSizer(3, 1) self.SetSizer(mainSizer) mainSizer.AddGrowableCol(0) - self.initialized = wx.false + self.initialized = False self.data = data self.isValidCallback = isValidCallback self.Validate = (isValidCallback and self.Validate) or self.BuildPreview - dlg = wx.wxProgressDialog("Import Wizard", + dlg = wx.ProgressDialog("Import Wizard", "Analyzing %s... Please wait." % file, 3, parent, - wx.wxPD_APP_MODAL | wx.wxPD_AUTO_HIDE) + wx.PD_APP_MODAL | wx.PD_AUTO_HIDE) textQualifier = guessTextQualifier(data) dlg.Update(1) newdata = organizeIntoLines(data, textQualifier = textQualifier, limit = 100) @@ -686,13 +695,13 @@ # ------------- msg = ("This screen lets you set the delimiters your data contains.\n" "You can see how your data is affected in the preview below.") - message1 = wx.wxStaticText(self, -1, msg) + message1 = wx.StaticText(self, -1, msg) # ------------- - delimiterBox = wx.wxBoxSizer(wx.wxHORIZONTAL) - delimStaticBox = wx.wxStaticBox(self, -1, "Delimiters") - delimStaticSizer = wx.wxStaticBoxSizer(delimStaticBox, wx.wxVERTICAL) - delimGridSizer = wx.wxFlexGridSizer(2, 3) + delimiterBox = wx.BoxSizer(wx.HORIZONTAL) + delimStaticBox = wx.StaticBox(self, -1, "Delimiters") + delimStaticSizer = wx.StaticBoxSizer(delimStaticBox, wx.VERTICAL) + delimGridSizer = wx.FlexGridSizer(2, 3) delims = { 'Tab': '\t', @@ -704,36 +713,36 @@ self.delimChecks = {} for label, value in delims.items(): - self.delimChecks[value] = wx.wxCheckBox(self, -1, label) - delimGridSizer.Add(self.delimChecks[value], 0, wx.wxALL, 3) + self.delimChecks[value] = wx.CheckBox(self, -1, label) + delimGridSizer.Add(self.delimChecks[value], 0, wx.ALL, 3) wx.EVT_CHECKBOX(self, self.delimChecks[value].GetId(), self.Validate) - otherSizer = wx.wxBoxSizer(wx.wxHORIZONTAL) + otherSizer = wx.BoxSizer(wx.HORIZONTAL) - self.delimChecks['Other'] = wx.wxCheckBox(self, -1, 'Other:') + self.delimChecks['Other'] = wx.CheckBox(self, -1, 'Other:') wx.EVT_CHECKBOX(self, self.delimChecks['Other'].GetId(), self.Validate) - self.otherDelim = wx.wxTextCtrl(self, -1, size = (20, -1)) + self.otherDelim = wx.TextCtrl(self, -1, size = (20, -1)) wx.EVT_TEXT(self, self.otherDelim.GetId(), self.OnCustomDelim) if self.delimChecks.has_key(delimiter): - self.delimChecks[delimiter].SetValue(wx.true) + self.delimChecks[delimiter].SetValue(True) elif delimiter is not None: - self.delimChecks['Other'].SetValue(wx.true) + self.delimChecks['Other'].SetValue(True) self.otherDelim.SetValue(delimiter) otherSizer.AddMany([ - (self.delimChecks['Other'], 0, wx.wxALL, 3), - (self.otherDelim, 0, wx.wxALIGN_CENTER), + (self.delimChecks['Other'], 0, wx.ALL, 3), + (self.otherDelim, 0, wx.ALIGN_CENTER), ]) delimGridSizer.Add(otherSizer) - delimStaticSizer.Add(delimGridSizer, 1, wx.wxEXPAND) - delimOtherSizer = wx.wxBoxSizer(wx.wxVERTICAL) - self.consecutiveDelimsAs1 = wx.wxCheckBox(self, -1, "Treat consecutive delimiters as one") - self.consecutiveDelimsAs1.Enable(wx.false) - tqSizer = wx.wxBoxSizer(wx.wxHORIZONTAL) - self.textQualifierChoice = wx.wxChoice(self, -1, choices = ['"', "'", "{None}"]) + delimStaticSizer.Add(delimGridSizer, 1, wx.EXPAND) + delimOtherSizer = wx.BoxSizer(wx.VERTICAL) + self.consecutiveDelimsAs1 = wx.CheckBox(self, -1, "Treat consecutive delimiters as one") + self.consecutiveDelimsAs1.Enable(False) + tqSizer = wx.BoxSizer(wx.HORIZONTAL) + self.textQualifierChoice = wx.Choice(self, -1, choices = ['"', "'", "{None}"]) wx.EVT_CHOICE(self, self.textQualifierChoice.GetId(), self.BuildPreview) if textQualifier is not None: self.textQualifierChoice.SetStringSelection(textQualifier) @@ -741,52 +750,52 @@ self.textQualifierChoice.SetStringSelection('{None}') tqSizer.AddMany([ - (wx.wxStaticText(self, -1, "Text qualifier:"), 0, wx.wxALIGN_RIGHT | wx.wxALIGN_CENTER_VERTICAL), - (self.textQualifierChoice, 0, wx.wxALL | wx.wxALIGN_LEFT | wx.wxALIGN_CENTER_VERTICAL, 5), + (wx.StaticText(self, -1, "Text qualifier:"), 0, wx.ALIGN_RIGHT | wx.ALIGN_CENTER_VERTICAL), + (self.textQualifierChoice, 0, wx.ALL | wx.ALIGN_LEFT | wx.ALIGN_CENTER_VERTICAL, 5), ]) delimOtherSizer.AddMany([ - (self.consecutiveDelimsAs1, 1, wx.wxEXPAND | wx.wxALL, 5), - (tqSizer, 1, wx.wxALL | wx.wxALIGN_CENTER, 5), + (self.consecutiveDelimsAs1, 1, wx.EXPAND | wx.ALL, 5), + (tqSizer, 1, wx.ALL | wx.ALIGN_CENTER, 5), ]) delimiterBox.AddMany([ - (delimStaticSizer, 0, wx.wxALIGN_CENTER), - (delimOtherSizer, 0, wx.wxALIGN_CENTER), + (delimStaticSizer, 0, wx.ALIGN_CENTER), + (delimOtherSizer, 0, wx.ALIGN_CENTER), ]) delimStaticBox.Fit() # ------------- self.displayRows = 6 - previewSettingsBox = wx.wxBoxSizer(wx.wxHORIZONTAL) - self.hasHeaderRow = wx.wxCheckBox(self, -1, "First row is header") + previewSettingsBox = wx.BoxSizer(wx.HORIZONTAL) + self.hasHeaderRow = wx.CheckBox(self, -1, "First row is header") wx.EVT_CHECKBOX(self, self.hasHeaderRow.GetId(), self.BuildPreview) - if wx.wxPlatform in ('__WX.WXGTK__', '__WX.WXMSW__'): - # wx.wxSpinCtrl causes seg fault under GTK when is hit in text - use wx.wxSpinButton instead - self.previewRowsText = wx.wxTextCtrl(self, -1, str(self.displayRows), - size = (30, -1), style = wx.wxTE_PROCESS_ENTER) + if wx.Platform in ('__WX.WXGTK__', '__WX.WXMSW__'): + # wx.SpinCtrl causes seg fault under GTK when is hit in text - use wx.SpinButton instead + self.previewRowsText = wx.TextCtrl(self, -1, str(self.displayRows), + size = (30, -1), style = wx.TE_PROCESS_ENTER) h = self.previewRowsText.GetSize().height - self.previewRows = wx.wxSpinButton(self, -1, size = (-1, h), style = wx.wxSP_VERTICAL) + self.previewRows = wx.SpinButton(self, -1, size = (-1, h), style = wx.SP_VERTICAL) self.previewRows.SetRange(self.displayRows, 100) self.previewRows.SetValue(self.displayRows) wx.EVT_SPIN(self, self.previewRows.GetId(), self.OnSpinPreviewRows) wx.EVT_TEXT_ENTER(self, self.previewRowsText.GetId(), self.OnTextPreviewRows) else: - self.previewRows = wx.wxSpinCtrl(self, -1, str(self.displayRows), + self.previewRows = wx.SpinCtrl(self, -1, str(self.displayRows), min = self.displayRows, max = 100, size = (50, -1)) wx.EVT_SPINCTRL(self, self.previewRows.GetId(), self.BuildPreview) previewSettingsBox.AddMany([ - (self.hasHeaderRow, 1, wx.wxALL | wx.wxEXPAND, 5), - (wx.wxStaticText(self, -1, "Preview"), 0, wx.wxWEST | wx.wxALIGN_RIGHT | wx.wxALIGN_CENTER_VERTICAL, 10), + (self.hasHeaderRow, 1, wx.ALL | wx.EXPAND, 5), + (wx.StaticText(self, -1, "Preview"), 0, wx.WEST | wx.ALIGN_RIGHT | wx.ALIGN_CENTER_VERTICAL, 10), ]) - if wx.wxPlatform in ('__WX.WXGTK__', '__WX.WXMSW__'): - previewSettingsBox.Add(self.previewRowsText, 0, wx.wxALIGN_CENTER | wx.wxALL, 3) + if wx.Platform in ('__WX.WXGTK__', '__WX.WXMSW__'): + previewSettingsBox.Add(self.previewRowsText, 0, wx.ALIGN_CENTER | wx.ALL, 3) previewSettingsBox.AddMany([ - (self.previewRows, 0, wx.wxALIGN_CENTER | wx.wxALL, 3), - (wx.wxStaticText(self, -1, "rows"), 0, wx.wxALIGN_RIGHT | wx.wxALIGN_CENTER_VERTICAL), + (self.previewRows, 0, wx.ALIGN_CENTER | wx.ALL, 3), + (wx.StaticText(self, -1, "rows"), 0, wx.ALIGN_RIGHT | wx.ALIGN_CENTER_VERTICAL), ]) # ------------- @@ -804,28 +813,28 @@ hasHeaders = 0 cols = 1 - previewStaticBox = wx.wxStaticBox(self, -1, "Data Preview") - previewStaticSizer = wx.wxStaticBoxSizer(previewStaticBox, wx.wxVERTICAL) - self.preview = grid.wxGrid(self, -1) + previewStaticBox = wx.StaticBox(self, -1, "Data Preview") + previewStaticSizer = wx.StaticBoxSizer(previewStaticBox, wx.VERTICAL) + self.preview = gridlib.Grid(self, -1) self.preview.CreateGrid(self.displayRows, cols) - self.preview.SetDefaultRowSize(self.preview.GetCharHeight() + 4, wx.true) - self.preview.EnableEditing(wx.false) + self.preview.SetDefaultRowSize(self.preview.GetCharHeight() + 4, True) + self.preview.EnableEditing(False) self.preview.SetColLabelSize(0) self.preview.SetRowLabelSize(0) self.preview.SetMargins(1, 0) - self.initialized = wx.true + self.initialized = True self.BuildPreview() rowheight = self.preview.GetRowSize(0) + 2 self.preview.SetSize((-1, rowheight * self.displayRows)) - previewStaticSizer.Add(self.preview, 0, wx.wxALL | wx.wxEXPAND, 5) + previewStaticSizer.Add(self.preview, 0, wx.ALL | wx.EXPAND, 5) # ------------- mainSizer.AddMany([ - (message1, 0, wx.wxALL, 5), - (delimiterBox, 0, wx.wxALL, 5), - (previewSettingsBox, 0, wx.wxALL, 5), - (previewStaticSizer, 0, wx.wxALL | wx.wxEXPAND, 5), + (message1, 0, wx.ALL, 5), + (delimiterBox, 0, wx.ALL, 5), + (previewSettingsBox, 0, wx.ALL, 5), + (previewStaticSizer, 0, wx.ALL | wx.EXPAND, 5), ]) self.Layout() @@ -855,9 +864,9 @@ if not self.initialized: return # got triggered before initialization was completed - if wx.wxPlatform != '__WX.WXGTK__': - wx.wxBeginBusyCursor() # causes a spurious spin event under GTK - wx.wxYield() # allow controls to update first, in case of slow preview + if wx.Platform != '__WX.WXGTK__': + wx.BeginBusyCursor() # causes a spurious spin event under GTK + wx.Yield() # allow controls to update first, in case of slow preview self.preview.BeginBatch() self.preview.DeleteCols(0, self.preview.GetNumberCols()) self.preview.DeleteRows(0, self.preview.GetNumberRows()) @@ -892,7 +901,7 @@ for col in range(cols): try: self.preview.SetColLabelValue(col, str(previewData[0][col])) except: self.preview.SetColLabelValue(col, "") - # self.preview.AutoSizeColumns(wx.true) # size columns to headers + # self.preview.AutoSizeColumns(True) # size columns to headers else: self.preview.SetColLabelSize(0) @@ -902,13 +911,13 @@ except: pass # if not hasHeaders: - self.preview.AutoSizeColumns(wx.true) # size columns to data + self.preview.AutoSizeColumns(True) # size columns to data rowheight = self.preview.GetRowSize(0) self.preview.SetRowSize(0, rowheight) self.preview.EndBatch() - if wx.wxPlatform != '__WX.WXGTK__': - wx.wxEndBusyCursor() + if wx.Platform != '__WX.WXGTK__': + wx.EndBusyCursor() self.delimiters = delimiter self.textQualifier = textQualifier @@ -928,17 +937,17 @@ return self.hasHeaders # ------------------------------------------------------------------------------ - class ImportWizardDialog(wx.wxDialog): + class ImportWizardDialog(wx.Dialog): """ CLASS(SUPERCLASS): - ImportWizardDialog(wx.wxDialog) + ImportWizardDialog(wx.Dialog) DESCRIPTION: A dialog allowing the user to preview and change the options for importing a file. PROTOTYPE: ImportWizardDialog(parent, id, title, file, - pos = wx.wxDefaultPosition, size = wx.wxDefaultSize, - style = wx.wxDEFAULT_DIALOG_STYLE, name = 'ImportWizardDialog') + pos = wx.DefaultPosition, size = wx.DefaultSize, + style = wx.DEFAULT_DIALOG_STYLE, name = 'ImportWizardDialog') ARGUMENTS: - parent: the parent window - id: the id of this window @@ -955,22 +964,22 @@ """ def __init__(self, parent, id, title, file, - pos = wx.wxDefaultPosition, size = wx.wxDefaultSize, - style = wx.wxDEFAULT_DIALOG_STYLE, name = "ImportWizardDialog"): - wx.wxDialog.__init__(self, parent, id, title, pos, size, style, name) - self.SetAutoLayout(wx.true) + pos = wx.DefaultPosition, size = wx.DefaultSize, + style = wx.DEFAULT_DIALOG_STYLE, name = "ImportWizardDialog"): + wx.Dialog.__init__(self, parent, id, title, pos, size, style, name) + self.SetAutoLayout(True) self.file = file f = open(file, 'r') self.data = f.read() f.close() - sizer = wx.wxBoxSizer(wx.wxVERTICAL) + sizer = wx.BoxSizer(wx.VERTICAL) self.delimPanel = ImportWizardPanel_Delimiters(self, -1, file, self.data, self.ValidState) buttonBox = self.ButtonBox() sizer.AddMany([ - (self.delimPanel, 0, wx.wxALL, 5), - (buttonBox, 0, wx.wxSOUTH | wx.wxALIGN_CENTER_HORIZONTAL | wx.wxALIGN_TOP, 0), + (self.delimPanel, 0, wx.ALL, 5), + (buttonBox, 0, wx.SOUTH | wx.ALIGN_CENTER_HORIZONTAL | wx.ALIGN_TOP, 0), ]) self.SetSizer(sizer) @@ -980,15 +989,15 @@ self.Centre() def ButtonBox(self): - panel = wx.wxPanel(self, -1) - panel.SetAutoLayout(wx.true) - sizer = wx.wxBoxSizer(wx.wxHORIZONTAL) + panel = wx.Panel(self, -1) + panel.SetAutoLayout(True) + sizer = wx.BoxSizer(wx.HORIZONTAL) panel.SetSizer(sizer) - self.ok = wx.wxButton(panel, wx.wxID_OK, "Ok") - cancel = wx.wxButton(panel, wx.wxID_CANCEL, "Cancel") + self.ok = wx.Button(panel, wx.ID_OK, "Ok") + cancel = wx.Button(panel, wx.ID_CANCEL, "Cancel") sizer.AddMany([ - (self.ok, 0, wx.wxALIGN_TOP | wx.wxEAST | wx.wxSOUTH, 10), - (cancel, 0, wx.wxALIGN_TOP | wx.wxWEST | wx.wxSOUTH, 10), + (self.ok, 0, wx.ALIGN_TOP | wx.EAST | wx.SOUTH, 10), + (cancel, 0, wx.ALIGN_TOP | wx.WEST | wx.SOUTH, 10), ]) panel.Layout() panel.Fit() @@ -1002,11 +1011,11 @@ def ImportData(self, errorHandler = skipRow): delimiters, qualifier, hasHeaders = self.GetImportInfo() self.data = organizeIntoLines(self.data, textQualifier = qualifier) - dlg = wx.wxProgressDialog("Import DSV File", + dlg = wx.ProgressDialog("Import DSV File", self.file, 100, self, - wx.wxPD_CAN_ABORT | wx.wxPD_APP_MODAL | wx.wxPD_AUTO_HIDE) + wx.PD_CAN_ABORT | wx.PD_APP_MODAL | wx.PD_AUTO_HIDE) self.data = importDSV(self.data, delimiter = delimiters, textQualifier = qualifier, @@ -1034,12 +1043,12 @@ def demo(): - class SampleApp(wx.wxApp): + class SampleApp(wx.App): def OnInit(self): - dlg = wx.wxFileDialog(None, "Choose a file", ".", "", + dlg = wx.FileDialog(None, "Choose a file", ".", "", "CSV files (*.csv)|*.csv|Text files (*.txt)|*.txt|All files (*.*)|*.*", - wx.wxOPEN) - if dlg.ShowModal() == wx.wxID_OK: + wx.OPEN) + if dlg.ShowModal() == wx.ID_OK: path = dlg.GetPath() dlg.Destroy() @@ -1049,7 +1058,7 @@ file.write("LINE %d: %s\n" % (linenumber, oldrow)) dlg = ImportWizardDialog(None, -1, 'CSV Import Wizard (v.%s)' % __version__, path) - if dlg.ShowModal() == wx.wxID_OK: + if dlg.ShowModal() == wx.ID_OK: results = dlg.ImportData(errorHandler = logErrors) dlg.Destroy() errorLog.close() @@ -1074,7 +1083,7 @@ else: dlg.Destroy() - return wx.true + return True app = SampleApp() app.MainLoop() debian/patches/01-leave-env-alone.patch0000644000000000000000000000160111650647656015050 0ustar Index: python-dsv-1.4.1/DSV/DSV.py =================================================================== --- python-dsv-1.4.1.orig/DSV/DSV.py 2003-08-09 06:37:32.000000000 -0400 +++ python-dsv-1.4.1/DSV/DSV.py 2010-01-26 20:38:02.000000000 -0500 @@ -127,11 +127,11 @@ import copy import exceptions import string -# RedHat 8.0 (or rather GTK2?) sets LANG = en_us.UTF-8 and apparently some -# older apps (including wxGTK) can't handle this. The fix is to set LANG=C -# before running the app. Thanks to Ahmad Baitalmal for supplying this info. -import os -os.putenv('LANG', 'C') +## RedHat 8.0 (or rather GTK2?) sets LANG = en_us.UTF-8 and apparently some +## older apps (including wxGTK) can't handle this. The fix is to set LANG=C +## before running the app. Thanks to Ahmad Baitalmal for supplying this info. +# import os +# os.putenv('LANG', 'C') try: from wxPython import wx, grid debian/patches/03-avoid-unicoditis.patch0000644000000000000000000000156011650647656015352 0ustar Index: python-dsv-1.4.1/DSV/DSV.py =================================================================== --- python-dsv-1.4.1.orig/DSV/DSV.py 2010-01-26 20:35:23.000000000 -0500 +++ python-dsv-1.4.1/DSV/DSV.py 2010-01-26 20:35:23.000000000 -0500 @@ -486,8 +486,14 @@ list of lists of data """ if type(input) != type([]): - raise InvalidData, "expected list of lists of strings" - if type(delimiter) != type('') or not delimiter: + raise InvalidData, "expected list of lists of strings" + # Try to convert Unicode delimiters back to ASCII (wxPython can be + # overenthusiastic), but ultimately support either. + try: + delimiter = delimiter.encode() + except: + pass + if (type(delimiter) != str and type(delimiter) != unicode) or not delimiter: raise InvalidDelimiter, `delimiter` ## if textQualifier: