Skip to content
This repository has been archived by the owner on Sep 20, 2024. It is now read-only.

Commit

Permalink
feat(MarkdownToolbar): Add shortcuts
Browse files Browse the repository at this point in the history
  • Loading branch information
iakdis committed Mar 21, 2023
1 parent 6c6a48d commit 7aa7f0e
Show file tree
Hide file tree
Showing 4 changed files with 66 additions and 11 deletions.
25 changes: 16 additions & 9 deletions lib/src/pages/editing_page.dart
Original file line number Diff line number Diff line change
Expand Up @@ -537,6 +537,7 @@ class EditingPageState extends State<EditingPage> with WindowListener {
Consumer<FileNavigationProvider>(
builder: (context, value, _) {
return MarkdownToolbar(
key: context.watch<EditingProvider>().markdownToolbarKey,
useIncludedTextField: false,
controller: value.controller,
focusNode: focusNodeTextField,
Expand All @@ -550,22 +551,28 @@ class EditingPageState extends State<EditingPage> with WindowListener {
dropdownTextColor: Theme.of(context).colorScheme.primary,
headingTooltip:
Localization.appLocalizations().tooltipHeading,
boldTooltip: Localization.appLocalizations().tooltipBold,
italicTooltip: Localization.appLocalizations().tooltipItalic,
boldTooltip:
'${Localization.appLocalizations().tooltipBold} [Ctrl+B]',
italicTooltip:
'${Localization.appLocalizations().tooltipItalic} [Ctrl+I]',
strikethroughTooltip:
Localization.appLocalizations().tooltipStrikethrough,
linkTooltip: Localization.appLocalizations().tooltipLink,
imageTooltip: Localization.appLocalizations().tooltipImage,
codeTooltip: Localization.appLocalizations().tooltipCode,
linkTooltip:
'${Localization.appLocalizations().tooltipLink} [Ctrl+K]',
imageTooltip:
'${Localization.appLocalizations().tooltipImage} [Ctrl+P]',
codeTooltip:
'${Localization.appLocalizations().tooltipCode} [Ctrl+E]',
bulletedListTooltip:
Localization.appLocalizations().tooltipBulletedList,
'${Localization.appLocalizations().tooltipBulletedList} [Ctrl+Shift+8]',
numberedListTooltip:
Localization.appLocalizations().tooltipNumberedList,
'${Localization.appLocalizations().tooltipNumberedList} [Ctrl+Shift+7]',
checkboxTooltip:
Localization.appLocalizations().tooltipCheckbox,
quoteTooltip: Localization.appLocalizations().tooltipQuote,
quoteTooltip:
'${Localization.appLocalizations().tooltipQuote} [Ctrl+.]',
horizontalRuleTooltip:
Localization.appLocalizations().tooltipHorizontalRule,
'${Localization.appLocalizations().tooltipHorizontalRule} [Ctrl+Shift+H]',
);
},
),
Expand Down
5 changes: 5 additions & 0 deletions lib/src/provider/editing/editing_provider.dart
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
import 'package:buhocms/src/utils/preferences.dart';
import 'package:flutter/material.dart';
import 'package:markdown_toolbar/markdown_toolbar.dart';

import '../../pages/editing_page.dart';

Expand All @@ -8,6 +9,10 @@ class EditingProvider extends ChangeNotifier {
GlobalKey<EditingPageState>();
GlobalKey<EditingPageState> get editingPageKey => _editingPageKey;

final GlobalKey<MarkdownToolbarState> _markdownToolbarKey =
GlobalKey<MarkdownToolbarState>();
GlobalKey<MarkdownToolbarState> get markdownToolbarKey => _markdownToolbarKey;

bool _isGUIMode = false;

bool get isGUIMode {
Expand Down
6 changes: 4 additions & 2 deletions lib/src/widgets/menu_bar.dart
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
import 'package:buhocms/src/widgets/shortcuts.dart';
import 'package:buhocms/src/widgets/snackbar.dart';
import 'package:flutter/material.dart';
import 'package:flutter/services.dart';
Expand Down Expand Up @@ -341,8 +342,9 @@ class _CustomMenuBarState extends State<CustomMenuBar> {
),
];
_shortcutsEntry?.dispose();
_shortcutsEntry =
ShortcutRegistry.of(context).addAll(MenuEntry.shortcuts(result));
_shortcutsEntry = ShortcutRegistry.of(context).addAll(
MenuEntry.shortcuts(result)..addAll(markdownToolbarShortcuts(context)));

return result;
}

Expand Down
41 changes: 41 additions & 0 deletions lib/src/widgets/shortcuts.dart
Original file line number Diff line number Diff line change
@@ -1,4 +1,45 @@
import 'package:flutter/material.dart';
import 'package:flutter/services.dart';
import 'package:provider/provider.dart';

import '../provider/editing/editing_provider.dart';

Map<MenuSerializableShortcut, Intent> markdownToolbarShortcuts(
BuildContext context) {
final markdownToolbarShortcuts = <MenuSerializableShortcut, Intent>{};
final markdownToolbarState =
context.read<EditingProvider>().markdownToolbarKey.currentState;

markdownToolbarShortcuts.addEntries([
MapEntry(const SingleActivator(LogicalKeyboardKey.keyB, control: true),
VoidCallbackIntent(() => markdownToolbarState?.onBoldPressed())),
MapEntry(const SingleActivator(LogicalKeyboardKey.keyI, control: true),
VoidCallbackIntent(() => markdownToolbarState?.onItalicPressed())),
MapEntry(const SingleActivator(LogicalKeyboardKey.keyK, control: true),
VoidCallbackIntent(() => markdownToolbarState?.onLinkPressed())),
MapEntry(const SingleActivator(LogicalKeyboardKey.keyP, control: true),
VoidCallbackIntent(() => markdownToolbarState?.onImagePressed())),
MapEntry(const SingleActivator(LogicalKeyboardKey.keyE, control: true),
VoidCallbackIntent(() => markdownToolbarState?.onCodePressed())),
MapEntry(
const SingleActivator(LogicalKeyboardKey.digit8,
control: true, shift: true),
VoidCallbackIntent(
() => markdownToolbarState?.onUnorderedListPressed())),
MapEntry(
const SingleActivator(LogicalKeyboardKey.digit7,
control: true, shift: true),
VoidCallbackIntent(() => markdownToolbarState?.onOrderedListPressed())),
MapEntry(const SingleActivator(LogicalKeyboardKey.period, control: true),
VoidCallbackIntent(() => markdownToolbarState?.onQuotePressed())),
MapEntry(
const SingleActivator(LogicalKeyboardKey.keyH,
control: true, shift: true),
VoidCallbackIntent(
() => markdownToolbarState?.onHorizontalRulePressed())),
]);
return markdownToolbarShortcuts;
}

class LoggingActionDispatcher extends ActionDispatcher {
@override
Expand Down

0 comments on commit 7aa7f0e

Please sign in to comment.