1.5.0-beta.7 Release by Core447 · Pull Request #280 · StreamController/StreamController · GitHub
Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
38 commits
Select commit Hold shift + click to select a range
539a54b
Added Image Layering to ActionBase (#205)
G4PLS Oct 10, 2024
16aeb89
Fix(mainWindow): Showing "no decks available" in header when no pages
Core447 Oct 15, 2024
9adbb29
Add support for the sd-neo
Core447 Oct 16, 2024
a506025
Chore(deps): Bump nltk from 3.8.1 to 3.9 (#209)
dependabot[bot] Oct 16, 2024
f6be477
Build(deps): Bump certifi from 2024.2.2 to 2024.7.4 (#155)
dependabot[bot] Oct 16, 2024
b852753
Update requirements.txt
Core447 Oct 16, 2024
36310d1
Move to Gnome 47 runtime (#258)
wanderboessenkool Oct 16, 2024
ed616b6
Update pypi-requirements.yaml
Core447 Oct 16, 2024
edb9f36
Chore(StoreBackend): Add official store branch info log
Core447 Oct 16, 2024
d7ec4af
Bump version to 1.5.0-beta.7
Core447 Oct 16, 2024
8bad20f
Update release notes
Core447 Oct 16, 2024
a2fb43a
Chore: Add sd neo support to readmes
Core447 Oct 17, 2024
23f8490
Fixes a typo in contribution section of README file (#262)
AdiHarif Oct 22, 2024
25a6231
Feat: Add gsk warning
Core447 Oct 22, 2024
8dc8448
Chore: Fix typo in release notes
Core447 Oct 22, 2024
37be1fa
Chore: Reformat changelog
Core447 Oct 25, 2024
d0fd0e5
Chore: Add release to metainfo
Core447 Oct 25, 2024
5f1d78b
Fix(ActionBase): Fixed using empty list in param for get_asset_path (…
G4PLS Oct 26, 2024
ec67e35
Feat(SearchComboRow): Added new ComboRow with integrated Search, usef…
G4PLS Oct 27, 2024
2b9f75e
Refactor: Move action permission methods into ActionPermissionManager…
Core447 Oct 27, 2024
ef69063
Fix(BackgroundEditor): Not correctly restoring transparent colors
Core447 Oct 27, 2024
1c06967
Feat: Add proper background permission management
Core447 Oct 27, 2024
0023e5c
Fix: Icon preview not updating under runtime 47
Core447 Oct 28, 2024
2766880
Add Stream Deck NEO to udev.rules (#269)
sifmelcara Nov 3, 2024
453119f
Fix(SearchComboRow): Changed instances of ComboRowSearchItem to Searc…
G4PLS Nov 9, 2024
5d17d61
Fix: Horizontal background tile gap too small on SD+
Core447 Nov 9, 2024
5be433f
Fix: Give first action background-control permission per default
Core447 Nov 9, 2024
aa24134
Revert "feat: add ability to use line breaks in labels (#147)" becaus…
Core447 Nov 9, 2024
a098755
Fix: on_update may be called before on_ready
Core447 Nov 12, 2024
3ded70c
Feat(Locales): Updated PluginBase and LocaleManager for minor improve…
G4PLS Nov 13, 2024
393bbcd
Fix: Loading action objects of inputs that don't exists on deck
Core447 Nov 13, 2024
d75f89b
Fix(ActionConfigurator): UI not getting hidden properly (#275)
G4PLS Nov 13, 2024
7ef9c57
Remove sd neo patcher
Core447 Nov 13, 2024
536a793
Fix: Old sd neo patch import
Core447 Nov 13, 2024
5615c94
Chore: Remove old debug prints
Core447 Nov 13, 2024
1b10f86
Update requirements
Core447 Nov 13, 2024
6459b27
Chore: Update changelog
Core447 Nov 13, 2024
c05deee
Feat(GtkHelper): Added a better disconnect function because adding tr…
G4PLS Nov 16, 2024
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 6 additions & 0 deletions GtkHelper/GtkHelper.py
125 changes: 125 additions & 0 deletions GtkHelper/SearchComboRow.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,125 @@
"""
Author: t00m
Year: 2022
Link: https://discourse.gnome.org/t/example-of-gtk-dropdown-with-search-enabled-without-gtk-expression/12748

Modified by: G4PLS

Modified the Original code to fit the purpose of this application.
"""

import gi

gi.require_version("Gtk", "4.0")
gi.require_version("Adw", "1")
from gi.repository import Gtk, Adw, Gio, GObject

from loguru import logger as log

class SearchComboRowItem(GObject.Object):
__gtype_name__ = 'SearchComboRowItem'

def __init__(self, display_label):
super().__init__()
self._display_label = display_label

@GObject.Property
def display_label(self):
return self._display_label

class SearchComboRow(Adw.PreferencesRow):
__gtype_name__ = "SearchComboRow"
__gsignals__ = {
'item-changed': (GObject.SignalFlags.RUN_FIRST, None, (SearchComboRowItem, int,)),
}

def __init__(self, title: str, use_single_line: bool = False, *args, **kwargs):
super().__init__(title=title, *args, **kwargs)
self.search_text = '' # Initial search text for widgets

# Setup DropDown for Widgets
## Create model
self.model_widget = Gio.ListStore(item_type=SearchComboRowItem)
self.sort_model_widget = Gtk.SortListModel(model=self.model_widget) # FIXME: Gtk.Sorter?
self.filter_model_widget = Gtk.FilterListModel(model=self.sort_model_widget)
self.filter_widget = Gtk.CustomFilter.new(self._do_filter_widget_view, self.filter_model_widget)
self.filter_model_widget.set_filter(self.filter_widget)

## Create factory
factory_widget = Gtk.SignalListItemFactory()
factory_widget.connect("setup", self._on_factory_widget_setup)
factory_widget.connect("bind", self._on_factory_widget_bind)

## Create DropDown
self.dropdown = Gtk.DropDown(model=self.filter_model_widget, factory=factory_widget)
self.dropdown.set_enable_search(True)
self.dropdown.connect("notify::selected-item", self._on_selected_widget)

## Get SearchEntry
search_entry_widget = self._get_search_entry_widget(self.dropdown)
search_entry_widget.connect('search-changed', self._on_search_widget_changed)

# Setup main window
if not use_single_line:
self.main_box = Gtk.Box(orientation=Gtk.Orientation.VERTICAL, spacing=12, hexpand=True, vexpand=False)
else:
self.main_box = Gtk.Box(orientation=Gtk.Orientation.HORIZONTAL, spacing=12, hexpand=True, vexpand=False)
self.main_box.props.margin_start = 12
self.main_box.props.margin_end = 12
self.main_box.props.margin_top = 6
self.main_box.props.margin_bottom = 6

self.set_child(self.main_box)
self.label = Gtk.Label(label=title, hexpand=True, xalign=0)
self.main_box.append(self.label)
self.main_box.append(self.dropdown)

def _get_search_entry_widget(self, dropdown):
popover = dropdown.get_last_child()
box = popover.get_child()
box2 = box.get_first_child()
search_entry = box2.get_first_child() # Gtk.SearchEntry
return search_entry

def _on_factory_widget_setup(self, factory, list_item):
box = Gtk.Box(spacing=6, orientation=Gtk.Orientation.HORIZONTAL)
label = Gtk.Label()
box.append(label)
list_item.set_child(box)

def _on_factory_widget_bind(self, factory, list_item):
box = list_item.get_child()
label = box.get_first_child()
widget = list_item.get_item()
label.set_text(widget.display_label)

def _on_selected_widget(self, dropdown, data):
selection = dropdown.get_selected_item()
index = dropdown.get_selected()

if selection and index >= 0:
self.emit("item-changed", selection, index)

def _on_search_widget_changed(self, search_entry):
self.search_text = search_entry.get_text()
self.filter_widget.changed(Gtk.FilterChange.DIFFERENT)

def _do_filter_widget_view(self, item, filter_list_model):
return self.search_text.upper() in item.display_label.upper()

def populate(self, list: list[SearchComboRowItem], selected_index: int = 0):
self.model_widget.remove_all()

for item in list:
self.model_widget.append(item)

self.dropdown.set_selected(selected_index)

def set_selected_item(self, index: int):
if index < 0:
return

try:
self.dropdown.set_selected(index)
except Exception as e:
log.error(e)
3 changes: 2 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,7 @@ StreamController supports the following Elgato Stream Deck models:
- Stream Deck XL
- Stream Deck Pedal
- Stream Deck Plus
- Stream Deck Neo (only the normal buttons)

## Features

Expand Down Expand Up @@ -75,7 +76,7 @@ StreamController is currently in beta. While core features like actions and page

We welcome contributions! Feel free to open pull requests to improve StreamController.

If you're interested in helping with the development of this app, you can contact me on our [Discord server](https://discord.gg/MSyHM8TN3u) to request write access to our [Dev planning board](https://github.com/orgs/StreamController/projects/2). For mor information see [Dev-Planning-Board](Dev-Planning-Board.md).
If you're interested in helping with the development of this app, you can contact me on our [Discord server](https://discord.gg/MSyHM8TN3u) to request write access to our [Dev planning board](https://github.com/orgs/StreamController/projects/2). For more information see [Dev-Planning-Board](Dev-Planning-Board.md).

### Contributors

Expand Down
6 changes: 3 additions & 3 deletions com.core447.StreamController.yml
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
id: com.core447.StreamController
runtime: org.gnome.Platform
runtime-version: '46'
runtime-version: '47'
sdk: org.gnome.Sdk
command: launch.sh

Expand Down Expand Up @@ -56,7 +56,7 @@ modules:
sources:
- type: git
url: https://gitlab.gnome.org/GNOME/libpeas.git
tag: 2.0.2
tag: 2.0.5

- name: libportal
buildsystem: meson
Expand All @@ -70,7 +70,7 @@ modules:
sources:
- type: git
url: https://github.com/flatpak/libportal.git
tag: 0.7.1
tag: 0.8.1

- name: StreamController
buildsystem: simple
Expand Down
125 changes: 87 additions & 38 deletions flatpak/com.core447.StreamController.metainfo.xml
Original file line number Diff line number Diff line change
Expand Up @@ -41,51 +41,99 @@
<url type="bugtracker">https://github.com/StreamController/StreamController/issues</url>
<url type="contribute">https://github.com/StreamController/StreamController</url>
<releases>
<release version="1.5.0-beta.7" date="2024-06-28">
<description translatable="no">
<p>Features:</p>
<ul>
<li>Add Spanish translations</li>
<li>Add option to change the outline color of labels</li>
<li>Add default font for labels</li>
<li>New option to configure default font</li>
<li>Add auto page change for swaywm</li>
<li>Add support for screensaver under Cinnamon</li>
<li>Add ability to use line breaks in labels</li>
<li>Add basic support for the Stream Deck Neo (limited to the normal buttons)</li>
</ul>

<p>Improvements:</p>
<ul>
<li>Use git to download plugins in dev mode</li>
<li>Add link to wiki when no decks are being detected</li>
<li>Update dependencies</li>
</ul>

<release version="1.5.0-beta.6" date="2024-07-02">
<p>Fixes:</p>
<ul>
<li>Crash if label is not a string</li>
<li>Error launching action backend in terminal</li>
<li>Swipes not working for Stream Deck Plus</li>
<li>Error when image size is 0</li>
<li>Error on X11 when decoding the active window</li>
<li>Not blocking action labels and images during screensaver</li>
<li>Not reloading page after plugin uninstall</li>
<li>Error when XDG_CURRENT_DESKTOP is not set</li>
<li>Font weights not stored</li>
<li>Removing action not updating input on active page</li>
<li>Not always uninstalling plugins correctly</li>
<li>Crash when streamdeck-ui has no states key</li>
<li>Registering dial and touch event when used to wake up</li>
<li>Not loading screen brightness from page</li>
<li>Ignoring font styles and weights</li>
<li>Decks not always reconnecting</li>
<li>Error when renaming page to the same name</li>
<li>Keeping old page backups indefinitely</li>
<li>Crash when drag and dropping buttons with actions</li>
<li>Showing "No decks available" in header when no pages are available</li>
<li>No proper background color permission handling</li>
<li>Loading action objects of inputs that aren't available on deck</li>
</ul>
</description>
</release>

<release version="1.5.0-beta.6" date="2024-10-25">
<description translatable="no">
<p>Fixes:</p>
<ul>
<li>Fix: Ignoring choosen brightness for screensaver</li>
<li>Fix: Actions cannot change background color</li>
</ul>
<ul>
<li>Fix: Ignoring choosen brightness for screensaver</li>
<li>Fix: Actions cannot change background color</li>
</ul>
</description>
</release>
</release>

<release version="1.5.0-beta.5" date="2024-06-28">
<description translatable="no">
<p>Features:</p>
<ul>
<li>Add option to add custom stores and plugins</li>
<li>Add options to control which action should control labels and the image</li>
<li>Add state management</li>
<li>Add support for the Stream Deck Plus</li>
<li>Add key hold event</li>
<li>Add EventAssigner</li>
<li>Add auto lock support for KDE</li>
<li>Create page backups before each launch</li>
<li>Add discord link to the onboarding dialog</li>
</ul>
<p>Improvements:</p>
<ul>
<li>Improve store caching</li>
<li>Improve restore from suspend (beta)</li>
<li>Ship icons</li>
<li>Improve deck detection after reconnection</li>
<li>Show progress bar when installing plugins from the onboarding dialog</li>
</ul>
<p>Fixes:</p>
<ul>
<li>Fix: Plugin wide settings get reset on each update</li>
<li>Fix: Potential data loss when saving pages</li>
<li>Allow change of data path in the settings</li>
<li>Fix: Error for non RGB(A) images</li>
<li>Fix: Using user .gitconfig</li>
<li>Fix: misc bugs</li>
</ul>
</description>
</release>
<ul>
<li>Add option to add custom stores and plugins</li>
<li>Add options to control which action should control labels and the image</li>
<li>Add state management</li>
<li>Add support for the Stream Deck Plus</li>
<li>Add key hold event</li>
<li>Add EventAssigner</li>
<li>Add auto lock support for KDE</li>
<li>Create page backups before each launch</li>
<li>Add discord link to the onboarding dialog</li>
</ul>
<p>Improvements:</p>
<ul>
<li>Improve store caching</li>
<li>Improve restore from suspend (beta)</li>
<li>Ship icons</li>
<li>Improve deck detection after reconnection</li>
<li>Show progress bar when installing plugins from the onboarding dialog</li>
</ul>
<p>Fixes:</p>
<ul>
<li>Fix: Plugin wide settings get reset on each update</li>
<li>Fix: Potential data loss when saving pages</li>
<li>Allow change of data path in the settings</li>
<li>Fix: Error for non RGB(A) images</li>
<li>Fix: Using user .gitconfig</li>
<li>Fix: misc bugs</li>
</ul>
</description>
</release>

<release version="1.5.0-beta.4" date="2024-05-07">
<description translatable="no">
<p>Features:</p>
Expand Down Expand Up @@ -424,6 +472,7 @@
<li>Stream Deck XL</li>
<li>Stream Deck Pedal</li>
<li>Stream Deck Plus</li>
<li>Stream Deck Neo (only the normal buttons)</li>
</ul>
</description>

Expand Down
52 changes: 46 additions & 6 deletions globals.py
Loading