]> git.saurik.com Git - wxWidgets.git/blobdiff - wxPython/samples/ide/activegrid/tool/UICommon.py
Added the ActiveGrid IDE as a sample application
[wxWidgets.git] / wxPython / samples / ide / activegrid / tool / UICommon.py
diff --git a/wxPython/samples/ide/activegrid/tool/UICommon.py b/wxPython/samples/ide/activegrid/tool/UICommon.py
new file mode 100644 (file)
index 0000000..0f83b65
--- /dev/null
@@ -0,0 +1,115 @@
+#----------------------------------------------------------------------------
+# Name:         UICommon.py
+# Purpose:      Shared UI stuff
+#
+# Author:       Matt Fryer
+#
+# Created:      3/10/05
+# CVS-ID:       $Id$
+# Copyright:    (c) 2005 ActiveGrid, Inc.
+# License:      wxWindows License
+#----------------------------------------------------------------------------
+
+import os
+import os.path
+import wx
+import ProjectEditor
+_ = wx.GetTranslation
+
+def CreateDirectoryControl( parent, fileLabel, dirLabel, fileExtension, startingName="", startingDirectory=""):
+
+    nameControl = wx.TextCtrl(parent, -1, startingName, size=(-1,-1))
+    nameLabelText = wx.StaticText(parent, -1, fileLabel)
+    dirLabelText = wx.StaticText(parent, -1, dirLabel)
+    dirControl = wx.TextCtrl(parent, -1, startingDirectory, size=(-1,-1))
+    dirControl.SetToolTipString(startingDirectory)
+    button = wx.Button(parent, -1, _("Browse..."), size=(60,-1))
+    
+    def OnFindDirClick(event): 
+        name = ""  
+        nameCtrlValue = nameControl.GetValue()
+        if nameCtrlValue:
+            root, ext = os.path.splitext( nameCtrlValue )
+            if ext == '.' + fileExtension:
+                name = nameCtrlValue
+            else:
+                name = _("%s.%s") % (nameCtrlValue, fileExtension)
+        path = wx.FileSelector(_("Choose a filename and directory"),
+                       "",
+                       "%s" % name,
+                       wildcard=_("*.%s") % fileExtension ,
+                       flags=wx.SAVE,
+                       parent=parent)
+
+        if path:
+            dir, filename = os.path.split(path)
+            dirControl.SetValue(dir)
+            dirControl.SetToolTipString(dir)
+            nameControl.SetValue(filename)
+
+    parent.Bind(wx.EVT_BUTTON, OnFindDirClick, button)
+    
+    def Validate(allowOverwriteOnPrompt=False):
+        if nameControl.GetValue() == "":
+            wx.MessageBox(_("Please provide a filename."), _("Provide a Filename"))            
+            return False
+        if nameControl.GetValue().find(' ') != -1:
+            wx.MessageBox(_("Please provide a filename that does not contains spaces."), _("Spaces in Filename"))            
+            return False
+        filePath = os.path.join(dirControl.GetValue(), MakeNameEndInExtension(nameControl.GetValue(), "." + fileExtension))
+        if os.path.exists(filePath):
+            if allowOverwriteOnPrompt:
+                res = wx.MessageBox(_("That file already exists. Would you like to overwrite it."), "File Exists", style=wx.YES_NO|wx.NO_DEFAULT)
+                return (res == wx.YES)  
+            else:                
+                wx.MessageBox(_("That file already exists. Please choose a different name."), "File Exists")
+                return False                  
+        return True    
+    HALF_SPACE = 5
+    flexGridSizer = wx.FlexGridSizer(cols = 3, vgap = HALF_SPACE, hgap = HALF_SPACE)
+    flexGridSizer.AddGrowableCol(1,1)
+    flexGridSizer.Add(nameLabelText, 0, wx.ALIGN_CENTER_VERTICAL|wx.ALIGN_LEFT|wx.TOP|wx.RIGHT, HALF_SPACE)
+    flexGridSizer.Add(nameControl, 2, flag=wx.ALIGN_CENTER_VERTICAL|wx.EXPAND)
+    flexGridSizer.Add(button, flag=wx.ALIGN_RIGHT|wx.LEFT, border=HALF_SPACE)
+        
+    flexGridSizer.Add(dirLabelText, flag=wx.ALIGN_CENTER_VERTICAL|wx.ALIGN_LEFT|wx.TOP|wx.RIGHT, border=HALF_SPACE)
+    flexGridSizer.Add(dirControl, 2, flag=wx.ALIGN_CENTER_VERTICAL|wx.EXPAND, border=HALF_SPACE)
+    flexGridSizer.Add(wx.StaticText(parent, -1, ""), 0)
+    return nameControl, dirControl, flexGridSizer, Validate
+
+def AddFilesToCurrentProject(paths, save=False):
+    projectService = wx.GetApp().GetService(ProjectEditor.ProjectService)
+    if projectService:
+        projectDocument = projectService.GetCurrentProject()
+        if projectDocument:
+            files = projectDocument.GetFiles()
+            for path in paths:
+                if path in files:
+                    paths.remove(path)
+            if paths:
+                projectDocument.GetCommandProcessor().Submit(ProjectEditor.ProjectAddFilesCommand(projectDocument, paths))
+                if save:
+                    projectDocument.OnSaveDocument(projectDocument.GetFilename())
+
+def MakeNameEndInExtension(name, extension):
+    if not name:
+        return name
+    root, ext = os.path.splitext(name)
+    if ext == extension:
+        return name
+    else:
+        return name + extension
+# Lame
+def PluralName(name):
+    if not name:
+        return name
+    if name.endswith('us'):
+        return name[0:-2] + 'ii'
+    elif name.endswith('s'):
+        return name
+    elif name.endswith('y'):
+        return name[0:-1] + 'ies'
+    else:
+        return name + 's'
+