def find_file(files, ext, prefix=None, dataset=None, image=None): """ Given a list of file names, return the file with extension "_" + ext, None if not found. The prefix, the dataset index and the image index can be specified .. warning:: There are some border cases that will confuse the algorithm since the order of dataset and image is not tested. Solving this problem requires the knowledge of ndtset and nimages This code, however should work in 99.9% of the cases. """ separator = "_" for filename in list_strings(files): # Remove Netcdf extension (if any) f = filename[:-3] if filename.endswith(".nc") else filename if separator not in f: continue tokens = f.split(separator) if tokens[-1] == ext: found = True if prefix is not None: found = found and filename.startswith(prefix) if dataset is not None: found = found and "DS" + str(dataset) in tokens if image is not None: found = found and "IMG" + str(image) in tokens if found: return filename else: return None
def __init__(self, parent, filepaths, **kwargs): """ Args: parent: Parent window. filepaths: String or List of strings with filepaths. """ super(FileCheckBoxPanel, self).__init__(parent, -1, **kwargs) self.all_filepaths = list_strings(filepaths) self.BuildUi()
def __init__(self, parent, filenames, num_dirs=2, **kwargs): """ Args: parent: Parent Widget. filenames: List of filenames. num_dirs: Maximum number of directories that will be shown in the tab. """ if "title" not in kwargs: kwargs["title"] = "Abinit Events" super(AbinitEventsNotebookFrame, self).__init__(parent, **kwargs) filenames = list_strings(filenames) # Remove inexistent files. filenames = filter(os.path.exists, filenames) if not filenames: return # Here we create a panel and a notebook on the panel panel = awx.Panel(self) import wx.lib.agw.flatnotebook as fnb nb = fnb.FlatNotebook(panel) for fname in filenames: page = AbinitEventsPanel(nb, fname) page_name = fname if num_dirs > 0: tokens = page_name.split(os.path.sep) page_name = os.path.join(*tokens[-num_dirs:]) # Add only files for which we have events. #if page.has_events: # Add the pages to the notebook with the name to show on the tab nb.AddPage(page, text=page_name) # Finally, put the notebook in a sizer for the panel to manage the layout sizer = wx.BoxSizer() sizer.Add(nb, 1, wx.EXPAND) panel.SetSizerAndFit(sizer)
def __init__(self, parent, filepaths=(), **kwargs): """ Args: parent: parent window. filepaths: String or list of strings with the path of the netcdf files to open Empty tuple if no file should be opened during the initialization of the frame. """ super(MultiViewerFrame, self).__init__(parent, -1, title=self.codename, **kwargs) # This combination of options for config seems to work on my Mac. self.config = wx.FileConfig(appName=self.codename, localFilename=self.codename + ".ini", style=wx.CONFIG_USE_LOCAL_FILE) # Build menu, toolbar and status bar. self.makeMenu() self.makeToolBar() self.statusbar = self.CreateStatusBar() # Open netcdf files. filepaths, exceptions = list_strings(filepaths), [] filepaths = map(os.path.abspath, filepaths) # Create the notebook (each file will have its own tab). panel = wx.Panel(self, -1) try: style = fnb.FNB_NO_X_BUTTON | fnb.FNB_NAV_BUTTONS_WHEN_NEEDED except AttributeError: style = fnb.FNB_NO_X_BUTTON self.notebook = fnb.FlatNotebook(panel, -1, style=style) for path in filepaths: self.read_file(path) sizer = wx.BoxSizer(wx.VERTICAL) sizer.Add(self.notebook, 1, wx.EXPAND, 5) panel.SetSizerAndFit(sizer)
def add_files(self, filepaths): """Add a list of filenames to the plotter""" for filepath in list_strings(filepaths): self.add_file(filepath)