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
2 changes: 1 addition & 1 deletion Assets/images/Attribution.txt
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
- multi_action.png & error.png:
- multi_action.png & error.png & archive.png:
- source: fonts.google.com
- licence: Apache License 2.0
- licence_link: https://www.apache.org/licenses/LICENSE-2.0
Binary file added Assets/images/archive.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
5 changes: 5 additions & 0 deletions flatpak/com.core447.StreamController.metainfo.xml
Original file line number Diff line number Diff line change
Expand Up @@ -35,6 +35,11 @@
<url type="contribute">https://github.com/StreamController/StreamController</url>

<releases>
<release version="1.2.1-beta" date="2024-03-27">
<description translatable="no">
<p>Bugfixes</p>
</description>
</release>
<release version="1.2.0-beta" date="2024-03-27">
<description translatable="no">
<p>First beta release</p>
Expand Down
1 change: 0 additions & 1 deletion flatpak/launch.sh
Original file line number Diff line number Diff line change
@@ -1,4 +1,3 @@
#!/bin/bash
export GDK_BACKEND="wayland"
cd /app/bin/StreamController
python3 /app/bin/StreamController/main.py "$@"
2 changes: 1 addition & 1 deletion globals.py
Original file line number Diff line number Diff line change
Expand Up @@ -43,7 +43,7 @@
dekstop_grabber: "DesktopGrabber" = None


app_version: str = "1.2.0-beta" # In breaking.feature.fix-state format
app_version: str = "1.2.1-beta" # In breaking.feature.fix-state format
exact_app_version_check: bool = False
argparser: argparse.ArgumentParser = None
logs: list[str] = []
Expand Down
11 changes: 10 additions & 1 deletion locales/de_DE.json
Original file line number Diff line number Diff line change
Expand Up @@ -94,6 +94,7 @@
"asset-chooser.custom.browse-files.dialog.title": "Dateien auswählen",
"asset-chooser.custom.browse-files.dialog.select-button": "Auswählen",
"background-editor.header": "Hintergrund",
"asset-chooser.add-more-button.label": "Mehr hinzufügen",
"background-editor-expander.subtitle": "Hintergrund für diese Taste",
"background-editor.color.label": "Farbe",
"background-editor.color.dialog.title": "Hintergrundfarbe auswählen",
Expand Down Expand Up @@ -128,5 +129,13 @@
"store.page.loading-spinner.label": "Lädt",
"settings.performance.cache-videos.title": "Videos cachen",
"settings.performance.cache-videos.subtitle": "Wird nach einem Neustart angewandt",
"settings.performance.cache-videos.tooltip": "Aktivieren um Videos auf dem Computer zu cachen. Dies kann zu großem Arbeitsspeicherverbrauch führen"
"settings.performance.cache-videos.tooltip": "Aktivieren um Videos auf dem Computer zu cachen. Dies kann zu großem Arbeitsspeicherverbrauch führen",
"permissions-window.title": "Berechtigungen",
"permissions-window.mark-solved": "Als gelöst markieren",
"permissions-window.close": "Schließen",
"permissions-window.flatpak-detected": "Flatpak erkannt",
"permissions-window.description": "Manche Berechtigungen werden von Flathub aus Sichenheitsgründen eingeschräntk. Um eine reibungslose Erfahrung mit den Plugins zu gewährliesten, ist es empfolhen die dbus Berechtigungen mit folgendem Befehlt anzupassen:",
"permissions-window.copy-tooltip": "Kopieren",
"permissions-window.info-beginning": "Für mehr Informationen zu Berechtigungen von Flatpaks, besuche die ",
"permissions-window.flatpak-docs": "Flatpak Dokmentation"
}
11 changes: 10 additions & 1 deletion locales/en_US.json
Original file line number Diff line number Diff line change
Expand Up @@ -94,6 +94,7 @@
"asset-chooser.custom.browse-files": "Browse Files",
"asset-chooser.custom.browse-files.dialog.title": "Select Files",
"asset-chooser.custom.browse-files.dialog.select-button": "Select",
"asset-chooser.add-more-button.label": "Add More",
"background-editor.header": "Background",
"background-editor-expander.subtitle": "Background for this key",
"background-editor.color.label": "Color",
Expand Down Expand Up @@ -129,5 +130,13 @@
"store.page.loading-spinner.label": "Loading",
"settings.performance.cache-videos.title": "Cache Videos",
"settings.performance.cache-videos.subtitle": "Only applies to new videos or after a restart",
"settings.performance.cache-videos.tooltip": "Enabling this will cache videos on your computer. This might cause high memory usage."
"settings.performance.cache-videos.tooltip": "Enabling this will cache videos on your computer. This might cause high memory usage.",
"permissions-window.title": "Permissions",
"permissions-window.mark-solved": "Mark As Solved",
"permissions-window.close": "Close",
"permissions-window.flatpak-detected": "Flatpak detected",
"permissions-window.description": "Certain default permissions are restricted by Flathub for security reasons. To enhance your experience with plugins, consider adjusting the dbus permissions by running the following command in your terminal:",
"permissions-window.copy-tooltip": "Copy",
"permissions-window.info-beginning": "For more information on Flatpak permissions, visit the ",
"permissions-window.flatpak-docs": "Flatpak documentation"
}
11 changes: 11 additions & 0 deletions src/app.py
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,7 @@
from src.windows.Store.Store import Store
from src.windows.Shortcuts.Shortcuts import ShortcutsWindow
from src.windows.Onboarding.OnboardingWindow import OnboardingWindow
from src.windows.Permissions.Permissions import PermissionsWindow

