Skip to content
Merged

UI #71

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
13 changes: 13 additions & 0 deletions .idea/deviceManager.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

9 changes: 9 additions & 0 deletions .idea/vcs.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

115 changes: 115 additions & 0 deletions .idea/workspace.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

19 changes: 19 additions & 0 deletions hyperkey_file_opener/pyproject.toml
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
[build-system]
requires = ["setuptools>=68"]
build-backend = "setuptools.build_meta"

[project]
name = "hyperkey-file-opener"
version = "0.1.0"
description = "Flet service used by Hyperkey to open local files through Android FileProvider-backed intents."
requires-python = ">=3.10"
dependencies = ["flet>=0.80.0"]

[tool.flet.extensions.hyperkey_file_opener]
path = "flutter/hyperkey_file_opener"

[tool.setuptools.packages.find]
where = ["src"]

[tool.setuptools.package-data]
"flutter.hyperkey_file_opener" = ["**/*"]
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
library hyperkey_file_opener;

export 'src/extension.dart';
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
import 'package:flet/flet.dart';
import 'package:flutter/widgets.dart';

import 'file_opener_service.dart';

class Extension extends FletExtension {
@override
void ensureInitialized() {}

@override
FletService? createService(Control control) {
switch (control.type) {
case 'HyperkeyFileOpener':
return HyperkeyFileOpenerService(control: control);
default:
return null;
}
}

@override
Widget? createWidget(Key? key, Control control) => null;
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
import 'package:flet/flet.dart';
import 'package:open_filex/open_filex.dart';

class HyperkeyFileOpenerService extends FletService {
HyperkeyFileOpenerService({required super.control});

@override
void init() {
super.init();
control.addInvokeMethodListener(_invokeMethod);
}

Future<dynamic> _invokeMethod(String name, dynamic args) async {
if (name != 'open_file') {
throw Exception('Unknown HyperkeyFileOpener method: $name');
}

final map = Map<String, dynamic>.from(args as Map);
final path = map['path']?.toString();
final mimeType = map['mime_type']?.toString();

if (path == null || path.trim().isEmpty) {
throw Exception('No file path was provided.');
}

final result = await OpenFilex.open(
path,
type: (mimeType == null || mimeType.isEmpty) ? null : mimeType,
);

return {
'result_type': result.type.toString(),
'message': result.message,
};
}

@override
void dispose() {
control.removeInvokeMethodListener(_invokeMethod);
super.dispose();
}
}
14 changes: 14 additions & 0 deletions hyperkey_file_opener/src/flutter/hyperkey_file_opener/pubspec.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
name: hyperkey_file_opener
description: FileProvider-backed external file opener for the Hyperkey Flet app.
version: 0.1.0
publish_to: none

environment:
sdk: '>=3.4.0 <4.0.0'
flutter: '>=3.22.0'

dependencies:
flutter:
sdk: flutter
flet: any
open_filex: ^4.7.0
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
Metadata-Version: 2.4
Name: hyperkey-file-opener
Version: 0.1.0
Summary: Flet service used by Hyperkey to open local files through Android FileProvider-backed intents.
Requires-Python: >=3.10
Requires-Dist: flet>=0.80.0
12 changes: 12 additions & 0 deletions hyperkey_file_opener/src/hyperkey_file_opener.egg-info/SOURCES.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
pyproject.toml
src/flutter/hyperkey_file_opener/pubspec.yaml
src/flutter/hyperkey_file_opener/lib/hyperkey_file_opener.dart
src/flutter/hyperkey_file_opener/lib/src/extension.dart
src/flutter/hyperkey_file_opener/lib/src/file_opener_service.dart
src/hyperkey_file_opener/__init__.py
src/hyperkey_file_opener/file_opener.py
src/hyperkey_file_opener.egg-info/PKG-INFO
src/hyperkey_file_opener.egg-info/SOURCES.txt
src/hyperkey_file_opener.egg-info/dependency_links.txt
src/hyperkey_file_opener.egg-info/requires.txt
src/hyperkey_file_opener.egg-info/top_level.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@

Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
flet>=0.80.0
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
flutter
hyperkey_file_opener
3 changes: 3 additions & 0 deletions hyperkey_file_opener/src/hyperkey_file_opener/__init__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
from .file_opener import HyperkeyFileOpener

__all__ = ["HyperkeyFileOpener"]
17 changes: 17 additions & 0 deletions hyperkey_file_opener/src/hyperkey_file_opener/file_opener.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
from __future__ import annotations

import flet as ft


@ft.control("HyperkeyFileOpener")
class HyperkeyFileOpener(ft.Service):
"""Open local files using the host platform's native file-opening mechanism."""

async def open_file(self, path: str, mime_type: str | None = None):
return await self._invoke_method(
"open_file",
{
"path": path,
"mime_type": mime_type,
},
)
7 changes: 6 additions & 1 deletion pyproject.toml
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,8 @@ dependencies = [
"cycler==0.12.1",
"fonttools==4.63.0",
"flet==0.86.5",
"flet-permission-handler==0.86.5",
"hyperkey-file-opener @ file:///D:/Masters%20of%20computing/Tech%20Launcher/hyperkey/hyperkey-file-opener",
"greenlet==3.5.1",
"kiwisolver==1.5.0",
"Markdown==3.10.3",
Expand All @@ -28,4 +30,7 @@ dependencies = [
]

[tool.flet]
module = "hyperkey"
module = "hyperkey"

[tool.flet.android.permission]
"android.permission.MANAGE_EXTERNAL_STORAGE" = true
24 changes: 4 additions & 20 deletions scripts/workflow.py
Original file line number Diff line number Diff line change
Expand Up @@ -129,7 +129,7 @@ def run_pipeline(
heatmap_arguments = {
"input_path": output_csv,
"output_name": heatmap_output_name,
"dark_mode": dark_mode,
"dark_mode": dark_mode
}

if raw_location_path is not None:
Expand All @@ -144,11 +144,10 @@ def run_pipeline(
# ---------------------------
print("\nRunning visualise_measurement.py ...")
from visualise_measurement import main as measurement_main

measurement_main(
input_path=output_csv,
output_name=spectral_graph_output_name,
dark_mode=dark_mode,
dark_mode=dark_mode
)
completed_stages.append("spectral_graph")
print("visualise_measurement.py completed successfully.")
Expand All @@ -172,30 +171,15 @@ def run_pipeline(
completed_stages.append("outlier_analysis")
print("outlier_analysis.py completed successfully.")
else:
print(
"\nOutlier analysis not requested. "
"Skipping outlier_analysis.py."
)
print("\nOutlier analysis not requested. Skipping outlier_analysis.py.")

# ---------------------------
# 4. Report
# ---------------------------
print("\nRunning report.py ...")
from report import main as report_main

report_main(
dark_mode=dark_mode,
summary_path=summary_path,
report_markdown_path=report_markdown_path,
report_html_path=report_html_path,
report_pdf_path=report_pdf_path,
heatmap_output_name=heatmap_output_name,
spectral_graph_output_name=spectral_graph_output_name,
outlier_output_name=(
outlier_output_name if outlier_analysis else None
),
)

report_main(dark_mode=dark_mode)
completed_stages.append("report")
print("report.py completed successfully.")

Expand Down
Loading
Loading