def load_patchinfos(): global patchinfos searchpaths = always_include[:] devices = config.list_devices() for d in devices: if os.path.isdir(os.path.join(OS.patchinfodir, d)): searchpaths.append(d) for path in searchpaths: patchinfos[path] = load_patchinfo_dir(path)
def load_ramdisks(): global ramdisks searchpaths = [] devices = config.list_devices() for d in devices: if os.path.isdir(os.path.join(OS.ramdiskdir, d)): searchpaths.append(d) for path in searchpaths: for root, dirs, files in os.walk(os.path.join(OS.ramdiskdir, path)): for f in files: if os.path.splitext(f)[1] == '.py': fullpath = os.path.join(root, f) relpath = os.path.relpath(fullpath, OS.ramdiskdir) name = relpath.replace('/', '_') plugin = imp.load_source(name, fullpath) ramdisks[relpath.replace('\\', '/')] = plugin
def get_all_ramdisks(device): directories = [] if not device: devices = config.list_devices() for d in devices: directory = os.path.join(OS.ramdiskdir, d) if d not in directories and os.path.isdir(directory): directories.append(directory) else: directories.append(os.path.join(OS.ramdiskdir, device)) ramdisks = [] for directory in directories: for root, dirs, files in os.walk(directory): relative_path = os.path.relpath(root, OS.ramdiskdir) for f in files: if os.path.splitext(f)[1] == '.def': ramdisks.append(os.path.join(relative_path, f)) ramdisks.sort() return ramdisks
partconfig_name = None partconfig = None noquestions = False # For unsupported files f_preset_name = None f_hasbootimage = None f_bootimage = None f_ramdisk = None f_autopatcher_name = None f_patch = None f_init = None f_devicecheck = None # Lists devices = config.list_devices() partition_configs = partitionconfigs.get() presets = None autopatchers = None inits = None ramdisks = None class SimpleListDialog: def __init__(self): self.desc = None self.choicemsg = None self.names = list() self.values = list() self.invalidnames = list() self.invalidvalues = list()
def __init__(self, parent=None, filename=None): super().__init__(parent) iconpath = os.path.join(OS.rootdir, 'scripts', 'icon.png') self.setWindowIcon(QtGui.QIcon(iconpath)) if filename: self.filename = os.path.abspath(filename) self.automode = True else: self.filename = None self.automode = False self.primaryupgrade = False self.partconfigs = partitionconfigs.get() self.devices = config.list_devices() self.setWindowTitle('Dual Boot Patcher') # Partition configuration selector and file chooser self.partconfigdesc = QtWidgets.QLabel(self) self.partconfigcombobox = QtWidgets.QComboBox(self) self.devicecombobox = QtWidgets.QComboBox(self) self.filechooserbutton = QtWidgets.QPushButton(self) # A simple vertical layout will do layout = QtWidgets.QVBoxLayout(self) layout.addWidget(self.devicecombobox) layout.addWidget(self.partconfigcombobox) layout.addWidget(self.partconfigdesc) layout.addStretch(1) layout.addWidget(self.filechooserbutton) self.setLayout(layout) # Populate devices for d in self.devices: name = config.config['devices'][d]['name'] self.devicecombobox.addItem('%s (%s)' % (d, name)) self.devicecombobox.currentIndexChanged.connect(self.deviceselected) self.deviceselected(self.devicecombobox.currentIndex()) # Populate partition configs for i in self.partconfigs: self.partconfigcombobox.addItem(i.name) self.partconfigcombobox.currentIndexChanged.connect( self.partconfigselected) self.partconfigselected(self.partconfigcombobox.currentIndex()) # Choose file button if self.automode: self.filechooserbutton.setText("Continue") else: self.filechooserbutton.setText("Choose file to patch") self.filechooserbutton.clicked.connect(self.selectfile) # Progress dialog self.progressdialog = ProgressDialog(self) qtui.listener = self.progressdialog # Fixed size self.setMinimumWidth(420) self.setFixedHeight(self.sizeHint().height()) self.move(300, 300)