Splendid keyboard detector

This commit is contained in:
mr 2024-07-17 17:45:39 +02:00
parent dce96e338c
commit bef7f65363
14 changed files with 171 additions and 114 deletions

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

Binary file not shown.

Binary file not shown.

View File

@ -1,94 +1,65 @@
# ninja log v5 # ninja log v5
3 5620 0 /home/mr/Documents/OC/oc-front/linux/flutter/ephemeral/flutter_linux/flutter_linux.h df34b103123784f1 3 5644 0 /home/mr/Documents/OC/oc-front/linux/flutter/ephemeral/flutter_linux/fl_method_call.h df34b103123784f1
3 5620 0 /home/mr/Documents/OC/oc-front/linux/flutter/ephemeral/libflutter_linux_gtk.so df34b103123784f1 3 5644 0 /home/mr/Documents/OC/oc-front/linux/flutter/ephemeral/flutter_linux/fl_plugin_registry.h df34b103123784f1
3 5620 0 /home/mr/Documents/OC/oc-front/linux/flutter/ephemeral/flutter_linux/fl_json_message_codec.h df34b103123784f1 3 5644 0 /home/mr/Documents/OC/oc-front/linux/flutter/ephemeral/flutter_linux/fl_string_codec.h df34b103123784f1
3 5620 0 /home/mr/Documents/OC/oc-front/linux/flutter/ephemeral/flutter_linux/fl_value.h df34b103123784f1 4 320 1721230626649119048 plugins/super_native_extensions/_phony_ 74762aee97d0d662
7479 7597 1720190160043160828 plugins/irondash_engine_context/libirondash_engine_context_plugin.so a89d3772b0fb0935
3 327 1721215469796069705 plugins/super_native_extensions/libsuper_native_extensions.so 74762aee97d0d662
3 5620 0 /home/mr/Documents/OC/oc-front/linux/flutter/ephemeral/flutter_linux/fl_json_method_codec.h df34b103123784f1
6214 6367 0 CMakeFiles/install.util 558f353ee1373233
3 5620 0 /home/mr/Documents/OC/oc-front/linux/flutter/ephemeral/flutter_linux/fl_binary_messenger.h df34b103123784f1
3 5620 0 /home/mr/Documents/OC/oc-front/linux/flutter/ephemeral/flutter_linux/fl_standard_method_codec.h df34b103123784f1
3 5620 0 /home/mr/Documents/OC/oc-front/linux/flutter/ephemeral/flutter_linux/fl_view.h df34b103123784f1
3 5620 0 flutter/_phony_ df34b103123784f1
3 5620 0 /home/mr/Documents/OC/oc-front/linux/flutter/ephemeral/flutter_linux/fl_plugin_registry.h df34b103123784f1
3 5620 0 /home/mr/Documents/OC/oc-front/linux/flutter/ephemeral/flutter_linux/fl_method_call.h df34b103123784f1
3 5620 0 /home/mr/Documents/OC/oc-front/linux/flutter/ephemeral/flutter_linux/fl_string_codec.h df34b103123784f1
5895 6038 1720171596542283915 plugins/desktop_window/libdesktop_window_plugin.so 26c8f2b838605d38 5895 6038 1720171596542283915 plugins/desktop_window/libdesktop_window_plugin.so 26c8f2b838605d38
3 327 1721215469796069705 plugins/super_native_extensions/_phony_ 74762aee97d0d662 3 5644 0 flutter/_phony_ df34b103123784f1
5622 5746 1721215475232069858 plugins/super_native_extensions/libsuper_native_extensions_plugin.so 87d9259f3dbf9022 3 5644 0 /home/mr/Documents/OC/oc-front/linux/flutter/ephemeral/flutter_linux/fl_json_method_codec.h df34b103123784f1
5621 6066 1721215475548069867 CMakeFiles/oc_front.dir/my_application.cc.o 3fd042b328f87769 3 5644 0 /home/mr/Documents/OC/oc-front/linux/flutter/ephemeral/flutter_linux/fl_method_channel.h df34b103123784f1
3 5620 0 /home/mr/Documents/OC/oc-front/linux/flutter/ephemeral/flutter_linux/fl_basic_message_channel.h df34b103123784f1 3 5644 0 /home/mr/Documents/OC/oc-front/linux/flutter/ephemeral/flutter_linux/fl_engine.h df34b103123784f1
3 5620 0 /home/mr/Documents/OC/oc-front/linux/flutter/ephemeral/flutter_linux/fl_method_codec.h df34b103123784f1 3 5644 0 /home/mr/Documents/OC/oc-front/linux/flutter/ephemeral/flutter_linux/fl_dart_project.h df34b103123784f1
13608 16421 1720171474184250688 plugins/desktop_window/CMakeFiles/desktop_window_plugin.dir/desktop_window_plugin.cc.o 259dba9caad978aa 13608 16421 1720171474184250688 plugins/desktop_window/CMakeFiles/desktop_window_plugin.dir/desktop_window_plugin.cc.o 259dba9caad978aa
3 5620 0 /home/mr/Documents/OC/oc-front/linux/flutter/ephemeral/flutter_linux/fl_engine.h df34b103123784f1 3 5644 0 /home/mr/Documents/OC/oc-front/linux/flutter/ephemeral/flutter_linux/fl_binary_messenger.h df34b103123784f1
3 5620 0 /home/mr/Documents/OC/oc-front/linux/flutter/ephemeral/flutter_linux/fl_dart_project.h df34b103123784f1 6240 6392 0 CMakeFiles/install.util 558f353ee1373233
7221 7661 1720190160103160034 CMakeFiles/oc_front.dir/main.cc.o b1d36a8b3fb9d7f7 7221 7661 1720190160103160034 CMakeFiles/oc_front.dir/main.cc.o b1d36a8b3fb9d7f7
3 5620 0 /home/mr/Documents/OC/oc-front/linux/flutter/ephemeral/flutter_linux/fl_plugin_registrar.h df34b103123784f1 3 5644 0 /home/mr/Documents/OC/oc-front/linux/flutter/ephemeral/flutter_linux/fl_method_response.h df34b103123784f1
6105 7479 1720190159919162468 plugins/irondash_engine_context/CMakeFiles/irondash_engine_context_plugin.dir/irondash_engine_context_plugin.cc.o 439d26d301366f5a 3 5644 0 /home/mr/Documents/OC/oc-front/linux/flutter/ephemeral/libflutter_linux_gtk.so df34b103123784f1
3 5620 0 /home/mr/Documents/OC/oc-front/linux/flutter/ephemeral/flutter_linux/fl_standard_message_codec.h df34b103123784f1 3 5644 0 /home/mr/Documents/OC/oc-front/linux/flutter/ephemeral/flutter_linux/fl_json_message_codec.h df34b103123784f1
3 5620 0 /home/mr/Documents/OC/oc-front/linux/flutter/ephemeral/flutter_linux/fl_binary_codec.h df34b103123784f1 3 5644 0 /home/mr/Documents/OC/oc-front/linux/flutter/ephemeral/flutter_linux/flutter_linux.h df34b103123784f1
5644 6116 1721230632457031904 CMakeFiles/oc_front.dir/my_application.cc.o 3fd042b328f87769
3 5644 0 /home/mr/Documents/OC/oc-front/linux/flutter/ephemeral/flutter_linux/fl_basic_message_channel.h df34b103123784f1
3 5644 0 /home/mr/Documents/OC/oc-front/linux/flutter/ephemeral/flutter_linux/fl_method_codec.h df34b103123784f1
3 5644 0 /home/mr/Documents/OC/oc-front/linux/flutter/ephemeral/flutter_linux/fl_standard_method_codec.h df34b103123784f1
3 5644 0 /home/mr/Documents/OC/oc-front/linux/flutter/ephemeral/flutter_linux/fl_view.h df34b103123784f1
4 320 1721230626649119048 plugins/super_native_extensions/libsuper_native_extensions.so 74762aee97d0d662
6116 6240 1721230632585029984 intermediates_do_not_run/oc_front 4e630cc1de7b670a
3 5644 0 /home/mr/Documents/OC/oc-front/linux/flutter/ephemeral/flutter_linux/fl_binary_codec.h df34b103123784f1
7223 7702 1720190160147159452 plugins/super_native_extensions/CMakeFiles/super_native_extensions_plugin.dir/super_native_extensions_plugin.cc.o e4e228e87b2f98cc 7223 7702 1720190160147159452 plugins/super_native_extensions/CMakeFiles/super_native_extensions_plugin.dir/super_native_extensions_plugin.cc.o e4e228e87b2f98cc
5622 6049 1721215475532069867 CMakeFiles/oc_front.dir/flutter/generated_plugin_registrant.cc.o 79b3e2ad61c9feb4 5645 6080 1721230632425032384 CMakeFiles/oc_front.dir/flutter/generated_plugin_registrant.cc.o 79b3e2ad61c9feb4
3 5620 0 /home/mr/Documents/OC/oc-front/linux/flutter/ephemeral/flutter_linux/fl_message_codec.h df34b103123784f1 3 5644 0 /home/mr/Documents/OC/oc-front/linux/flutter/ephemeral/flutter_linux/fl_message_codec.h df34b103123784f1
3 5620 0 /home/mr/Documents/OC/oc-front/linux/flutter/ephemeral/flutter_linux/fl_method_response.h df34b103123784f1 6105 7479 1720190159919162468 plugins/irondash_engine_context/CMakeFiles/irondash_engine_context_plugin.dir/irondash_engine_context_plugin.cc.o 439d26d301366f5a
3 5620 0 /home/mr/Documents/OC/oc-front/linux/flutter/ephemeral/flutter_linux/fl_method_channel.h df34b103123784f1 3 5644 0 /home/mr/Documents/OC/oc-front/linux/flutter/ephemeral/flutter_linux/fl_standard_message_codec.h df34b103123784f1
6066 6214 1721215475700069871 intermediates_do_not_run/oc_front 4e630cc1de7b670a 3 5644 0 /home/mr/Documents/OC/oc-front/linux/flutter/ephemeral/flutter_linux/fl_plugin_registrar.h df34b103123784f1
3 320 1721215554232072088 plugins/super_native_extensions/libsuper_native_extensions.so 74762aee97d0d662 7479 7597 1720190160043160828 plugins/irondash_engine_context/libirondash_engine_context_plugin.so a89d3772b0fb0935
3 320 1721215554232072088 plugins/super_native_extensions/_phony_ 74762aee97d0d662 3 5644 0 /home/mr/Documents/OC/oc-front/linux/flutter/ephemeral/flutter_linux/fl_value.h df34b103123784f1
3 6113 0 /home/mr/Documents/OC/oc-front/linux/flutter/ephemeral/libflutter_linux_gtk.so df34b103123784f1 5645 5781 1721230632125036886 plugins/super_native_extensions/libsuper_native_extensions_plugin.so 87d9259f3dbf9022
3 6113 0 /home/mr/Documents/OC/oc-front/linux/flutter/ephemeral/flutter_linux/fl_basic_message_channel.h df34b103123784f1 3 326 1721231108669887541 plugins/super_native_extensions/libsuper_native_extensions.so 74762aee97d0d662
3 6113 0 /home/mr/Documents/OC/oc-front/linux/flutter/ephemeral/flutter_linux/fl_binary_codec.h df34b103123784f1 3 326 1721231108669887541 plugins/super_native_extensions/_phony_ 74762aee97d0d662
3 6113 0 /home/mr/Documents/OC/oc-front/linux/flutter/ephemeral/flutter_linux/fl_binary_messenger.h df34b103123784f1 3 5916 0 /home/mr/Documents/OC/oc-front/linux/flutter/ephemeral/libflutter_linux_gtk.so df34b103123784f1
3 6113 0 /home/mr/Documents/OC/oc-front/linux/flutter/ephemeral/flutter_linux/fl_dart_project.h df34b103123784f1 3 5916 0 /home/mr/Documents/OC/oc-front/linux/flutter/ephemeral/flutter_linux/fl_basic_message_channel.h df34b103123784f1
3 6113 0 /home/mr/Documents/OC/oc-front/linux/flutter/ephemeral/flutter_linux/fl_engine.h df34b103123784f1 3 5916 0 /home/mr/Documents/OC/oc-front/linux/flutter/ephemeral/flutter_linux/fl_binary_codec.h df34b103123784f1
3 6113 0 /home/mr/Documents/OC/oc-front/linux/flutter/ephemeral/flutter_linux/fl_json_message_codec.h df34b103123784f1 3 5916 0 /home/mr/Documents/OC/oc-front/linux/flutter/ephemeral/flutter_linux/fl_binary_messenger.h df34b103123784f1
3 6113 0 /home/mr/Documents/OC/oc-front/linux/flutter/ephemeral/flutter_linux/fl_json_method_codec.h df34b103123784f1 3 5916 0 /home/mr/Documents/OC/oc-front/linux/flutter/ephemeral/flutter_linux/fl_dart_project.h df34b103123784f1
3 6113 0 /home/mr/Documents/OC/oc-front/linux/flutter/ephemeral/flutter_linux/fl_message_codec.h df34b103123784f1 3 5916 0 /home/mr/Documents/OC/oc-front/linux/flutter/ephemeral/flutter_linux/fl_engine.h df34b103123784f1
3 6113 0 /home/mr/Documents/OC/oc-front/linux/flutter/ephemeral/flutter_linux/fl_method_call.h df34b103123784f1 3 5916 0 /home/mr/Documents/OC/oc-front/linux/flutter/ephemeral/flutter_linux/fl_json_message_codec.h df34b103123784f1
3 6113 0 /home/mr/Documents/OC/oc-front/linux/flutter/ephemeral/flutter_linux/fl_method_channel.h df34b103123784f1 3 5916 0 /home/mr/Documents/OC/oc-front/linux/flutter/ephemeral/flutter_linux/fl_json_method_codec.h df34b103123784f1
3 6113 0 /home/mr/Documents/OC/oc-front/linux/flutter/ephemeral/flutter_linux/fl_method_codec.h df34b103123784f1 3 5916 0 /home/mr/Documents/OC/oc-front/linux/flutter/ephemeral/flutter_linux/fl_message_codec.h df34b103123784f1
3 6113 0 /home/mr/Documents/OC/oc-front/linux/flutter/ephemeral/flutter_linux/fl_method_response.h df34b103123784f1 3 5916 0 /home/mr/Documents/OC/oc-front/linux/flutter/ephemeral/flutter_linux/fl_method_call.h df34b103123784f1
3 6113 0 /home/mr/Documents/OC/oc-front/linux/flutter/ephemeral/flutter_linux/fl_plugin_registrar.h df34b103123784f1 3 5916 0 /home/mr/Documents/OC/oc-front/linux/flutter/ephemeral/flutter_linux/fl_method_channel.h df34b103123784f1
3 6113 0 /home/mr/Documents/OC/oc-front/linux/flutter/ephemeral/flutter_linux/fl_plugin_registry.h df34b103123784f1 3 5916 0 /home/mr/Documents/OC/oc-front/linux/flutter/ephemeral/flutter_linux/fl_method_codec.h df34b103123784f1
3 6113 0 /home/mr/Documents/OC/oc-front/linux/flutter/ephemeral/flutter_linux/fl_standard_message_codec.h df34b103123784f1 3 5916 0 /home/mr/Documents/OC/oc-front/linux/flutter/ephemeral/flutter_linux/fl_method_response.h df34b103123784f1
3 6113 0 /home/mr/Documents/OC/oc-front/linux/flutter/ephemeral/flutter_linux/fl_standard_method_codec.h df34b103123784f1 3 5916 0 /home/mr/Documents/OC/oc-front/linux/flutter/ephemeral/flutter_linux/fl_plugin_registrar.h df34b103123784f1
3 6113 0 /home/mr/Documents/OC/oc-front/linux/flutter/ephemeral/flutter_linux/fl_string_codec.h df34b103123784f1 3 5916 0 /home/mr/Documents/OC/oc-front/linux/flutter/ephemeral/flutter_linux/fl_plugin_registry.h df34b103123784f1
3 6113 0 /home/mr/Documents/OC/oc-front/linux/flutter/ephemeral/flutter_linux/fl_value.h df34b103123784f1 3 5916 0 /home/mr/Documents/OC/oc-front/linux/flutter/ephemeral/flutter_linux/fl_standard_message_codec.h df34b103123784f1
3 6113 0 /home/mr/Documents/OC/oc-front/linux/flutter/ephemeral/flutter_linux/fl_view.h df34b103123784f1 3 5916 0 /home/mr/Documents/OC/oc-front/linux/flutter/ephemeral/flutter_linux/fl_standard_method_codec.h df34b103123784f1
3 6113 0 /home/mr/Documents/OC/oc-front/linux/flutter/ephemeral/flutter_linux/flutter_linux.h df34b103123784f1 3 5916 0 /home/mr/Documents/OC/oc-front/linux/flutter/ephemeral/flutter_linux/fl_string_codec.h df34b103123784f1
3 6113 0 flutter/_phony_ df34b103123784f1 3 5916 0 /home/mr/Documents/OC/oc-front/linux/flutter/ephemeral/flutter_linux/fl_value.h df34b103123784f1
6114 6242 1721215560168072256 plugins/super_native_extensions/libsuper_native_extensions_plugin.so 87d9259f3dbf9022 3 5916 0 /home/mr/Documents/OC/oc-front/linux/flutter/ephemeral/flutter_linux/fl_view.h df34b103123784f1
6114 6536 1721215560460072264 CMakeFiles/oc_front.dir/flutter/generated_plugin_registrant.cc.o 79b3e2ad61c9feb4 3 5916 0 /home/mr/Documents/OC/oc-front/linux/flutter/ephemeral/flutter_linux/flutter_linux.h df34b103123784f1
6113 6565 1721215560488072265 CMakeFiles/oc_front.dir/my_application.cc.o 3fd042b328f87769 3 5916 0 flutter/_phony_ df34b103123784f1
6565 6722 1721215560648072269 intermediates_do_not_run/oc_front 4e630cc1de7b670a 5919 6044 1721231114401801556 plugins/super_native_extensions/libsuper_native_extensions_plugin.so 87d9259f3dbf9022
6722 6876 0 CMakeFiles/install.util 558f353ee1373233 5918 6335 1721231114689797236 CMakeFiles/oc_front.dir/flutter/generated_plugin_registrant.cc.o 79b3e2ad61c9feb4
5 338 1721215575260072682 plugins/super_native_extensions/libsuper_native_extensions.so 74762aee97d0d662 5917 6380 1721231114733796575 CMakeFiles/oc_front.dir/my_application.cc.o 3fd042b328f87769
5 338 1721215575260072682 plugins/super_native_extensions/_phony_ 74762aee97d0d662 6380 6517 1721231114873794475 intermediates_do_not_run/oc_front 4e630cc1de7b670a
4 5478 0 /home/mr/Documents/OC/oc-front/linux/flutter/ephemeral/libflutter_linux_gtk.so df34b103123784f1 6517 6648 0 CMakeFiles/install.util 558f353ee1373233
4 5478 0 /home/mr/Documents/OC/oc-front/linux/flutter/ephemeral/flutter_linux/fl_basic_message_channel.h df34b103123784f1
4 5478 0 /home/mr/Documents/OC/oc-front/linux/flutter/ephemeral/flutter_linux/fl_binary_codec.h df34b103123784f1
4 5478 0 /home/mr/Documents/OC/oc-front/linux/flutter/ephemeral/flutter_linux/fl_binary_messenger.h df34b103123784f1
4 5478 0 /home/mr/Documents/OC/oc-front/linux/flutter/ephemeral/flutter_linux/fl_dart_project.h df34b103123784f1
4 5478 0 /home/mr/Documents/OC/oc-front/linux/flutter/ephemeral/flutter_linux/fl_engine.h df34b103123784f1
4 5478 0 /home/mr/Documents/OC/oc-front/linux/flutter/ephemeral/flutter_linux/fl_json_message_codec.h df34b103123784f1
4 5478 0 /home/mr/Documents/OC/oc-front/linux/flutter/ephemeral/flutter_linux/fl_json_method_codec.h df34b103123784f1
4 5478 0 /home/mr/Documents/OC/oc-front/linux/flutter/ephemeral/flutter_linux/fl_message_codec.h df34b103123784f1
4 5478 0 /home/mr/Documents/OC/oc-front/linux/flutter/ephemeral/flutter_linux/fl_method_call.h df34b103123784f1
4 5478 0 /home/mr/Documents/OC/oc-front/linux/flutter/ephemeral/flutter_linux/fl_method_channel.h df34b103123784f1
4 5478 0 /home/mr/Documents/OC/oc-front/linux/flutter/ephemeral/flutter_linux/fl_method_codec.h df34b103123784f1
4 5478 0 /home/mr/Documents/OC/oc-front/linux/flutter/ephemeral/flutter_linux/fl_method_response.h df34b103123784f1
4 5478 0 /home/mr/Documents/OC/oc-front/linux/flutter/ephemeral/flutter_linux/fl_plugin_registrar.h df34b103123784f1
4 5478 0 /home/mr/Documents/OC/oc-front/linux/flutter/ephemeral/flutter_linux/fl_plugin_registry.h df34b103123784f1
4 5478 0 /home/mr/Documents/OC/oc-front/linux/flutter/ephemeral/flutter_linux/fl_standard_message_codec.h df34b103123784f1
4 5478 0 /home/mr/Documents/OC/oc-front/linux/flutter/ephemeral/flutter_linux/fl_standard_method_codec.h df34b103123784f1
4 5478 0 /home/mr/Documents/OC/oc-front/linux/flutter/ephemeral/flutter_linux/fl_string_codec.h df34b103123784f1
4 5478 0 /home/mr/Documents/OC/oc-front/linux/flutter/ephemeral/flutter_linux/fl_value.h df34b103123784f1
4 5478 0 /home/mr/Documents/OC/oc-front/linux/flutter/ephemeral/flutter_linux/fl_view.h df34b103123784f1
4 5478 0 /home/mr/Documents/OC/oc-front/linux/flutter/ephemeral/flutter_linux/flutter_linux.h df34b103123784f1
4 5478 0 flutter/_phony_ df34b103123784f1
5479 5633 1721215580572072832 plugins/super_native_extensions/libsuper_native_extensions_plugin.so 87d9259f3dbf9022
5479 5922 1721215580860072840 CMakeFiles/oc_front.dir/flutter/generated_plugin_registrant.cc.o 79b3e2ad61c9feb4
5479 5950 1721215580888072841 CMakeFiles/oc_front.dir/my_application.cc.o 3fd042b328f87769
5950 6100 1721215581036072845 intermediates_do_not_run/oc_front 4e630cc1de7b670a
6100 6243 0 CMakeFiles/install.util 558f353ee1373233

