Initial Commit+
This commit is contained in:
138
pirc_setup_wizard.py
Normal file
138
pirc_setup_wizard.py
Normal file
@@ -0,0 +1,138 @@
|
||||
# pirC_setup_wizard.py
|
||||
import sys
|
||||
import json
|
||||
from PySide6.QtWidgets import (
|
||||
QApplication, QDialog, QVBoxLayout, QLabel, QLineEdit, QPushButton,
|
||||
QListWidget, QHBoxLayout, QStackedLayout, QWidget, QDialogButtonBox
|
||||
)
|
||||
|
||||
CONFIG_FILE = "pirc_config.json"
|
||||
|
||||
class PIRCSetupWizard(QDialog):
|
||||
def __init__(self):
|
||||
super().__init__()
|
||||
self.setWindowTitle("PIRC Setup Wizard")
|
||||
self.setGeometry(200, 200, 500, 400)
|
||||
|
||||
self.nicknames = []
|
||||
self.favorites = []
|
||||
|
||||
# Multi-step layout
|
||||
self.layout = QVBoxLayout()
|
||||
self.stack = QStackedLayout()
|
||||
self.layout.addLayout(self.stack)
|
||||
self.setLayout(self.layout)
|
||||
|
||||
# Step 0: Welcome
|
||||
self.step_welcome = QWidget()
|
||||
w_layout = QVBoxLayout()
|
||||
w_layout.addWidget(QLabel(
|
||||
"Welcome to PIRC!\n\nThis wizard will guide you through the setup:\n"
|
||||
"1. Add your usernames (multiple allowed)\n"
|
||||
"2. Add favorite servers/channels (optional)\n"
|
||||
"3. Open the chat window\n"
|
||||
))
|
||||
self.next0 = QPushButton("Start")
|
||||
self.next0.clicked.connect(lambda: self.stack.setCurrentIndex(1))
|
||||
w_layout.addWidget(self.next0)
|
||||
self.step_welcome.setLayout(w_layout)
|
||||
self.stack.addWidget(self.step_welcome)
|
||||
|
||||
# Step 1: Usernames
|
||||
self.step_users = QWidget()
|
||||
u_layout = QVBoxLayout()
|
||||
u_layout.addWidget(QLabel("Step 1: Add your usernames"))
|
||||
self.nick_input = QLineEdit()
|
||||
self.nick_input.setPlaceholderText("Enter a username")
|
||||
u_layout.addWidget(self.nick_input)
|
||||
self.nick_list = QListWidget()
|
||||
u_layout.addWidget(self.nick_list)
|
||||
h_btn_layout = QHBoxLayout()
|
||||
self.add_nick_btn = QPushButton("Add")
|
||||
self.add_nick_btn.clicked.connect(self.add_nickname)
|
||||
self.remove_nick_btn = QPushButton("Remove Selected")
|
||||
self.remove_nick_btn.clicked.connect(self.remove_nickname)
|
||||
h_btn_layout.addWidget(self.add_nick_btn)
|
||||
h_btn_layout.addWidget(self.remove_nick_btn)
|
||||
u_layout.addLayout(h_btn_layout)
|
||||
self.next1 = QPushButton("Next")
|
||||
self.next1.clicked.connect(lambda: self.stack.setCurrentIndex(2))
|
||||
u_layout.addWidget(self.next1)
|
||||
self.step_users.setLayout(u_layout)
|
||||
self.stack.addWidget(self.step_users)
|
||||
|
||||
# Step 2: Favorites
|
||||
self.step_fav = QWidget()
|
||||
f_layout = QVBoxLayout()
|
||||
f_layout.addWidget(QLabel("Step 2: Add favorite servers/channels (optional)"))
|
||||
self.server_input = QLineEdit()
|
||||
self.server_input.setPlaceholderText("Server address (e.g., irc.libera.chat)")
|
||||
self.channel_input = QLineEdit()
|
||||
self.channel_input.setPlaceholderText("Channel (e.g., #python)")
|
||||
f_layout.addWidget(self.server_input)
|
||||
f_layout.addWidget(self.channel_input)
|
||||
self.fav_list = QListWidget()
|
||||
f_layout.addWidget(self.fav_list)
|
||||
h_fav_btn_layout = QHBoxLayout()
|
||||
self.add_fav_btn = QPushButton("Add")
|
||||
self.add_fav_btn.clicked.connect(self.add_favorite)
|
||||
self.remove_fav_btn = QPushButton("Remove Selected")
|
||||
self.remove_fav_btn.clicked.connect(self.remove_favorite)
|
||||
h_fav_btn_layout.addWidget(self.add_fav_btn)
|
||||
h_fav_btn_layout.addWidget(self.remove_fav_btn)
|
||||
f_layout.addLayout(h_fav_btn_layout)
|
||||
self.next2 = QPushButton("Finish")
|
||||
self.next2.clicked.connect(self.finish_setup)
|
||||
f_layout.addWidget(self.next2)
|
||||
self.step_fav.setLayout(f_layout)
|
||||
self.stack.addWidget(self.step_fav)
|
||||
|
||||
# --- Nicknames ---
|
||||
def add_nickname(self):
|
||||
nick = self.nick_input.text().strip()
|
||||
if nick:
|
||||
self.nicknames.append(nick)
|
||||
self.nick_list.addItem(nick)
|
||||
self.nick_input.clear()
|
||||
|
||||
def remove_nickname(self):
|
||||
selected = self.nick_list.currentRow()
|
||||
if selected >= 0:
|
||||
self.nick_list.takeItem(selected)
|
||||
self.nicknames.pop(selected)
|
||||
|
||||
# --- Favorites ---
|
||||
def add_favorite(self):
|
||||
server = self.server_input.text().strip()
|
||||
channel = self.channel_input.text().strip()
|
||||
if server and channel:
|
||||
self.favorites.append({"server": server, "channel": channel})
|
||||
self.fav_list.addItem(f"{server} {channel}")
|
||||
self.server_input.clear()
|
||||
self.channel_input.clear()
|
||||
|
||||
def remove_favorite(self):
|
||||
selected = self.fav_list.currentRow()
|
||||
if selected >= 0:
|
||||
self.fav_list.takeItem(selected)
|
||||
self.favorites.pop(selected)
|
||||
|
||||
# --- Finish ---
|
||||
def finish_setup(self):
|
||||
config = {
|
||||
"nicknames": self.nicknames,
|
||||
"favorites": self.favorites
|
||||
}
|
||||
with open(CONFIG_FILE, "w") as f:
|
||||
json.dump(config, f, indent=4)
|
||||
self.accept() # Close wizard
|
||||
|
||||
# --- Test ---
|
||||
if __name__ == "__main__":
|
||||
app = QApplication(sys.argv)
|
||||
wizard = PIRCSetupWizard()
|
||||
if wizard.exec() == QDialog.Accepted:
|
||||
print("Setup completed!")
|
||||
with open(CONFIG_FILE, "r") as f:
|
||||
print(json.load(f))
|
||||
sys.exit(0)
|
||||
Reference in New Issue
Block a user