|
3 | 3 | from json import loads, dumps |
4 | 4 | from math import ceil |
5 | 5 | from os.path import abspath, exists |
6 | | -from os import makedirs, listdir, startfile, chdir |
| 6 | +from os import makedirs, listdir, startfile, chdir, environ |
7 | 7 | from requests import get as reqGet |
8 | | -from subprocess import Popen |
| 8 | +import subprocess |
9 | 9 | import sys |
10 | 10 | import threading |
11 | 11 | import shutil |
|
16 | 16 | from PyQt5.QtWebEngineWidgets import QWebEngineView |
17 | 17 | from PyQt5.QtCore import pyqtSlot, Qt, QUrl |
18 | 18 | from PyQt5.QtGui import QIcon, QPixmap |
19 | | -from PyQt5.QtWidgets import QApplication, QWidget, QPushButton, QLabel, QLineEdit, QMessageBox, QDialog, QTabWidget, QComboBox, QScrollArea |
| 19 | +from PyQt5.QtWidgets import QApplication, QWidget, QPushButton, QLabel, QLineEdit, QMessageBox, QDialog, QTabWidget, QComboBox, QScrollArea, QVBoxLayout |
20 | 20 |
|
21 | 21 | class mainWindow(QWidget): |
22 | 22 | guiElements = [] |
@@ -224,13 +224,19 @@ def launch(self): |
224 | 224 | raise TypeError |
225 | 225 | elif not username.isalnum(): |
226 | 226 | raise TypeError |
227 | | - print("java " + launcherConfig["javaargs"] + " -Xms" + launcherConfig["minram"] + " -Xmx" + launcherConfig["maxram"] + " -cp \"" + config.MC_DIR + "/instances/" + currentInstance + "/bin/minecraft.jar;" + config.MC_DIR + "/instances/" + currentInstance + "/bin/jinput.jar;" + config.MC_DIR + "/instances/" + currentInstance + "/bin/lwjgl.jar;" + config.MC_DIR + "/instances/" + currentInstance + "/bin/lwjgl_util.jar\" " + "-Duser.home=\"" + config.MC_DIR + "/instances/" + currentInstance + "\" -Dminecraft.applet.targetDirectory=\"" + config.MC_DIR + "/instances/" + currentInstance + "\" -Djava.library.path=\"" + config.MC_DIR + "/instances/" + currentInstance + "/bin/natives\" net.minecraft.client.Minecraft " + self.loginBox.text()) |
228 | | - prc = Popen("java " + launcherConfig["javaargs"] + " -Xms" + launcherConfig["minram"] + " -Xmx" + launcherConfig["maxram"] + " -cp \"" + config.MC_DIR + "/instances/" + currentInstance + "/bin/minecraft.jar;" + config.MC_DIR + "/instances/" + currentInstance + "/bin/jinput.jar;" + config.MC_DIR + "/instances/" + currentInstance + "/bin/lwjgl.jar;" + config.MC_DIR + "/instances/" + currentInstance + "/bin/lwjgl_util.jar\" " + "-Duser.home=\"" + config.MC_DIR + "/instances/" + currentInstance + "\" -Dminecraft.applet.targetDirectory=\"" + config.MC_DIR + "/instances/" + currentInstance + "\" -Djava.library.path=\"" + config.MC_DIR + "/instances/" + currentInstance + "/bin/natives\" net.minecraft.client.Minecraft " + self.loginBox.text()) |
| 227 | + # This better damn well work. |
| 228 | + print(platform.platform()) |
| 229 | + if platform.platform().startswith("Windows"): |
| 230 | + environ["APPDATA"] = config.MC_DIR + "/instances/" + currentInstance |
| 231 | + prc = subprocess.Popen("java " + launcherConfig["javaargs"] + " -Xms" + launcherConfig["minram"] + " -Xmx" + launcherConfig["maxram"] + " -cp \"" + config.MC_DIR + "/instances/" + currentInstance + "/.minecraft" + "/bin/minecraft.jar;" + config.MC_DIR + "/instances/" + currentInstance + "/.minecraft" + "/bin/jinput.jar;" + config.MC_DIR + "/instances/" + currentInstance + "/.minecraft" + "/bin/lwjgl.jar;" + config.MC_DIR + "/instances/" + currentInstance + "/.minecraft" + "/bin/lwjgl_util.jar\" " + "-Djava.library.path=\"" + config.MC_DIR + "/instances/" + currentInstance + "/.minecraft" + "/bin/natives\" net.minecraft.client.Minecraft " + self.loginBox.text(), env=dict(environ, APPDATA=config.MC_DIR + "/instances/" + currentInstance)) |
| 232 | + elif platform.platform().startswith("Darwin"): |
| 233 | + prc = subprocess.Popen("java " + launcherConfig["javaargs"] + " -Xms" + launcherConfig["minram"] + " -Xmx" + launcherConfig["maxram"] + " -cp \"" + config.MC_DIR + "/instances/" + currentInstance + "/.minecraft" + "/bin/minecraft.jar;" + config.MC_DIR + "/instances/" + currentInstance + "/.minecraft" + "/bin/jinput.jar;" + config.MC_DIR + "/instances/" + currentInstance + "/.minecraft" + "/bin/lwjgl.jar;" + config.MC_DIR + "/instances/" + currentInstance + "/.minecraft" + "/bin/lwjgl_util.jar\" " + "-Djava.library.path=\"" + config.MC_DIR + "/instances/" + currentInstance + "/.minecraft" + "/bin/natives\" net.minecraft.client.Minecraft " + self.loginBox.text(), env=dict(environ, HOME=config.MC_DIR + "/instances/" + currentInstance)) |
| 234 | + else: |
| 235 | + prc = subprocess.Popen("java " + launcherConfig["javaargs"] + " -Xms" + launcherConfig["minram"] + " -Xmx" + launcherConfig["maxram"] + " -cp \"" + config.MC_DIR + "/instances/" + currentInstance + "/.minecraft" + "/bin/minecraft.jar;" + config.MC_DIR + "/instances/" + currentInstance + "/.minecraft" + "/bin/jinput.jar;" + config.MC_DIR + "/instances/" + currentInstance + "/.minecraft" + "/bin/lwjgl.jar;" + config.MC_DIR + "/instances/" + currentInstance + "/.minecraft" + "/bin/lwjgl_util.jar\" " + "-Duser.home=\"" + config.MC_DIR + "/instances/" + currentInstance + "/.minecraft" + "\" -Dminecraft.applet.targetDirectory=\"" + config.MC_DIR + "/instances/" + currentInstance + "/.minecraft" + "\" -Djava.library.path=\"" + config.MC_DIR + "/instances/" + currentInstance + "/.minecraft" + "/bin/natives\" net.minecraft.client.Minecraft " + self.loginBox.text()) |
229 | 236 | launcherConfig["lastusedname"] = self.loginBox.text() |
230 | 237 | utils.saveSettings(launcherConfig) |
231 | 238 | except Exception as e: |
232 | | - self.error( |
233 | | - "Minecraft is unable to start. Make sure you have java and minecraft installed and an alphanumeric username set.") |
| 239 | + self.error("Minecraft is unable to start. Make sure you have java and minecraft installed and an alphanumeric username set.") |
234 | 240 | traceback.print_exc() |
235 | 241 |
|
236 | 242 | def error(self, err): |
@@ -329,37 +335,49 @@ def initUI(self): |
329 | 335 | self.setWindowTitle(self.title) |
330 | 336 | self.setGeometry(self.left, self.top, 480, 240) |
331 | 337 | self.setFixedSize(self.size()) |
332 | | - #self.listInstances() |
| 338 | + self.listInstances() |
333 | 339 | self.createButtons() |
| 340 | + self.createInput() |
334 | 341 |
|
335 | 342 | def listInstances(self): |
336 | | - try: |
337 | | - for widget in self.widgets: |
| 343 | + for widget in self.widgets: |
| 344 | + try: |
338 | 345 | widget.deleteLater() |
339 | | - except: pass |
340 | | - |
341 | | - listBox = QVBoxLayout(self) |
342 | | - self.setLayout(listBox) |
343 | | - |
| 346 | + except:pass |
| 347 | + self.widgets=[] |
| 348 | + box = QVBoxLayout(self) |
| 349 | + self.setLayout(box) |
344 | 350 | scroll = QScrollArea(self) |
345 | | - listBox.addWidget(scroll) |
| 351 | + box.addWidget(scroll) |
346 | 352 | scroll.setWidgetResizable(True) |
347 | 353 | scrollContent = QWidget(scroll) |
348 | | - |
349 | 354 | scrollLayout = QVBoxLayout(scrollContent) |
350 | 355 | scrollContent.setLayout(scrollLayout) |
351 | | - for item in items: |
352 | | - scrollLayout.addWidget(item) |
| 356 | + for instance in listdir(config.MC_DIR+"/instances"): |
| 357 | + widget = QPushButton(self, text="Delete " + instance + ".") |
| 358 | + widget.clicked.connect(lambda: utils.rmModpack(instance, widget, self)) |
| 359 | + scrollLayout.addWidget(widget) |
| 360 | + self.widgets.append(widget) |
353 | 361 | scroll.setWidget(scrollContent) |
354 | 362 |
|
355 | 363 | def createButtons(self): |
356 | 364 | self.openDirButton = QPushButton("Open " + config.NAME + " Install Dir", self) |
357 | | - self.openDirButton.resize(70, 22) |
358 | | - self.openDirButton.move(20, 20) |
359 | | - self.openDirButton.clicked.connect(self.installModpack) |
| 365 | + self.openDirButton.resize(150, 22) |
| 366 | + self.openDirButton.move(self.width()-155, 5) |
| 367 | + self.openDirButton.clicked.connect(self.openDir) |
| 368 | + |
| 369 | + self.installModpackButton = QPushButton("Install Local Modpack", self) |
| 370 | + self.installModpackButton.resize(150, 22) |
| 371 | + self.installModpackButton.move(5, 5) |
| 372 | + self.installModpackButton.clicked.connect(self.installModpack) |
| 373 | + |
| 374 | + def createInput(self): |
| 375 | + self.modpackZipDir = QLineEdit(self) |
| 376 | + self.modpackZipDir.resize(170, 22) |
| 377 | + self.modpackZipDir.move(155, 5) |
360 | 378 |
|
361 | 379 | def installModpack(self): |
362 | | - utils.installModpack(utils.getModapackFS("D:\Downloads\LowMango Pack b1.7.3 (Feb 2019 Update).zip")) |
| 380 | + utils.installModpack(utils.getModapackFS(self.modpackZipDir.text())) |
363 | 381 |
|
364 | 382 | def openDir(self): |
365 | 383 | path = config.MC_DIR |
|
0 commit comments