def askOpenFileWin32(title, schematics, initialDir): try: # if schematics: f = ('Levels and Schematics\0*.mclevel;*.dat;*.mine;*.mine.gz;*.schematic;*.zip;*.schematic.gz;*.inv\0' + '*.*\0*.*\0\0') # else: # f = ('Levels (*.mclevel, *.dat;*.mine;*.mine.gz;)\0' + # '*.mclevel;*.dat;*.mine;*.mine.gz;*.zip;*.lvl\0' + # '*.*\0*.*\0\0') (filename, customfilter, flags) = win32gui.GetOpenFileNameW( hwndOwner=display.get_wm_info()['window'], InitialDir=initialDir, Flags=(win32con.OFN_EXPLORER | win32con.OFN_NOCHANGEDIR | win32con.OFN_FILEMUSTEXIST | win32con.OFN_LONGNAMES # |win32con.OFN_EXTENSIONDIFFERENT ), Title=title, Filter=f, ) except Exception: #print "Open File: ", e pass else: return filename
def askOpenFileWin32(title, schematics, initialDir, suffixes=None): try: # if schematics: if not suffixes: f = ( 'Levels and Schematics\0*.mclevel;*.dat;*.mine;*.mine.gz;*.schematic;*.zip;*.schematic.gz;*.inv\0' + '*.*\0*.*\0\0') else: f = "All\0" for suffix in suffixes: f += "*." + suffix + ";" f += "\0*.*\0\0" # else: # f = ('Levels (*.mclevel, *.dat;*.mine;*.mine.gz;)\0' + # '*.mclevel;*.dat;*.mine;*.mine.gz;*.zip;*.lvl\0' + # '*.*\0*.*\0\0') (filename, customfilter, flags) = win32gui.GetOpenFileNameW( hwndOwner=display.get_wm_info()['window'], InitialDir=initialDir, Flags=( win32con.OFN_EXPLORER | win32con.OFN_NOCHANGEDIR | win32con.OFN_FILEMUSTEXIST | win32con.OFN_LONGNAMES # |win32con.OFN_EXTENSIONDIFFERENT ), Title=title, Filter=f, ) except Exception: #print "Open File: ", e pass else: return filename
def askOpenFileWin32(title, schematics, initialDir, suffixes=None): try: if not suffixes: f = (_('Levels and Schematics') + '\0*.mclevel;*.dat;*.mine;*.mine.gz;*.schematic;*.zip;*.schematic.gz;*.inv;*.nbt\0' + '*.*\0*.*\0\0') else: f = "All\0" for suffix in suffixes: f += "*." + suffix + ";" f += "\0*.*\0\0" filename, customfilter, flags = win32gui.GetOpenFileNameW( hwndOwner=display.get_wm_info()['window'], InitialDir=initialDir, Flags=(win32con.OFN_EXPLORER | win32con.OFN_NOCHANGEDIR | win32con.OFN_FILEMUSTEXIST | win32con.OFN_LONGNAMES ), Title=title, Filter=f, ) except Exception: pass else: return filename
def askOpenFileWin32(title, schematics, initialDir, suffixes=None): try: if not suffixes: f = ( _('Levels and Schematics') + '\0*.mclevel;*.dat;*.mine;*.mine.gz;*.schematic;*.zip;*.schematic.gz;*.inv;*.nbt\0' + '*.*\0*.*\0\0') else: f = "All\0" for suffix in suffixes: f += "*." + suffix + ";" f += "\0*.*\0\0" filename, customfilter, flags = win32gui.GetOpenFileNameW( hwndOwner=display.get_wm_info()['window'], InitialDir=initialDir, Flags=(win32con.OFN_EXPLORER | win32con.OFN_NOCHANGEDIR | win32con.OFN_FILEMUSTEXIST | win32con.OFN_LONGNAMES), Title=title, Filter=f, ) except Exception: pass else: return filename
def __init__(self): """Set up the internal handlers.""" # Tests if DEBUG_WM: print "#" * 72 print "WWindowHandler.__init__" print "Desktop environment:", desktop_environment for item in dir(win32con): if 'maxim' in item.lower() or 'minim' in item.lower() or 'full' in item.lower(): print item, getattr(win32con, item) self.base_handler = display self.base_handler_id = display.get_wm_info()['window']
def __init__(self, pos=(0, 0), size=(0, 0), mode=None): """Set up the internal handlers.""" BaseWindowHandler.__init__(self, pos=pos, size=size, mode=mode) # Tests if DEBUG_WM: print "#" * 72 print "WWindowHandler.__init__" print "Desktop environment:", desktop_environment for item in dir(win32con): if 'maxim' in item.lower() or 'minim' in item.lower() or 'full' in item.lower(): print item, getattr(win32con, item) self.base_handler = display self.base_handler_id = display.get_wm_info()['window']
def askSaveFile(initialDir, title, defaultName, filetype, suffix): if sys.platform == "win32": try: (filename, customfilter, flags) = win32gui.GetSaveFileNameW( hwndOwner=display.get_wm_info()['window'], InitialDir=initialDir, Flags=win32con.OFN_EXPLORER | win32con.OFN_NOCHANGEDIR | win32con.OFN_OVERWRITEPROMPT, File=defaultName, DefExt=suffix, Title=title, Filter=filetype, ) except Exception, e: print "Error getting file name: ", e return try: filename = filename[:filename.index('\0')] filename = filename.decode(sys.getfilesystemencoding()) except: pass
def askSaveFile(initialDir, title, defaultName, filetype, suffix): if sys.platform == "win32": #!# try: (filename, customfilter, flags) = win32gui.GetSaveFileNameW( hwndOwner=display.get_wm_info()['window'], InitialDir=initialDir, Flags=win32con.OFN_EXPLORER | win32con.OFN_NOCHANGEDIR | win32con.OFN_OVERWRITEPROMPT, File=defaultName, DefExt=suffix, Title=title, Filter=filetype, ) except Exception, e: print "Error getting file name: ", e return try: filename = filename[:filename.index('\0')] filename = filename.decode(sys.getfilesystemencoding()) except: pass
def __init__(self, pos=(0, 0), size=(0, 0), mode=None): """Set up the internal handlers.""" BaseWindowHandler.__init__(self, pos=pos, size=size, mode=mode) self.mode = mode # setup the internal data, especially the Xlib object we need. # Tests if DEBUG_WM: print "#" * 72 print "XWindowHandler.__init__" print "Desktop environment:", desktop_environment dis = self.display = Xlib.display.Display() pygame_win = dis.create_resource_object( 'window', display.get_wm_info()['window']) pygame_win_id = pygame_win.id if DEBUG_WM: root = dis.screen().root active_wid_id = root.get_full_property( dis.intern_atom('_NET_ACTIVE_WINDOW'), Xlib.X.AnyPropertyType).value[0] active_win = dis.create_resource_object('window', active_wid_id) # Print pygame_win and active_win styff for (win, name) in ((pygame_win, 'pygame_win'), (active_win, 'active_win')): print "=" * 72 print "%s guts" % name, "(ID %s)" % win.id print "-" * 72 print "* State" prop = win.get_full_property(dis.intern_atom("_NET_WM_STATE"), 4) print " ", prop if prop: print dir(prop) print "* Geometry" print " ", win.get_geometry() parent = win.query_tree().parent p = '%s.parent' % name while parent.id != root.id: print "-" * 72 print p, "ID", parent.id print "* State" prop = parent.get_full_property( dis.intern_atom("_NET_WM_STATE"), 4) print " ", prop if prop: print dir(prop) print "* Geometry" print " ", parent.get_geometry() parent = parent.query_tree().parent p += ".parent" # Size handlers self.base_handler = pygame_win self.base_handler_id = pygame_win.id size = desktops['linux2'][self.desk_env].get('size_getter', None) if size: if DEBUG_WM: print "size_getter.split('.')", size.split('.') handler = pygame_win for item in size.split('.'): handler = getattr(handler.query_tree(), item) self.sizeGetter = handler else: self.sizeGetter = pygame_win size = desktops['linux2'][self.desk_env].get('size_setter', None) if size: if DEBUG_WM: print "size_setter.split('.')", size.split('.') handler = pygame_win for item in size.split('.'): handler = getattr(handler.query_tree(), item) self.sizeSetter = handler else: self.sizeSetter = pygame_win # Position handlers pos = desktops['linux2'][self.desk_env].get('position_getter', None) if pos: if DEBUG_WM: print "pos_getter.split('.')", pos.split('.') handler = pygame_win for item in pos.split('.'): handler = getattr(handler.query_tree(), item) self.positionGetter = handler else: self.positionGetter = pygame_win pos = desktops['linux2'][self.desk_env].get('position_setter', None) if pos: if DEBUG_WM: print "pos_setter.split('.')", pos.split('.') handler = pygame_win for item in pos.split('.'): handler = getattr(handler.query_tree(), item) self.positionSetter = handler else: self.positionSetter = pygame_win # Position gap. Used to correct wrong positions on some environments. self.position_gap = desktops['linux2'][self.desk_env].get( 'position_gap', (0, 0, False, False)) self.starting = True self.gx, self.gy = 0, 0 # State handler state = desktops['linux2'][self.desk_env].get('state', None) if state: if DEBUG_WM: print "state.split('.')", state.split('.') handler = pygame_win for item in state.split('.'): handler = getattr(handler.query_tree(), item) self.stateHandler = handler else: self.stateHandler = pygame_win if DEBUG_WM: print "self.positionGetter:", self.positionGetter, 'ID:', self.positionGetter.id print "self.positionSetter:", self.positionSetter, 'ID:', self.positionSetter.id print "self.sizeGetter:", self.sizeGetter, 'ID:', self.sizeGetter.id print "self.sizeSetter:", self.sizeSetter, 'ID:', self.sizeSetter.id print "self.stateHandler:", self.stateHandler, 'ID:', self.stateHandler.id print self.stateHandler.get_wm_state()
def __init__(self, pos=(0, 0), size=(0, 0), mode=None): """Set up the internal handlers.""" BaseWindowHandler.__init__(self, pos=pos, size=size, mode=mode) self.mode = mode # setup the internal data, especially the Xlib object we need. # Tests if DEBUG_WM: print "#" * 72 print "XWindowHandler.__init__" print "Desktop environment:", desktop_environment dis = self.display = Xlib.display.Display() pygame_win = dis.create_resource_object('window', display.get_wm_info()['window']) pygame_win_id = pygame_win.id if DEBUG_WM: root = dis.screen().root active_wid_id = root.get_full_property(dis.intern_atom('_NET_ACTIVE_WINDOW'), Xlib.X.AnyPropertyType).value[0] active_win = dis.create_resource_object('window', active_wid_id) # Print pygame_win and active_win styff for (win, name) in ((pygame_win, 'pygame_win'), (active_win, 'active_win')): print "=" * 72 print "%s guts"%name, "(ID %s)"%win.id print "-" * 72 print "* State" prop = win.get_full_property(dis.intern_atom("_NET_WM_STATE"), 4) print " ", prop if prop: print dir(prop) print "* Geometry" print " ", win.get_geometry() parent = win.query_tree().parent p = '%s.parent'%name while parent.id != root.id: print "-" * 72 print p, "ID", parent.id print "* State" prop = parent.get_full_property(dis.intern_atom("_NET_WM_STATE"), 4) print " ", prop if prop: print dir(prop) print "* Geometry" print " ", parent.get_geometry() parent = parent.query_tree().parent p += ".parent" # Size handlers self.base_handler = pygame_win self.base_handler_id = pygame_win.id size = desktops['linux2'][self.desk_env].get('size_getter', None) if size: if DEBUG_WM: print "size_getter.split('.')", size.split('.') handler = pygame_win for item in size.split('.'): handler = getattr(handler.query_tree(), item) self.sizeGetter = handler else: self.sizeGetter = pygame_win size = desktops['linux2'][self.desk_env].get('size_setter', None) if size: if DEBUG_WM: print "size_setter.split('.')", size.split('.') handler = pygame_win for item in size.split('.'): handler = getattr(handler.query_tree(), item) self.sizeSetter = handler else: self.sizeSetter = pygame_win # Position handlers pos = desktops['linux2'][self.desk_env].get('position_getter', None) if pos: if DEBUG_WM: print "pos_getter.split('.')", pos.split('.') handler = pygame_win for item in pos.split('.'): handler = getattr(handler.query_tree(), item) self.positionGetter = handler else: self.positionGetter = pygame_win pos = desktops['linux2'][self.desk_env].get('position_setter', None) if pos: if DEBUG_WM: print "pos_setter.split('.')", pos.split('.') handler = pygame_win for item in pos.split('.'): handler = getattr(handler.query_tree(), item) self.positionSetter = handler else: self.positionSetter = pygame_win # Position gap. Used to correct wrong positions on some environments. self.position_gap = desktops['linux2'][self.desk_env].get('position_gap', (0, 0, False, False)) self.starting = True self.gx, self.gy = 0, 0 # State handler state = desktops['linux2'][self.desk_env].get('state', None) if state: if DEBUG_WM: print "state.split('.')", state.split('.') handler = pygame_win for item in state.split('.'): handler = getattr(handler.query_tree(), item) self.stateHandler = handler else: self.stateHandler = pygame_win if DEBUG_WM: print "self.positionGetter:", self.positionGetter, 'ID:', self.positionGetter.id print "self.positionSetter:", self.positionSetter, 'ID:', self.positionSetter.id print "self.sizeGetter:", self.sizeGetter, 'ID:', self.sizeGetter.id print "self.sizeSetter:", self.sizeSetter, 'ID:', self.sizeSetter.id print "self.stateHandler:", self.stateHandler, 'ID:', self.stateHandler.id print self.stateHandler.get_wm_state()
def askSaveFile(initialDir, title, defaultName, filetype, suffix): if sys.platform == "win32": # !# try: if isinstance(suffix, (list, tuple)) and suffix: suffix = suffix[0] print repr(filetype) if not filetype.endswith("*.*\0*.*\0\0"): filetype = filetype[:-1] + "*.*\0*.*\0\0" print repr(filetype) (filename, customfilter, flags) = win32gui.GetSaveFileNameW( hwndOwner=display.get_wm_info()['window'], InitialDir=initialDir, Flags=win32con.OFN_EXPLORER | win32con.OFN_NOCHANGEDIR | win32con.OFN_OVERWRITEPROMPT, File=defaultName, DefExt=suffix, Title=title, Filter=filetype, ) except Exception as e: print "Error getting file name: ", e return try: filename = filename[:filename.index('\0')] filename = filename.decode(sys.getfilesystemencoding()) except: pass else: # Reformat the Windows stuff if "\0" in suffix and suffix.count("*.") > 1: _suffix = suffix.split("\0")[:-2] else: _suffix = suffix if "\0" in filetype and filetype.count("*.") > 0: _filetype = filetype.split("\0")[:-2] else: _filetype = filetype if hasGtk and not platChooser: # !# #Linux (When GTK 2.4 or newer is installed) fls = [] def run_dlg(): chooser = gtk.FileChooserDialog(title, None, gtk.FILE_CHOOSER_ACTION_SAVE, (gtk.STOCK_CANCEL, gtk.RESPONSE_CANCEL, gtk.STOCK_SAVE, gtk.RESPONSE_OK)) chooser.set_default_response(gtk.RESPONSE_OK) chooser.set_current_folder(initialDir) chooser.set_current_name(defaultName) # Add custom Filter if isinstance(_filetype, list) or isinstance(_filetype, tuple): for i, stuff in enumerate(_filetype): if i % 2 == 0: file_filter = gtk.FileFilter() file_filter.set_name(stuff) else: if ";" in stuff: for _suff in stuff.split(";"): if _suff: file_filter.add_pattern(_suff) else: file_filter.add_pattern(stuff) chooser.add_filter(file_filter) if i % 2 == 0: if ";" in stuff: for _suff in stuff.split(";"): if _suff: file_filter.add_pattern(_suff) else: file_filter.add_pattern(stuff) chooser.add_filter(file_filter) else: file_filter = gtk.FileFilter() file_filter.set_name(filetype[:filetype.index("\0")]) if "\0" in suffix and suffix.count("*.") > 1: __suffix = suffix.split("\0")[:-2] else: __suffix = suffix if isinstance(__suffix, list) or isinstance(__suffix, tuple): for suff in __suffix: file_filter.add_pattern("*." + suff) else: file_filter.add_pattern("*." + __suffix) chooser.add_filter(file_filter) # Add "All files" Filter file_filter = gtk.FileFilter() file_filter.set_name("All files") file_filter.add_pattern("*") chooser.add_filter(file_filter) response = chooser.run() if response == gtk.RESPONSE_OK: fls.append(chooser.get_filename()) else: fls.append(None) chooser.destroy() gtk.main_quit() gtk.idle_add(run_dlg) gtk.main() filename = fls[0] else: # Fallback log.debug("Calling internal file chooser.") log.debug("'initialDir' is %s (%s)" % (repr(initialDir), type(initialDir))) log.debug("'defaultName' is %s (%s)" % (repr(defaultName), type(defaultName))) try: iDir = initialDir.encode(enc) except Exception as e: iDir = initialDir log.debug("Could not encode 'initialDir' %s" % repr(initialDir)) log.debug("Encode function returned: %s" % e) try: dName = defaultName.encode(enc) except Exception as e: dName = defaultName log.debug("Could not encode 'defaultName' %s" % repr(defaultName)) log.debug("Encode function returned: %s" % e) if isinstance(_suffix, list) or isinstance(_suffix, tuple): sffxs = [a[1:] for a in _suffix[1::2]] sffx = sffxs.pop(0) sffxs.append('.*') else: sffx = _suffix sffxs = [] for i, stuff in enumerate(_filetype): if i % 2 == 0: file_filter = stuff else: file_filter += " (%s)"%stuff sffxs.append(file_filter) if i % 2 == 0: file_filter += " (%s)"%stuff sffxs.append(file_filter) if "All files (*.*)" not in sffxs and "*.* (*.*)" not in sffxs: sffxs.append("All files (*.*)") filename = request_new_filename(prompt=title, suffix=sffx, extra_suffixes=sffxs, directory=iDir, filename=dName, pathname=None) return filename
def askSaveFile(initialDir, title, defaultName, filetype, suffix): if sys.platform == "win32": # !# try: if isinstance(suffix, (list, tuple)) and suffix: suffix = suffix[0] print repr(filetype) if not filetype.endswith("*.*\0*.*\0\0"): filetype = filetype[:-1] + "*.*\0*.*\0\0" print repr(filetype) (filename, customfilter, flags) = win32gui.GetSaveFileNameW( hwndOwner=display.get_wm_info()['window'], InitialDir=initialDir, Flags=win32con.OFN_EXPLORER | win32con.OFN_NOCHANGEDIR | win32con.OFN_OVERWRITEPROMPT, File=defaultName, DefExt=suffix, Title=title, Filter=filetype, ) except Exception as e: print "Error getting file name: ", e return try: filename = filename[:filename.index('\0')] filename = filename.decode(sys.getfilesystemencoding()) except: pass else: # Reformat the Windows stuff if "\0" in suffix and suffix.count("*.") > 1: _suffix = suffix.split("\0")[:-2] else: _suffix = suffix if "\0" in filetype and filetype.count("*.") > 0: _filetype = filetype.split("\0")[:-2] else: _filetype = filetype if hasGtk and not platChooser: # !# #Linux (When GTK 2.4 or newer is installed) fls = [] def run_dlg(): chooser = gtk.FileChooserDialog( title, None, gtk.FILE_CHOOSER_ACTION_SAVE, (gtk.STOCK_CANCEL, gtk.RESPONSE_CANCEL, gtk.STOCK_SAVE, gtk.RESPONSE_OK)) chooser.set_default_response(gtk.RESPONSE_OK) chooser.set_current_folder(initialDir) chooser.set_current_name(defaultName) # Add custom Filter if isinstance(_filetype, list) or isinstance(_filetype, tuple): for i, stuff in enumerate(_filetype): if i % 2 == 0: file_filter = gtk.FileFilter() file_filter.set_name(stuff) else: if ";" in stuff: for _suff in stuff.split(";"): if _suff: file_filter.add_pattern(_suff) else: file_filter.add_pattern(stuff) chooser.add_filter(file_filter) if i % 2 == 0: if ";" in stuff: for _suff in stuff.split(";"): if _suff: file_filter.add_pattern(_suff) else: file_filter.add_pattern(stuff) chooser.add_filter(file_filter) else: file_filter = gtk.FileFilter() file_filter.set_name(filetype[:filetype.index("\0")]) if "\0" in suffix and suffix.count("*.") > 1: __suffix = suffix.split("\0")[:-2] else: __suffix = suffix if isinstance(__suffix, list) or isinstance( __suffix, tuple): for suff in __suffix: file_filter.add_pattern("*." + suff) else: file_filter.add_pattern("*." + __suffix) chooser.add_filter(file_filter) # Add "All files" Filter file_filter = gtk.FileFilter() file_filter.set_name("All files") file_filter.add_pattern("*") chooser.add_filter(file_filter) response = chooser.run() if response == gtk.RESPONSE_OK: fls.append(chooser.get_filename()) else: fls.append(None) chooser.destroy() gtk.main_quit() gtk.idle_add(run_dlg) gtk.main() filename = fls[0] else: # Fallback log.debug("Calling internal file chooser.") log.debug("'initialDir' is %s (%s)" % (repr(initialDir), type(initialDir))) log.debug("'defaultName' is %s (%s)" % (repr(defaultName), type(defaultName))) try: iDir = initialDir.encode(enc) except Exception as e: iDir = initialDir log.debug("Could not encode 'initialDir' %s" % repr(initialDir)) log.debug("Encode function returned: %s" % e) try: dName = defaultName.encode(enc) except Exception as e: dName = defaultName log.debug("Could not encode 'defaultName' %s" % repr(defaultName)) log.debug("Encode function returned: %s" % e) if isinstance(_suffix, list) or isinstance(_suffix, tuple): sffxs = [a[1:] for a in _suffix[1::2]] sffx = sffxs.pop(0) sffxs.append('.*') else: sffx = _suffix sffxs = [] for i, stuff in enumerate(_filetype): if i % 2 == 0: file_filter = stuff else: file_filter += " (%s)" % stuff sffxs.append(file_filter) if i % 2 == 0: file_filter += " (%s)" % stuff sffxs.append(file_filter) if "All files (*.*)" not in sffxs and "*.* (*.*)" not in sffxs: sffxs.append("All files (*.*)") filename = request_new_filename(prompt=title, suffix=sffx, extra_suffixes=sffxs, directory=iDir, filename=dName, pathname=None) return filename