Skip to content

Commit a386c44

Browse files
committed
[MNT] version up to 0.14.0
[MNT] add docstrings, cleanup whitespace and formatting, rm unused code [MNT] previously deprecated setDirtyTab removed [ENH] python3 compatibility for setup.py [BUG] ensure app tmp dir exists if manually removed while open [BUG] set file dialog starting directory to cwd on launch [BUG] Save As shouldn't append a dot with no extension [BUG] disable Open button in include panel when nothing selected
1 parent fecff2c commit a386c44

File tree

8 files changed

+779
-783
lines changed

8 files changed

+779
-783
lines changed

setup.py

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,11 @@
2020

2121

2222
PACKAGE = "usdmanager"
23-
execfile("{}/version.py".format(PACKAGE))
23+
import sys
24+
if sys.version_info[0] < 3:
25+
execfile("{}/version.py".format(PACKAGE))
26+
else:
27+
exec(open("{}/version.py".format(PACKAGE)).read())
2428
VERSION = __version__
2529

2630

usdmanager/__init__.py

Lines changed: 701 additions & 766 deletions
Large diffs are not rendered by default.

usdmanager/file_dialog.py

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ class FileDialog(QFileDialog):
2525
"""
2626
def __init__(self, parent=None, caption="", directory="", filters=None, selectedFilter="", showHidden=False):
2727
""" Initialize the dialog.
28-
28+
2929
:Parameters:
3030
parent : `QtCore.QObject`
3131
Parent object
@@ -40,8 +40,7 @@ def __init__(self, parent=None, caption="", directory="", filters=None, selected
4040
showHidden : `bool`
4141
Show hidden files
4242
"""
43-
super(FileDialog, self).__init__(parent, caption, directory)
44-
self.setNameFilters(filters or FILE_FILTER)
43+
super(FileDialog, self).__init__(parent, caption, directory, ';;'.join(filters or FILE_FILTER))
4544
if selectedFilter:
4645
self.selectNameFilter(selectedFilter)
4746
if showHidden:

usdmanager/include_panel.py

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -64,14 +64,15 @@ def __init__(self, path="", filter="", selectedFilter="", parent=None):
6464
self.fileTypeLabelFiller = QtWidgets.QLabel(self)
6565
self.fileTypeComboFiller = QtWidgets.QLabel(self)
6666
self.buttonOpen = QtWidgets.QPushButton(QIcon.fromTheme("document-open"), "Open", self)
67+
self.buttonOpen.setEnabled(False)
6768

6869
# Item settings.
69-
self.buttonHome.setIcon(self.style().standardIcon(QtWidgets.QStyle.SP_DirHomeIcon))
70+
self.buttonHome.setIcon(QIcon.fromTheme("folder_home", self.style().standardIcon(QtWidgets.QStyle.SP_DirHomeIcon)))
7071
self.buttonHome.setToolTip("User's home directory")
7172
self.buttonHome.setAutoRaise(True)
7273
self.buttonOriginal.setToolTip("Original directory")
7374
self.lookInCombo.setMinimumSize(50,0)
74-
self.toParentButton.setIcon(self.style().standardIcon(QtWidgets.QStyle.SP_FileDialogToParent))
75+
self.toParentButton.setIcon(QIcon.fromTheme("up", self.style().standardIcon(QtWidgets.QStyle.SP_FileDialogToParent)))
7576
self.toParentButton.setAutoRaise(True)
7677
self.toParentButton.setToolTip("Parent directory")
7778
self.listView.setDragEnabled(True)
@@ -387,3 +388,6 @@ def fileSelectionChanged(self, one, two):
387388
if indexes:
388389
idx = indexes[0]
389390
self.fileNameEdit.setText(str(idx.data()))
391+
self.buttonOpen.setEnabled(True)
392+
else:
393+
self.buttonOpen.setEnabled(False)

usdmanager/parsers/usd.py

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,10 @@
3535
logging.basicConfig()
3636

3737

38+
NT = os.name == "nt"
39+
NT_REGEX = re.compile(r'^[a-zA-Z]:[/\\]')
40+
41+
3842
class UsdAsciiParser(AbstractExtParser):
3943
""" USD ASCII files.
4044
@@ -137,10 +141,7 @@ def parseMatch(self, match, linkPath, nativeAbsPath, fileInfo):
137141
def pathForLink(path):
138142
"""Need three slashes before drive letter on Windows; this prepends one, so
139143
with the usual two URL slashes we'll get the proper format."""
140-
if os.name == 'nt' and re.match(r'^[a-zA-Z]:[/\\]', fullPath):
141-
return '/' + path
142-
else:
143-
return path
144+
return '/' + path if NT and NT_REGEX.match(fullPath) else path
144145

145146
# Make the HTML link.
146147
if self.exists[fullPath]:

usdmanager/preferences_dialog.py

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,6 @@
1313
# See the License for the specific language governing permissions and
1414
# limitations under the License.
1515
#
16-
import os
1716

1817
from Qt.QtCore import Slot, QRegExp
1918
from Qt.QtGui import QIcon, QRegExpValidator

usdmanager/utils.py

Lines changed: 59 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -83,15 +83,23 @@ def expandPath(path, parentPath=None, sdf_format_args=None, extractedDir=None):
8383
resolver.ConfigureResolverForAsset(path)
8484
context = resolver.CreateDefaultContextForAsset(path)
8585
with Ar.ResolverContextBinder(context):
86-
anchoredPath = path if parentPath is None else resolver.CreateIdentifier(path)
86+
if parentPath is None:
87+
anchoredPath = path
88+
elif hasattr(resolver, "CreateIdentifier"):
89+
anchoredPath = resolver.CreateIdentifier(path)
90+
else:
91+
anchoredPath = resolver.AnchorRelativePath(parentPath, path)
8792
resolved = resolver.Resolve(anchoredPath)
8893

8994
# https://graphics.pixar.com/usd/docs/Usdz-File-Format-Specification.html#UsdzFileFormatSpecification-USDConstraints-AssetResolution
9095
# If resolving relative to the layer fails in a usdz archive,
9196
# try to resolve based on the archive's default layer path.
9297
if extractedDir and not os.path.exists(resolved):
9398
default_layer = os.path.join(extractedDir, 'defaultLayer.usd')
94-
anchoredPath = resolver.CreateIdentifier(default_layer, path)
99+
if hasattr(resolver, "CreateIdentifier"):
100+
anchoredPath = resolver.CreateIdentifier(default_layer, path)
101+
else:
102+
anchoredPath = resolver.AnchorRelativePath(default_layer, path)
95103
resolved = resolver.Resolve(anchoredPath)
96104
except Exception as e:
97105
logger.warn("Failed to resolve Asset path %s with parent %s: %s", path, parentPath, e)
@@ -216,12 +224,58 @@ def generateTemporaryUsdFile(usdFileName, tmpDir=None):
216224
:Raises OSError:
217225
If usdcat fails
218226
"""
219-
fd, tmpFileName = tempfile.mkstemp(suffix="." + USD_AMBIGUOUS_EXTS[0], dir=tmpDir)
227+
fd, tmpFileName = mkstemp(suffix="." + USD_AMBIGUOUS_EXTS[0], dir=tmpDir)
220228
os.close(fd)
221229
usdcat(QtCore.QDir.toNativeSeparators(usdFileName), tmpFileName, format="usda")
222230
return tmpFileName
223231

224232

233+
def mkdtemp(dir, **kwargs):
234+
""" Make a temp dir, safely ensuring the parent temp dir still exists.
235+
236+
:Parameters:
237+
dir : `str`
238+
Parent directory
239+
:Returns:
240+
New temp directory
241+
:Rtype:
242+
`str`
243+
"""
244+
try:
245+
destDir = tempfile.mkdtemp(dir=dir, **kwargs)
246+
except OSError:
247+
if dir is not None and not os.path.exists(dir):
248+
# Someone may have manually removed the temp dir while the app was open.
249+
os.mkdir(dir)
250+
return mkdtemp(dir, **kwargs)
251+
else:
252+
raise
253+
return destDir
254+
255+
256+
def mkstemp(dir, **kwargs):
257+
""" Make a temp file, safely ensuring the parent temp dir still exists.
258+
259+
:Parameters:
260+
dir : `str`
261+
Parent directory
262+
:Returns:
263+
New temp file
264+
:Rtype:
265+
`str`
266+
"""
267+
try:
268+
fd, tmpFileName = tempfile.mkstemp(dir=dir, **kwargs)
269+
except OSError:
270+
if dir is not None and not os.path.exists(dir):
271+
# Someone may have manually removed the temp dir while the app was open.
272+
os.mkdir(dir)
273+
return mkstemp(dir, **kwargs)
274+
else:
275+
raise
276+
return fd, tmpFileName
277+
278+
225279
def usdcat(inputFile, outputFile, format=None):
226280
""" Generate a temporary ASCII USD file that the user can edit.
227281
@@ -304,7 +358,7 @@ def unzip(path, tmpDir=None):
304358
"""
305359
from zipfile import ZipFile
306360

307-
destDir = tempfile.mkdtemp(prefix="usdmanager_usdz_", dir=tmpDir)
361+
destDir = mkdtemp(prefix="usdmanager_usdz_", dir=tmpDir)
308362
logger.debug("Extracting %s to %s", path, destDir)
309363
with ZipFile(QtCore.QDir.toNativeSeparators(path), 'r') as zipRef:
310364
zipRef.extractall(destDir)
@@ -535,7 +589,7 @@ def loadUiWidget(path, parent=None, source_path=None):
535589
if parent:
536590
#ui.setParent(parent)
537591
for member in dir(ui):
538-
if not member.startswith('__') and member is not 'staticMetaObject':
592+
if not member.startswith('__') and member != 'staticMetaObject':
539593
setattr(parent, member, getattr(ui, member))
540594
return ui
541595

usdmanager/version.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,4 +13,4 @@
1313
# See the License for the specific language governing permissions and
1414
# limitations under the License.
1515
#
16-
__version__ = '0.13.0'
16+
__version__ = '0.14.0'

0 commit comments

Comments
 (0)