Feat(ActionGroup): Added Action Groups by G4PLS · Pull Request #295 · StreamController/StreamController · GitHub
Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
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
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
7 changes: 7 additions & 0 deletions Assets/icons/hicolor/scalable/places/folder-symbolic.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
12 changes: 12 additions & 0 deletions GtkHelper/GtkHelper.py
3 changes: 2 additions & 1 deletion src/backend/PluginManager/ActionHolder.py
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@
You should have received a copy of the GNU General Public License
along with this program. If not, see <https://www.gnu.org/licenses/>.
"""
from copy import deepcopy

# Import own modules
from src.backend.PluginManager.ActionInputSupport import ActionInputSupport
Expand Down Expand Up @@ -72,7 +73,7 @@ def __init__(self,
self.action_name = action_name
self.icon = icon
self.min_app_version = min_app_version
self.action_support = action_support
self.action_support = deepcopy(action_support)

def get_is_compatible(self) -> bool:
if self.min_app_version is not None:
Expand Down
62 changes: 62 additions & 0 deletions src/backend/PluginManager/ActionHolderGroup.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,62 @@
from copy import deepcopy

from src.backend.DeckManagement.InputIdentifier import Input, InputIdentifier
from src.backend.PluginManager.ActionHolder import ActionHolder
from src.backend.PluginManager.ActionInputSupport import ActionInputSupport


class ActionHolderGroup:
def __init__(self, group_name: str, action_holders: list[ActionHolder]):
"""
Args:
group_name: The name of the group.
action_holders: All Action Holders contained in this group.
hide_on_group_support: Hides the Group in the Action Chooser when the Group is not Supported.
group_support: The Support types for the various Input Types.
"""
self._group_name: str = group_name
self._action_holders: set[ActionHolder] = set(action_holders)

def add_action_holder(self, action_holder: ActionHolder):
self._action_holders.add(action_holder)

def add_action_holders(self, action_holders: list[ActionHolder]):
self._action_holders.update(action_holders)

def remove_action_holder(self, action_holder: ActionHolder):
self._action_holders.remove(action_holder)

def remove_action_holders(self, action_holders: list[ActionHolder]):
self._action_holders.difference_update(action_holders)

def get_group_name(self):
return self._group_name

def get_action_holders(self):
return self._action_holders

def get_group_support(self):
return self._group_support

def get_hide_on_group_support(self):
return self._hide_on_group_support

def get_min_input_compatibility(self, action_input_support: InputIdentifier) -> ActionInputSupport:
for action_holder in self._action_holders:
if action_holder.get_input_compatibility(action_input_support) == ActionInputSupport.UNSUPPORTED:
return ActionInputSupport.UNSUPPORTED

for action_holder in self._action_holders:
if action_holder.get_input_compatibility(action_input_support) == ActionInputSupport.UNTESTED:
return ActionInputSupport.UNTESTED

return ActionInputSupport.SUPPORTED


def get_action_holders_with_min_action_input_support(self, action_input_support: ActionInputSupport) -> set[ActionHolder]:
action_holders = set()
for action_holder in self._action_holders:
if action_holder.get_input_compatibility(action_holder.action_id) >= action_input_support:
action_holders.add(action_holder)

return action_holders
17 changes: 17 additions & 0 deletions src/backend/PluginManager/PluginBase.py
Loading