mirror of
https://github.com/ChuckBuilds/LEDMatrix.git
synced 2026-05-16 02:13:32 +00:00
Compare commits
4 Commits
main
...
update-rgb
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
c53e4995c4 | ||
|
|
a0f19d8972 | ||
|
|
4f126d6133 | ||
|
|
5dde1125e9 |
@@ -1,5 +1,5 @@
|
|||||||
requests>=2.33.0
|
requests>=2.33.0
|
||||||
urllib3>=2.2.2
|
urllib3>=1.26.0
|
||||||
Pillow>=12.2.0
|
Pillow>=12.2.0
|
||||||
pytz>=2022.1
|
pytz>=2022.1
|
||||||
numpy>=1.24.0
|
numpy>=1.24.0
|
||||||
|
|||||||
@@ -235,6 +235,8 @@ class DisplayHelper:
|
|||||||
PIL Image with no data message
|
PIL Image with no data message
|
||||||
"""
|
"""
|
||||||
img = self.create_base_image((0, 0, 0))
|
img = self.create_base_image((0, 0, 0))
|
||||||
|
draw = ImageDraw.Draw(img)
|
||||||
|
|
||||||
font = ImageFont.load_default()
|
font = ImageFont.load_default()
|
||||||
self._draw_centered_text(message, font, (0, 0, 0), (150, 150, 150))
|
self._draw_centered_text(message, font, (0, 0, 0), (150, 150, 150))
|
||||||
|
|
||||||
|
|||||||
@@ -823,7 +823,7 @@ class DisplayController:
|
|||||||
scroll_h = getattr(plugin_instance, 'scroll_helper', None)
|
scroll_h = getattr(plugin_instance, 'scroll_helper', None)
|
||||||
if scroll_h is not None:
|
if scroll_h is not None:
|
||||||
follower_frame = scroll_h.get_portion_at(scroll_h.scroll_position + offset)
|
follower_frame = scroll_h.get_portion_at(scroll_h.scroll_position + offset)
|
||||||
except Exception: # nosec B110 - scroll_helper.get_portion_at is optional; skip on error
|
except Exception:
|
||||||
pass
|
pass
|
||||||
|
|
||||||
# 3. Mirror fallback — static plugins (clock, weather) show same frame
|
# 3. Mirror fallback — static plugins (clock, weather) show same frame
|
||||||
|
|||||||
@@ -747,7 +747,7 @@ class DisplayManager:
|
|||||||
try:
|
try:
|
||||||
self.image = Image.new('RGB', (self.width, self.height))
|
self.image = Image.new('RGB', (self.width, self.height))
|
||||||
self.draw = ImageDraw.Draw(self.image)
|
self.draw = ImageDraw.Draw(self.image)
|
||||||
except Exception: # nosec B110 - best-effort canvas reset during cleanup; non-critical
|
except Exception:
|
||||||
pass
|
pass
|
||||||
# Reset the singleton state when cleaning up
|
# Reset the singleton state when cleaning up
|
||||||
DisplayManager._instance = None
|
DisplayManager._instance = None
|
||||||
|
|||||||
@@ -41,7 +41,7 @@ def get_local_ips():
|
|||||||
ip = ip.strip()
|
ip = ip.strip()
|
||||||
if ip and not ip.startswith("127.") and ip != "192.168.4.1":
|
if ip and not ip.startswith("127.") and ip != "192.168.4.1":
|
||||||
ips.append(ip)
|
ips.append(ip)
|
||||||
except Exception: # nosec B110 - hostname -I output parsing; non-critical startup info
|
except Exception:
|
||||||
pass
|
pass
|
||||||
|
|
||||||
# Fallback: try socket method
|
# Fallback: try socket method
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
/* global showNotification, updateSystemStats, htmx */
|
/* global showNotification, updateSystemStats */
|
||||||
// LED Matrix v3 JavaScript
|
// LED Matrix v3 JavaScript
|
||||||
// Additional helpers for HTMX and Alpine.js integration
|
// Additional helpers for HTMX and Alpine.js integration
|
||||||
|
|
||||||
|
|||||||
@@ -331,7 +331,7 @@
|
|||||||
removeButton.type = 'button';
|
removeButton.type = 'button';
|
||||||
removeButton.className = 'text-red-600 hover:text-red-800 px-2 py-1';
|
removeButton.className = 'text-red-600 hover:text-red-800 px-2 py-1';
|
||||||
removeButton.addEventListener('click', function() {
|
removeButton.addEventListener('click', function() {
|
||||||
window.removeCustomFeedRow(this);
|
removeCustomFeedRow(this);
|
||||||
});
|
});
|
||||||
const removeIcon = document.createElement('i');
|
const removeIcon = document.createElement('i');
|
||||||
removeIcon.className = 'fas fa-trash';
|
removeIcon.className = 'fas fa-trash';
|
||||||
|
|||||||
@@ -212,7 +212,7 @@
|
|||||||
const parts = formatter.formatToParts(now);
|
const parts = formatter.formatToParts(now);
|
||||||
const offsetPart = parts.find(p => p.type === 'timeZoneName');
|
const offsetPart = parts.find(p => p.type === 'timeZoneName');
|
||||||
return offsetPart ? offsetPart.value : '';
|
return offsetPart ? offsetPart.value : '';
|
||||||
} catch {
|
} catch (e) {
|
||||||
return '';
|
return '';
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user