def cb_button_run(self, button):
self.main_window.hide()
while Gtk.events_pending():
Gtk.main_iteration()
dialog = Gtk.FileChooserDialog(
_("Choose a file to execute"),
self.main_window,
Gtk.FileChooserAction.OPEN,
(Gtk.STOCK_CANCEL, Gtk.ResponseType.CANCEL,
Gtk.STOCK_OPEN, Gtk.ResponseType.OK))
dialog.set_current_folder(self.wineprefix_path + '/drive_c')
#filter1 = Gtk.FileFilter()
#filter1.set_name("DOS/Windows executable")
#filter1.add_mime_type("application/x-ms-dos-executable")
#dialog.add_filter(filter1)
file_filter = Gtk.FileFilter()
file_filter.set_name("*.exe, *.msi, *.bat")
file_filter.add_pattern("*.exe")
file_filter.add_pattern("*.msi")
file_filter.add_pattern("*.bat")
dialog.add_filter(file_filter)
response = dialog.run()
if response == Gtk.ResponseType.OK:
file_path = dialog.get_current_folder()
if '.exe' in dialog.get_filename().split('/')[-1]:
command = '$WINELOADER "' + dialog.get_filename() + '"'
elif '.msi' in dialog.get_filename().split('/')[-1]:
command = '$WINELOADER msiexec /i "' + dialog.get_filename() + '"'
elif '.bat' in dialog.get_filename().split('/')[-1]:
command = '$WINELOADER start /unix "' + dialog.get_filename() + '"'
dialog.destroy()
while Gtk.events_pending():
Gtk.main_iteration()
os.system('cd "' + file_path + '" && ' + command)
elif response == Gtk.ResponseType.CANCEL:
dialog.destroy()
self.main_window.show()
评论列表
文章目录