WARNING: THIS SITE IS A MIRROR OF GITHUB.COM / IT CANNOT LOGIN OR REGISTER ACCOUNTS / THE CONTENTS ARE PROVIDED AS-IS / THIS SITE ASSUMES NO RESPONSIBILITY FOR ANY DISPLAYED CONTENT OR LINKS / IF YOU FOUND SOMETHING MAY NOT GOOD FOR EVERYONE, CONTACT ADMIN AT ilovescratch@foxmail.com
Skip to content

Commit 4337dfe

Browse files
authored
Merge pull request #36 from swarno-tech/rewrite
new keyboard shortcuts
2 parents 6e0b121 + e698602 commit 4337dfe

File tree

2 files changed

+91
-3
lines changed

2 files changed

+91
-3
lines changed

lib/features/workspace/pages/desktop/workspace_desktop.dart

Lines changed: 79 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,13 @@
11
// lib/features/workspace/pages/workspace_desktop.dart (Fully Modified)
2+
import 'package:cookethflow/core/helpers/responsive_layout.helper.dart' as rh;
23
import 'package:cookethflow/core/providers/supabase_provider.dart';
34
import 'package:cookethflow/core/utils/enums.dart';
45
import 'package:cookethflow/features/workspace/pages/canvas_page.dart';
56
import 'package:cookethflow/features/workspace/providers/canvas_provider.dart';
67
import 'package:cookethflow/features/workspace/providers/workspace_provider.dart';
78
import 'package:cookethflow/features/workspace/widgets/export_project_button.dart';
89
import 'package:cookethflow/features/workspace/widgets/node_editing_toolbox.dart';
10+
import 'package:cookethflow/features/workspace/widgets/sticky_notes.dart';
911
import 'package:cookethflow/features/workspace/widgets/toolbar.dart';
1012
import 'package:cookethflow/features/workspace/widgets/undo_redo_button.dart';
1113
import 'package:cookethflow/features/workspace/widgets/workspace_drawer.dart';
@@ -75,6 +77,44 @@ class _WorkspaceDesktopState extends State<WorkspaceDesktop> {
7577
return null;
7678
},
7779
),
80+
StickyNoteIntent: CallbackAction<StickyNoteIntent>(
81+
onInvoke: (intent) {
82+
final provider = Provider.of<SupabaseService>(context, listen: false);
83+
final device = rh.DeviceType.desktop;
84+
_showStickyNote(context, device, provider);
85+
return null;
86+
},
87+
),
88+
ResetIntent: CallbackAction<ResetIntent>(
89+
onInvoke: (intent) {
90+
final canvasProvider = Provider.of<CanvasProvider>(
91+
context,
92+
listen: false,
93+
);
94+
canvasProvider.resetZoom();
95+
return null;
96+
},
97+
),
98+
ZoomInIntent: CallbackAction<ZoomInIntent>(
99+
onInvoke: (intent) {
100+
final canvasProvider = Provider.of<CanvasProvider>(
101+
context,
102+
listen: false,
103+
);
104+
canvasProvider.zoomIn();
105+
return null;
106+
},
107+
),
108+
ZoomOutIntent: CallbackAction<ZoomOutIntent>(
109+
onInvoke: (intent) {
110+
final canvasProvider = Provider.of<CanvasProvider>(
111+
context,
112+
listen: false,
113+
);
114+
canvasProvider.zoomOut();
115+
return null;
116+
},
117+
),
78118
};
79119

80120
return Consumer2<WorkspaceProvider, SupabaseService>(
@@ -182,4 +222,43 @@ class _WorkspaceDesktopState extends State<WorkspaceDesktop> {
182222
},
183223
);
184224
}
225+
226+
void _showStickyNote(
227+
BuildContext context,
228+
rh.DeviceType device,
229+
SupabaseService su,
230+
) {
231+
final RenderBox? renderBox = context.findRenderObject() as RenderBox?;
232+
if (renderBox != null) {
233+
final position = renderBox.localToGlobal(Offset.zero);
234+
showDialog(
235+
context: context,
236+
barrierColor: Colors.transparent,
237+
builder:
238+
(context) => Stack(
239+
children: [
240+
Positioned.fill(
241+
child: GestureDetector(
242+
onTap: () => Navigator.pop(context),
243+
child: Container(color: Colors.transparent),
244+
),
245+
),
246+
Positioned(
247+
right: device == rh.DeviceType.mobile ? position.dx : 150.w,
248+
top:
249+
device == rh.DeviceType.desktop
250+
? 500.h
251+
: device == rh.DeviceType.tab
252+
? 500.h
253+
: position.dy - 390.h,
254+
child: Material(
255+
color: Colors.transparent,
256+
child: StickyNotesWidget(su: su),
257+
),
258+
),
259+
],
260+
),
261+
);
262+
}
263+
}
185264
}

lib/features/workspace/widgets/workspace_shortcuts.dart

Lines changed: 12 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,20 +2,29 @@
22
import 'package:flutter/material.dart';
33
import 'package:flutter/services.dart';
44

5-
65
// define intents
76
class PointerIntent extends Intent {}
87

98
class PanIntent extends Intent {}
109

1110
class TextIntent extends Intent {}
1211

12+
class StickyNoteIntent extends Intent {}
13+
14+
class ResetIntent extends Intent {}
15+
16+
class ZoomInIntent extends Intent {}
17+
18+
class ZoomOutIntent extends Intent {}
19+
1320
// define shortcuts
1421

1522
final Map<LogicalKeySet, Intent> workspaceShortCut = {
1623
LogicalKeySet(LogicalKeyboardKey.keyP): PointerIntent(),
1724
LogicalKeySet(LogicalKeyboardKey.keyA): PanIntent(),
1825
LogicalKeySet(LogicalKeyboardKey.keyT): TextIntent(),
26+
LogicalKeySet(LogicalKeyboardKey.keyS): StickyNoteIntent(),
27+
LogicalKeySet(LogicalKeyboardKey.keyR): ResetIntent(),
28+
LogicalKeySet(LogicalKeyboardKey.keyZ): ZoomInIntent(),
29+
LogicalKeySet(LogicalKeyboardKey.keyX): ZoomOutIntent(),
1930
};
20-
21-

0 commit comments

Comments
 (0)