33 changed files with 61 additions and 188 deletions
@ -1,33 +0,0 @@
@@ -1,33 +0,0 @@
|
||||
import 'package:flutter/material.dart'; |
||||
import 'package:win_text_editor/app/modules/template_parser/template_parser_service.dart'; |
||||
|
||||
class TemplateParserController with ChangeNotifier { |
||||
final TemplateParserService _service = TemplateParserService(); |
||||
|
||||
String _sourceContent = ''; |
||||
String _parsedContent = ''; |
||||
String _statusMessage = '准备就绪'; |
||||
|
||||
String get sourceContent => _sourceContent; |
||||
String get parsedContent => _parsedContent; |
||||
String get statusMessage => _statusMessage; |
||||
|
||||
set sourceContent(String value) { |
||||
_sourceContent = value; |
||||
notifyListeners(); |
||||
} |
||||
|
||||
Future<void> parseTemplates() async { |
||||
try { |
||||
_statusMessage = '解析中...'; |
||||
notifyListeners(); |
||||
|
||||
_parsedContent = await _service.parse(_sourceContent); |
||||
_statusMessage = '解析完成'; |
||||
} catch (e) { |
||||
_statusMessage = '解析失败: $e'; |
||||
} finally { |
||||
notifyListeners(); |
||||
} |
||||
} |
||||
} |
@ -1,7 +0,0 @@
@@ -1,7 +0,0 @@
|
||||
class TemplateParserService { |
||||
Future<String> parse(String source) async { |
||||
// 实际的模板解析逻辑 |
||||
await Future.delayed(const Duration(seconds: 1)); // 模拟耗时操作 |
||||
return 'Parssed: $source'; |
||||
} |
||||
} |
@ -1,89 +0,0 @@
@@ -1,89 +0,0 @@
|
||||
import 'package:flutter/material.dart'; |
||||
import 'package:win_text_editor/app/components/text_editor.dart'; |
||||
import 'package:win_text_editor/app/modules/base_view.dart'; |
||||
|
||||
class TemplateParserView extends BaseView { |
||||
const TemplateParserView({super.key, required String tabId}) : super(tabId: tabId); |
||||
|
||||
@override |
||||
TemplateParserViewState createState() => TemplateParserViewState(); |
||||
} |
||||
|
||||
class TemplateParserViewState extends BaseViewState { |
||||
final GlobalKey<TextEditorState> _editor1Key = GlobalKey(); |
||||
final GlobalKey<TextEditorState> _editor2Key = GlobalKey(); |
||||
|
||||
// 添加焦点监听 |
||||
void _setupFocusListeners() {} |
||||
|
||||
@override |
||||
void initState() { |
||||
super.initState(); |
||||
|
||||
WidgetsBinding.instance.addPostFrameCallback((_) { |
||||
_setupFocusListeners(); |
||||
}); |
||||
} |
||||
|
||||
@override |
||||
void dispose() { |
||||
//_controller.dispose(); // 清理控制器 |
||||
super.dispose(); |
||||
} |
||||
|
||||
@override |
||||
void onOpenFolder(String folderPath) { |
||||
// 实现打开文件夹的逻辑 |
||||
print('Opening folder: $folderPath'); |
||||
} |
||||
|
||||
@override |
||||
void onOpenFile(String filePath) { |
||||
// 实现打开文件的逻辑 |
||||
print('Opening file: $filePath'); |
||||
} |
||||
|
||||
// 修改loadFile方法使用_activeEditorIndex |
||||
Future<void> loadFile(BuildContext context, String filePath) async {} |
||||
|
||||
@override |
||||
Widget build(BuildContext context) { |
||||
return SingleChildScrollView( |
||||
child: ConstrainedBox( |
||||
constraints: const BoxConstraints(minHeight: 400), |
||||
child: Column( |
||||
mainAxisSize: MainAxisSize.min, |
||||
children: [ |
||||
Flexible( |
||||
child: SizedBox( |
||||
height: MediaQuery.of(context).size.height / 2 - 100, |
||||
child: Container( |
||||
child: TextEditor( |
||||
key: _editor1Key, |
||||
tabId: '${widget.tabId}_1', |
||||
title: '源文本', // 可配置的标题 |
||||
), |
||||
), |
||||
), |
||||
), |
||||
Flexible( |
||||
child: SizedBox( |
||||
height: MediaQuery.of(context).size.height / 2 - 100, |
||||
child: Container( |
||||
decoration: BoxDecoration( |
||||
border: Border.all(color: Colors.transparent, width: 2.0), |
||||
), |
||||
child: TextEditor( |
||||
key: _editor2Key, |
||||
tabId: '${widget.tabId}_2', |
||||
title: '目标文本', // 可配置的标题 |
||||
), |
||||
), |
||||
), |
||||
), |
||||
], |
||||
), |
||||
), |
||||
); |
||||
} |
||||
} |
@ -1,7 +1,7 @@
@@ -1,7 +1,7 @@
|
||||
import 'dart:math'; |
||||
|
||||
import 'package:flutter/material.dart'; |
||||
import 'package:win_text_editor/app/providers/logger.dart'; |
||||
import 'package:win_text_editor/frame/providers/logger.dart'; |
||||
|
||||
class EditorProvider with ChangeNotifier { |
||||
final List<EditorTab> _tabs = []; |
@ -1,5 +1,5 @@
@@ -1,5 +1,5 @@
|
||||
import 'dart:io'; |
||||
import 'package:win_text_editor/app/models/file_node.dart'; |
||||
import 'package:win_text_editor/frame/models/file_node.dart'; |
||||
|
||||
class FileService { |
||||
/// 延时加载目录内容(不递归) |
@ -1,11 +1,11 @@
@@ -1,11 +1,11 @@
|
||||
import 'package:flutter/material.dart'; |
||||
import 'package:provider/provider.dart'; |
||||
import 'package:win_text_editor/app/core/file_explorer_pane.dart'; |
||||
import 'package:win_text_editor/app/core/tab_manager.dart'; |
||||
import 'package:win_text_editor/app/core/tab_view.dart'; |
||||
import 'package:win_text_editor/app/menus/app_menu.dart'; |
||||
import 'package:win_text_editor/app/providers/file_provider.dart'; |
||||
import 'package:win_text_editor/app/core/console_panel.dart'; |
||||
import 'package:win_text_editor/frame/file_explorer_pane.dart'; |
||||
import 'package:win_text_editor/frame/tab_manager.dart'; |
||||
import 'package:win_text_editor/frame/tab_view.dart'; |
||||
import 'package:win_text_editor/menus/app_menu.dart'; |
||||
import 'package:win_text_editor/frame/providers/file_provider.dart'; |
||||
import 'package:win_text_editor/frame/console_panel.dart'; |
||||
|
||||
class AppScaffold extends StatelessWidget { |
||||
const AppScaffold({super.key}); |
@ -1,7 +1,7 @@
@@ -1,7 +1,7 @@
|
||||
import 'package:flutter/material.dart'; |
||||
import 'package:provider/provider.dart'; |
||||
import 'package:flutter/services.dart'; // 用于复制到剪贴板 |
||||
import 'package:win_text_editor/app/providers/logger.dart'; |
||||
import 'package:win_text_editor/frame/providers/logger.dart'; |
||||
|
||||
class ConsolePanel extends StatefulWidget { |
||||
const ConsolePanel({super.key}); |
@ -1,8 +1,8 @@
@@ -1,8 +1,8 @@
|
||||
import 'package:file_picker/file_picker.dart'; |
||||
import 'package:flutter/material.dart'; |
||||
import 'package:provider/provider.dart'; |
||||
import 'package:win_text_editor/app/providers/file_provider.dart'; |
||||
import 'package:win_text_editor/app/components/file_explorer.dart'; |
||||
import 'package:win_text_editor/frame/providers/file_provider.dart'; |
||||
import 'package:win_text_editor/shared/components/file_explorer.dart'; |
||||
|
||||
class FileExplorerPane extends StatelessWidget { |
||||
final Function(String)? onFileDoubleTap; |
@ -1,7 +1,7 @@
@@ -1,7 +1,7 @@
|
||||
import 'package:flutter/material.dart'; |
||||
import 'package:win_text_editor/app/models/tab_model.dart'; |
||||
import 'package:win_text_editor/app/modules/base_view.dart'; |
||||
import 'package:win_text_editor/app/providers/logger.dart'; |
||||
import 'package:win_text_editor/frame/models/tab_model.dart'; |
||||
import 'package:win_text_editor/shared/base/base_view.dart'; |
||||
import 'package:win_text_editor/frame/providers/logger.dart'; |
||||
|
||||
class TabManager with ChangeNotifier { |
||||
final List<AppTab> _tabs = []; |
@ -1,5 +1,5 @@
@@ -1,5 +1,5 @@
|
||||
import 'package:flutter/material.dart'; |
||||
import 'package:win_text_editor/app/menus/menu_constants.dart'; |
||||
import 'package:win_text_editor/menus/menu_constants.dart'; |
||||
|
||||
import 'menu_actions.dart'; |
||||
|
@ -1,9 +1,9 @@
@@ -1,9 +1,9 @@
|
||||
import 'package:flutter/material.dart'; |
||||
import 'package:file_picker/file_picker.dart'; |
||||
import 'package:provider/provider.dart'; |
||||
import 'package:win_text_editor/app/core/tab_manager.dart'; |
||||
import 'package:win_text_editor/app/menus/menu_constants.dart'; |
||||
import 'package:win_text_editor/app/providers/file_provider.dart'; |
||||
import 'package:win_text_editor/frame/tab_manager.dart'; |
||||
import 'package:win_text_editor/menus/menu_constants.dart'; |
||||
import 'package:win_text_editor/frame/providers/file_provider.dart'; |
||||
import 'package:collection/collection.dart'; |
||||
import 'dart:io'; |
||||
|
@ -0,0 +1,6 @@
@@ -0,0 +1,6 @@
|
||||
class MatchResult { |
||||
final int start; |
||||
final int end; |
||||
|
||||
const MatchResult({required this.start, required this.end}); |
||||
} |
@ -0,0 +1 @@
@@ -0,0 +1 @@
|
||||
enum SearchMode { locate, count } |
@ -1,8 +1,8 @@
@@ -1,8 +1,8 @@
|
||||
import 'package:flutter/material.dart'; |
||||
import 'package:provider/provider.dart'; |
||||
import 'package:win_text_editor/app/modules/base_view.dart'; |
||||
import 'package:win_text_editor/app/providers/logger.dart'; |
||||
import 'content_search_controller.dart'; |
||||
import 'package:win_text_editor/shared/base/base_view.dart'; |
||||
import 'package:win_text_editor/frame/providers/logger.dart'; |
||||
import '../providers/content_search_controller.dart'; |
||||
import 'directory_settings.dart'; |
||||
import 'search_settings.dart'; |
||||
import 'results_view.dart'; |
@ -1,6 +1,6 @@
@@ -1,6 +1,6 @@
|
||||
import 'package:flutter/material.dart'; |
||||
import 'package:provider/provider.dart'; |
||||
import 'package:win_text_editor/app/modules/content_search/content_search_controller.dart'; |
||||
import 'package:win_text_editor/modules/content_search/providers/content_search_controller.dart'; |
||||
|
||||
class DirectorySettings extends StatefulWidget { |
||||
const DirectorySettings({super.key}); |
@ -1,11 +1,11 @@
@@ -1,11 +1,11 @@
|
||||
import 'package:flutter/material.dart'; |
||||
import 'package:provider/provider.dart'; |
||||
import 'package:win_text_editor/app/components/text_editor.dart'; |
||||
import 'package:win_text_editor/app/models/search_model.dart'; |
||||
import 'package:win_text_editor/app/modules/content_search/content_search_controller.dart'; |
||||
import 'package:win_text_editor/shared/components/text_editor.dart'; |
||||
import 'package:win_text_editor/modules/content_search/providers/content_search_controller.dart'; |
||||
import 'package:win_text_editor/modules/content_search/models/search_mode.dart'; |
||||
|
||||
class SearchSettings extends StatelessWidget { |
||||
SearchSettings({super.key}); |
||||
const SearchSettings({super.key}); |
||||
|
||||
@override |
||||
Widget build(BuildContext context) { |
@ -1,6 +1,6 @@
@@ -1,6 +1,6 @@
|
||||
import 'package:flutter/material.dart'; |
||||
import 'package:provider/provider.dart'; |
||||
import 'package:win_text_editor/app/core/tab_manager.dart'; |
||||
import 'package:win_text_editor/frame/tab_manager.dart'; |
||||
|
||||
// 修改后的base_view.dart |
||||
abstract class BaseView extends StatefulWidget { |
Loading…
Reference in new issue