From 827d9edb4f2bf5ba65e14bb920206f3a8715a5bb Mon Sep 17 00:00:00 2001 From: Bryan Gerlach Date: Tue, 10 Dec 2024 17:10:58 -0600 Subject: [PATCH] feature: cycle monitors on toolbar --- .github/workflows/generator-windows.yml | 59 +++++++++++++++++++++++++ rdgenerator/forms.py | 4 +- rdgenerator/templates/generator.html | 1 + rdgenerator/views.py | 2 + 4 files changed, 65 insertions(+), 1 deletion(-) diff --git a/.github/workflows/generator-windows.yml b/.github/workflows/generator-windows.yml index f9996fb..85a7ad6 100644 --- a/.github/workflows/generator-windows.yml +++ b/.github/workflows/generator-windows.yml @@ -352,6 +352,65 @@ jobs: run: | sed -i -e '/if !key.is_empty() && !token.is_empty() {/,/}/d' ./src/client.rs + - name: add cycle monitors to toolbar + continue-on-error: true + if: fromJson(inputs.extras).cycleMonitor == 'true' + shell: bash + run: | + #add cycle monitor button to ./flutter/lib/desktop/widgets/remote_toolbar.dart + new_code="class _CycleMonitorMenu extends StatelessWidget { + final String id; + final FFI ffi; + + const _CycleMonitorMenu({ + Key? key, + required this.id, + required this.ffi, + }) : super(key: key); + + @override + Widget build(BuildContext context) { + final pi = ffi.ffiModel.pi; + + //for (int i = 0; i < pi.displays.length; i++) { + return TextButton( + onPressed: () { + RxInt display = CurrentDisplayState.find(id); + display.value = display.value + 1; + if (display.value >= pi.displays.length) { + display.value = 0; + } + openMonitorInTheSameTab(display.value, ffi, pi); + pi.currentDisplay = display.value; + }, + child: Stack(children: [ + Container( + child: Align( + alignment: Alignment.center, + child: const Icon( + Icons.personal_video, + color: _ToolbarTheme.blueColor, + size: 20.0, + ))), + Container( + child: Align( + alignment: Alignment(0.0, -0.4), + child: Text( + ' ${CurrentDisplayState.find(id).value + 1}/${pi.displays.length}', + style: const TextStyle( + color: _ToolbarTheme.blueColor, fontSize: 8), + ))), + ]), + ); + } + }" + echo $new_code >> ./flutter/lib/desktop/widgets/remote_toolbar.dart + sed -i '/_buildDraggable(context),/a\\ \ \ \ \ \ \ \ _CycleMonitorMenu(id: widget.id, ffi: widget.ffi),' ./flutter/lib/desktop/widgets/remote_toolbar.dart + sed -i '/dragging: _dragging,/a\\ \ \ \ \ \ \ \ \ \ \ \ \ \ ffi: widget.ffi,' ./flutter/lib/desktop/widgets/remote_toolbar.dart + sed -i '/final SessionID sessionId;/a\\ \ final FFI ffi;' ./flutter/lib/desktop/widgets/remote_toolbar.dart + sed -i '/required this.sessionId,/a\\ \ \ \ required this.ffi,' ./flutter/lib/desktop/widgets/remote_toolbar.dart + + - name: run as admin continue-on-error: true if: ${{ fromJson(inputs.extras).runasadmin == 'true' }} diff --git a/rdgenerator/forms.py b/rdgenerator/forms.py index 415770a..913e627 100644 --- a/rdgenerator/forms.py +++ b/rdgenerator/forms.py @@ -65,4 +65,6 @@ class GenerateForm(forms.Form): removeWallpaper = forms.BooleanField(initial=True, required=False) defaultManual = forms.CharField(widget=forms.Textarea, required=False) - overrideManual = forms.CharField(widget=forms.Textarea, required=False) \ No newline at end of file + overrideManual = forms.CharField(widget=forms.Textarea, required=False) + + cycleMonitor = forms.BooleanField(initial=False, required=False) \ No newline at end of file diff --git a/rdgenerator/templates/generator.html b/rdgenerator/templates/generator.html index d3b7c63..811dbbb 100644 --- a/rdgenerator/templates/generator.html +++ b/rdgenerator/templates/generator.html @@ -214,6 +214,7 @@ {{ form.defaultManual }}


{{ form.overrideManual }}

+
diff --git a/rdgenerator/views.py b/rdgenerator/views.py index 5422daa..e6d7adf 100644 --- a/rdgenerator/views.py +++ b/rdgenerator/views.py @@ -23,6 +23,7 @@ def generator_view(request): platform = form.cleaned_data['platform'] version = form.cleaned_data['version'] delayFix = form.cleaned_data['delayFix'] + cycleMonitor = form.cleaned_data['cycleMonitor'] server = form.cleaned_data['serverIP'] key = form.cleaned_data['key'] apiServer = form.cleaned_data['apiServer'] @@ -155,6 +156,7 @@ def generator_view(request): extras['delayFix'] = 'true' if delayFix else 'false' extras['version'] = version extras['rdgen'] = 'true' + extras['cycleMonitor'] = 'true' if cycleMonitor else 'false' extra_input = json.dumps(extras) ####from here run the github action, we need user, repo, access token.