From 69b10b086439a6c5ee2311980cd1d355fc8fe828 Mon Sep 17 00:00:00 2001 From: "seppmutterman@gmail.com" Date: Sun, 14 Dec 2025 18:35:51 +0100 Subject: [PATCH] testing stuff ; testing branch lol --- build.ps1 | 2 +- src/IRCPanel.py | 6 +- src/channel.ico | Bin 0 -> 98874 bytes src/main.py | 144 ++++++++++++++++++++++++++++++++++++++++++++++-- 4 files changed, 144 insertions(+), 8 deletions(-) create mode 100644 src/channel.ico diff --git a/build.ps1 b/build.ps1 index 1d334dd..9c0fdb3 100644 --- a/build.ps1 +++ b/build.ps1 @@ -6,13 +6,13 @@ Write-Host "Building application with PyInstaller..." -ForegroundColor Cyan pyinstaller ` --onefile ` --noconfirm ` - --windowed ` --hidden-import wx._xml ` --add-data "FiraCode-Regular.ttf;." ` --add-data "FiraCode-SemiBold.ttf;." ` --add-data "src\sounds\*;sounds" ` --add-data "venv\Lib\site-packages\irc\codes.txt;irc" ` --add-data "icon.ico;." ` + --add-data "src\server.ico;." ` --icon "icon.ico" ` "src/main.py" diff --git a/src/IRCPanel.py b/src/IRCPanel.py index 1dc0134..166bb27 100644 --- a/src/IRCPanel.py +++ b/src/IRCPanel.py @@ -561,9 +561,13 @@ class IRCPanel(wx.Panel): logger.error(f"Error in add_message: {e}") def _add_message_safe(self, message, username_color=None, message_color=None, - bold=False, italic=False, underline=False): + bold=False, italic=False, underline=False): """Add message to display with formatting (must be called from main thread).""" try: + # Safety check: ensure text_ctrl still exists + if not self.text_ctrl or not self: + return + self.messages.append(message) # Check if user is at bottom diff --git a/src/channel.ico b/src/channel.ico new file mode 100644 index 0000000000000000000000000000000000000000..3b78eb8788c77f59f5f1f3334b98cb17d05a82d6 GIT binary patch literal 98874 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 OjI*y_$?H7UM*csi%{6HN literal 0 HcmV?d00001 diff --git a/src/main.py b/src/main.py index e2ce71e..ea010f0 100644 --- a/src/main.py +++ b/src/main.py @@ -1,4 +1,6 @@ import wx +import wx.aui +import wx.lib.agw.aui as aui import irc.client import threading import re @@ -551,9 +553,18 @@ class IRCFrame(wx.Frame): left_panel.SetSizer(left_sizer) - # Center - Notebook - self.notebook = wx.Notebook(panel) + self.notebook = wx.aui.AuiNotebook(panel, style= + wx.aui.AUI_NB_DEFAULT_STYLE | + wx.aui.AUI_NB_CLOSE_ON_ACTIVE_TAB | + wx.aui.AUI_NB_MIDDLE_CLICK_CLOSE + ) self.notebook.SetBackgroundColour(self.theme["content_bg"]) + + # Setup tab icons + self.setup_tab_icons() + + # Bind close event + self.notebook.Bind(wx.aui.EVT_AUINOTEBOOK_PAGE_CLOSE, self.on_notebook_page_close) # Server panel server_panel = IRCPanel(self.notebook, self) @@ -1202,11 +1213,18 @@ Available commands: try: if channel in self.channels and channel != "SERVER": def _close_channel(): + # Find and delete the page for i in range(self.notebook.GetPageCount()): if self.notebook.GetPageText(i) == channel: self.notebook.DeletePage(i) break - del self.channels[channel] + + # Clean up channel data + if channel in self.channels: + del self.channels[channel] + + if channel in self.channel_users: + del self.channel_users[channel] idx = self.channel_list.FindString(channel) if idx != wx.NOT_FOUND: @@ -1215,7 +1233,7 @@ Available commands: self.safe_ui_update(_close_channel) except Exception as e: logger.error(f"Error closing channel: {e}") - + def log_server(self, message, color=None, bold=False, italic=False, underline=False): try: if "SERVER" in self.channels: @@ -1236,8 +1254,11 @@ Available commands: def log_channel_message(self, channel, username, message, is_action=False, is_system=False): """Log a message to a channel with username coloring""" try: + # Don't create new channels if they don't exist and we're trying to log to them if channel not in self.channels: - self.safe_ui_update(self.add_channel, channel) + # Only create channel if it's being opened by the user, not just receiving messages + return + if channel in self.channels: timestamp = self.get_timestamp() @@ -1260,12 +1281,123 @@ Available commands: except Exception as e: logger.error(f"Error logging channel message: {e}") + def setup_tab_icons(self): + try: + self.tab_image_list = wx.ImageList(16, 16) + + # Possible icon locations + icon_paths = [ + os.path.join(os.path.dirname(__file__), "channel.ico"), + get_resource_path("channel.ico"), # PyInstaller bundle + os.path.join(os.getcwd(), "src", "channel.ico"), + ] + + icon_path = None + for path in icon_paths: + if path and os.path.exists(path): + icon_path = path + break + + if icon_path: + try: + img = wx.Image(icon_path, wx.BITMAP_TYPE_ICO) + img = img.Scale(16, 16, wx.IMAGE_QUALITY_HIGH) + bmp = wx.Bitmap(img) + + self.icon_server = self.tab_image_list.Add(bmp) + self.icon_channel = self.tab_image_list.Add(bmp) + self.icon_query = self.tab_image_list.Add(bmp) + + logger.info(f"Loaded tab icons from {icon_path}") + except Exception as e: + logger.warning(f"Icon load failed: {e}") + self._setup_fallback_icons() + else: + logger.info("channel.ico not found, using fallback icons") + self._setup_fallback_icons() + + self.notebook.SetImageList(self.tab_image_list) + + except Exception as e: + logger.error(f"Error setting up tab icons: {e}") + self.icon_server = -1 + self.icon_channel = -1 + self.icon_query = -1 + + def _setup_fallback_icons(self): + """Setup fallback icons using wx.ArtProvider.""" + try: + self.icon_server = self.tab_image_list.Add( + wx.ArtProvider.GetBitmap(wx.ART_INFORMATION, wx.ART_OTHER, (48, 48)) + ) + self.icon_channel = self.tab_image_list.Add( + wx.ArtProvider.GetBitmap(wx.ART_NORMAL_FILE, wx.ART_OTHER, (48, 48)) + ) + self.icon_query = self.tab_image_list.Add( + wx.ArtProvider.GetBitmap(wx.ART_HELP, wx.ART_OTHER, (48, 48)) + ) + except Exception as e: + logger.error(f"Error setting up fallback icons: {e}") + self.icon_server = -1 + self.icon_channel = -1 + self.icon_query = -1 + + def on_notebook_page_close(self, event): + """Handle tab close button clicks""" + try: + page_idx = event.GetSelection() + channel = self.notebook.GetPageText(page_idx) + + if channel == "Server": + event.Veto() + wx.MessageBox("Can't close Server!", "Error", wx.OK | wx.ICON_ERROR) + return + + if channel in self.channels: + del self.channels[channel] + + if channel in self.channel_users: + del self.channel_users[channel] + + # Remove from channel list + idx = self.channel_list.FindString(channel) + if idx != wx.NOT_FOUND: + self.channel_list.Delete(idx) + + if channel.startswith('#') and self.is_connected(): + try: + self.connection.part(channel) + except: + pass + + # Allow the close to proceed + event.Skip() + + except Exception as e: + logger.error(f"Error closing tab: {e}") + event.Skip() + def add_channel(self, channel): + """Add a new channel/query tab with appropriate icon""" try: if channel not in self.channels: panel = IRCPanel(self.notebook, self) panel.set_target(channel) - self.notebook.AddPage(panel, channel) + + # Determine icon based on channel type + if channel == "SERVER": + icon_idx = getattr(self, 'icon_server', -1) + elif channel.startswith('#'): + icon_idx = getattr(self, 'icon_channel', -1) + else: + icon_idx = getattr(self, 'icon_query', -1) + + # Add page with icon (if icon_idx is -1, no icon will be shown) + if icon_idx >= 0: + self.notebook.AddPage(panel, channel, select=True, imageId=icon_idx) + else: + self.notebook.AddPage(panel, channel, select=True) + self.channels[channel] = panel if channel.startswith('#'):