View File

@ -11,7 +11,7 @@ import 'package:oc_front/models/search.dart';
import 'package:oc_front/pages/abstract_page.dart'; import 'package:oc_front/pages/abstract_page.dart';
import 'package:oc_front/widgets/dialog/new_box.dart'; import 'package:oc_front/widgets/dialog/new_box.dart';
import 'package:oc_front/widgets/items/item_row.dart'; import 'package:oc_front/widgets/items/item_row.dart';
Dashboard dash = Dashboard(name: "workflow_${DateTime.now().toString().replaceAll(" ", "_").substring(0, DateTime.now().toString().length - 7)}");
class WorkflowFactory implements AbstractFactory { class WorkflowFactory implements AbstractFactory {
static GlobalKey<WorkflowPageWidgetState> key = GlobalKey<WorkflowPageWidgetState>(); static GlobalKey<WorkflowPageWidgetState> key = GlobalKey<WorkflowPageWidgetState>();
@override bool searchFill() { return false; } @override bool searchFill() { return false; }
@ -54,10 +54,10 @@ final WorflowService _service = WorflowService();
} }
@override Widget build(BuildContext context) { @override Widget build(BuildContext context) {
var quart = MediaQuery.of(context).size.width / 6; var quart = MediaQuery.of(context).size.width / 6;
dash.defaultName = "workflow_${DateTime.now().toString().replaceAll(" ", "_").substring(0, DateTime.now().toString().length - 7)}";
return FlowChart<AbstractItem>( return FlowChart<AbstractItem>(
onDashboardAlertOpened: onDashboardAlertOpened, onDashboardAlertOpened: onDashboardAlertOpened,
dashboard: Dashboard( dashboard: dash,
name: "workflow_${DateTime.now().toString().replaceAll(" ", "_").substring(0, DateTime.now().toString().length - 7)}"),
itemWidget: itemBuild, itemWidget: itemBuild,
categories: const ["computing", "data", "datacenter", "storage"], categories: const ["computing", "data", "datacenter", "storage"],
draggableItemBuilder: (cat) => WorkspaceLocal.byTopic(cat).toList(), draggableItemBuilder: (cat) => WorkspaceLocal.byTopic(cat).toList(),
@ -78,6 +78,6 @@ final WorflowService _service = WorflowService();
onHandlerPressed: (context, position, handler, element) { }, onHandlerPressed: (context, position, handler, element) { },
onHandlerLongPressed: (context, position, handler, element) { }, onHandlerLongPressed: (context, position, handler, element) { },
onPivotSecondaryPressed: (context, pivot) { }, onPivotSecondaryPressed: (context, pivot) { },
); );
} }
} }