# Import globals
import globals as gl
Expand All @@ -55,6 +56,7 @@ def on_activate(self, app):
self.main_win.present()

self.show_onboarding()
self.show_permissions()

self.shortcuts = ShortcutsWindow(app=app, application=app)
# self.shortcuts.present()
Expand Down Expand Up @@ -85,6 +87,15 @@ def show_onboarding(self):
with open(os.path.join(gl.DATA_PATH, ".skip-onboarding"), "w") as f:
f.write("")

def show_permissions(self):
if os.path.exists(os.path.join(gl.DATA_PATH, ".skip-permissions")):
return
self.permissions = PermissionsWindow(application=self, main_window=self.main_win)
if hasattr(self, "onboarding"):
if self.onboarding.is_visible():
return
self.permissions.present()

def on_quit(self, *args):
log.info("Quitting...")

Expand Down
8 changes: 8 additions & 0 deletions src/windows/Onboarding/OnboardingWindow.py
Original file line number Diff line number Diff line change
Expand Up @@ -35,6 +35,8 @@ def __init__(self, application, main_win: "MainWindow"):
self.set_transient_for(main_win)
self.set_modal(True)
self.set_default_size(700, 700)

self.connect("close-request", self.on_close)

self.build()

Expand Down Expand Up @@ -109,6 +111,11 @@ def on_page_changed(self, carousel: Adw.Carousel, page_index: int) -> None:
else:
self.forward_button.set_visible(False)

def on_close(self, *args, **kwargs):
self.destroy()
if hasattr(gl.app, "permissions"):
gl.app.permissions.present()

class OnboardingScreen(Gtk.Box):
def __init__(self, image_file: str, label: str, detail: str):
super().__init__(orientation=Gtk.Orientation.VERTICAL, hexpand=True)
Expand Down Expand Up @@ -151,4 +158,5 @@ def build(self):
def on_start_button_click(self, button):
self.onboarding_window.close()
self.onboarding_window.destroy()
self.onboarding_window.on_close()
gl.app.main_win.show()
116 changes: 116 additions & 0 deletions src/windows/Permissions/Permissions.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,116 @@
"""
Author: Core447
Year: 2024

This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
any later version.

This programm comes with ABSOLUTELY NO WARRANTY!

You should have received a copy of the GNU General Public License
along with this program. If not, see <https://www.gnu.org/licenses/>.
"""
import os
import pyclip

# Import gtk modules
import gi

gi.require_version("Gtk", "4.0")
gi.require_version("Adw", "1")
from gi.repository import Gtk, Adw, Pango, GdkPixbuf

# Import globals
import globals as gl

# Import typing
from typing import TYPE_CHECKING
if TYPE_CHECKING:
from windows.mainWindow.mainWindow import MainWindow


class PermissionsWindow(Gtk.ApplicationWindow):
def __init__(self, application, main_window: "MainWindow"):
super().__init__(application=application)
self.set_title("Permissions")
self.set_transient_for(main_window)
self.set_modal(True)
self.set_default_size(700, 700)

self.command = "flatpak override --user --socket=session-bus com.core447.StreamController"
self.flatpak_docs_link = "https://docs.flatpak.org/en/latest/sandbox-permissions.html"

self.build()

def build(self):
self.header = Adw.HeaderBar(css_classes=["flat"])
self.set_titlebar(self.header)

self.overlay = Gtk.Overlay()
self.set_child(self.overlay)

self.mark_solved_button = Gtk.Button(label=gl.lm.get("permissions-window.mark-solved"), css_classes=["suggested-action"],
halign=Gtk.Align.END, valign=Gtk.Align.END,
margin_bottom=10, margin_end=10)
self.mark_solved_button.connect("clicked", self.on_mark_solved)
self.overlay.add_overlay(self.mark_solved_button)

self.close_button = Gtk.Button(label=gl.lm.get("permissions-window.close"), css_classes=["destructive-action"],
halign=Gtk.Align.START, valign=Gtk.Align.END,
margin_bottom=10, margin_start=10)
self.close_button.connect("clicked", self.on_close)
self.overlay.add_overlay(self.close_button)


self.main_box = Gtk.Box(orientation=Gtk.Orientation.VERTICAL,
margin_start=15, margin_end=15)
self.overlay.set_child(self.main_box)

