updates
This commit is contained in:
12 files changed
+3232
-767
No files matched your search
@@ -0,0 +1,128 @@
|
||||
#!/usr/bin/env python3
|
||||
"""
|
||||
Test script for the new NotificationContainer functionality.
|
||||
This script demonstrates the notification popup with navigation between multiple notifications.
|
||||
"""
|
||||
|
||||
import sys
|
||||
import time
|
||||
import gi
|
||||
gi.require_version('Gtk', '3.0')
|
||||
from gi.repository import GLib, Gtk
|
||||
from modules.notification_popup import NotificationPopup
|
||||
|
||||
def test_notification_container():
|
||||
"""Test the notification container with multiple notifications."""
|
||||
print("Testing NotificationContainer functionality...")
|
||||
|
||||
# Create the notification popup
|
||||
popup = NotificationPopup()
|
||||
|
||||
def create_mock_notification(app_name, summary, body, notif_id):
|
||||
"""Create a mock notification for testing."""
|
||||
# Create a simple mock notification object
|
||||
class MockNotification:
|
||||
def __init__(self, app_name, summary, body, notif_id):
|
||||
self.app_name = app_name
|
||||
self.summary = summary
|
||||
self.body = body
|
||||
self.id = notif_id
|
||||
self.app_icon = "dialog-information-symbolic"
|
||||
self.image_pixbuf = None
|
||||
self.actions = []
|
||||
self.timeout = 5000
|
||||
self._callbacks = {}
|
||||
|
||||
def connect(self, signal, callback):
|
||||
if signal not in self._callbacks:
|
||||
self._callbacks[signal] = []
|
||||
self._callbacks[signal].append(callback)
|
||||
|
||||
def close(self, reason):
|
||||
if "closed" in self._callbacks:
|
||||
for callback in self._callbacks["closed"]:
|
||||
callback(self, reason)
|
||||
|
||||
return MockNotification(app_name, summary, body, notif_id)
|
||||
|
||||
def send_test_notifications():
|
||||
"""Send multiple test notifications to demonstrate the container."""
|
||||
notifications = [
|
||||
{
|
||||
"app_name": "Test App 1",
|
||||
"summary": "First Notification",
|
||||
"body": "This is the first test notification to demonstrate the container functionality."
|
||||
},
|
||||
{
|
||||
"app_name": "Test App 2",
|
||||
"summary": "Second Notification",
|
||||
"body": "This is the second notification. You should see navigation buttons appear."
|
||||
},
|
||||
{
|
||||
"app_name": "Test App 3",
|
||||
"summary": "Third Notification",
|
||||
"body": "Third notification with even more content to test the display."
|
||||
},
|
||||
{
|
||||
"app_name": "Music Player",
|
||||
"summary": "Now Playing",
|
||||
"body": "Song Title - Artist Name\\nAlbum: Album Name"
|
||||
},
|
||||
{
|
||||
"app_name": "Email Client",
|
||||
"summary": "New Email",
|
||||
"body": "You have received a new email from someone important."
|
||||
}
|
||||
]
|
||||
|
||||
# Send notifications with delays
|
||||
for i, notif_data in enumerate(notifications):
|
||||
def send_notification(data, index):
|
||||
print(f"Sending notification {index + 1}: {data['summary']}")
|
||||
|
||||
# Create mock notification
|
||||
notification = create_mock_notification(
|
||||
data["app_name"],
|
||||
data["summary"],
|
||||
data["body"],
|
||||
f"test_id_{index}"
|
||||
)
|
||||
|
||||
# Create mock fabric notification service
|
||||
class MockFabricNotif:
|
||||
def get_notification_from_id(self, notif_id):
|
||||
return notification
|
||||
|
||||
# Simulate the notification service adding the notification
|
||||
popup.notification_container.on_new_notification(
|
||||
MockFabricNotif(),
|
||||
f"test_id_{index}"
|
||||
)
|
||||
|
||||
return False # Don't repeat
|
||||
|
||||
# Schedule each notification with a delay
|
||||
GLib.timeout_add(i * 2000, lambda data=notif_data, idx=i: send_notification(data, idx))
|
||||
|
||||
return False # Don't repeat
|
||||
|
||||
# Start sending notifications after a short delay
|
||||
GLib.timeout_add(1000, send_test_notifications)
|
||||
|
||||
print("Notification container test started!")
|
||||
print("Features to test:")
|
||||
print("- Multiple notifications in a stack")
|
||||
print("- Navigation buttons (previous/next/close all)")
|
||||
print("- Automatic timeout management")
|
||||
print("- Hover to pause timeouts")
|
||||
print("- Close individual notifications")
|
||||
print("- Container auto-hide when all notifications are closed")
|
||||
print("\\nPress Ctrl+C to exit")
|
||||
|
||||
try:
|
||||
Gtk.main()
|
||||
except KeyboardInterrupt:
|
||||
print("\\nTest completed!")
|
||||
|
||||
if __name__ == "__main__":
|
||||
test_notification_container()
|
||||
Reference in new issue
Block a user