View File

@ -41,9 +41,11 @@ class NewBoxWidgetState<T extends SerializerDeserializer<dynamic>> extends State
child: Text(widget._selected.toString()), child: Text(widget._selected.toString()),
)); ));
} }
return SizedBox( width: 400, height: 50, child: DropdownButtonFormField( return SizedBox( width: MediaQuery.of(context).size.width <= 540 ? MediaQuery.of(context).size.width - 140 : 400, height: 50,
child: DropdownButtonFormField(
value: widget._selected, value: widget._selected,
hint: const Text("select workflow to load...", style: TextStyle(color: Colors.grey, fontSize: 15)), isExpanded: true,
hint: const Text("load workflow...", style: TextStyle(color: Colors.grey, fontSize: 15)),
decoration: InputDecoration( decoration: InputDecoration(
filled: true, filled: true,
focusedBorder: const OutlineInputBorder( borderRadius: BorderRadius.zero, focusedBorder: const OutlineInputBorder( borderRadius: BorderRadius.zero,
@ -105,9 +107,12 @@ class NewBoxWidgetState<T extends SerializerDeserializer<dynamic>> extends State
children: [ children: [
Container( Container(
margin: const EdgeInsets.only(top: 10), margin: const EdgeInsets.only(top: 10),
width: 450, width: MediaQuery.of(context).size.width <= 540 ? MediaQuery.of(context).size.width - 90 : 450,
height: 50, height: 50,
child: TextFormField( child: TextFormField(
expands: true,
maxLines: null,
minLines: null,
cursorColor: const Color.fromARGB(38, 166, 154, 1), cursorColor: const Color.fromARGB(38, 166, 154, 1),
controller: widget._ctrl, controller: widget._ctrl,
onChanged: (value) => setState(() { widget._ctrl.value = TextEditingValue(text: value); }), onChanged: (value) => setState(() { widget._ctrl.value = TextEditingValue(text: value); }),
@ -116,7 +121,7 @@ class NewBoxWidgetState<T extends SerializerDeserializer<dynamic>> extends State
hintText: "name a new workflow...", hintText: "name a new workflow...",
fillColor: Colors.grey.shade300, fillColor: Colors.grey.shade300,
filled: true, filled: true,
contentPadding: const EdgeInsets.symmetric(horizontal: 30, vertical: 20), contentPadding: const EdgeInsets.only(left: 30, right: 30, top: 15, bottom: 5),
hintStyle: const TextStyle( hintStyle: const TextStyle(
color: Colors.black, color: Colors.black,
fontSize: 14, fontSize: 14,

View File

@ -2,6 +2,7 @@
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:flutter/services.dart'; import 'package:flutter/services.dart';
import 'package:flutter/foundation.dart'; import 'package:flutter/foundation.dart';
import 'package:flutter_flow_chart/flutter_flow_chart.dart';
import 'package:flutter_flow_chart/src/dashboard.dart'; import 'package:flutter_flow_chart/src/dashboard.dart';
import 'package:flutter_flow_chart/src/elements/flow_element.dart'; import 'package:flutter_flow_chart/src/elements/flow_element.dart';
import 'package:flutter_flow_chart/src/flow_chart_menu.dart'; import 'package:flutter_flow_chart/src/flow_chart_menu.dart';
@ -160,7 +161,7 @@ class HoverMenuController {
currentState?.hideSubMenu(); currentState?.hideSubMenu();
} }
} }
bool isPopUp = false;
class HoverMenu extends StatefulWidget { class HoverMenu extends StatefulWidget {
final Widget title; final Widget title;
final double? width; final double? width;
@ -275,6 +276,7 @@ class HoverMenuState extends State<HoverMenu> {
} }
} }
var node = FocusNode();
class FlowChartState<T extends Object> extends State<FlowChart> { class FlowChartState<T extends Object> extends State<FlowChart> {
List<Draggable<T>> getDraggable(List<T> items) { List<Draggable<T>> getDraggable(List<T> items) {
List<Draggable<T>> res = []; List<Draggable<T>> res = [];
@ -285,6 +287,7 @@ class FlowChartState<T extends Object> extends State<FlowChart> {
// Data is the value this Draggable stores. // Data is the value this Draggable stores.
data: e, data: e,
onDragStarted: () => hoverKey.currentState?.hideSubMenu(), onDragStarted: () => hoverKey.currentState?.hideSubMenu(),
onDragEnd: (d) => node.requestFocus(),
childWhenDragging: Opacity(opacity: .5, childWhenDragging: Opacity(opacity: .5,
child: Padding( padding: const EdgeInsets.all(10), child: Padding( padding: const EdgeInsets.all(10),
child: Container( height: realSize - 20, child: widget.itemWidget(e) ))), child: Container( height: realSize - 20, child: widget.itemWidget(e) ))),
@ -300,7 +303,8 @@ class FlowChartState<T extends Object> extends State<FlowChart> {
) )
) ))); ) )));
} }
if (!widget.dashboard.isOpened && widget.onDashboardAlertOpened != null) { if (!widget.dashboard.isOpened && widget.onDashboardAlertOpened != null && isPopUp == false) {
isPopUp = true;
widget.dashboard.isOpened = true; widget.dashboard.isOpened = true;
Future.delayed(Duration(milliseconds: 1), () => showDialog( Future.delayed(Duration(milliseconds: 1), () => showDialog(
barrierDismissible: false, barrierDismissible: false,
@ -317,6 +321,12 @@ class FlowChartState<T extends Object> extends State<FlowChart> {
return res; return res;
} }
@override
void initState() {
node.requestFocus();
super.initState();
}
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
/// get dashboard position after first frame is drawn /// get dashboard position after first frame is drawn
@ -370,7 +380,68 @@ class FlowChartState<T extends Object> extends State<FlowChart> {
)) ))
); );
} }
return ClipRect( return KeyboardListener(
focusNode: node,
onKeyEvent: (event) {
if ((event is KeyDownEvent || event is KeyRepeatEvent) && event.logicalKey == LogicalKeyboardKey.arrowUp) {
for (var el in widget.dashboard.elements) {
if (el.isSelected) {
el.position = Offset(el.position.dx, el.position.dy - 10);
}
}
}
if ((event is KeyDownEvent || event is KeyRepeatEvent) && event.logicalKey == LogicalKeyboardKey.arrowDown) {
for (var el in widget.dashboard.elements) {
if (el.isSelected) {
el.position = Offset(el.position.dx, el.position.dy + 10);
}
}
}
if ((event is KeyDownEvent || event is KeyRepeatEvent) && event.logicalKey == LogicalKeyboardKey.arrowLeft) {
for (var el in widget.dashboard.elements) {
if (el.isSelected) {
el.position = Offset(el.position.dx - 10, el.position.dy);
}
}
}
if ((event is KeyDownEvent || event is KeyRepeatEvent) && event.logicalKey == LogicalKeyboardKey.arrowRight) {
for (var el in widget.dashboard.elements) {
if (el.isSelected) {
el.position = Offset(el.position.dx + 10, el.position.dy);
}
}
}
if (event is KeyDownEvent && event.logicalKey == LogicalKeyboardKey.add) {
for (var el in widget.dashboard.elementSelected) {
widget.dashboard.elements.add(FlowElement(
id: const Uuid().v4(),
position: el.position + const Offset(100, 100),
size: el.size,
text: el.text,
widget: el.widget,
kind: el.kind,
handlers: el.handlers,
handlerSize: el.handlerSize,
));
}
}
if (event is KeyDownEvent && event.logicalKey == LogicalKeyboardKey.delete) {
widget.dashboard.elements.removeWhere( (el) => el.isSelected );
for (var arrow in widget.dashboard.arrowsSelected) {
for (var el in widget.dashboard.elements.where((element) => element.id == arrow.fromID.split("_")[0])) {
el.next.removeAt(int.parse(arrow.fromID.split("_")[1]));
}
}
widget.dashboard.arrows.removeWhere( (el) => el.isSelected );
}
DrawingArrow.instance.notifyListeners();
widget.dashboard.chartKey.currentState?.setState(() { });
Future.delayed(Duration(milliseconds: 10), () {
node.requestFocus();
});
},
child: ClipRect(
child: Stack( child: Stack(
clipBehavior: Clip.none, clipBehavior: Clip.none,
children: [ children: [
@ -434,7 +505,7 @@ class FlowChartState<T extends Object> extends State<FlowChart> {
child: SingleChildScrollView( child: Column( children: menuItems ) ) child: SingleChildScrollView( child: Column( children: menuItems ) )
)) : Container(), )) : Container(),
]) ])
); ));
} }
} }
@ -637,6 +708,10 @@ class ChartWidgetState extends State<ChartWidget> {
final gridKey = GlobalKey(); final gridKey = GlobalKey();
var tapDownPos = Offset.zero; var tapDownPos = Offset.zero;
var secondaryTapDownPos = Offset.zero; var secondaryTapDownPos = Offset.zero;
for (int i = 0; i < widget.dashboard.elements.length; i++)
widget.dashboard.elements[i].next.removeWhere((element) =>
widget.dashboard.findElementIndexById(element.destElementId) < 0
);
return Stack( children: [ return Stack( children: [
Positioned.fill( Positioned.fill(
child: GestureDetector( child: GestureDetector(
@ -650,10 +725,11 @@ class ChartWidgetState extends State<ChartWidget> {
for (var sel in widget.dashboard.elements) { for (var sel in widget.dashboard.elements) {
sel.isSelected = false; sel.isSelected = false;
} }
Future.delayed(Duration(seconds: 1), () { Future.delayed(Duration(milliseconds: 100), () {
widget.dashboard.selectedMenuKey.currentState?.setState(() {}); widget.dashboard.selectedMenuKey.currentState?.setState(() {});
DrawingArrow.instance.notifyListeners(); DrawingArrow.instance.notifyListeners();
}); });
} }
} }
if (!hoverImportant) { if (!hoverImportant) {
@ -792,9 +868,11 @@ class ChartWidgetState extends State<ChartWidget> {
element, element,
), ),
), ),
// Draw arrows // Draw arrows
for (int i = 0; i < widget.dashboard.elements.length; i++) for (int i = 0; i < widget.dashboard.elements.length; i++)
for (int n = 0; n < widget.dashboard.elements[i].next.length; n++)
for (int n = 0; n < widget.dashboard.elements[i].next.length; n++)
DrawArrow( DrawArrow(
flow: this, flow: this,
key: UniqueKey(), key: UniqueKey(),
@ -831,6 +909,6 @@ class ChartWidgetState extends State<ChartWidget> {
dashboard: widget.dashboard, height: MediaQuery.of(context).size.height - 100) dashboard: widget.dashboard, height: MediaQuery.of(context).size.height - 100)
) : Container() ) : Container()
], ],
); );
} }
} }