self.image = Gtk.Image(file=os.path.join("Assets", "images", "archive.png"), css_classes=["permissions-window-icon"],
margin_top=20, margin_bottom=10)
self.main_box.append(self.image)

## Labels
self.content_box = Gtk.Box(orientation=Gtk.Orientation.VERTICAL)
self.main_box.append(self.content_box)

self.header = Gtk.Label(label="Flatpak detected", css_classes=["permissions-window-header"],
margin_bottom=25)
self.content_box.append(self.header)

self.description = Gtk.Label(label=gl.lm.get("permissions-window.description"),
wrap=True, wrap_mode=Pango.WrapMode.WORD, justify=Gtk.Justification.CENTER)
self.content_box.append(self.description)

self.command_box = Gtk.Box(orientation=Gtk.Orientation.HORIZONTAL, css_classes=["linked"], halign=Gtk.Align.CENTER,
margin_top=40)
self.content_box.append(self.command_box)

self.command_label = Gtk.Label(label=self.command, css_classes=["permissions-window-command"],
overflow=Gtk.Overflow.HIDDEN)
self.command_box.append(self.command_label)

self.copy_button = Gtk.Button(icon_name="edit-copy", css_classes=["permissions-window-copy"],
tooltip_text=gl.lm.get("permissions-window.copy-tooltip"))
self.copy_button.connect("clicked", self.on_copy)
self.command_box.append(self.copy_button)

self.content_box.append(Gtk.Box(vexpand=True)) # Move info label to the bottom

self.more_infos_label = Gtk.Label(label=f'{gl.lm.get("permissions-window.info-beginning")}<a href="{self.flatpak_docs_link}">{gl.lm.get("permissions-window.flatpak-docs")}</a>', use_markup=True,
margin_bottom=60)
self.content_box.append(self.more_infos_label)


def on_copy(self, button):
pyclip.copy(self.command)

def on_mark_solved(self, button):
with open(os.path.join(gl.DATA_PATH, ".skip-permissions"), "w") as f:
f.write("")
self.destroy()

def on_close(self, button):
self.destroy()
Original file line number Diff line number Diff line change
Expand Up @@ -52,8 +52,11 @@ def build(self):
self.scrolled_window = Gtk.ScrolledWindow(hexpand=True, vexpand=True)
self.append(self.scrolled_window)

self.main_box = Gtk.Box(orientation=Gtk.Orientation.VERTICAL, hexpand=True, vexpand=True, margin_top=4, margin_start=25, margin_end=25)
self.scrolled_window.set_child(self.main_box)
self.clamp = Adw.Clamp()
self.scrolled_window.set_child(self.clamp)

self.main_box = Gtk.Box(orientation=Gtk.Orientation.VERTICAL, hexpand=True, vexpand=True, margin_top=4)
self.clamp.set_child(self.main_box)

self.nav_box = Gtk.Box(orientation=Gtk.Orientation.HORIZONTAL, hexpand=True)
self.main_box.append(self.nav_box)
Expand Down Expand Up @@ -106,7 +109,7 @@ def on_search_changed(self, search_entry):

class OpenStoreButton(Gtk.Button):
def __init__(self, *args, **kwargs):
super().__init__(label="Get More", css_classes=["open-store-button"],
super().__init__(label=gl.lm.get("asset-chooser.add-more-button.label"), css_classes=["open-store-button"],
*args, **kwargs)
self.connect("clicked", self.on_click)

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -36,8 +36,11 @@ def build(self):
self.scrolled_window = Gtk.ScrolledWindow(hexpand=True, vexpand=True, margin_end=4)
self.append(self.scrolled_window)

self.main_box = Gtk.Box(orientation=Gtk.Orientation.VERTICAL, hexpand=True, vexpand=True, margin_top=4, margin_start=25, margin_end=25)
self.scrolled_window.set_child(self.main_box)
self.clamp = Adw.Clamp()
self.scrolled_window.set_child(self.clamp)

self.main_box = Gtk.Box(orientation=Gtk.Orientation.VERTICAL, hexpand=True, vexpand=True, margin_top=4)
self.clamp.set_child(self.main_box)

self.nav_box = Gtk.Box(orientation=Gtk.Orientation.HORIZONTAL, hexpand=True)
self.main_box.append(self.nav_box)
Expand Down
16 changes: 16 additions & 0 deletions style.css
Original file line number Diff line number Diff line change
Expand Up @@ -331,4 +331,20 @@

.header-page-dropdown {
max-width: 50px;
}

.permissions-window-header {
font-size: 40px;
font-weight: bold;
}
.permissions-window-icon {
min-width: 250px;
min-height: 250px;
}
.permissions-window-command {
border-top-left-radius: 6px;
border-bottom-left-radius: 6px;
background-color: rgba(255, 255, 255, 0.1);
padding-left: 10px;
padding-right: 10px;
}