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
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
79 changes: 79 additions & 0 deletions lib/features/workspace/pages/desktop/workspace_desktop.dart
Original file line number Diff line number Diff line change
@@ -1,11 +1,13 @@
// lib/features/workspace/pages/workspace_desktop.dart (Fully Modified)
import 'package:cookethflow/core/helpers/responsive_layout.helper.dart' as rh;
import 'package:cookethflow/core/providers/supabase_provider.dart';
import 'package:cookethflow/core/utils/enums.dart';
import 'package:cookethflow/features/workspace/pages/canvas_page.dart';
import 'package:cookethflow/features/workspace/providers/canvas_provider.dart';
import 'package:cookethflow/features/workspace/providers/workspace_provider.dart';
import 'package:cookethflow/features/workspace/widgets/export_project_button.dart';
import 'package:cookethflow/features/workspace/widgets/node_editing_toolbox.dart';
import 'package:cookethflow/features/workspace/widgets/sticky_notes.dart';
import 'package:cookethflow/features/workspace/widgets/toolbar.dart';
import 'package:cookethflow/features/workspace/widgets/undo_redo_button.dart';
import 'package:cookethflow/features/workspace/widgets/workspace_drawer.dart';
Expand Down Expand Up @@ -75,6 +77,44 @@ class _WorkspaceDesktopState extends State<WorkspaceDesktop> {
return null;
},
),
StickyNoteIntent: CallbackAction<StickyNoteIntent>(
onInvoke: (intent) {
final provider = Provider.of<SupabaseService>(context, listen: false);
final device = rh.DeviceType.desktop;
_showStickyNote(context, device, provider);
return null;
},
),
ResetIntent: CallbackAction<ResetIntent>(
onInvoke: (intent) {
final canvasProvider = Provider.of<CanvasProvider>(
context,
listen: false,
);
canvasProvider.resetZoom();
return null;
},
),
ZoomInIntent: CallbackAction<ZoomInIntent>(
onInvoke: (intent) {
final canvasProvider = Provider.of<CanvasProvider>(
context,
listen: false,
);
canvasProvider.zoomIn();
return null;
},
),
ZoomOutIntent: CallbackAction<ZoomOutIntent>(
onInvoke: (intent) {
final canvasProvider = Provider.of<CanvasProvider>(
context,
listen: false,
);
canvasProvider.zoomOut();
return null;
},
),
};

return Consumer2<WorkspaceProvider, SupabaseService>(
Expand Down Expand Up @@ -182,4 +222,43 @@ class _WorkspaceDesktopState extends State<WorkspaceDesktop> {
},
);
}

void _showStickyNote(
BuildContext context,
rh.DeviceType device,
SupabaseService su,
) {
final RenderBox? renderBox = context.findRenderObject() as RenderBox?;
if (renderBox != null) {
final position = renderBox.localToGlobal(Offset.zero);
showDialog(
context: context,
barrierColor: Colors.transparent,
builder:
(context) => Stack(
children: [
Positioned.fill(
child: GestureDetector(
onTap: () => Navigator.pop(context),
child: Container(color: Colors.transparent),
),
),
Positioned(
right: device == rh.DeviceType.mobile ? position.dx : 150.w,
top:
device == rh.DeviceType.desktop
? 500.h
: device == rh.DeviceType.tab
? 500.h
: position.dy - 390.h,
child: Material(
color: Colors.transparent,
child: StickyNotesWidget(su: su),
),
),
],
),
);
}
}
}
15 changes: 12 additions & 3 deletions lib/features/workspace/widgets/workspace_shortcuts.dart
Original file line number Diff line number Diff line change
Expand Up @@ -2,20 +2,29 @@
import 'package:flutter/material.dart';
import 'package:flutter/services.dart';


// define intents
class PointerIntent extends Intent {}

class PanIntent extends Intent {}

class TextIntent extends Intent {}

class StickyNoteIntent extends Intent {}

class ResetIntent extends Intent {}

class ZoomInIntent extends Intent {}

class ZoomOutIntent extends Intent {}

// define shortcuts

final Map<LogicalKeySet, Intent> workspaceShortCut = {
LogicalKeySet(LogicalKeyboardKey.keyP): PointerIntent(),
LogicalKeySet(LogicalKeyboardKey.keyA): PanIntent(),
LogicalKeySet(LogicalKeyboardKey.keyT): TextIntent(),
LogicalKeySet(LogicalKeyboardKey.keyS): StickyNoteIntent(),
LogicalKeySet(LogicalKeyboardKey.keyR): ResetIntent(),
LogicalKeySet(LogicalKeyboardKey.keyZ): ZoomInIntent(),
LogicalKeySet(LogicalKeyboardKey.keyX): ZoomOutIntent(),
};


Loading