View File

@ -17,6 +17,7 @@ class FlowChartMenu extends StatefulWidget {
} }
class FlowChartMenuState extends State<FlowChartMenu> { class FlowChartMenuState extends State<FlowChartMenu> {
@override Widget build(BuildContext context) { @override Widget build(BuildContext context) {
bool isLow = MediaQuery.of(context).size.width < 600;
GlobalKey<FormFieldState> zoomKey = GlobalKey<FormFieldState>(); GlobalKey<FormFieldState> zoomKey = GlobalKey<FormFieldState>();
return Container( // SHORTCUT return Container( // SHORTCUT
width: widget.width, width: widget.width,
@ -33,6 +34,7 @@ class FlowChartMenuState extends State<FlowChartMenu> {
Padding( padding: EdgeInsets.only(right: 15), Padding( padding: EdgeInsets.only(right: 15),
child: InkWell( mouseCursor: SystemMouseCursors.click, child: InkWell( mouseCursor: SystemMouseCursors.click,
onTap: () { onTap: () {
widget.dashboard.defaultName = "graph_${DateTime.now().toString().replaceAll(" ", "_").substring(0, DateTime.now().toString().length - 7)}";
showDialog( showDialog(
barrierDismissible: false, barrierDismissible: false,
context: context, builder: (context) { context: context, builder: (context) {
@ -189,7 +191,7 @@ class FlowChartMenuState extends State<FlowChartMenu> {
], ],
) )
),)), ),)),
Container( isLow ? Container() : Container(
decoration: BoxDecoration( decoration: BoxDecoration(
border: Border(right: BorderSide(color: Colors.white, width: 1)) border: Border(right: BorderSide(color: Colors.white, width: 1))
), ),
@ -232,9 +234,10 @@ class FlowChartMenuState extends State<FlowChartMenu> {
color: !widget.dashboard.canForward() ? Colors.grey.shade300 : Colors.white))), color: !widget.dashboard.canForward() ? Colors.grey.shade300 : Colors.white))),
])), ])),
Padding( child: Text("file opened : ${widget.dashboard.name}", overflow: TextOverflow.ellipsis, Expanded(
style: TextStyle(color: Colors.white, fontSize: 14), textAlign: TextAlign.center), child: Padding( child: Text("file opened : ${widget.dashboard.name}", overflow: TextOverflow.ellipsis,
padding: EdgeInsets.symmetric(horizontal: 20)), style: TextStyle(color: Colors.white, fontSize: 14), textAlign: TextAlign.start),
padding: EdgeInsets.symmetric(horizontal: 20))),
])), ])),
]) ])
); );