From 77f210f594aa7f51403721574ede4bdc4f74c38c Mon Sep 17 00:00:00 2001 From: LemonNexus Date: Wed, 11 Feb 2026 18:39:21 +0000 Subject: [PATCH] feat: standalone extractor - classy emojis and clickable links MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Added classy emojis throughout: - 📂 Cache Source, 💾 Output Location - ⚙️ Export Settings, 🌐 EntropiaNexus.com - 📄 Available Icons, ⚠️ Important Information - 📁 Version, 🔄 Refresh, ☑️ Include ALL - 📂 Change Output Folder, 📂 Open Output Folder - ▶️ Start Extracting Icons, ☑️ Select All, ⬜ Select None - 💡 Double-click hint, ❓ No files found, ✅ Ready - 👨‍💻 Developer, 💬 Discord, 📎 GitHub, 📜 Disclaimer Clickable links in footer: - MindArk PE AB → https://www.mindark.com/ - Entropia Universe → https://www.entropiauniverse.com/ - GitHub placeholder added Also fixed text sizing to show full content in boxes --- standalone_icon_extractor.py | 118 ++++++++++++++++++++++------------- 1 file changed, 75 insertions(+), 43 deletions(-) diff --git a/standalone_icon_extractor.py b/standalone_icon_extractor.py index 448bd62..def77d7 100644 --- a/standalone_icon_extractor.py +++ b/standalone_icon_extractor.py @@ -313,7 +313,7 @@ class IconExtractorWindow(QMainWindow): layout.setSpacing(10) # Header - header = QLabel(APP_NAME) + header = QLabel("🎮 Entropia Universe Icon Extractor") header.setStyleSheet("font-size: 24px; font-weight: bold; color: #4caf50; padding-bottom: 5px;") layout.addWidget(header) @@ -355,7 +355,7 @@ class IconExtractorWindow(QMainWindow): left_layout.setSpacing(10) # Cache folder - cache_group = QGroupBox("Cache Source") + cache_group = QGroupBox("📂 Cache Source") cache_group.setStyleSheet("QGroupBox { font-size: 13px; font-weight: bold; }") cache_layout = QVBoxLayout(cache_group) cache_layout.setContentsMargins(12, 18, 12, 12) @@ -366,16 +366,15 @@ class IconExtractorWindow(QMainWindow): self.cache_label = QLabel(path_display) self.cache_label.setStyleSheet( "font-family: Consolas; font-size: 11px; color: #aaa; " - "padding: 10px; background: #252525; border-radius: 4px;" + "padding: 8px; background: #252525; border-radius: 4px;" ) self.cache_label.setWordWrap(True) - self.cache_label.setMinimumHeight(45) cache_layout.addWidget(self.cache_label) # Subfolder selector subfolder_layout = QHBoxLayout() subfolder_layout.setSpacing(10) - subfolder_label = QLabel("Version:") + subfolder_label = QLabel("📁 Version:") subfolder_label.setStyleSheet("font-size: 12px;") subfolder_layout.addWidget(subfolder_label) @@ -385,7 +384,7 @@ class IconExtractorWindow(QMainWindow): self.subfolder_combo.currentIndexChanged.connect(self._on_subfolder_changed) subfolder_layout.addWidget(self.subfolder_combo, 1) - refresh_btn = QPushButton("Refresh") + refresh_btn = QPushButton("🔄 Refresh") refresh_btn.setMaximumWidth(80) refresh_btn.setStyleSheet("font-size: 11px; padding: 5px;") refresh_btn.clicked.connect(self._detect_subfolders) @@ -394,7 +393,7 @@ class IconExtractorWindow(QMainWindow): cache_layout.addLayout(subfolder_layout) # All subfolders checkbox - self.all_subfolders_check = QCheckBox("Include ALL version folders") + self.all_subfolders_check = QCheckBox("☑️ Include ALL version folders") self.all_subfolders_check.setStyleSheet("font-size: 12px;") self.all_subfolders_check.setToolTip("Merge icons from all game versions") self.all_subfolders_check.stateChanged.connect(self._on_all_subfolders_changed) @@ -403,27 +402,26 @@ class IconExtractorWindow(QMainWindow): left_layout.addWidget(cache_group) # Output folder - output_group = QGroupBox("Output Location") + output_group = QGroupBox("💾 Output Location") output_group.setStyleSheet("QGroupBox { font-size: 13px; font-weight: bold; }") output_layout = QVBoxLayout(output_group) output_layout.setContentsMargins(12, 18, 12, 12) output_layout.setSpacing(10) - output_info = QLabel("Icons saved to your Documents folder (same location as chat.log)") + output_info = QLabel("📁 Icons saved to your Documents folder (same location as chat.log)") output_info.setStyleSheet("color: #aaaaaa; font-size: 12px;") output_info.setWordWrap(True) output_layout.addWidget(output_info) rel_path = "Documents/Entropia Universe/Icons/" - self.output_label = QLabel(rel_path) + self.output_label = QLabel(f"📂 {rel_path}") self.output_label.setStyleSheet( "font-family: Consolas; font-size: 11px; color: #aaa; " - "padding: 10px; background: #252525; border-radius: 4px;" + "padding: 8px; background: #252525; border-radius: 4px;" ) - self.output_label.setMinimumHeight(35) output_layout.addWidget(self.output_label) - change_btn = QPushButton("Change Output Folder...") + change_btn = QPushButton("📂 Change Output Folder...") change_btn.setStyleSheet("font-size: 11px; padding: 6px;") change_btn.clicked.connect(self._browse_output) output_layout.addWidget(change_btn) @@ -431,15 +429,15 @@ class IconExtractorWindow(QMainWindow): left_layout.addWidget(output_group) # Settings (simplified - just 320x320) - settings_group = QGroupBox("Export Settings") + settings_group = QGroupBox("⚙️ Export Settings") settings_group.setStyleSheet("QGroupBox { font-size: 13px; font-weight: bold; }") settings_layout = QVBoxLayout(settings_group) settings_layout.setContentsMargins(12, 18, 12, 12) settings_info = QLabel( - "Format: PNG with transparency\n" - "Canvas: 320x320 pixels (centered)\n" - "Size: Original icon size (no upscaling)" + "🖼️ Format: PNG with transparency\n" + "📐 Canvas: 320x320 pixels (centered)\n" + "📏 Size: Original icon size (no upscaling)" ) settings_info.setStyleSheet("color: #aaaaaa; font-size: 12px; line-height: 1.5;") settings_layout.addWidget(settings_info) @@ -447,16 +445,16 @@ class IconExtractorWindow(QMainWindow): left_layout.addWidget(settings_group) # Nexus link - nexus_group = QGroupBox("EntropiaNexus.com") + nexus_group = QGroupBox("🌐 EntropiaNexus.com") nexus_group.setStyleSheet("QGroupBox { font-size: 13px; font-weight: bold; color: #4caf50; }") nexus_layout = QVBoxLayout(nexus_group) nexus_layout.setContentsMargins(12, 18, 12, 12) - nexus_info = QLabel("Submit icons to help complete the item database") + nexus_info = QLabel("📤 Submit icons to help complete the item database") nexus_info.setStyleSheet("color: #cccccc; font-size: 12px;") nexus_layout.addWidget(nexus_info) - nexus_btn = QPushButton("Open EntropiaNexus.com") + nexus_btn = QPushButton("🌐 Open EntropiaNexus.com") nexus_btn.setMinimumHeight(32) nexus_btn.setStyleSheet("font-size: 11px; padding: 6px;") nexus_btn.clicked.connect(lambda: self._open_url(WEBSITE)) @@ -465,7 +463,7 @@ class IconExtractorWindow(QMainWindow): left_layout.addWidget(nexus_group) # Convert button - self.convert_btn = QPushButton("Start Extracting Icons") + self.convert_btn = QPushButton("▶️ Start Extracting Icons") self.convert_btn.setMinimumHeight(55) self.convert_btn.setStyleSheet(""" QPushButton { @@ -489,7 +487,7 @@ class IconExtractorWindow(QMainWindow): self.progress_bar.setVisible(False) left_layout.addWidget(self.progress_bar) - self.status_label = QLabel("Ready") + self.status_label = QLabel("✅ Ready") self.status_label.setStyleSheet("color: #888; font-size: 12px; padding: 5px;") self.status_label.setAlignment(Qt.AlignmentFlag.AlignCenter) left_layout.addWidget(self.status_label) @@ -503,17 +501,17 @@ class IconExtractorWindow(QMainWindow): right_layout = QVBoxLayout(right_panel) right_layout.setContentsMargins(0, 0, 0, 0) - files_group = QGroupBox("Available Icons") + files_group = QGroupBox("📄 Available Icons") files_group.setStyleSheet("QGroupBox { font-size: 13px; font-weight: bold; }") files_layout = QVBoxLayout(files_group) files_layout.setContentsMargins(12, 18, 12, 12) files_layout.setSpacing(10) - files_info = QLabel("Double-click an icon to preview. Select icons to extract (or leave blank for all).") + files_info = QLabel("💡 Double-click an icon to preview. Select icons to extract (or leave blank for all).") files_info.setStyleSheet("color: #aaaaaa; font-size: 12px;") files_layout.addWidget(files_info) - self.files_count_label = QLabel("No files found") + self.files_count_label = QLabel("❓ No files found") self.files_count_label.setStyleSheet("font-weight: bold; font-size: 12px; padding: 5px 0;") files_layout.addWidget(self.files_count_label) @@ -527,22 +525,22 @@ class IconExtractorWindow(QMainWindow): sel_layout = QHBoxLayout() sel_layout.setSpacing(10) - select_all_btn = QPushButton("Select All") - select_all_btn.setMaximumWidth(100) + select_all_btn = QPushButton("☑️ Select All") + select_all_btn.setMaximumWidth(110) select_all_btn.setStyleSheet("font-size: 11px; padding: 5px;") select_all_btn.clicked.connect(self.files_list.selectAll) sel_layout.addWidget(select_all_btn) - select_none_btn = QPushButton("Select None") - select_none_btn.setMaximumWidth(100) + select_none_btn = QPushButton("⬜ Select None") + select_none_btn.setMaximumWidth(110) select_none_btn.setStyleSheet("font-size: 11px; padding: 5px;") select_none_btn.clicked.connect(self.files_list.clearSelection) sel_layout.addWidget(select_none_btn) sel_layout.addStretch() - open_folder_btn = QPushButton("Open Output Folder") - open_folder_btn.setMaximumWidth(130) + open_folder_btn = QPushButton("📂 Open Output Folder") + open_folder_btn.setMaximumWidth(140) open_folder_btn.setStyleSheet("font-size: 11px; padding: 5px;") open_folder_btn.clicked.connect(self._open_output_folder) sel_layout.addWidget(open_folder_btn) @@ -556,7 +554,7 @@ class IconExtractorWindow(QMainWindow): layout.addWidget(splitter, 1) # Important Information (moved to bottom) - notice_group = QGroupBox("Important Information") + notice_group = QGroupBox("⚠️ Important Information") notice_group.setStyleSheet(""" QGroupBox { font-size: 13px; @@ -588,17 +586,51 @@ class IconExtractorWindow(QMainWindow): notice_layout.addWidget(notice_text) layout.addWidget(notice_group) - # Footer - footer = QLabel( - f"Developed by {DEVELOPER} | Discord: {DISCORD}\n" - "Entropia Universe Icon Extractor is a fan-made resource and is not affiliated with MindArk PE AB. " - "Entropia Universe is a trademark of MindArk PE AB." - ) - footer.setStyleSheet("color: #666; font-size: 10px; padding: 10px;") - footer.setAlignment(Qt.AlignmentFlag.AlignCenter) - footer.setWordWrap(True) - footer.setMinimumHeight(55) - layout.addWidget(footer) + # Footer with clickable links + footer_widget = QWidget() + footer_layout = QVBoxLayout(footer_widget) + footer_layout.setContentsMargins(10, 10, 10, 10) + footer_layout.setSpacing(5) + + # First line - developer info + footer_line1 = QLabel(f"👨‍💻 Developed by {DEVELOPER} | 💬 Discord: {DISCORD} | 📎 GitHub: (coming soon)") + footer_line1.setStyleSheet("color: #888; font-size: 11px;") + footer_line1.setAlignment(Qt.AlignmentFlag.AlignCenter) + footer_layout.addWidget(footer_line1) + + # Second line - disclaimer with links + disclaimer_widget = QWidget() + disclaimer_layout = QHBoxLayout(disclaimer_widget) + disclaimer_layout.setContentsMargins(0, 0, 0, 0) + disclaimer_layout.setSpacing(0) + + label1 = QLabel("📜 Entropia Universe Icon Extractor is a fan-made resource and is not affiliated with ") + label1.setStyleSheet("color: #666; font-size: 10px;") + label1.setOpenExternalLinks(True) + + mindark_link = QLabel('MindArk PE AB. ') + mindark_link.setStyleSheet("color: #666; font-size: 10px;") + mindark_link.setOpenExternalLinks(True) + + label2 = QLabel("") + label2.setStyleSheet("color: #666; font-size: 10px;") + + eu_link = QLabel('Entropia Universe') + eu_link.setStyleSheet("color: #666; font-size: 10px;") + eu_link.setOpenExternalLinks(True) + + label3 = QLabel(" is a trademark of MindArk PE AB.") + label3.setStyleSheet("color: #666; font-size: 10px;") + + disclaimer_layout.addStretch() + disclaimer_layout.addWidget(label1) + disclaimer_layout.addWidget(mindark_link) + disclaimer_layout.addWidget(eu_link) + disclaimer_layout.addWidget(label3) + disclaimer_layout.addStretch() + + footer_layout.addWidget(disclaimer_widget) + layout.addWidget(footer_widget) def _on_file_double_clicked(self, index): """Handle double-click on file to preview."""