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
23 changes: 17 additions & 6 deletions app/lib/actions/background.dart
Original file line number Diff line number Diff line change
@@ -1,23 +1,34 @@
import 'package:butterfly/bloc/document_bloc.dart';
import 'package:butterfly/dialogs/background/dialog.dart';
import 'package:flutter/material.dart';
import 'package:flutter/services.dart';
import 'package:flutter_bloc/flutter_bloc.dart';
import 'package:keybinder/keybinder.dart';

class BackgroundIntent extends Intent {
final BuildContext context;

const BackgroundIntent(this.context);
const BackgroundIntent();
}

final backgroundShortcut = ShortcutDefinition(
id: 'background',
intent: const BackgroundIntent(),
defaultActivator: const SingleActivator(
LogicalKeyboardKey.keyB,
control: true,
),
);

class BackgroundAction extends Action<BackgroundIntent> {
BackgroundAction();
final BuildContext context;

BackgroundAction(this.context);

@override
Future<void> invoke(BackgroundIntent intent) {
return showDialog<void>(
context: intent.context,
context: context,
builder: (context) => BlocProvider.value(
value: intent.context.read<DocumentBloc>(),
value: this.context.read<DocumentBloc>(),
child: const BackgroundDialog(),
),
);
Expand Down
17 changes: 12 additions & 5 deletions app/lib/actions/change_path.dart
Original file line number Diff line number Diff line change
Expand Up @@ -2,22 +2,29 @@ import 'package:butterfly/api/file_system.dart';
import 'package:butterfly/bloc/document_bloc.dart';
import 'package:butterfly/dialogs/file_system/move.dart';
import 'package:flutter/material.dart';
import 'package:flutter/services.dart';
import 'package:flutter_bloc/flutter_bloc.dart';
import 'package:keybinder/keybinder.dart';

import '../cubits/settings.dart';

class ChangePathIntent extends Intent {
final BuildContext context;

const ChangePathIntent(this.context);
const ChangePathIntent();
}

final changePathShortcut = ShortcutDefinition(
id: 'change_path',
intent: const ChangePathIntent(),
defaultActivator: const SingleActivator(LogicalKeyboardKey.keyS, alt: true),
);

class ChangePathAction extends Action<ChangePathIntent> {
ChangePathAction();
final BuildContext context;

ChangePathAction(this.context);

@override
Future<void> invoke(ChangePathIntent intent) async {
final context = intent.context;
final bloc = context.read<DocumentBloc>();
final state = bloc.state;
if (state is! DocumentLoadSuccess || state.location.path == '') return;
Expand Down
35 changes: 29 additions & 6 deletions app/lib/actions/change_tool.dart
Original file line number Diff line number Diff line change
@@ -1,25 +1,48 @@
import 'package:butterfly/cubits/current_index.dart';
import 'package:flutter/material.dart';
import 'package:flutter/services.dart';
import 'package:flutter_bloc/flutter_bloc.dart';
import 'package:keybinder/keybinder.dart';

import '../bloc/document_bloc.dart';

class ChangeToolIntent extends Intent {
final BuildContext context;
final int index;

const ChangeToolIntent(this.context, this.index);
const ChangeToolIntent(this.index);
}

final changeToolShortcuts = List.generate(10, (index) {
final key = [
LogicalKeyboardKey.digit1,
LogicalKeyboardKey.digit2,
LogicalKeyboardKey.digit3,
LogicalKeyboardKey.digit4,
LogicalKeyboardKey.digit5,
LogicalKeyboardKey.digit6,
LogicalKeyboardKey.digit7,
LogicalKeyboardKey.digit8,
LogicalKeyboardKey.digit9,
LogicalKeyboardKey.digit0,
][index];
return ShortcutDefinition(
id: 'tool_$index',
intent: ChangeToolIntent(index),
defaultActivator: SingleActivator(key, control: true),
);
});

class ChangeToolAction extends Action<ChangeToolIntent> {
ChangeToolAction();
final BuildContext context;

ChangeToolAction(this.context);

@override
Future<void> invoke(ChangeToolIntent intent) async {
final bloc = intent.context.read<DocumentBloc>();
intent.context.read<CurrentIndexCubit>().changeTool(
final bloc = context.read<DocumentBloc>();
context.read<CurrentIndexCubit>().changeTool(
bloc,
context: intent.context,
context: context,
index: intent.index,
);
}
Expand Down
12 changes: 6 additions & 6 deletions app/lib/actions/color_palette.dart
Original file line number Diff line number Diff line change
Expand Up @@ -4,21 +4,21 @@ import 'package:flutter/material.dart';
import 'package:flutter_bloc/flutter_bloc.dart';

class ColorPaletteIntent extends Intent {
final BuildContext context;

const ColorPaletteIntent(this.context);
const ColorPaletteIntent();
}

class ColorPaletteAction extends Action<ColorPaletteIntent> {
ColorPaletteAction();
final BuildContext context;

ColorPaletteAction(this.context);

@override
Future<void> invoke(ColorPaletteIntent intent) {
return showDialog<void>(
context: intent.context,
context: context,
builder: (ctx) => ColorPalettePickerDialog(
viewMode: true,
bloc: intent.context.read<DocumentBloc>(),
bloc: context.read<DocumentBloc>(),
),
);
}
Expand Down
18 changes: 13 additions & 5 deletions app/lib/actions/exit.dart
Original file line number Diff line number Diff line change
@@ -1,20 +1,28 @@
import 'package:butterfly/bloc/document_bloc.dart';
import 'package:butterfly_api/butterfly_api.dart';
import 'package:flutter/material.dart';
import 'package:flutter/services.dart';
import 'package:flutter_bloc/flutter_bloc.dart';
import 'package:keybinder/keybinder.dart';

class ExitIntent extends Intent {
final BuildContext context;

const ExitIntent(this.context);
const ExitIntent();
}

final exitShortcut = ShortcutDefinition(
id: 'exit',
intent: const ExitIntent(),
defaultActivator: const SingleActivator(LogicalKeyboardKey.escape),
);

class ExitAction extends Action<ExitIntent> {
ExitAction();
final BuildContext context;

ExitAction(this.context);

@override
void invoke(ExitIntent intent) {
final bloc = intent.context.read<DocumentBloc>();
final bloc = context.read<DocumentBloc>();
bloc.add(const PresentationModeExited());
}
}
32 changes: 27 additions & 5 deletions app/lib/actions/export.dart
Original file line number Diff line number Diff line change
@@ -1,24 +1,46 @@
import 'package:butterfly/api/save.dart';
import 'package:butterfly/bloc/document_bloc.dart';
import 'package:flutter/material.dart';
import 'package:flutter/services.dart';
import 'package:flutter_bloc/flutter_bloc.dart';
import 'package:keybinder/keybinder.dart';

class ExportIntent extends Intent {
final BuildContext context;
final bool isText;

const ExportIntent(this.context, {this.isText = false});
const ExportIntent({this.isText = false});
}

final exportShortcut = ShortcutDefinition(
id: 'export',
intent: const ExportIntent(),
defaultActivator: const SingleActivator(
LogicalKeyboardKey.keyE,
control: true,
),
);

final exportTextShortcut = ShortcutDefinition(
id: 'export_text',
intent: const ExportIntent(isText: true),
defaultActivator: const SingleActivator(
LogicalKeyboardKey.keyE,
control: true,
shift: true,
),
);

class ExportAction extends Action<ExportIntent> {
ExportAction();
final BuildContext context;

ExportAction(this.context);

@override
Future<void> invoke(ExportIntent intent) async {
final bloc = intent.context.read<DocumentBloc>();
final bloc = context.read<DocumentBloc>();
final state = bloc.state;
if (state is! DocumentLoaded) return;
final data = (await state.saveData());
exportData(intent.context, data, isTextBased: intent.isText);
exportData(context, data, isTextBased: intent.isText);
}
}
16 changes: 12 additions & 4 deletions app/lib/actions/full_screen.dart
Original file line number Diff line number Diff line change
@@ -1,14 +1,22 @@
import 'package:flutter/material.dart';
import 'package:flutter/services.dart';
import 'package:keybinder/keybinder.dart';
import 'package:material_leap/material_leap.dart';

class FullScreenIntent extends Intent {
final BuildContext context;

const FullScreenIntent(this.context);
const FullScreenIntent();
}

final fullScreenShortcut = ShortcutDefinition(
id: 'full_screen',
intent: const FullScreenIntent(),
defaultActivator: const SingleActivator(LogicalKeyboardKey.f11),
);

class FullScreenAction extends Action<FullScreenIntent> {
FullScreenAction();
final BuildContext context;

FullScreenAction(this.context);

@override
Future<void> invoke(FullScreenIntent intent) async {
Expand Down
18 changes: 13 additions & 5 deletions app/lib/actions/hide_ui.dart
Original file line number Diff line number Diff line change
@@ -1,18 +1,26 @@
import 'package:butterfly/cubits/current_index.dart';
import 'package:flutter/material.dart';
import 'package:flutter/services.dart';
import 'package:flutter_bloc/flutter_bloc.dart';
import 'package:keybinder/keybinder.dart';

class HideUIIntent extends Intent {
final BuildContext context;

const HideUIIntent(this.context);
const HideUIIntent();
}

final hideUIShortcut = ShortcutDefinition(
id: 'hide_ui',
intent: const HideUIIntent(),
defaultActivator: const SingleActivator(LogicalKeyboardKey.f12),
);

class HideUIAction extends Action<HideUIIntent> {
HideUIAction();
final BuildContext context;

HideUIAction(this.context);

@override
void invoke(HideUIIntent intent) {
intent.context.read<CurrentIndexCubit>().toggleKeyboardHideUI();
context.read<CurrentIndexCubit>().toggleKeyboardHideUI();
}
}
27 changes: 20 additions & 7 deletions app/lib/actions/image_export.dart
Original file line number Diff line number Diff line change
Expand Up @@ -2,21 +2,34 @@ import 'package:butterfly/bloc/document_bloc.dart';
import 'package:butterfly/cubits/transform.dart';
import 'package:butterfly/dialogs/export/general.dart';
import 'package:flutter/material.dart';
import 'package:flutter/services.dart';
import 'package:flutter_bloc/flutter_bloc.dart';
import 'package:keybinder/keybinder.dart';

class ImageExportIntent extends Intent {
final BuildContext context;

const ImageExportIntent(this.context);
const ImageExportIntent();
}

final imageExportShortcut = ShortcutDefinition(
id: 'image_export',
intent: const ImageExportIntent(),
defaultActivator: const SingleActivator(
LogicalKeyboardKey.keyE,
control: true,
alt: true,
shift: true,
),
);

class ImageExportAction extends Action<ImageExportIntent> {
ImageExportAction();
final BuildContext context;

ImageExportAction(this.context);

@override
Future<void> invoke(ImageExportIntent intent) async {
var bloc = intent.context.read<DocumentBloc>();
var transform = intent.context.read<TransformCubit>().state;
var bloc = context.read<DocumentBloc>();
var transform = context.read<TransformCubit>().state;
return showDialog<void>(
builder: (context) => BlocProvider.value(
value: bloc,
Expand All @@ -25,7 +38,7 @@ class ImageExportAction extends Action<ImageExportIntent> {
options: getDefaultImageExportOptions(context, transform: transform),
),
),
context: intent.context,
context: context,
);
}
}
Loading