Initial Commit+

This commit is contained in:
OptimiDev
2025-10-20 20:13:09 +02:00
parent 9a0b956e5a
commit a53ccf6b2a
14 changed files with 706 additions and 0 deletions

138
pirc_setup_wizard.py Normal file
View 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)