├── .github
└── FUNDING.yml
├── .gitignore
├── LICENSE
├── README.ko.md
├── README.md
├── README.zh-CN.md
└── src
├── .editorconfig
├── DevFlow.Colors
├── DevFlow.Colors.csproj
├── Local
│ ├── Capture
│ │ └── PixelExtractWorker.cs
│ └── Collection
│ │ └── FixedColorCollection.cs
├── Properties
│ ├── AssemblyInfo.cs
│ ├── Resources.Designer.cs
│ ├── Resources.resx
│ ├── Settings.Designer.cs
│ └── Settings.settings
├── Themes
│ ├── Generic.xaml
│ └── Styles
│ │ ├── ColorSpoid.xaml
│ │ ├── ExtractColorBox.xaml
│ │ └── PaletteGridBox.xaml
├── VIews
│ ├── ColorSpoid.cs
│ └── Units
│ │ ├── ExtractColorBox.cs
│ │ └── PaletteGridBox.cs
├── ViewModels
│ └── ColorSpoidViewModel.cs
└── packages.config
├── DevFlow.Controls
├── DevFlow.Controls.csproj
├── Primitives
│ ├── DragBorder.cs
│ ├── Express.cs
│ ├── Icon.cs
│ └── MainWindow.cs
├── Properties
│ └── AssemblyInfo.cs
└── Util
│ ├── GeometryExtends.cs
│ └── IconData.cs
├── DevFlow.Converter
├── DevFlow.Converter.csproj
├── DynamicResourceBinding.cs
├── EqualsToBooleanConverter.cs
├── FileSizeConverter.cs
├── LeftMarginConverter.cs
├── Properties
│ └── AssemblyInfo.cs
├── ResourceNameConverter.cs
└── RgbToHexConverter.cs
├── DevFlow.Data
├── Colors
│ └── ColorStampModel.cs
├── DevFlow.Data.csproj
├── Enums
│ ├── GeometryIconStyle.cs
│ ├── LanguageType.cs
│ └── ThemeType.cs
├── History
│ └── HistoryModel.cs
├── Language
│ └── LanguageModel.cs
├── Menu
│ └── MenuModel.cs
├── Properties
│ └── AssemblyInfo.cs
├── Settings
│ ├── ConfigModel.cs
│ └── ViewOptionModel.cs
├── Theme
│ └── SkinModel.cs
└── Works
│ └── WorkspaceModel.cs
├── DevFlow.Extensions
├── CollectionExtensions.cs
├── DevFlow.Extensions.csproj
└── Properties
│ └── AssemblyInfo.cs
├── DevFlow.Finders
├── DevFlow.Finders.csproj
├── Local
│ ├── Api
│ │ ├── DirectorySupport.cs
│ │ ├── MousePosition.cs
│ │ ├── RootIcon.cs
│ │ └── ShellContextMenu.cs
│ ├── Enum
│ │ ├── FileTypes.cs
│ │ └── MoveType.cs
│ ├── Model
│ │ ├── FileModel.cs
│ │ ├── FolderModel.cs
│ │ ├── PolygonModel.cs
│ │ └── RootModel.cs
│ ├── ViewModel
│ │ └── FinderViewModel.cs
│ └── Work
│ │ └── LocationWork.cs
├── Properties
│ ├── AssemblyInfo.cs
│ ├── Resources.Designer.cs
│ ├── Resources.resx
│ ├── Settings.Designer.cs
│ └── Settings.settings
├── Themes
│ ├── Generic.xaml
│ └── Styles
│ │ ├── Finder.xaml
│ │ ├── MementoBox.xaml
│ │ ├── PolygonSelector.xaml
│ │ ├── RootItemView.xaml
│ │ └── RootTreeView.xaml
└── UI
│ ├── Units
│ ├── MementoBox.cs
│ ├── PolygonSelector.cs
│ ├── RootItemView.cs
│ └── RootTreeView.cs
│ └── Views
│ └── Finder.cs
├── DevFlow.Foundation
├── DevFlow.Foundation.csproj
├── FlowUI
│ ├── FlowView.cs
│ └── FlowWindow.cs
├── Flowbase
│ ├── FlowApp.cs
│ ├── FlowConfig.cs
│ ├── FlowCulture.cs
│ └── FlowTheme.cs
├── Flowcore
│ └── IFlowUIElement.cs
├── Mvvm
│ ├── ObservableData.cs
│ ├── ObservableObject.cs
│ └── RelayCommand.cs
├── Properties
│ └── AssemblyInfo.cs
└── packages.config
├── DevFlow.Histories
├── Local
│ └── HistoryImageProvidor.cs
└── Views
│ └── History.cs
├── DevFlow.Languages
├── DevFlow.Languages.csproj
├── Properties
│ ├── AssemblyInfo.cs
│ ├── Resources.Designer.cs
│ ├── Resources.resx
│ ├── Settings.Designer.cs
│ └── Settings.settings
├── Themes
│ └── Generic.xaml
├── ViewModels
│ └── TranslatorViewModel.cs
└── Views
│ └── Translator.cs
├── DevFlow.LayoutSupport
├── Controls
│ ├── BasicScroll.cs
│ ├── BasicWindow.cs
│ ├── ColorSlider.cs
│ ├── Explorer.cs
│ └── FlowIcon.cs
├── DevFlow.LayoutSupport.csproj
├── Properties
│ ├── AssemblyInfo.cs
│ ├── Resources.Designer.cs
│ ├── Resources.resx
│ ├── Settings.Designer.cs
│ └── Settings.settings
├── Themes
│ ├── Generic.xaml
│ └── Styles
│ │ ├── BasicScroll.xaml
│ │ ├── BasicWindow.xaml
│ │ ├── ColorSlider.xaml
│ │ ├── Explorer.xaml
│ │ └── FlowIcon.xaml
└── packages.config
├── DevFlow.Main
├── DevFlow.Main.csproj
├── Properties
│ ├── AssemblyInfo.cs
│ ├── Resources.Designer.cs
│ ├── Resources.resx
│ ├── Settings.Designer.cs
│ └── Settings.settings
├── Reviews
│ ├── DemoMainWindow.xaml
│ └── DemoMainWindow.xaml.cs
├── Themes
│ ├── Generic.xaml
│ └── Styles
│ │ └── MainWindow.xaml
├── ViewModels
│ └── MainViewModel.cs
└── Views
│ ├── EmptyView.cs
│ └── MainWindow.cs
├── DevFlow.Menus
├── DevFlow.Menus.csproj
├── Properties
│ ├── AssemblyInfo.cs
│ ├── Resources.Designer.cs
│ ├── Resources.resx
│ ├── Settings.Designer.cs
│ └── Settings.settings
├── Reviews
│ ├── DemoQuickSlot.xaml
│ └── DemoQuickSlot.xaml.cs
├── Themes
│ └── Generic.xaml
├── ViewModels
│ └── QuickSlotViewModel.cs
└── Views
│ └── QuickSlot.cs
├── DevFlow.Reflects
├── DevFlow.Reflects.csproj
├── Properties
│ ├── AssemblyInfo.cs
│ ├── Resources.Designer.cs
│ ├── Resources.resx
│ ├── Settings.Designer.cs
│ └── Settings.settings
├── Themes
│ └── Generic.xaml
├── ViewModels
│ └── ReflectorViewModel.cs
└── Views
│ └── Reflector.cs
├── DevFlow.Resources
├── DevFlow.Resources.csproj
├── Images
│ ├── wallpaper-01.jpg
│ ├── wallpaper-02.jpg
│ ├── wallpaper-03.jpg
│ ├── wallpaper-04.jpg
│ ├── wallpaper-05.jpg
│ ├── wallpaper-06.jpg
│ ├── wallpaper-07.jpg
│ ├── wallpaper-08.jpg
│ ├── wallpaper-09.JPG
│ └── wallpaper-10.jpg
├── Properties
│ ├── AssemblyInfo.cs
│ ├── Resources.Designer.cs
│ ├── Resources.resx
│ ├── Settings.Designer.cs
│ └── Settings.settings
└── Themes
│ ├── Converters.xaml
│ ├── DrawingImage
│ └── pc-screen.xaml
│ ├── Generic.Dark.xaml
│ ├── Generic.Drawings.xaml
│ ├── Generic.Elena.xaml
│ ├── Generic.James.xaml
│ ├── Generic.White.xaml
│ ├── Generic.xaml
│ └── Languages
│ ├── CN.xaml
│ ├── EN.xaml
│ ├── JP.xaml
│ └── KO.xaml
├── DevFlow.Serialization
├── Color
│ └── ConvertColor.cs
├── Data
│ └── ColorStruct.cs
├── DevFlow.Serialization.csproj
└── Properties
│ └── AssemblyInfo.cs
├── DevFlow.Skins
├── DevFlow.Skins.csproj
├── Properties
│ ├── AssemblyInfo.cs
│ ├── Resources.Designer.cs
│ ├── Resources.resx
│ ├── Settings.Designer.cs
│ └── Settings.settings
├── Themes
│ └── Generic.xaml
├── ViewModels
│ └── SwitchSkinViewModel.cs
└── Views
│ └── SwitchSkin.cs
├── DevFlow.sln
└── DevFlow
├── AddTest.txt
├── App.config
├── App.cs
├── DevFlow.csproj
├── Properties
├── AssemblyInfo.cs
├── Resources.Designer.cs
├── Resources.resx
├── Settings.Designer.cs
└── Settings.settings
├── Reviews
├── DemoWindow.xaml
└── DemoWindow.xaml.cs
├── Startup.cs
├── code.ico
├── dev1.ico
├── dev2.ico
├── icon.ico
├── idea.ico
├── packages.config
├── set.ico
└── setting.ico
/.github/FUNDING.yml:
--------------------------------------------------------------------------------
1 | # These are supported funding model platforms
2 |
3 | github: [jameslee214]
4 |
--------------------------------------------------------------------------------
/LICENSE:
--------------------------------------------------------------------------------
1 | MIT License
2 |
3 | Copyright (c) 2021 DevNcore
4 |
5 | Permission is hereby granted, free of charge, to any person obtaining a copy
6 | of this software and associated documentation files (the "Software"), to deal
7 | in the Software without restriction, including without limitation the rights
8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9 | copies of the Software, and to permit persons to whom the Software is
10 | furnished to do so, subject to the following conditions:
11 |
12 | The above copyright notice and this permission notice shall be included in all
13 | copies or substantial portions of the Software.
14 |
15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21 | SOFTWARE.
22 |
--------------------------------------------------------------------------------
/README.zh-CN.md:
--------------------------------------------------------------------------------
1 | # DevFlow [](README.md) [](README.zh-CN.md) [](README.ko.md)
2 |
3 | 用于高级学习和实验的模块化、小部件风格的 WPF 应用程序
4 | [](https://opensource.org/licenses/MIT)
5 | [](https://dotnet.microsoft.com/download)
6 | [](https://github.com/jamesnet214/devflow/stargazers)
7 | [](https://github.com/jamesnet214/devflow/issues)
8 |
9 | ## 项目概述
10 |
11 | DevFlow 是一个创新的 WPF 应用程序,旨在展示 WPF 开发中的高级技术和架构模式。受 macOS 菜单栏的启发,它以可移动的 QuickSlot 界面为特色,可以启动各种开发工具的小部件风格窗口。
12 |
13 |
14 |
15 |
16 |
17 |
18 | ## 主要技术和实现
19 |
20 | #### 1. 模块化架构
21 | - [x] 集成 Prism 库实现松耦合和模块化
22 | - [x] 使用依赖注入实现灵活和可维护的代码结构
23 | - [x] 项目分散,模块之间无直接引用
24 |
25 | #### 2. 高级 UI 设计
26 | - [x] 受 macOS 菜单栏启发的自定义 QuickSlot 菜单
27 | - [x] 各个工具的小部件风格窗口(资源管理器、颜色选择器、主题选择器、本地化)
28 | - [x] 完全自定义控件,提供独特的用户体验
29 |
30 | #### 3. WPF 精通展示
31 | - [x] 在所有模块中广泛使用 MVVM 模式
32 | - [x] 开发自定义控件以实现专门功能
33 | - [x] 高级样式和主题功能
34 |
35 | #### 4. 多语言支持
36 | - [x] 集成本地化系统支持多种语言
37 | - [x] 动态语言切换,无需重启应用程序
38 |
39 | #### 5. 开发者工具集成
40 | - [x] 内置文件资源管理器,快速访问项目文件
41 | - [x] 具有高级颜色操作功能的颜色选择工具
42 | - [x] 主题选择器,用于实时更改应用程序样式
43 |
44 | ## 技术栈
45 | - .NET 8.0
46 | - WPF (Windows Presentation Foundation)
47 | - Prism 库用于 MVVM 和模块化
48 | - C# 10.0
49 |
50 | ## 项目结构
51 |
52 | 解决方案由三个主要类别组成:
53 | - **01. BASE**: 核心功能和数据处理
54 | - **02. UI**: 用户界面组件和样式
55 | - **03. APP**: 主应用程序和入口点
56 |
57 | 主要项目包括:
58 | - **DevFlow.Menus**: QuickSlot 界面实现
59 | - **DevFlow.Main**: 核心应用程序窗口和导航
60 | - **DevFlow.Colors, DevFlow.Finders 等**: 单个工具模块
61 |
62 | ## 入门指南
63 |
64 | ### 先决条件
65 | - Visual Studio 2022 或更高版本
66 | - .NET 8.0 SDK
67 |
68 | ### 安装和运行
69 |
70 | #### 1. 克隆仓库:
71 | ```
72 | git clone https://github.com/jamesnet214/devflow.git
73 | ```
74 |
75 | #### 2. 打开解决方案
76 | - [x] Visual Studio
77 | - [x] Visual Studio Code
78 | - [x] JetBrains Rider
79 |
80 |
81 |
82 |
83 |
84 | #### 3. 构建和运行
85 | - [x] 将 DevFlow 设置为启动项目
86 | - [x] 按 F5 或点击运行按钮
87 | - [x] 推荐 Windows 11
88 |
89 | ## 学习机会
90 |
91 | DevFlow 为 WPF 开发者提供了丰富的学习经验:
92 |
93 | 1. **模块化架构**:理解如何构建松耦合和可维护的 WPF 应用程序
94 | 2. **自定义控件**:学习如何创建和样式化自定义 WPF 控件
95 | 3. **实际 MVVM**:看到 MVVM 模式在复杂应用程序中的实际实现
96 | 4. **Prism 和 DI**:探索如何在 WPF 中使用 Prism 库和依赖注入
97 | 5. **多窗口管理**:学习在一个连贯的应用程序中管理多个窗口的技术
98 |
99 | ## 贡献
100 |
101 | 欢迎对 DevFlow 做出贡献!提交拉取请求、创建问题或帮助宣传项目。
102 |
103 | ## 许可证
104 |
105 | 本项目基于 MIT 许可证发布。详情请参阅 [LICENSE](LICENSE) 文件。
106 |
107 | ## 联系方式
108 | - 网站:https://jamesnet.dev
109 | - 电子邮件:james@jamesnet.dev, vickyqu115@hotmail.com
110 |
111 | 与 DevFlow 一起探索高级 WPF 开发,提升您的技能!
112 |
--------------------------------------------------------------------------------
/src/.editorconfig:
--------------------------------------------------------------------------------
1 | [*.cs]
2 |
3 | # IDE0010: 누락된 사례 추가
4 | dotnet_diagnostic.IDE0010.severity = none
5 |
--------------------------------------------------------------------------------
/src/DevFlow.Colors/Local/Capture/PixelExtractWorker.cs:
--------------------------------------------------------------------------------
1 | using DevFlow.Serialization.Data;
2 | using Gma.System.MouseKeyHook;
3 | using System;
4 | using System.Drawing;
5 | using System.Windows.Input;
6 |
7 | namespace DevFlow.Colors.Local.Capture
8 | {
9 | public class PixelExtractWorker
10 | {
11 | // 임시 버퍼의 graphic 타입
12 | private readonly Bitmap buffer = new(1, 1);
13 | private readonly Graphics buffer_graphics = null;
14 | private IKeyboardMouseEvents globalMouseHook;
15 | public Action StartExtract = (p) => { };
16 | public Action FinishExtract = () => { };
17 | public PixelExtractWorker()
18 | {
19 | buffer_graphics = Graphics.FromImage(buffer);
20 | }
21 |
22 | internal void Begin()
23 | {
24 | BeginCapture();
25 | }
26 |
27 | private void BeginCapture()
28 | {
29 | globalMouseHook = Hook.GlobalEvents();
30 | globalMouseHook.MouseMove += MainWindow_MouseMove;
31 | globalMouseHook.MouseDown += GlobalMouseHook_MouseDown;
32 | Mouse.OverrideCursor = Cursors.Cross;
33 | }
34 |
35 |
36 | private void GlobalMouseHook_MouseDown(object sender, System.Windows.Forms.MouseEventArgs e)
37 | {
38 | CaptureFinished();
39 | FinishExtract();
40 | }
41 | private void CaptureFinished()
42 | {
43 | globalMouseHook.MouseMove -= MainWindow_MouseMove;
44 | globalMouseHook.MouseDown -= GlobalMouseHook_MouseDown;
45 | globalMouseHook.Dispose();
46 | Mouse.OverrideCursor = null;
47 | }
48 |
49 | private void MainWindow_MouseMove(object sender, System.Windows.Forms.MouseEventArgs e)
50 | {
51 | SetView(e.X, e.Y);
52 | }
53 |
54 | private int count = 0;
55 | private void SetView(int x, int y)
56 | {
57 | if (count > 3)
58 | {
59 | count = 0;
60 | ColorStruct color = new(ScreenColor(x, y));
61 | StartExtract(color);
62 | }
63 | else
64 | {
65 | count++;
66 | }
67 | }
68 | private Color ScreenColor(int x, int y)
69 | {
70 | // Mouse 위치의 색을 추출한다.
71 | buffer_graphics.CopyFromScreen(x, y, 0, 0, new Size(1, 1));
72 | // Pixel 값을 리턴한다.
73 | return buffer.GetPixel(0, 0);
74 | }
75 | }
76 | }
77 |
--------------------------------------------------------------------------------
/src/DevFlow.Colors/Local/Collection/FixedColorCollection.cs:
--------------------------------------------------------------------------------
1 | using DevFlow.Data.Colors;
2 | using DevFlow.Serialization.Color;
3 | using DevFlow.Serialization.Data;
4 | using DevFlow.Foundation.Mvvm;
5 | using System;
6 | using System.Collections.ObjectModel;
7 | using System.Linq;
8 |
9 | namespace DevFlow.Colors.Local.Collection
10 | {
11 | public class ExtractedColorCollection : ObservableCollection
12 | {
13 | private RelayCommand colorExtracted;
14 |
15 | internal void Insert(ColorStruct rgba, Action command)
16 | {
17 | colorExtracted ??= new RelayCommand(command);
18 |
19 | if (this.FirstOrDefault(x => x.HexColor == ConvertColor.Hex(rgba)) is null)
20 | {
21 | Insert(0, new ColorStampModel(rgba, colorExtracted));
22 | }
23 | RemoveLast();
24 | }
25 |
26 | private void RemoveLast()
27 | {
28 | if (Count > 65)
29 | {
30 | RemoveAt(Count - 1);
31 | }
32 | }
33 | }
34 | }
35 |
--------------------------------------------------------------------------------
/src/DevFlow.Colors/Properties/AssemblyInfo.cs:
--------------------------------------------------------------------------------
1 | using System.Reflection;
2 | using System.Runtime.InteropServices;
3 | using System.Windows;
4 |
5 | // 어셈블리에 대한 일반 정보는 다음 특성 집합을 통해
6 | // 제어됩니다. 어셈블리와 관련된 정보를 수정하려면
7 | // 이러한 특성 값을 변경하세요.
8 | [assembly: AssemblyTitle("DevFlow.Colors")]
9 | [assembly: AssemblyDescription("")]
10 | [assembly: AssemblyConfiguration("")]
11 | [assembly: AssemblyCompany("")]
12 | [assembly: AssemblyProduct("DevFlow.Colors")]
13 | [assembly: AssemblyCopyright("Copyright © 2021")]
14 | [assembly: AssemblyTrademark("")]
15 | [assembly: AssemblyCulture("")]
16 |
17 | // ComVisible을 false로 설정하면 이 어셈블리의 형식이 COM 구성 요소에
18 | // 표시되지 않습니다. COM에서 이 어셈블리의 형식에 액세스하려면
19 | // 해당 형식에 대해 ComVisible 특성을 true로 설정하세요.
20 | [assembly: ComVisible(false)]
21 |
22 | //지역화 가능 애플리케이션 빌드를 시작하려면 다음을 설정하세요.
23 | //.csproj 파일에서 내에 CultureYouAreCodingWith를
24 | //설정하십시오. 예를 들어 소스 파일에서 영어(미국)를
25 | //사용하는 경우 를 en-US로 설정합니다. 그런 다음 아래
26 | //NeutralResourceLanguage 특성의 주석 처리를 제거합니다. 아래 줄의 "en-US"를 업데이트하여
27 | //프로젝트 파일의 UICulture 설정과 일치시킵니다.
28 |
29 | //[assembly: NeutralResourcesLanguage("en-US", UltimateResourceFallbackLocation.Satellite)]
30 |
31 |
32 | [assembly: ThemeInfo(
33 | ResourceDictionaryLocation.None, //테마별 리소스 사전의 위치
34 | //(페이지 또는 응용 프로그램 리소스 사진에
35 | // 리소스가 없는 경우에 사용됨)
36 | ResourceDictionaryLocation.SourceAssembly //제네릭 리소스 사전의 위치
37 | //(페이지 또는 응용 프로그램 리소스 사진에
38 | // 리소스가 없는 경우에 사용됨)
39 | )]
40 |
41 |
42 | // 어셈블리의 버전 정보는 다음 네 가지 값으로 구성됩니다.
43 | //
44 | // 주 버전
45 | // 부 버전
46 | // 빌드 번호
47 | // 수정 버전
48 | //
49 | // 모든 값을 지정하거나 아래와 같이 '*'를 사용하여 빌드 번호 및 수정 번호를
50 | // 기본값으로 할 수 있습니다.
51 | // [assembly: AssemblyVersion("1.0.*")]
52 | [assembly: AssemblyVersion("1.0.0.0")]
53 | [assembly: AssemblyFileVersion("1.0.0.0")]
54 |
--------------------------------------------------------------------------------
/src/DevFlow.Colors/Properties/Resources.Designer.cs:
--------------------------------------------------------------------------------
1 | //------------------------------------------------------------------------------
2 | //
3 | // 이 코드는 도구를 사용하여 생성되었습니다.
4 | // 런타임 버전:4.0.30319.42000
5 | //
6 | // 파일 내용을 변경하면 잘못된 동작이 발생할 수 있으며, 코드를 다시 생성하면
7 | // 이러한 변경 내용이 손실됩니다.
8 | //
9 | //------------------------------------------------------------------------------
10 |
11 | namespace DevFlow.Colors.Properties {
12 |
13 |
14 | ///
15 | /// 지역화된 문자열 등을 찾기 위한 강력한 형식의 리소스 클래스입니다.
16 | ///
17 | // 이 클래스는 ResGen 또는 Visual Studio와 같은 도구를 통해 StronglyTypedResourceBuilder
18 | // 클래스에서 자동으로 생성되었습니다.
19 | // 멤버를 추가하거나 제거하려면 .ResX 파일을 편집한 다음 /str 옵션을 사용하여
20 | // ResGen을 다시 실행하거나 VS 프로젝트를 다시 빌드하십시오.
21 | [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0")]
22 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
23 | [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
24 | internal class Resources {
25 |
26 | private static global::System.Resources.ResourceManager resourceMan;
27 |
28 | private static global::System.Globalization.CultureInfo resourceCulture;
29 |
30 | [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
31 | internal Resources() {
32 | }
33 |
34 | ///
35 | /// 이 클래스에서 사용하는 캐시된 ResourceManager 인스턴스를 반환합니다.
36 | ///
37 | [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
38 | internal static global::System.Resources.ResourceManager ResourceManager {
39 | get {
40 | if ((resourceMan == null)) {
41 | global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("DevFlow.Colors.Properties.Resources", typeof(Resources).Assembly);
42 | resourceMan = temp;
43 | }
44 | return resourceMan;
45 | }
46 | }
47 |
48 | ///
49 | /// 이 강력한 형식의 리소스 클래스를 사용하여 모든 리소스 조회에 대해 현재 스레드의 CurrentUICulture 속성을
50 | /// 재정의합니다.
51 | ///
52 | [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
53 | internal static global::System.Globalization.CultureInfo Culture {
54 | get {
55 | return resourceCulture;
56 | }
57 | set {
58 | resourceCulture = value;
59 | }
60 | }
61 | }
62 | }
63 |
--------------------------------------------------------------------------------
/src/DevFlow.Colors/Properties/Settings.Designer.cs:
--------------------------------------------------------------------------------
1 | //------------------------------------------------------------------------------
2 | //
3 | // This code was generated by a tool.
4 | // Runtime Version:4.0.30319.42000
5 | //
6 | // Changes to this file may cause incorrect behavior and will be lost if
7 | // the code is regenerated.
8 | //
9 | //------------------------------------------------------------------------------
10 |
11 | namespace DevFlow.Colors.Properties
12 | {
13 |
14 |
15 | [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
16 | [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "11.0.0.0")]
17 | internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase
18 | {
19 |
20 | private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings())));
21 |
22 | public static Settings Default
23 | {
24 | get
25 | {
26 | return defaultInstance;
27 | }
28 | }
29 | }
30 | }
31 |
--------------------------------------------------------------------------------
/src/DevFlow.Colors/Properties/Settings.settings:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
--------------------------------------------------------------------------------
/src/DevFlow.Colors/Themes/Generic.xaml:
--------------------------------------------------------------------------------
1 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
--------------------------------------------------------------------------------
/src/DevFlow.Colors/Themes/Styles/PaletteGridBox.xaml:
--------------------------------------------------------------------------------
1 |
6 |
7 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
62 |
63 |
64 |
65 |
66 |
67 |
--------------------------------------------------------------------------------
/src/DevFlow.Colors/VIews/ColorSpoid.cs:
--------------------------------------------------------------------------------
1 | using DevFlow.LayoutSupport.Controls;
2 | using System.Windows;
3 |
4 | namespace DevFlow.Colors.Views
5 | {
6 | public class ColorSpoid : Explorer
7 | {
8 | #region DefaultStyleKey
9 |
10 | static ColorSpoid()
11 | {
12 | DefaultStyleKeyProperty.OverrideMetadata(typeof(ColorSpoid), new FrameworkPropertyMetadata(typeof(ColorSpoid)));
13 | }
14 | #endregion
15 |
16 | #region Constructor
17 |
18 | public ColorSpoid()
19 | {
20 | IsFixedSize = true;
21 | ResizeMode = System.Windows.ResizeMode.NoResize;
22 | Width = 400;
23 | Height = 360;
24 |
25 | Loaded += (s, e) => Topmost = true;
26 | }
27 | #endregion
28 | }
29 | }
30 |
--------------------------------------------------------------------------------
/src/DevFlow.Colors/VIews/Units/ExtractColorBox.cs:
--------------------------------------------------------------------------------
1 | using System.Windows;
2 | using System.Windows.Controls;
3 |
4 | namespace DevFlow.Colors.Views
5 | {
6 | public class ExtractColorBox : Control
7 | {
8 | static ExtractColorBox()
9 | {
10 | DefaultStyleKeyProperty.OverrideMetadata(typeof(ExtractColorBox), new FrameworkPropertyMetadata(typeof(ExtractColorBox)));
11 | }
12 | }
13 | }
14 |
--------------------------------------------------------------------------------
/src/DevFlow.Colors/VIews/Units/PaletteGridBox.cs:
--------------------------------------------------------------------------------
1 | using System.Windows;
2 | using System.Windows.Controls;
3 |
4 | namespace DevFlow.Colors.Views
5 | {
6 | public class PaletteGridBox : ListBox
7 | {
8 | #region DefaultStyleKey
9 |
10 | static PaletteGridBox()
11 | {
12 | DefaultStyleKeyProperty.OverrideMetadata(typeof(PaletteGridBox), new FrameworkPropertyMetadata(typeof(PaletteGridBox)));
13 | }
14 | #endregion
15 | }
16 | }
17 |
--------------------------------------------------------------------------------
/src/DevFlow.Colors/packages.config:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
--------------------------------------------------------------------------------
/src/DevFlow.Controls/DevFlow.Controls.csproj:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | Debug
6 | AnyCPU
7 | {D77874A6-4C26-4CE5-B3FE-4DE1E067E5A8}
8 | Library
9 | Properties
10 | DevFlow.Controls
11 | DevFlow.Controls
12 | v4.8
13 | 512
14 | true
15 |
16 |
17 | true
18 | full
19 | false
20 | bin\Debug\
21 | DEBUG;TRACE
22 | prompt
23 | 4
24 |
25 |
26 | pdbonly
27 | true
28 | bin\Release\
29 | TRACE
30 | prompt
31 | 4
32 |
33 |
34 |
35 |
36 |
37 |
38 |
39 |
40 |
41 |
42 |
43 |
44 |
45 |
46 |
47 |
48 |
49 |
50 |
51 |
52 |
53 |
54 |
55 |
56 |
57 |
58 | {4F92EC03-384B-4463-8AFC-099C7FB9941C}
59 | DevFlow.Data
60 |
61 |
62 | {3D2AAB15-663D-4EF4-B80E-0AFECA05C910}
63 | DevFlow.Foundation
64 |
65 |
66 |
67 |
--------------------------------------------------------------------------------
/src/DevFlow.Controls/Primitives/DragBorder.cs:
--------------------------------------------------------------------------------
1 | using System.Windows.Controls;
2 |
3 | namespace DevFlow.Controls.Primitives
4 | {
5 | public class DraggableBar : Border
6 | {
7 | }
8 | }
9 |
--------------------------------------------------------------------------------
/src/DevFlow.Controls/Primitives/Express.cs:
--------------------------------------------------------------------------------
1 | using DevFlow.Foundation.Flowbase;
2 |
3 | namespace DevFlow.Controls.Primitives
4 | {
5 | public class Express : FlowView
6 | {
7 | #region Constructor
8 |
9 | public Express()
10 | {
11 | }
12 | #endregion
13 | }
14 | }
--------------------------------------------------------------------------------
/src/DevFlow.Controls/Primitives/MainWindow.cs:
--------------------------------------------------------------------------------
1 | using DevFlow.Data.Menu;
2 | using DevFlow.Foundation.Flowbase;
3 | using System.Windows;
4 |
5 | namespace DevFlow.Controls.Primitives
6 | {
7 | public class SystemWindow : FlowWindow
8 | {
9 | #region Constructor
10 |
11 | public SystemWindow()
12 | {
13 | WindowStyle = WindowStyle.None;
14 | AllowsTransparency = true;
15 | Topmost = true;
16 |
17 | Loaded += WindowLoaded;
18 | PreviewMouseDown += WindowDragMove;
19 | }
20 | #endregion
21 |
22 | #region WindowDragMove
23 |
24 | private void WindowDragMove(object sender, System.Windows.Input.MouseEventArgs e)
25 | {
26 | if (e.LeftButton == System.Windows.Input.MouseButtonState.Pressed)
27 | {
28 | if ((e.OriginalSource as FrameworkElement).DataContext is MenuModel)
29 | {
30 | return;
31 | }
32 | DragMove();
33 | }
34 | }
35 | #endregion
36 |
37 | #region WindowLoaded
38 |
39 | private void WindowLoaded(object sender, RoutedEventArgs e)
40 | {
41 | double width = System.Windows.SystemParameters.WorkArea.Width;
42 | Left = (width - ActualWidth) / 2;
43 | Top = 0;
44 | }
45 | #endregion
46 |
47 | #region OnShow
48 |
49 | public override void OnShow(MenuModel menu)
50 | {
51 | throw new System.NotImplementedException();
52 | }
53 | #endregion
54 | }
55 | }
56 |
--------------------------------------------------------------------------------
/src/DevFlow.Controls/Properties/AssemblyInfo.cs:
--------------------------------------------------------------------------------
1 | using System.Reflection;
2 | using System.Runtime.InteropServices;
3 |
4 | // 어셈블리에 대한 일반 정보는 다음 특성 집합을 통해
5 | // 제어됩니다. 어셈블리와 관련된 정보를 수정하려면
6 | // 이러한 특성 값을 변경하세요.
7 | [assembly: AssemblyTitle("DevFlow.Controls")]
8 | [assembly: AssemblyDescription("")]
9 | [assembly: AssemblyConfiguration("")]
10 | [assembly: AssemblyCompany("")]
11 | [assembly: AssemblyProduct("DevFlow.Controls")]
12 | [assembly: AssemblyCopyright("Copyright © 2021")]
13 | [assembly: AssemblyTrademark("")]
14 | [assembly: AssemblyCulture("")]
15 |
16 | // ComVisible을 false로 설정하면 이 어셈블리의 형식이 COM 구성 요소에
17 | // 표시되지 않습니다. COM에서 이 어셈블리의 형식에 액세스하려면
18 | // 해당 형식에 대해 ComVisible 특성을 true로 설정하세요.
19 | [assembly: ComVisible(false)]
20 |
21 | // 이 프로젝트가 COM에 노출되는 경우 다음 GUID는 typelib의 ID를 나타냅니다.
22 | [assembly: Guid("d77874a6-4c26-4ce5-b3fe-4de1e067e5a8")]
23 |
24 | // 어셈블리의 버전 정보는 다음 네 가지 값으로 구성됩니다.
25 | //
26 | // 주 버전
27 | // 부 버전
28 | // 빌드 번호
29 | // 수정 버전
30 | //
31 | // 모든 값을 지정하거나 아래와 같이 '*'를 사용하여 빌드 번호 및 수정 번호를
32 | // 기본값으로 할 수 있습니다.
33 | // [assembly: AssemblyVersion("1.0.*")]
34 | [assembly: AssemblyVersion("1.0.0.0")]
35 | [assembly: AssemblyFileVersion("1.0.0.0")]
36 |
--------------------------------------------------------------------------------
/src/DevFlow.Controls/Util/GeometryExtends.cs:
--------------------------------------------------------------------------------
1 | using System.Windows.Media;
2 |
3 | namespace DevFlow.Controls.Util
4 | {
5 | public static class GeometryExtends
6 | {
7 | #region ToGeometry
8 |
9 | public static Geometry ToGeometry(this string geometryString)
10 | {
11 | return Geometry.Parse(geometryString);
12 | }
13 | #endregion
14 | }
15 | }
16 |
--------------------------------------------------------------------------------
/src/DevFlow.Converter/DevFlow.Converter.csproj:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | Debug
6 | AnyCPU
7 | {7C22B438-112A-4554-8F51-78C2992AC632}
8 | Library
9 | Properties
10 | DevFlow.Converter
11 | DevFlow.Converter
12 | v4.8
13 | 512
14 | true
15 |
16 |
17 | true
18 | full
19 | false
20 | bin\Debug\
21 | DEBUG;TRACE
22 | prompt
23 | 4
24 |
25 |
26 | pdbonly
27 | true
28 | bin\Release\
29 | TRACE
30 | prompt
31 | 4
32 |
33 |
34 |
35 |
36 |
37 |
38 |
39 |
40 |
41 |
42 |
43 |
44 |
45 |
46 |
47 |
48 |
49 |
50 |
51 |
52 |
53 |
54 |
55 |
56 |
57 |
--------------------------------------------------------------------------------
/src/DevFlow.Converter/EqualsToBooleanConverter.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Globalization;
3 | using System.Windows.Data;
4 | using System.Windows.Markup;
5 |
6 | namespace DevFlow.Converter
7 | {
8 | public class EqualsToBooleanConverter : MarkupExtension, IValueConverter
9 | {
10 | public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
11 | {
12 | return value.Equals("Transparent");
13 | }
14 |
15 | public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
16 | {
17 | throw new NotImplementedException();
18 | }
19 |
20 | public override object ProvideValue(IServiceProvider serviceProvider)
21 | {
22 | return this;
23 | }
24 | }
25 | }
26 |
--------------------------------------------------------------------------------
/src/DevFlow.Converter/FileSizeConverter.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Globalization;
3 | using System.Windows.Data;
4 | using System.Windows.Markup;
5 |
6 | namespace DevFlow.Converter
7 | {
8 | public class FileSizeConverter : MarkupExtension, IValueConverter
9 | {
10 | #region Convert
11 |
12 | public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
13 | {
14 | value = value ?? 0;
15 | string[] units = { "B", "KB", "MB", "GB", "TB", "PB", "EB", "ZB", "YB" };
16 | double size = long.Parse(value.ToString());
17 | int unit = 0;
18 |
19 | while (size >= 1024 && unit < 1)
20 | {
21 | size /= 1024;
22 | ++unit;
23 | }
24 | if (size == 0) return "";
25 | return String.Format("{0:#,##0.#}{1}", size, units[unit]);
26 | }
27 | #endregion
28 |
29 | #region ConvertBack
30 |
31 | public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
32 | {
33 | throw new NotImplementedException();
34 | }
35 | #endregion
36 |
37 | #region ProvideValue
38 |
39 | public override object ProvideValue(IServiceProvider serviceProvider)
40 | {
41 | return this;
42 | }
43 | #endregion
44 | }
45 | }
--------------------------------------------------------------------------------
/src/DevFlow.Converter/LeftMarginConverter.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Globalization;
3 | using System.Windows;
4 | using System.Windows.Data;
5 | using System.Windows.Markup;
6 |
7 | namespace DevFlow.Converter
8 | {
9 | public class LeftMarginConverter : MarkupExtension, IValueConverter
10 | {
11 | public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
12 | {
13 | return new Thickness(int.Parse(value.ToString()) * 10, 0, 0, 0);
14 | }
15 |
16 | public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
17 | {
18 | throw new NotImplementedException();
19 | }
20 |
21 | public override object ProvideValue(IServiceProvider serviceProvider)
22 | {
23 | return this;
24 | }
25 | }
26 | }
27 |
--------------------------------------------------------------------------------
/src/DevFlow.Converter/Properties/AssemblyInfo.cs:
--------------------------------------------------------------------------------
1 | using System.Reflection;
2 | using System.Runtime.InteropServices;
3 |
4 | // 어셈블리에 대한 일반 정보는 다음 특성 집합을 통해
5 | // 제어됩니다. 어셈블리와 관련된 정보를 수정하려면
6 | // 이러한 특성 값을 변경하세요.
7 | [assembly: AssemblyTitle("DevFlow.Converter")]
8 | [assembly: AssemblyDescription("")]
9 | [assembly: AssemblyConfiguration("")]
10 | [assembly: AssemblyCompany("")]
11 | [assembly: AssemblyProduct("DevFlow.Converter")]
12 | [assembly: AssemblyCopyright("Copyright © 2021")]
13 | [assembly: AssemblyTrademark("")]
14 | [assembly: AssemblyCulture("")]
15 |
16 | // ComVisible을 false로 설정하면 이 어셈블리의 형식이 COM 구성 요소에
17 | // 표시되지 않습니다. COM에서 이 어셈블리의 형식에 액세스하려면
18 | // 해당 형식에 대해 ComVisible 특성을 true로 설정하세요.
19 | [assembly: ComVisible(false)]
20 |
21 | // 이 프로젝트가 COM에 노출되는 경우 다음 GUID는 typelib의 ID를 나타냅니다.
22 | [assembly: Guid("7c22b438-112a-4554-8f51-78c2992ac632")]
23 |
24 | // 어셈블리의 버전 정보는 다음 네 가지 값으로 구성됩니다.
25 | //
26 | // 주 버전
27 | // 부 버전
28 | // 빌드 번호
29 | // 수정 버전
30 | //
31 | // 모든 값을 지정하거나 아래와 같이 '*'를 사용하여 빌드 번호 및 수정 번호를
32 | // 기본값으로 할 수 있습니다.
33 | // [assembly: AssemblyVersion("1.0.*")]
34 | [assembly: AssemblyVersion("1.0.0.0")]
35 | [assembly: AssemblyFileVersion("1.0.0.0")]
36 |
--------------------------------------------------------------------------------
/src/DevFlow.Converter/ResourceNameConverter.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Globalization;
3 | using System.Windows;
4 | using System.Windows.Data;
5 |
6 | namespace DevFlow.Converter
7 | {
8 | public class ResourceNameConverter : IValueConverter
9 | {
10 | public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
11 | {
12 | //var dynamic = FrameworkElement.SetResourceReference(targetType as DependencyProperty, value.ToString());
13 | return Application.Current.FindResource(value);
14 | }
15 |
16 | public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
17 | {
18 | throw new NotImplementedException();
19 | }
20 | }
21 | }
22 |
--------------------------------------------------------------------------------
/src/DevFlow.Converter/RgbToHexConverter.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Globalization;
3 | using System.Windows.Data;
4 |
5 | namespace DevFlow.Converter
6 | {
7 | public class RgbToHexConverter : IValueConverter
8 | {
9 | public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
10 | {
11 | string hex = "";
12 | int color = int.Parse(value.ToString());
13 |
14 | switch (parameter)
15 | {
16 | case "R": hex = $"#FF{color:X2}0000"; break;
17 | case "G": hex = $"#FF00{color:X2}00"; break;
18 | case "B": hex = $"#FF0000{color:X2}"; break;
19 | default:
20 | break;
21 | }
22 |
23 | return hex;
24 | }
25 |
26 | public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
27 | {
28 | throw new NotImplementedException();
29 | }
30 | }
31 | }
32 |
--------------------------------------------------------------------------------
/src/DevFlow.Data/Colors/ColorStampModel.cs:
--------------------------------------------------------------------------------
1 | using DevFlow.Serialization.Color;
2 | using DevFlow.Serialization.Data;
3 | using System.Windows.Input;
4 |
5 | namespace DevFlow.Data.Colors
6 | {
7 | public class ColorStampModel
8 | {
9 |
10 | public string HexColor { get; set; }
11 | public byte Red { get; set; }
12 | public byte Green { get; set; }
13 | public byte Blue { get; set; }
14 | public ICommand ColorClickCommand { get; set; }
15 |
16 | public ColorStampModel(ColorStruct rgba, ICommand command)
17 | {
18 | HexColor = ConvertColor.Hex(rgba);
19 | Red = rgba.Red;
20 | Green = rgba.Green;
21 | Blue = rgba.Blue;
22 | ColorClickCommand = command;
23 | }
24 | }
25 | }
26 |
--------------------------------------------------------------------------------
/src/DevFlow.Data/DevFlow.Data.csproj:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | Debug
6 | AnyCPU
7 | {4F92EC03-384B-4463-8AFC-099C7FB9941C}
8 | Library
9 | Properties
10 | DevFlow.Data
11 | DevFlow.Data
12 | v4.8
13 | 512
14 | true
15 |
16 |
17 | true
18 | full
19 | false
20 | bin\Debug\
21 | DEBUG;TRACE
22 | prompt
23 | 4
24 |
25 |
26 | pdbonly
27 | true
28 | bin\Release\
29 | TRACE
30 | prompt
31 | 4
32 |
33 |
34 |
35 |
36 |
37 |
38 |
39 |
40 |
41 |
42 |
43 |
44 |
45 |
46 |
47 |
48 |
49 |
50 |
51 |
52 |
53 |
54 |
55 |
56 |
57 |
58 |
59 |
60 | {5164EC60-CB8F-41D8-8386-E6B258F8F0C5}
61 | DevFlow.Serialization
62 |
63 |
64 |
65 |
--------------------------------------------------------------------------------
/src/DevFlow.Data/Enums/GeometryIconStyle.cs:
--------------------------------------------------------------------------------
1 | namespace DevFlow.Data
2 | {
3 | public enum GeoIcon
4 | {
5 | None,
6 | Close,
7 | CheckCircle,
8 | MicrosoftVisualStudio,
9 | MonitorShimmer,
10 | MovieOpenPlay,
11 | EyedropperVariant,
12 | OcgRefreshOutline,
13 | GoogleTranslate,
14 | Image,
15 | CalendarMonth,
16 | Minimize,
17 | Web,
18 | Palette,
19 | Crop,
20 | Menu,
21 | ContentPaste,
22 | CheckBold,
23 | FolderOpenOutline,
24 | FolderTable,
25 | Maximize,
26 | Resize,
27 | SelectAll,
28 | ConsoleLine,
29 | Folder,
30 | FolderOutline,
31 | File,
32 | FileImage,
33 | Plus,
34 | ArrowUpBold,
35 | ArrowRightBold,
36 | ArrowLeftBold,
37 | ArrowAll,
38 | MicrosoftWindows,
39 | ArrowDownBox,
40 | TextBox,
41 | Harddisk,
42 | DesktopClassic,
43 | ChevronRight,
44 | ChevronDown,
45 | DotsHorizontalCircle,
46 | FilePDF,
47 | FileZIP,
48 | FileCheck,
49 | FileWord,
50 | AlphaR,
51 | AlphaG,
52 | AlphaB,
53 | FolderOpen,
54 | Check,
55 | ArrowULeftTopBold
56 | }
57 | }
58 |
59 |
60 |
61 |
62 |
63 |
64 |
65 |
--------------------------------------------------------------------------------
/src/DevFlow.Data/Enums/LanguageType.cs:
--------------------------------------------------------------------------------
1 | namespace DevFlow.Data
2 | {
3 | public enum LanguageType
4 | {
5 | UnitedStates,
6 | Korea,
7 | China,
8 | Japan
9 | }
10 | }
11 |
--------------------------------------------------------------------------------
/src/DevFlow.Data/Enums/ThemeType.cs:
--------------------------------------------------------------------------------
1 | namespace DevFlow.Data
2 | {
3 | public enum ThemeType
4 | {
5 | Dark,
6 | White,
7 | James,
8 | Elena
9 | }
10 | }
11 |
--------------------------------------------------------------------------------
/src/DevFlow.Data/History/HistoryModel.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.ComponentModel;
3 | using System.IO;
4 | using System.Runtime.CompilerServices;
5 | using System.Windows.Media.Imaging;
6 |
7 | namespace DevFlow.Data.History
8 | {
9 | public class HistoryModel : INotifyPropertyChanged
10 | {
11 | public event PropertyChangedEventHandler PropertyChanged;
12 | protected void OnPropertyChanged([CallerMemberName] string name = null)
13 | {
14 | PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(name));
15 | }
16 |
17 | private BitmapImage _image;
18 | private BitmapImage _previewImage;
19 |
20 | #region Index
21 |
22 | public int Index { get; set; }
23 | #endregion
24 |
25 | #region ImagePath
26 |
27 | public string ImagePath { get; set; }
28 | #endregion
29 |
30 | #region Image
31 |
32 | public BitmapImage Image
33 | {
34 | get => _image;
35 | set { _image = value; OnPropertyChanged(); }
36 | }
37 | #endregion
38 |
39 | #region PreviewImage
40 |
41 | public BitmapImage PreviewImage
42 | {
43 | get => _previewImage;
44 | set { _previewImage = value; OnPropertyChanged(); }
45 | }
46 | #endregion
47 |
48 | #region Created
49 |
50 | public DateTime Created { get; set; }
51 | #endregion
52 |
53 | #region Size
54 |
55 | public long Size { get; set; }
56 | #endregion
57 |
58 | #region FileName
59 |
60 | public string FileName { get; set; }
61 | #endregion
62 |
63 | #region Constructor
64 |
65 | public HistoryModel(int index, string x)
66 | {
67 | FileInfo fi = new FileInfo(x);
68 |
69 | Index = index;
70 | ImagePath = x;
71 | FileName = fi.Name;
72 | Created = fi.CreationTime;
73 | Size = fi.Length;
74 | }
75 | #endregion
76 | }
77 | }
78 |
--------------------------------------------------------------------------------
/src/DevFlow.Data/Language/LanguageModel.cs:
--------------------------------------------------------------------------------
1 | using System.Windows.Input;
2 |
3 | namespace DevFlow.Data.Language
4 | {
5 | public class LanguageModel
6 | {
7 | public string Name { get; set; }
8 | public LanguageType Language { get; set; }
9 | public ICommand LanguageClickCommand { get; set; }
10 |
11 | public LanguageModel(string name, LanguageType languageType)
12 | {
13 | Name = name;
14 | Language = languageType;
15 | }
16 | }
17 | }
18 |
--------------------------------------------------------------------------------
/src/DevFlow.Data/Menu/MenuModel.cs:
--------------------------------------------------------------------------------
1 | using System.Windows.Input;
2 |
3 | namespace DevFlow.Data.Menu
4 | {
5 | public class MenuModel
6 | {
7 | public int Seq { get; set; }
8 | public string Name { get; set; }
9 | public GeoIcon IconType { get; set; }
10 |
11 | public ICommand MenuClickCommand { get; set; }
12 | }
13 | }
14 |
--------------------------------------------------------------------------------
/src/DevFlow.Data/Properties/AssemblyInfo.cs:
--------------------------------------------------------------------------------
1 | using System.Reflection;
2 | using System.Runtime.InteropServices;
3 |
4 | // 어셈블리에 대한 일반 정보는 다음 특성 집합을 통해
5 | // 제어됩니다. 어셈블리와 관련된 정보를 수정하려면
6 | // 이러한 특성 값을 변경하세요.
7 | [assembly: AssemblyTitle("DevFlow.Data")]
8 | [assembly: AssemblyDescription("")]
9 | [assembly: AssemblyConfiguration("")]
10 | [assembly: AssemblyCompany("")]
11 | [assembly: AssemblyProduct("DevFlow.Data")]
12 | [assembly: AssemblyCopyright("Copyright © 2021")]
13 | [assembly: AssemblyTrademark("")]
14 | [assembly: AssemblyCulture("")]
15 |
16 | // ComVisible을 false로 설정하면 이 어셈블리의 형식이 COM 구성 요소에
17 | // 표시되지 않습니다. COM에서 이 어셈블리의 형식에 액세스하려면
18 | // 해당 형식에 대해 ComVisible 특성을 true로 설정하세요.
19 | [assembly: ComVisible(false)]
20 |
21 | // 이 프로젝트가 COM에 노출되는 경우 다음 GUID는 typelib의 ID를 나타냅니다.
22 | [assembly: Guid("4f92ec03-384b-4463-8afc-099c7fb9941c")]
23 |
24 | // 어셈블리의 버전 정보는 다음 네 가지 값으로 구성됩니다.
25 | //
26 | // 주 버전
27 | // 부 버전
28 | // 빌드 번호
29 | // 수정 버전
30 | //
31 | // 모든 값을 지정하거나 아래와 같이 '*'를 사용하여 빌드 번호 및 수정 번호를
32 | // 기본값으로 할 수 있습니다.
33 | // [assembly: AssemblyVersion("1.0.*")]
34 | [assembly: AssemblyVersion("1.0.0.0")]
35 | [assembly: AssemblyFileVersion("1.0.0.0")]
36 |
--------------------------------------------------------------------------------
/src/DevFlow.Data/Settings/ConfigModel.cs:
--------------------------------------------------------------------------------
1 | using System.Collections.Generic;
2 |
3 | namespace DevFlow.Data.Settings
4 | {
5 | public class ConfigModel
6 | {
7 | public ThemeType Theme { get; set; }
8 | public LanguageType Language { get; set; }
9 | public List ViewOptions { get; set; }
10 | public string SpoidColor { get; set; } = "#FFFFFFFF";
11 |
12 | public ConfigModel()
13 | {
14 | ViewOptions = new List();
15 | }
16 | }
17 | }
18 |
--------------------------------------------------------------------------------
/src/DevFlow.Data/Settings/ViewOptionModel.cs:
--------------------------------------------------------------------------------
1 | namespace DevFlow.Data.Settings
2 | {
3 | public class ViewOptionModel
4 | {
5 | public GeoIcon IconType { get; set; }
6 | public int LocX { get; set; }
7 | public int LocY { get; set; }
8 | public int Width { get; set; }
9 | public int Height { get; set; }
10 | }
11 | }
12 |
--------------------------------------------------------------------------------
/src/DevFlow.Data/Theme/SkinModel.cs:
--------------------------------------------------------------------------------
1 | using System.Windows.Input;
2 |
3 | namespace DevFlow.Data.Theme
4 | {
5 | public class SkinModel
6 | {
7 | public string Name { get; set; }
8 | public ThemeType Skin { get; set; }
9 | public ICommand SelectSkinCommand { get; set; }
10 |
11 | public SkinModel(string name, ThemeType themeType)
12 | {
13 | Name = name;
14 | Skin = themeType;
15 | }
16 | }
17 | }
18 |
--------------------------------------------------------------------------------
/src/DevFlow.Data/Works/WorkspaceModel.cs:
--------------------------------------------------------------------------------
1 | using DevFlow.Data.Menu;
2 | using System.Windows;
3 |
4 | namespace DevFlow.Data.Works
5 | {
6 | public class WorkspaceModel
7 | {
8 | public MenuModel Menu { get; set; }
9 | public IInputElement Content { get; set; }
10 |
11 | public WorkspaceModel(MenuModel menu, IInputElement content)
12 | {
13 | Menu = menu;
14 | Content = content;
15 | }
16 |
17 | }
18 | }
19 |
--------------------------------------------------------------------------------
/src/DevFlow.Extensions/CollectionExtensions.cs:
--------------------------------------------------------------------------------
1 | using System.Collections;
2 | using System.Collections.ObjectModel;
3 |
4 | namespace DevFlow.Extensions
5 | {
6 | public static class CollectionExtensions
7 | {
8 | public static void AddRange(this ObservableCollection collection, IEnumerable list)
9 | {
10 | collection.Clear();
11 | foreach (object item in list)
12 | {
13 | collection.Add((T)item);
14 | }
15 | }
16 | }
17 | }
18 |
--------------------------------------------------------------------------------
/src/DevFlow.Extensions/DevFlow.Extensions.csproj:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | Debug
6 | AnyCPU
7 | {A9782514-9231-4C6B-9419-E8289C268B21}
8 | Library
9 | Properties
10 | DevFlow.Extensions
11 | DevFlow.Extensions
12 | v4.8
13 | 512
14 | true
15 | 9.0
16 |
17 |
18 | true
19 | full
20 | false
21 | bin\Debug\
22 | DEBUG;TRACE
23 | prompt
24 | 4
25 |
26 |
27 | pdbonly
28 | true
29 | bin\Release\
30 | TRACE
31 | prompt
32 | 4
33 |
34 |
35 |
36 |
37 |
38 |
39 |
40 |
41 |
42 |
43 |
44 |
45 |
46 |
47 |
48 |
49 |
--------------------------------------------------------------------------------
/src/DevFlow.Extensions/Properties/AssemblyInfo.cs:
--------------------------------------------------------------------------------
1 | using System.Reflection;
2 | using System.Runtime.InteropServices;
3 |
4 | // 어셈블리에 대한 일반 정보는 다음 특성 집합을 통해
5 | // 제어됩니다. 어셈블리와 관련된 정보를 수정하려면
6 | // 이러한 특성 값을 변경하세요.
7 | [assembly: AssemblyTitle("DevFlow.Extensions")]
8 | [assembly: AssemblyDescription("")]
9 | [assembly: AssemblyConfiguration("")]
10 | [assembly: AssemblyCompany("")]
11 | [assembly: AssemblyProduct("DevFlow.Extensions")]
12 | [assembly: AssemblyCopyright("Copyright © 2021")]
13 | [assembly: AssemblyTrademark("")]
14 | [assembly: AssemblyCulture("")]
15 |
16 | // ComVisible을 false로 설정하면 이 어셈블리의 형식이 COM 구성 요소에
17 | // 표시되지 않습니다. COM에서 이 어셈블리의 형식에 액세스하려면
18 | // 해당 형식에 대해 ComVisible 특성을 true로 설정하세요.
19 | [assembly: ComVisible(false)]
20 |
21 | // 이 프로젝트가 COM에 노출되는 경우 다음 GUID는 typelib의 ID를 나타냅니다.
22 | [assembly: Guid("a9782514-9231-4c6b-9419-e8289c268b21")]
23 |
24 | // 어셈블리의 버전 정보는 다음 네 가지 값으로 구성됩니다.
25 | //
26 | // 주 버전
27 | // 부 버전
28 | // 빌드 번호
29 | // 수정 버전
30 | //
31 | // 모든 값을 지정하거나 아래와 같이 '*'를 사용하여 빌드 번호 및 수정 번호를
32 | // 기본값으로 할 수 있습니다.
33 | // [assembly: AssemblyVersion("1.0.*")]
34 | [assembly: AssemblyVersion("1.0.0.0")]
35 | [assembly: AssemblyFileVersion("1.0.0.0")]
36 |
--------------------------------------------------------------------------------
/src/DevFlow.Finders/Local/Api/DirectorySupport.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.IO;
3 |
4 | namespace DevFlow.Finders.Local.Api
5 | {
6 | internal class RootSupport
7 | {
8 | internal static string Downloads => Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.UserProfile), @"Downloads");
9 | internal static string Documents => Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments);
10 | internal static string Pictures => Environment.GetFolderPath(Environment.SpecialFolder.MyPictures);
11 |
12 | #region TryParent
13 |
14 | internal static bool TryParent(string path, out string parentPath)
15 | {
16 | try
17 | {
18 | DirectoryInfo info = Directory.GetParent(path);
19 | parentPath = info?.FullName;
20 | return info != null;
21 | }
22 | catch
23 | {
24 | parentPath = null;
25 | return false;
26 | }
27 | }
28 | #endregion
29 |
30 | internal static bool CheckAccess(string filename)
31 | {
32 | try
33 | {
34 | string[] d = Directory.GetDirectories(filename);
35 | return true;
36 | }
37 | catch (Exception)
38 | {
39 | return false;
40 | }
41 | }
42 | }
43 | }
44 |
--------------------------------------------------------------------------------
/src/DevFlow.Finders/Local/Api/MousePosition.cs:
--------------------------------------------------------------------------------
1 | using System.Windows;
2 | using System.Windows.Input;
3 | using dr = System.Drawing;
4 |
5 | namespace DevFlow.Finders.Local.Api
6 | {
7 | public class MousePosition
8 | {
9 | public static dr.Point GetMousePosition(UIElement ui)
10 | {
11 | Point p = Mouse.GetPosition(Window.GetWindow(ui));
12 | Point ppp = Window.GetWindow(ui).PointToScreen(p);
13 | dr.Point pp = new((int)ppp.X, (int)ppp.Y);
14 |
15 | return pp;
16 | }
17 | }
18 | }
19 |
--------------------------------------------------------------------------------
/src/DevFlow.Finders/Local/Api/RootIcon.cs:
--------------------------------------------------------------------------------
1 | using DevFlow.Data;
2 | using System.IO;
3 |
4 | namespace DevFlow.Finders.Local.Api
5 | {
6 |
7 | internal sealed record RootIcon
8 | {
9 | internal static GeoIcon MyPC => GeoIcon.DesktopClassic;
10 | internal static GeoIcon Folder => GeoIcon.Folder;
11 | internal static GeoIcon Download => GeoIcon.ArrowDownBox;
12 | internal static GeoIcon Document => GeoIcon.TextBox;
13 | internal static GeoIcon Pictures => GeoIcon.Image;
14 |
15 | #region Parse
16 |
17 | internal static GeoIcon Parse(string file)
18 | {
19 | GeoIcon ext = GeoIcon.File;
20 | switch (Path.GetExtension(file).ToUpper())
21 | {
22 | case ".JPG":
23 | case ".JPEG":
24 | case ".GIF":
25 | case ".BMP":
26 | case ".PNG": ext = GeoIcon.FileImage; break;
27 | case ".PDF": ext = GeoIcon.FilePDF; break;
28 | case ".ZIP": ext = GeoIcon.FileZIP; break;
29 | case ".EXE": ext = GeoIcon.FileCheck; break;
30 | case ".DOCX":
31 | case ".DOC": ext = GeoIcon.FileWord; break;
32 | }
33 | return ext;
34 | }
35 | #endregion
36 | }
37 | }
38 |
--------------------------------------------------------------------------------
/src/DevFlow.Finders/Local/Enum/FileTypes.cs:
--------------------------------------------------------------------------------
1 | namespace DevFlow.Finders.Local.Enum
2 | {
3 | public enum FileTypes
4 | {
5 | Directory,
6 | File,
7 | SystemFile,
8 | Parent,
9 | HiddenDirectory,
10 | Hidden
11 | }
12 | }
13 |
--------------------------------------------------------------------------------
/src/DevFlow.Finders/Local/Enum/MoveType.cs:
--------------------------------------------------------------------------------
1 | namespace DevFlow.Finders.Local.Enum
2 | {
3 | public enum MoveType
4 | {
5 | GoUp,
6 | Undo,
7 | Redo,
8 | Click,
9 | History,
10 | TreeSelect,
11 | Record,
12 | File
13 | }
14 | }
15 |
--------------------------------------------------------------------------------
/src/DevFlow.Finders/Local/Model/FileModel.cs:
--------------------------------------------------------------------------------
1 | using DevFlow.Data;
2 | using DevFlow.Extensions;
3 | using DevFlow.Foundation.Mvvm;
4 | using System.Collections.Generic;
5 | using System.Collections.ObjectModel;
6 |
7 | namespace DevFlow.Finders.Local.Model
8 | {
9 | public class FileModel : ObservableData
10 | {
11 | private bool _isSelected;
12 | private bool _isDenied;
13 | private bool _isExpanded;
14 |
15 | public string Name { get; set; }
16 | public string FullPath { get; set; }
17 | public int Depth { get; set; }
18 | public long Length { get; set; }
19 | public GeoIcon IconType { get; protected set; }
20 | public ObservableCollection Children { get; set; } = new();
21 |
22 | public bool IsExpanded
23 | {
24 | get => _isExpanded;
25 | set { _isExpanded = value; OnPropertyChanged(); }
26 | }
27 |
28 | public bool IsSelected
29 | {
30 | get => _isSelected;
31 | set { _isSelected = value; OnPropertyChanged(); }
32 | }
33 |
34 | public bool IsDenied
35 | {
36 | get => _isDenied;
37 | set { _isDenied = value; OnPropertyChanged(); }
38 | }
39 |
40 | internal void AddRange(List rootModels)
41 | {
42 | Children.AddRange(rootModels);
43 | }
44 | }
45 | }
46 |
--------------------------------------------------------------------------------
/src/DevFlow.Finders/Local/Model/FolderModel.cs:
--------------------------------------------------------------------------------
1 | using DevFlow.Data;
2 | using System.IO;
3 |
4 | namespace DevFlow.Finders.Local.Model
5 | {
6 | public class FolderModel : FileModel
7 | {
8 | public string FileName => Path.GetFileName(FullPath) == "" ? FullPath : Path.GetFileName(FullPath);
9 |
10 | public FolderModel(string fullPath, GeoIcon icon)
11 | {
12 | FullPath = fullPath;
13 | IconType = icon;
14 | }
15 | }
16 | }
17 |
--------------------------------------------------------------------------------
/src/DevFlow.Finders/Local/Model/PolygonModel.cs:
--------------------------------------------------------------------------------
1 | using DevFlow.Foundation.Mvvm;
2 | using System;
3 | using System.Windows.Input;
4 |
5 | namespace DevFlow.Finders.Local.Model
6 | {
7 | public class LocatorModel : FileModel
8 | {
9 | public int Zindex { get; set; }
10 | public string Color { get; set; }
11 | public bool IsRoot { get; set; }
12 | public bool IsLast { get; set; }
13 |
14 | public ICommand PolygonClick { get; }
15 |
16 | public LocatorModel(string name, string fullName, Action polygonClick)
17 | {
18 | Name = name;
19 | FullPath = fullName;
20 | PolygonClick = new RelayCommand(polygonClick);
21 | IconType = Data.GeoIcon.Folder;
22 | }
23 | }
24 | }
25 |
--------------------------------------------------------------------------------
/src/DevFlow.Finders/Local/Model/RootModel.cs:
--------------------------------------------------------------------------------
1 | using DevFlow.Data;
2 | using System.Collections.ObjectModel;
3 | using System.IO;
4 |
5 | namespace DevFlow.Finders.Local.Model
6 | {
7 | public class RootModel : FileModel
8 | {
9 | public RootModel(int depth, string name, GeoIcon icon, string fullPath, bool isExpanded, bool isSelected)
10 | {
11 | FullPath = fullPath;
12 | Depth = depth;
13 | Name = name;
14 | IconType = icon;
15 | IsExpanded = isExpanded;
16 | IsSelected = isSelected;
17 | Children = new ObservableCollection();
18 | }
19 |
20 | public RootModel(string target, GeoIcon icon) : this(0, Path.GetFileName(target), icon, target, false, false)
21 | {
22 |
23 | }
24 | }
25 | }
26 |
--------------------------------------------------------------------------------
/src/DevFlow.Finders/Local/ViewModel/FinderViewModel.cs:
--------------------------------------------------------------------------------
1 | using DevFlow.Finders.Local.Enum;
2 | using DevFlow.Finders.Local.Model;
3 | using DevFlow.Finders.Local.Work;
4 | using DevFlow.Foundation.Mvvm;
5 | using System;
6 | using System.Collections.Generic;
7 | using System.Collections.ObjectModel;
8 | using System.Linq;
9 | using System.Windows.Input;
10 |
11 | namespace DevFlow.Finders.Local.ViewModel
12 | {
13 | public class FinderViewModel : ObservableObject
14 | {
15 | #region Variables
16 |
17 | private ObservableCollection _roots;
18 | private List _currentItems;
19 | private FileModel _currentDir;
20 |
21 | private readonly LocationWork LocWorker;
22 | #endregion
23 |
24 | #region ICommands
25 |
26 | public ICommand RecordClickCommand { get; }
27 | public ICommand RootClickCommand { get; }
28 | public ICommand SortedClickCommand { get; }
29 | public ICommand FolderClickCommand { get; }
30 | public ICommand UndoCommand { get; }
31 | public ICommand RedoCommand { get; }
32 | public ICommand GoUpCommand { get; }
33 | #endregion
34 |
35 | #region Roots
36 |
37 | public ObservableCollection Roots
38 | {
39 | get => _roots;
40 | set { _roots = value; OnPropertyChanged(); }
41 | }
42 | #endregion
43 |
44 | #region Records
45 |
46 | public ObservableCollection Records { get; }
47 | public RelayCommand TreeClickCommand { get; }
48 |
49 | public FileModel Record
50 | {
51 | get => _currentDir;
52 | set { _currentDir = value; OnPropertyChanged(); }
53 | }
54 | #endregion
55 |
56 | #region MachineName
57 |
58 | public string MachineName => Environment.MachineName.ToString();
59 | #endregion
60 |
61 | #region CurrentItems
62 |
63 | public List CurrentItems
64 | {
65 | get => _currentItems;
66 | set { _currentItems = value; OnPropertyChanged(); }
67 | }
68 | #endregion
69 |
70 | #region Constructor
71 |
72 | public FinderViewModel()
73 | {
74 | LocWorker = new(this);
75 | LocWorker.Refresh = Refresh;
76 | Roots = new(LocWorker.GetNodeList());
77 | CurrentItems = new();
78 | Records = new();
79 |
80 | TreeClickCommand = new RelayCommand((p) => LocWorker.Select(p, MoveType.TreeSelect));
81 | RecordClickCommand = new RelayCommand((p) => LocWorker.Record(p, MoveType.Record));
82 | FolderClickCommand = new RelayCommand((p) => LocWorker.Select(p, MoveType.File));
83 | SortedClickCommand = new RelayCommand((p) => LocWorker.Select(p, MoveType.File));
84 |
85 | GoUpCommand = new RelayCommand((p) => LocWorker.GoUpSelect(MoveType.GoUp), (p) => LocWorker.IsUsedGoUp);
86 | UndoCommand = new RelayCommand((p) => LocWorker.UndoSelect(MoveType.Undo), (p) => LocWorker.IsUsedUndo);
87 | RedoCommand = new RelayCommand((p) => LocWorker.RedoSelect(MoveType.Redo), (p) => LocWorker.IsUsedRedo);
88 |
89 | LocWorker.Select(Roots.FirstOrDefault(), MoveType.File);
90 | }
91 | #endregion
92 |
93 | // Callback..♥
94 |
95 | #region Refresh
96 |
97 | private void Refresh(FileModel obj, MoveType type)
98 | {
99 | LocWorker.GetContent();
100 | LocWorker.SetNodeFocus(type);
101 | }
102 | #endregion
103 | }
104 | }
105 |
106 |
--------------------------------------------------------------------------------
/src/DevFlow.Finders/Properties/AssemblyInfo.cs:
--------------------------------------------------------------------------------
1 | using System.Reflection;
2 | using System.Runtime.InteropServices;
3 | using System.Windows;
4 |
5 | // 어셈블리에 대한 일반 정보는 다음 특성 집합을 통해
6 | // 제어됩니다. 어셈블리와 관련된 정보를 수정하려면
7 | // 이러한 특성 값을 변경하세요.
8 | [assembly: AssemblyTitle("DevFlow.Finders")]
9 | [assembly: AssemblyDescription("")]
10 | [assembly: AssemblyConfiguration("")]
11 | [assembly: AssemblyCompany("")]
12 | [assembly: AssemblyProduct("DevFlow.Finders")]
13 | [assembly: AssemblyCopyright("Copyright © 2021")]
14 | [assembly: AssemblyTrademark("")]
15 | [assembly: AssemblyCulture("")]
16 |
17 | // ComVisible을 false로 설정하면 이 어셈블리의 형식이 COM 구성 요소에
18 | // 표시되지 않습니다. COM에서 이 어셈블리의 형식에 액세스하려면
19 | // 해당 형식에 대해 ComVisible 특성을 true로 설정하세요.
20 | [assembly: ComVisible(false)]
21 |
22 | //지역화 가능 애플리케이션 빌드를 시작하려면 다음을 설정하세요.
23 | //.csproj 파일에서 내에 CultureYouAreCodingWith를
24 | //설정하십시오. 예를 들어 소스 파일에서 영어(미국)를
25 | //사용하는 경우 를 en-US로 설정합니다. 그런 다음 아래
26 | //NeutralResourceLanguage 특성의 주석 처리를 제거합니다. 아래 줄의 "en-US"를 업데이트하여
27 | //프로젝트 파일의 UICulture 설정과 일치시킵니다.
28 |
29 | //[assembly: NeutralResourcesLanguage("en-US", UltimateResourceFallbackLocation.Satellite)]
30 |
31 |
32 | [assembly: ThemeInfo(
33 | ResourceDictionaryLocation.None, //테마별 리소스 사전의 위치
34 | //(페이지 또는 응용 프로그램 리소스 사진에
35 | // 리소스가 없는 경우에 사용됨)
36 | ResourceDictionaryLocation.SourceAssembly //제네릭 리소스 사전의 위치
37 | //(페이지 또는 응용 프로그램 리소스 사진에
38 | // 리소스가 없는 경우에 사용됨)
39 | )]
40 |
41 |
42 | // 어셈블리의 버전 정보는 다음 네 가지 값으로 구성됩니다.
43 | //
44 | // 주 버전
45 | // 부 버전
46 | // 빌드 번호
47 | // 수정 버전
48 | //
49 | // 모든 값을 지정하거나 아래와 같이 '*'를 사용하여 빌드 번호 및 수정 번호를
50 | // 기본값으로 할 수 있습니다.
51 | // [assembly: AssemblyVersion("1.0.*")]
52 | [assembly: AssemblyVersion("1.0.0.0")]
53 | [assembly: AssemblyFileVersion("1.0.0.0")]
54 |
--------------------------------------------------------------------------------
/src/DevFlow.Finders/Properties/Resources.Designer.cs:
--------------------------------------------------------------------------------
1 | //------------------------------------------------------------------------------
2 | //
3 | // 이 코드는 도구를 사용하여 생성되었습니다.
4 | // 런타임 버전:4.0.30319.42000
5 | //
6 | // 파일 내용을 변경하면 잘못된 동작이 발생할 수 있으며, 코드를 다시 생성하면
7 | // 이러한 변경 내용이 손실됩니다.
8 | //
9 | //------------------------------------------------------------------------------
10 |
11 | namespace DevFlow.Finders.Properties {
12 |
13 |
14 | ///
15 | /// 지역화된 문자열 등을 찾기 위한 강력한 형식의 리소스 클래스입니다.
16 | ///
17 | // 이 클래스는 ResGen 또는 Visual Studio와 같은 도구를 통해 StronglyTypedResourceBuilder
18 | // 클래스에서 자동으로 생성되었습니다.
19 | // 멤버를 추가하거나 제거하려면 .ResX 파일을 편집한 다음 /str 옵션을 사용하여
20 | // ResGen을 다시 실행하거나 VS 프로젝트를 다시 빌드하십시오.
21 | [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0")]
22 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
23 | [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
24 | internal class Resources {
25 |
26 | private static global::System.Resources.ResourceManager resourceMan;
27 |
28 | private static global::System.Globalization.CultureInfo resourceCulture;
29 |
30 | [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
31 | internal Resources() {
32 | }
33 |
34 | ///
35 | /// 이 클래스에서 사용하는 캐시된 ResourceManager 인스턴스를 반환합니다.
36 | ///
37 | [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
38 | internal static global::System.Resources.ResourceManager ResourceManager {
39 | get {
40 | if ((resourceMan == null)) {
41 | global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("DevFlow.Finders.Properties.Resources", typeof(Resources).Assembly);
42 | resourceMan = temp;
43 | }
44 | return resourceMan;
45 | }
46 | }
47 |
48 | ///
49 | /// 이 강력한 형식의 리소스 클래스를 사용하여 모든 리소스 조회에 대해 현재 스레드의 CurrentUICulture 속성을
50 | /// 재정의합니다.
51 | ///
52 | [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
53 | internal static global::System.Globalization.CultureInfo Culture {
54 | get {
55 | return resourceCulture;
56 | }
57 | set {
58 | resourceCulture = value;
59 | }
60 | }
61 | }
62 | }
63 |
--------------------------------------------------------------------------------
/src/DevFlow.Finders/Properties/Settings.Designer.cs:
--------------------------------------------------------------------------------
1 | //------------------------------------------------------------------------------
2 | //
3 | // This code was generated by a tool.
4 | // Runtime Version:4.0.30319.42000
5 | //
6 | // Changes to this file may cause incorrect behavior and will be lost if
7 | // the code is regenerated.
8 | //
9 | //------------------------------------------------------------------------------
10 |
11 | namespace DevFlow.Finders.Properties
12 | {
13 |
14 |
15 | [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
16 | [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "11.0.0.0")]
17 | internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase
18 | {
19 |
20 | private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings())));
21 |
22 | public static Settings Default
23 | {
24 | get
25 | {
26 | return defaultInstance;
27 | }
28 | }
29 | }
30 | }
31 |
--------------------------------------------------------------------------------
/src/DevFlow.Finders/Properties/Settings.settings:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
--------------------------------------------------------------------------------
/src/DevFlow.Finders/Themes/Generic.xaml:
--------------------------------------------------------------------------------
1 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
--------------------------------------------------------------------------------
/src/DevFlow.Finders/UI/Units/MementoBox.cs:
--------------------------------------------------------------------------------
1 | using DevFlow.Finders.Local.Model;
2 | using System.Windows;
3 | using System.Windows.Controls;
4 | using System.Windows.Input;
5 |
6 | namespace DevFlow.Finders.UI.Units
7 | {
8 | public class MementoBox : ComboBox
9 | {
10 | #region DefaultStyleKey
11 |
12 | static MementoBox()
13 | {
14 | DefaultStyleKeyProperty.OverrideMetadata(typeof(MementoBox), new FrameworkPropertyMetadata(typeof(MementoBox)));
15 | }
16 | #endregion
17 |
18 | #region DependencyProperties
19 |
20 | public static readonly DependencyProperty SelectionCommandProperty = DependencyProperty.Register("SelectionCommand", typeof(ICommand), typeof(MementoBox));
21 | #endregion
22 |
23 | #region ICommands
24 |
25 | public ICommand SelectionCommand
26 | {
27 | get => (ICommand)GetValue(SelectionCommandProperty);
28 | set => SetValue(SelectionCommandProperty, value);
29 | }
30 | #endregion
31 |
32 | #region OnPreviewMouseLeftButtonDown
33 | protected override void OnPreviewMouseLeftButtonUp(MouseButtonEventArgs e)
34 | {
35 | base.OnPreviewMouseLeftButtonUp(e);
36 |
37 | if (IsDropDownOpen && e.OriginalSource is FrameworkElement fe && fe.DataContext is FileModel root)
38 | {
39 | SelectionCommand.Execute(root);
40 | }
41 | }
42 | #endregion
43 | }
44 | }
45 |
--------------------------------------------------------------------------------
/src/DevFlow.Finders/UI/Units/PolygonSelector.cs:
--------------------------------------------------------------------------------
1 | using DevFlow.Finders.Local.Model;
2 | using System.Collections.Generic;
3 | using System.IO;
4 | using System.Linq;
5 | using System.Windows;
6 | using System.Windows.Controls;
7 | using System.Windows.Input;
8 |
9 | namespace DevFlow.Finders.UI.Units
10 | {
11 | public class PolygonSelector : ListBox
12 | {
13 | #region DefaultStyleKey
14 |
15 | static PolygonSelector()
16 | {
17 | DefaultStyleKeyProperty.OverrideMetadata(typeof(PolygonSelector), new FrameworkPropertyMetadata(typeof(PolygonSelector)));
18 | }
19 | #endregion
20 |
21 | #region DependencyProperties
22 |
23 | public static readonly DependencyProperty DataProperty = DependencyProperty.Register("Data", typeof(FileModel), typeof(PolygonSelector), new PropertyMetadata(null, DataChanged));
24 | public static readonly DependencyProperty SelectionCommandProperty = DependencyProperty.Register("SelectionCommand", typeof(ICommand), typeof(PolygonSelector));
25 | #endregion
26 |
27 | #region SelectionCommand
28 |
29 | public ICommand SelectionCommand
30 | {
31 | get => (ICommand)GetValue(SelectionCommandProperty);
32 | set => SetValue(SelectionCommandProperty, value);
33 | }
34 | #endregion
35 |
36 | #region Data
37 |
38 | public FileModel Data
39 | {
40 | get { return (FileModel)this.GetValue(DataProperty); }
41 | set { this.SetValue(DataProperty, value); }
42 | }
43 | #endregion
44 |
45 | #region Constructor
46 |
47 | public PolygonSelector()
48 | {
49 |
50 | }
51 | #endregion
52 |
53 | // DpendencyProperty Callback..♥
54 |
55 | #region DataChanged
56 |
57 | private static void DataChanged(DependencyObject d, DependencyPropertyChangedEventArgs e)
58 | {
59 | if (d is PolygonSelector poly)
60 | {
61 | if (poly.Data != null)
62 | {
63 | List dirs = new();
64 | string fullPath = poly.Data.FullPath;
65 |
66 | string[] colors =
67 | {
68 | "#00000000",
69 | "#FF8B9600",
70 | "#FFEDC33F",
71 | "#FF427AB3",
72 | "#FF8B9600",
73 | "#FFEDC33F",
74 | "#FF427AB3",
75 | "#FF8B9600",
76 | "#FFEDC33F",
77 | "#FF427AB3",
78 | "#FF8B9600",
79 | "#FFEDC33F",
80 | "#FF427AB3",
81 | "#FF8B9600",
82 | "#FFEDC33F",
83 | "#FF427AB3",
84 | };
85 |
86 |
87 | while (true)
88 | {
89 | var name = Path.GetFileName(fullPath);
90 |
91 | if (name == "")
92 | {
93 | var root = new LocatorModel(fullPath, fullPath, poly.PolygonClick)
94 | {
95 | IsRoot = true
96 | };
97 | dirs.Insert(0, root);
98 |
99 | break;
100 | }
101 | else
102 | {
103 | var root = new LocatorModel(name, fullPath, poly.PolygonClick);
104 | dirs.Insert(0, root);
105 | fullPath = Path.GetDirectoryName(fullPath);
106 | }
107 | }
108 |
109 | int cnt = 0;
110 | int zindex = 1000;
111 | dirs.ForEach(x => x.Color = colors[cnt++]);
112 | dirs.Last().IsLast = true;
113 | dirs.ForEach(x => x.Zindex = zindex--);
114 |
115 | poly.ItemsSource = dirs;
116 | }
117 | }
118 | }
119 | #endregion
120 |
121 | // ICommand Action..♥
122 |
123 | #region PolygonClick
124 |
125 | private void PolygonClick(FileModel item)
126 | {
127 | SelectionCommand.Execute(item);
128 | }
129 | #endregion
130 | }
131 | }
132 |
--------------------------------------------------------------------------------
/src/DevFlow.Finders/UI/Units/RootItemView.cs:
--------------------------------------------------------------------------------
1 | using System.Windows;
2 | using System.Windows.Controls;
3 | using System.Windows.Input;
4 |
5 | namespace DevFlow.Finders.UI.Units
6 | {
7 | public class RootItemView : ListBox
8 | {
9 | #region DefaultStyleKey
10 |
11 | static RootItemView()
12 | {
13 | DefaultStyleKeyProperty.OverrideMetadata(typeof(RootItemView), new FrameworkPropertyMetadata(typeof(RootItemView)));
14 | }
15 | #endregion
16 |
17 | #region DependencyProperty
18 |
19 | public static readonly DependencyProperty DoubleClickCommandProperty = DependencyProperty.Register("DoubleClickCommand", typeof(ICommand), typeof(RootItemView));
20 | public static readonly DependencyProperty PreviewKeyDownCommandProperty = DependencyProperty.Register("PreviewKeyDownCommand", typeof(ICommand), typeof(RootItemView));
21 | #endregion
22 |
23 | #region DoubleClickCommand
24 |
25 | public ICommand DoubleClickCommand
26 | {
27 | get => (ICommand)GetValue(DoubleClickCommandProperty);
28 | set => SetValue(DoubleClickCommandProperty, value);
29 | }
30 | #endregion
31 |
32 | #region PreviewKeyDownCommand
33 |
34 | public ICommand PreviewKeyDownCommand
35 | {
36 | get => (ICommand)GetValue(PreviewKeyDownCommandProperty);
37 | set => SetValue(PreviewKeyDownCommandProperty, value);
38 | }
39 | #endregion
40 |
41 | #region OnMouseRightButtonUp
42 |
43 | protected override void OnMouseRightButtonUp(MouseButtonEventArgs e)
44 | {
45 | base.OnMouseRightButtonUp(e);
46 |
47 | //List files;
48 | //ShellContextMenu ctx;
49 |
50 | //if (e.OriginalSource is FrameworkElement fe && fe.DataContext is FileData)
51 | //{
52 | // files = new List();
53 | // ctx = new ShellContextMenu();
54 |
55 | // // TODD James: Linq AddRange
56 | // files.AddRange(from FileData file in SelectedItems select new FileInfo(file.FullName));
57 | // ctx.ShowContextMenu(files.ToArray(), MousePosition.GetMousePosition(this));
58 | //}
59 | }
60 | #endregion
61 |
62 | #region OnMouseDoubleClick
63 |
64 | protected override void OnMouseDoubleClick(MouseButtonEventArgs e)
65 | {
66 | base.OnMouseDoubleClick(e);
67 |
68 | if (e.OriginalSource is FrameworkElement fe && fe.DataContext.Equals(SelectedItem))
69 | {
70 | DoubleClickCommand?.Execute(SelectedItem);
71 | }
72 | }
73 | #endregion
74 |
75 | #region OnPreviewKeyDown
76 |
77 | protected override void OnPreviewKeyDown(KeyEventArgs e)
78 | {
79 | base.OnPreviewKeyDown(e);
80 | PreviewKeyDownCommand?.Execute(e);
81 | }
82 | #endregion
83 | }
84 | }
85 |
--------------------------------------------------------------------------------
/src/DevFlow.Finders/UI/Units/RootTreeView.cs:
--------------------------------------------------------------------------------
1 | using DevFlow.Finders.Local.Model;
2 | using System.Windows;
3 | using System.Windows.Controls;
4 | using System.Windows.Input;
5 |
6 | namespace DevFlow.Finders.UI.Units
7 | {
8 | public class RootTreeView : TreeView
9 | {
10 | #region DefaultStyleKey
11 |
12 | static RootTreeView()
13 | {
14 | DefaultStyleKeyProperty.OverrideMetadata(typeof(RootTreeView), new FrameworkPropertyMetadata(typeof(RootTreeView)));
15 | }
16 | #endregion
17 |
18 | #region DependencyProperties
19 |
20 | public static readonly DependencyProperty SelectionCommandProperty = DependencyProperty.Register("SelectionCommand", typeof(ICommand), typeof(RootTreeView));
21 | #endregion
22 |
23 | #region SelectionCommand
24 |
25 | public ICommand SelectionCommand
26 | {
27 | get => (ICommand)GetValue(SelectionCommandProperty);
28 | set => SetValue(SelectionCommandProperty, value);
29 | }
30 | #endregion
31 |
32 | #region Constructor
33 |
34 | public RootTreeView()
35 | {
36 | // TODO James: 포커스 스크롤에 대한 연구(정확한 위치)가 필요하며 해결 후에는 옵션으로 기능을 제공합니다.
37 | //TreeViewItem tvitem = this.ItemContainerGenerator.ContainerFromItem(SelectedItem) as TreeViewItem;
38 | //tvitem?.BringIntoView();
39 | }
40 | #endregion
41 |
42 | #region OnPreviewMouseLeftButtonDown
43 |
44 | protected override void OnPreviewMouseLeftButtonDown(MouseButtonEventArgs e)
45 | {
46 | base.OnPreviewMouseLeftButtonDown(e);
47 |
48 | if (e.OriginalSource is FrameworkElement fe && fe.DataContext is RootModel root)
49 | {
50 | SelectionCommand.Execute(root);
51 | }
52 | }
53 | #endregion
54 | }
55 | }
56 |
--------------------------------------------------------------------------------
/src/DevFlow.Finders/UI/Views/Finder.cs:
--------------------------------------------------------------------------------
1 | using DevFlow.LayoutSupport.Controls;
2 | using System.Windows;
3 |
4 | namespace DevFlow.Finders.UI.Views
5 | {
6 | public class Finder : Explorer
7 | {
8 | #region DefaultStyleKey
9 |
10 | static Finder()
11 | {
12 | DefaultStyleKeyProperty.OverrideMetadata(typeof(Finder), new FrameworkPropertyMetadata(typeof(Finder)));
13 | }
14 | #endregion
15 |
16 | #region Constructor
17 |
18 | public Finder()
19 | {
20 | }
21 | #endregion
22 | }
23 | }
24 |
--------------------------------------------------------------------------------
/src/DevFlow.Foundation/DevFlow.Foundation.csproj:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | Debug
6 | AnyCPU
7 | {3D2AAB15-663D-4EF4-B80E-0AFECA05C910}
8 | Library
9 | Properties
10 | DevFlow.Foundation
11 | DevFlow.Foundation
12 | v4.8
13 | 512
14 | true
15 | 9.0
16 |
17 |
18 | true
19 | full
20 | false
21 | bin\Debug\
22 | DEBUG;TRACE
23 | prompt
24 | 4
25 |
26 |
27 | pdbonly
28 | true
29 | bin\Release\
30 | TRACE
31 | prompt
32 | 4
33 |
34 |
35 |
36 |
37 |
38 |
39 |
40 |
41 |
42 |
43 |
44 |
45 |
46 |
47 |
48 | ..\packages\YamlDotNet.11.1.1\lib\net45\YamlDotNet.dll
49 |
50 |
51 |
52 |
53 |
54 |
55 |
56 |
57 |
58 |
59 |
60 |
61 |
62 |
63 |
64 |
65 |
66 | {4F92EC03-384B-4463-8AFC-099C7FB9941C}
67 | DevFlow.Data
68 |
69 |
70 |
71 |
72 |
73 |
74 |
--------------------------------------------------------------------------------
/src/DevFlow.Foundation/FlowUI/FlowView.cs:
--------------------------------------------------------------------------------
1 | using DevFlow.Foundation.Mvvm;
2 | using System.ComponentModel;
3 | using System.Windows;
4 | using System.Windows.Controls;
5 |
6 | namespace DevFlow.Foundation.Flowbase
7 | {
8 | public class FlowView : ContentControl
9 | {
10 | #region Constructor
11 |
12 | public FlowView()
13 | {
14 | Loaded += FlowView_Loaded;
15 | }
16 | #endregion
17 |
18 | #region OnDesignerMode
19 |
20 | protected virtual void OnDesignerMode()
21 | {
22 |
23 | }
24 | #endregion
25 |
26 | #region FlowView_Loaded
27 |
28 | private void FlowView_Loaded(object sender, RoutedEventArgs e)
29 | {
30 | if (DesignerProperties.GetIsInDesignMode(this))
31 | {
32 | OnDesignerMode();
33 | }
34 |
35 | if (DataContext is ObservableObject vm)
36 | {
37 | vm.ViewRegister(this);
38 | }
39 | }
40 | #endregion
41 | }
42 | }
43 |
--------------------------------------------------------------------------------
/src/DevFlow.Foundation/FlowUI/FlowWindow.cs:
--------------------------------------------------------------------------------
1 | using DevFlow.Data.Menu;
2 | using DevFlow.Foundation.Flowcore;
3 | using DevFlow.Foundation.Mvvm;
4 | using System.ComponentModel;
5 | using System.Windows;
6 |
7 | namespace DevFlow.Foundation.Flowbase
8 | {
9 | public abstract class FlowWindow : Window, IFlowElement
10 | {
11 | #region Constructor
12 |
13 | public FlowWindow()
14 | {
15 | Loaded += FlowWindow_Loaded;
16 | }
17 | #endregion
18 |
19 | #region UseMvvm
20 |
21 | public IFlowElement UseViewModel(ObservableObject vm)
22 | {
23 | DataContext = vm;
24 | return this;
25 | }
26 | #endregion
27 |
28 | #region Show
29 |
30 | public abstract void OnShow(MenuModel menu);
31 | #endregion
32 |
33 | #region OnDesignerMode
34 |
35 | protected virtual void OnDesignerMode()
36 | {
37 |
38 | }
39 |
40 | #endregion
41 |
42 | #region Loaded
43 |
44 | private void FlowWindow_Loaded(object sender, RoutedEventArgs e)
45 | {
46 | if (DesignerProperties.GetIsInDesignMode(this))
47 | {
48 | OnDesignerMode();
49 | }
50 |
51 | if (DataContext is ObservableObject vm)
52 | {
53 | vm.ViewRegister(this);
54 | }
55 | }
56 | #endregion
57 | }
58 | }
59 |
--------------------------------------------------------------------------------
/src/DevFlow.Foundation/Flowbase/FlowApp.cs:
--------------------------------------------------------------------------------
1 | using System.IO;
2 | using System.Windows;
3 | using DevFlow.Data;
4 |
5 | namespace DevFlow.Foundation.Flowbase
6 | {
7 | public class FlowApp : Application
8 | {
9 | protected FlowTheme Theme;
10 | protected FlowCulture Culture;
11 |
12 | public FlowApp()
13 | {
14 | InitilizeTheme();
15 | InitilizeCulture();
16 | }
17 |
18 | private void InitilizeTheme()
19 | {
20 | Theme = new FlowTheme(this)
21 | {
22 | BaseAssemblyPath = "/DevFlow.Resources;component/Themes/"
23 | };
24 | OnApplyThemeManager();
25 | Theme.SetDefault(OnSetDefaultTheme(ThemeType.White));
26 | }
27 |
28 | private void InitilizeCulture()
29 | {
30 | Culture = new FlowCulture(this)
31 | {
32 | BaseAssemblyPath = "/DevFlow.Resources;component/Themes/Languages"
33 | };
34 | OnApplyCultureManager();
35 | Culture.SetDefault(OnSetDefaultCulture(LanguageType.Korea));
36 | }
37 |
38 | protected virtual void OnApplyThemeManager()
39 | {
40 | }
41 |
42 | protected virtual void OnApplyCultureManager()
43 | {
44 | }
45 |
46 | protected virtual ThemeType OnSetDefaultTheme(ThemeType type)
47 | {
48 | return type;
49 | }
50 |
51 | protected virtual LanguageType OnSetDefaultCulture(LanguageType type)
52 | {
53 | return type;
54 | }
55 |
56 | protected void AddTheme(ThemeType type, string fileName)
57 | {
58 | AddTheme(type, Theme.BaseAssemblyPath, fileName);
59 | }
60 |
61 | protected void AddTheme(ThemeType type, string baseAssemblyPath, string fileName)
62 | {
63 | Theme.Add(type, Path.Combine(baseAssemblyPath, fileName));
64 | }
65 |
66 | protected void AddThemeResource(ThemeType type, ResourceDictionary source)
67 | {
68 | Theme.Add(type, source);
69 | }
70 |
71 | protected void AddLanguage(LanguageType type, string fileName)
72 | {
73 | AddLanguage(type, Culture.BaseAssemblyPath, fileName);
74 | }
75 |
76 | protected void AddLanguage(LanguageType type, string baseAssemblyPath, string fileName)
77 | {
78 | Culture.Add(type, Path.Combine(baseAssemblyPath, fileName));
79 | }
80 |
81 | protected void AddLanguageResource(LanguageType type, ResourceDictionary source)
82 | {
83 | Culture.Add(type, source);
84 | }
85 | }
86 | }
87 |
--------------------------------------------------------------------------------
/src/DevFlow.Foundation/Flowbase/FlowConfig.cs:
--------------------------------------------------------------------------------
1 | using DevFlow.Data;
2 | using DevFlow.Data.Menu;
3 | using DevFlow.Data.Settings;
4 | using System;
5 | using System.IO;
6 | using System.Linq;
7 | using YamlDotNet.Serialization;
8 | using YamlDotNet.Serialization.NamingConventions;
9 |
10 | namespace DevFlow.Foundation.Flowbase
11 | {
12 | public class FlowConfig
13 | {
14 | public static string WIN_PATH { get; }
15 | public static string SYS_PATH { get; }
16 | public static string CFG_PATH { get; }
17 | public static ConfigModel Config { get; private set; }
18 |
19 | static FlowConfig()
20 | {
21 | WIN_PATH = Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData);
22 | SYS_PATH = string.Format(@"{0}\DevFlow\System", WIN_PATH);
23 | CFG_PATH = string.Format(@"{0}\Config.yaml", SYS_PATH);
24 |
25 | LoadConfigFile();
26 | }
27 |
28 | private static void LoadConfigFile()
29 | {
30 | if (!Directory.Exists(SYS_PATH))
31 | {
32 | _ = Directory.CreateDirectory(SYS_PATH);
33 | }
34 |
35 | if (!File.Exists(CFG_PATH))
36 | {
37 | SaveConfig(new ConfigModel());
38 | }
39 |
40 | IDeserializer deserializer = new DeserializerBuilder()
41 | .WithNamingConvention(CamelCaseNamingConvention.Instance)
42 | .Build();
43 |
44 | Config = deserializer.Deserialize(File.ReadAllText(CFG_PATH));
45 | }
46 |
47 | public static void SaveLanguage(LanguageType lang)
48 | {
49 | Config.Language = lang;
50 | SaveConfig(Config);
51 | }
52 |
53 | public static void SaveTheme(ThemeType theme)
54 | {
55 | Config.Theme = theme;
56 | SaveConfig(Config);
57 | }
58 |
59 | public static void SaveSpoidColor(string color)
60 | {
61 | Config.SpoidColor = color;
62 | SaveConfig(Config);
63 | }
64 |
65 | public static ConfigModel LoadConfig()
66 | {
67 | return Config;
68 | }
69 |
70 | public static void SaveLocation(MenuModel menu, int x, int y, int width, int height)
71 | {
72 | if (Config.ViewOptions.FirstOrDefault(x => menu.IconType == x.IconType) is ViewOptionModel view)
73 | {
74 | view.LocX = x;
75 | view.LocY = y;
76 | view.Width = width;
77 | view.Height = height;
78 | }
79 | else
80 | {
81 | Config.ViewOptions.Add(new ViewOptionModel { IconType = menu.IconType, LocX = x, LocY = y, Width = width, Height = height });
82 | }
83 |
84 | SaveConfig(Config);
85 | }
86 |
87 | private static void SaveConfig(ConfigModel config)
88 | {
89 | ISerializer serializer = new SerializerBuilder()
90 | .WithNamingConvention(CamelCaseNamingConvention.Instance)
91 | .Build();
92 |
93 | string yaml = serializer.Serialize(config);
94 |
95 | File.WriteAllText(CFG_PATH, yaml);
96 | }
97 | }
98 | }
99 |
--------------------------------------------------------------------------------
/src/DevFlow.Foundation/Flowbase/FlowCulture.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Windows;
3 | using System.Collections.Generic;
4 | using System.Collections.ObjectModel;
5 | using DevFlow.Data;
6 |
7 | namespace DevFlow.Foundation.Flowbase
8 | {
9 | public class FlowCulture
10 | {
11 | public string BaseAssemblyPath;
12 |
13 | private readonly FlowApp App;
14 | private readonly Collection Resources;
15 | private readonly Dictionary Cultures;
16 | private ResourceDictionary CurrentResource;
17 | private LanguageType CurrentCulture;
18 |
19 |
20 | internal FlowCulture(FlowApp app)
21 | {
22 | App = app;
23 | Resources = App.Resources.MergedDictionaries;
24 | Cultures = new();
25 | }
26 |
27 | internal void SetDefault(LanguageType lang)
28 | {
29 | CurrentResource = Cultures[lang];
30 | CurrentCulture = lang;
31 | Switch(lang);
32 | }
33 |
34 | public void Switch(LanguageType lang)
35 | {
36 | if (Resources.Contains(CurrentResource))
37 | {
38 | _ = Resources.Remove(CurrentResource);
39 | }
40 | CurrentResource = Cultures[lang];
41 | CurrentCulture = lang;
42 | Resources.Add(CurrentResource);
43 | }
44 |
45 | internal void Add(LanguageType type, ResourceDictionary source)
46 | {
47 | Cultures.Add(type, source);
48 | }
49 |
50 | public LanguageType GetCurrentLanguage()
51 | {
52 | return CurrentCulture;
53 | }
54 |
55 | internal void Add(LanguageType type, string source, UriKind kind)
56 | {
57 | Add(type, new ResourceDictionary { Source = new Uri(source, kind) });
58 | }
59 |
60 | internal void Add(LanguageType type, string source)
61 | {
62 | Add(type, source, UriKind.RelativeOrAbsolute);
63 | }
64 | }
65 | }
66 |
--------------------------------------------------------------------------------
/src/DevFlow.Foundation/Flowbase/FlowTheme.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Windows;
3 | using System.Collections.Generic;
4 | using System.Collections.ObjectModel;
5 | using DevFlow.Data;
6 |
7 | namespace DevFlow.Foundation.Flowbase
8 | {
9 | public class FlowTheme
10 | {
11 | public string BaseAssemblyPath;
12 |
13 | private readonly FlowApp App;
14 | private readonly Collection Resources;
15 | private readonly Dictionary Themes;
16 | private ResourceDictionary CurrentResource;
17 | private ThemeType CurrentTheme;
18 |
19 |
20 | internal FlowTheme(FlowApp app)
21 | {
22 | App = app;
23 | Resources = App.Resources.MergedDictionaries;
24 | Themes = new();
25 | }
26 |
27 | internal void SetDefault(ThemeType theme)
28 | {
29 | CurrentResource = Themes[theme];
30 | CurrentTheme = theme;
31 | Switch(theme);
32 | }
33 |
34 | public void Switch(ThemeType theme)
35 | {
36 | if (Resources.Contains(CurrentResource))
37 | {
38 | _ = Resources.Remove(CurrentResource);
39 | }
40 | CurrentResource = Themes[theme];
41 | CurrentTheme = theme;
42 | Resources.Add(CurrentResource);
43 | }
44 |
45 | internal void Add(ThemeType type, ResourceDictionary source)
46 | {
47 | Themes.Add(type, source);
48 | }
49 |
50 | public ThemeType GetCurrentTheme()
51 | {
52 | return CurrentTheme;
53 | }
54 |
55 | internal void Add(ThemeType type, string source, UriKind kind)
56 | {
57 | Add(type, new ResourceDictionary { Source = new Uri(source, kind) });
58 | }
59 |
60 | internal void Add(ThemeType type, string source)
61 | {
62 | Add(type, source, UriKind.RelativeOrAbsolute);
63 | }
64 | }
65 | }
66 |
--------------------------------------------------------------------------------
/src/DevFlow.Foundation/Flowcore/IFlowUIElement.cs:
--------------------------------------------------------------------------------
1 | using DevFlow.Data.Menu;
2 | using DevFlow.Foundation.Mvvm;
3 |
4 | namespace DevFlow.Foundation.Flowcore
5 | {
6 | public interface IFlowElement
7 | {
8 | IFlowElement UseViewModel(ObservableObject vm);
9 | void OnShow(MenuModel menu);
10 | }
11 | }
12 |
--------------------------------------------------------------------------------
/src/DevFlow.Foundation/Mvvm/ObservableData.cs:
--------------------------------------------------------------------------------
1 | using System.ComponentModel;
2 | using System.Runtime.CompilerServices;
3 |
4 | namespace DevFlow.Foundation.Mvvm
5 | {
6 | public class ObservableData : INotifyPropertyChanged
7 | {
8 | public event PropertyChangedEventHandler PropertyChanged;
9 | protected void OnPropertyChanged([CallerMemberName] string name = null)
10 | {
11 | PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(name));
12 | }
13 | }
14 | }
15 |
--------------------------------------------------------------------------------
/src/DevFlow.Foundation/Mvvm/ObservableObject.cs:
--------------------------------------------------------------------------------
1 | using System.ComponentModel;
2 | using System.Runtime.CompilerServices;
3 | using System.Windows.Controls;
4 |
5 | namespace DevFlow.Foundation.Mvvm
6 | {
7 | public class ObservableObject : INotifyPropertyChanged
8 | {
9 | private bool _isDesignTimeMode;
10 | protected Control UIView;
11 |
12 | public event PropertyChangedEventHandler PropertyChanged;
13 | protected void OnPropertyChanged([CallerMemberName] string name = null)
14 | {
15 | PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(name));
16 | }
17 |
18 | public bool IsDesignTimeMode
19 | {
20 | get => _isDesignTimeMode;
21 | set { _isDesignTimeMode = value; OnPropertyChanged(); }
22 | }
23 |
24 | public ObservableObject()
25 | {
26 | OnInitDesignTime();
27 | }
28 |
29 | protected virtual void OnInitDesignTime()
30 | {
31 |
32 | }
33 |
34 | protected virtual void OnLoaded(Control view)
35 | {
36 |
37 | }
38 |
39 | public void ViewRegister(Control view)
40 | {
41 | UIView = view;
42 | if (DesignerProperties.GetIsInDesignMode(view))
43 | {
44 | IsDesignTimeMode = true;
45 | OnInitDesignTime();
46 | }
47 | else
48 | {
49 | OnLoaded(view);
50 | }
51 | }
52 | }
53 | }
54 |
--------------------------------------------------------------------------------
/src/DevFlow.Foundation/Mvvm/RelayCommand.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Windows.Input;
3 |
4 | namespace DevFlow.Foundation.Mvvm
5 | {
6 | public class RelayCommand : ICommand
7 | {
8 | private readonly Action _execute = null;
9 | private readonly Predicate _canExecute = null;
10 |
11 | public RelayCommand(Action execute)
12 | : this(execute, null)
13 | {
14 | }
15 |
16 | public RelayCommand(Action execute, Predicate canExecute)
17 | {
18 | _execute = execute ?? throw new ArgumentNullException("execute");
19 | _canExecute = canExecute;
20 | }
21 |
22 | public bool CanExecute(object parameter)
23 | {
24 | return _canExecute == null || _canExecute((T)parameter);
25 | }
26 |
27 | public event EventHandler CanExecuteChanged
28 | {
29 | add { CommandManager.RequerySuggested += value; }
30 | remove { CommandManager.RequerySuggested -= value; }
31 | }
32 |
33 | public void Execute(object parameter)
34 | {
35 | _execute((T)parameter);
36 | }
37 | }
38 | }
39 |
--------------------------------------------------------------------------------
/src/DevFlow.Foundation/Properties/AssemblyInfo.cs:
--------------------------------------------------------------------------------
1 | using System.Reflection;
2 | using System.Runtime.InteropServices;
3 |
4 | // 어셈블리에 대한 일반 정보는 다음 특성 집합을 통해
5 | // 제어됩니다. 어셈블리와 관련된 정보를 수정하려면
6 | // 이러한 특성 값을 변경하세요.
7 | [assembly: AssemblyTitle("DevFlow.Foundation")]
8 | [assembly: AssemblyDescription("")]
9 | [assembly: AssemblyConfiguration("")]
10 | [assembly: AssemblyCompany("")]
11 | [assembly: AssemblyProduct("DevFlow.Foundation")]
12 | [assembly: AssemblyCopyright("Copyright © 2021")]
13 | [assembly: AssemblyTrademark("")]
14 | [assembly: AssemblyCulture("")]
15 |
16 | // ComVisible을 false로 설정하면 이 어셈블리의 형식이 COM 구성 요소에
17 | // 표시되지 않습니다. COM에서 이 어셈블리의 형식에 액세스하려면
18 | // 해당 형식에 대해 ComVisible 특성을 true로 설정하세요.
19 | [assembly: ComVisible(false)]
20 |
21 | // 이 프로젝트가 COM에 노출되는 경우 다음 GUID는 typelib의 ID를 나타냅니다.
22 | [assembly: Guid("3d2aab15-663d-4ef4-b80e-0afeca05c910")]
23 |
24 | // 어셈블리의 버전 정보는 다음 네 가지 값으로 구성됩니다.
25 | //
26 | // 주 버전
27 | // 부 버전
28 | // 빌드 번호
29 | // 수정 버전
30 | //
31 | // 모든 값을 지정하거나 아래와 같이 '*'를 사용하여 빌드 번호 및 수정 번호를
32 | // 기본값으로 할 수 있습니다.
33 | // [assembly: AssemblyVersion("1.0.*")]
34 | [assembly: AssemblyVersion("1.0.0.0")]
35 | [assembly: AssemblyFileVersion("1.0.0.0")]
36 |
--------------------------------------------------------------------------------
/src/DevFlow.Foundation/packages.config:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
--------------------------------------------------------------------------------
/src/DevFlow.Histories/Views/History.cs:
--------------------------------------------------------------------------------
1 | using DevFlow.LayoutSupport.Controls;
2 | using System.Windows;
3 |
4 | namespace DevFlow.Histories.Views
5 | {
6 | public class History : Preview
7 | {
8 | static History()
9 | {
10 | DefaultStyleKeyProperty.OverrideMetadata(typeof(History), new FrameworkPropertyMetadata(typeof(History)));
11 | }
12 | }
13 | }
14 |
--------------------------------------------------------------------------------
/src/DevFlow.Languages/Properties/AssemblyInfo.cs:
--------------------------------------------------------------------------------
1 | using System.Reflection;
2 | using System.Runtime.InteropServices;
3 | using System.Windows;
4 |
5 | // 어셈블리에 대한 일반 정보는 다음 특성 집합을 통해
6 | // 제어됩니다. 어셈블리와 관련된 정보를 수정하려면
7 | // 이러한 특성 값을 변경하세요.
8 | [assembly: AssemblyTitle("DevFlow.Languages")]
9 | [assembly: AssemblyDescription("")]
10 | [assembly: AssemblyConfiguration("")]
11 | [assembly: AssemblyCompany("")]
12 | [assembly: AssemblyProduct("DevFlow.Languages")]
13 | [assembly: AssemblyCopyright("Copyright © 2021")]
14 | [assembly: AssemblyTrademark("")]
15 | [assembly: AssemblyCulture("")]
16 |
17 | // ComVisible을 false로 설정하면 이 어셈블리의 형식이 COM 구성 요소에
18 | // 표시되지 않습니다. COM에서 이 어셈블리의 형식에 액세스하려면
19 | // 해당 형식에 대해 ComVisible 특성을 true로 설정하세요.
20 | [assembly: ComVisible(false)]
21 |
22 | //지역화 가능 애플리케이션 빌드를 시작하려면 다음을 설정하세요.
23 | //.csproj 파일에서 내에 CultureYouAreCodingWith를
24 | //설정하십시오. 예를 들어 소스 파일에서 영어(미국)를
25 | //사용하는 경우 를 en-US로 설정합니다. 그런 다음 아래
26 | //NeutralResourceLanguage 특성의 주석 처리를 제거합니다. 아래 줄의 "en-US"를 업데이트하여
27 | //프로젝트 파일의 UICulture 설정과 일치시킵니다.
28 |
29 | //[assembly: NeutralResourcesLanguage("en-US", UltimateResourceFallbackLocation.Satellite)]
30 |
31 |
32 | [assembly: ThemeInfo(
33 | ResourceDictionaryLocation.None, //테마별 리소스 사전의 위치
34 | //(페이지 또는 응용 프로그램 리소스 사진에
35 | // 리소스가 없는 경우에 사용됨)
36 | ResourceDictionaryLocation.SourceAssembly //제네릭 리소스 사전의 위치
37 | //(페이지 또는 응용 프로그램 리소스 사진에
38 | // 리소스가 없는 경우에 사용됨)
39 | )]
40 |
41 |
42 | // 어셈블리의 버전 정보는 다음 네 가지 값으로 구성됩니다.
43 | //
44 | // 주 버전
45 | // 부 버전
46 | // 빌드 번호
47 | // 수정 버전
48 | //
49 | // 모든 값을 지정하거나 아래와 같이 '*'를 사용하여 빌드 번호 및 수정 번호를
50 | // 기본값으로 할 수 있습니다.
51 | // [assembly: AssemblyVersion("1.0.*")]
52 | [assembly: AssemblyVersion("1.0.0.0")]
53 | [assembly: AssemblyFileVersion("1.0.0.0")]
54 |
--------------------------------------------------------------------------------
/src/DevFlow.Languages/Properties/Resources.Designer.cs:
--------------------------------------------------------------------------------
1 | //------------------------------------------------------------------------------
2 | //
3 | // 이 코드는 도구를 사용하여 생성되었습니다.
4 | // 런타임 버전:4.0.30319.42000
5 | //
6 | // 파일 내용을 변경하면 잘못된 동작이 발생할 수 있으며, 코드를 다시 생성하면
7 | // 이러한 변경 내용이 손실됩니다.
8 | //
9 | //------------------------------------------------------------------------------
10 |
11 | namespace DevFlow.Languages.Properties {
12 |
13 |
14 | ///
15 | /// 지역화된 문자열 등을 찾기 위한 강력한 형식의 리소스 클래스입니다.
16 | ///
17 | // 이 클래스는 ResGen 또는 Visual Studio와 같은 도구를 통해 StronglyTypedResourceBuilder
18 | // 클래스에서 자동으로 생성되었습니다.
19 | // 멤버를 추가하거나 제거하려면 .ResX 파일을 편집한 다음 /str 옵션을 사용하여
20 | // ResGen을 다시 실행하거나 VS 프로젝트를 다시 빌드하십시오.
21 | [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0")]
22 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
23 | [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
24 | internal class Resources {
25 |
26 | private static global::System.Resources.ResourceManager resourceMan;
27 |
28 | private static global::System.Globalization.CultureInfo resourceCulture;
29 |
30 | [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
31 | internal Resources() {
32 | }
33 |
34 | ///
35 | /// 이 클래스에서 사용하는 캐시된 ResourceManager 인스턴스를 반환합니다.
36 | ///
37 | [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
38 | internal static global::System.Resources.ResourceManager ResourceManager {
39 | get {
40 | if ((resourceMan == null)) {
41 | global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("DevFlow.Languages.Properties.Resources", typeof(Resources).Assembly);
42 | resourceMan = temp;
43 | }
44 | return resourceMan;
45 | }
46 | }
47 |
48 | ///
49 | /// 이 강력한 형식의 리소스 클래스를 사용하여 모든 리소스 조회에 대해 현재 스레드의 CurrentUICulture 속성을
50 | /// 재정의합니다.
51 | ///
52 | [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
53 | internal static global::System.Globalization.CultureInfo Culture {
54 | get {
55 | return resourceCulture;
56 | }
57 | set {
58 | resourceCulture = value;
59 | }
60 | }
61 | }
62 | }
63 |
--------------------------------------------------------------------------------
/src/DevFlow.Languages/Properties/Settings.Designer.cs:
--------------------------------------------------------------------------------
1 | //------------------------------------------------------------------------------
2 | //
3 | // This code was generated by a tool.
4 | // Runtime Version:4.0.30319.42000
5 | //
6 | // Changes to this file may cause incorrect behavior and will be lost if
7 | // the code is regenerated.
8 | //
9 | //------------------------------------------------------------------------------
10 |
11 | namespace DevFlow.Languages.Properties
12 | {
13 |
14 |
15 | [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
16 | [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "11.0.0.0")]
17 | internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase
18 | {
19 |
20 | private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings())));
21 |
22 | public static Settings Default
23 | {
24 | get
25 | {
26 | return defaultInstance;
27 | }
28 | }
29 | }
30 | }
31 |
--------------------------------------------------------------------------------
/src/DevFlow.Languages/Properties/Settings.settings:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
--------------------------------------------------------------------------------
/src/DevFlow.Languages/Themes/Generic.xaml:
--------------------------------------------------------------------------------
1 |
7 |
8 |
9 |
10 |
11 |
38 |
39 |
57 |
58 |
59 |
60 |
--------------------------------------------------------------------------------
/src/DevFlow.Languages/ViewModels/TranslatorViewModel.cs:
--------------------------------------------------------------------------------
1 | using DevFlow.Data;
2 | using DevFlow.Data.Language;
3 | using DevFlow.Foundation.Mvvm;
4 | using System;
5 | using System.Collections.Generic;
6 | using System.Linq;
7 |
8 | namespace DevFlow.Languages.ViewModels
9 | {
10 | public class TranslatorViewModel : ObservableObject
11 | {
12 | private LanguageModel _currentLanguage;
13 |
14 | public List Languages { get; }
15 |
16 | public LanguageModel CurrentLanguage
17 | {
18 | get => _currentLanguage;
19 | set { _currentLanguage = value; OnPropertyChanged(); }
20 | }
21 |
22 | public TranslatorViewModel(Action LanguageChanged, LanguageType languageType)
23 | {
24 | Languages = GetLanguages();
25 | Languages.ForEach(x => x.LanguageClickCommand = new RelayCommand(LanguageChanged));
26 | CurrentLanguage = Languages.First(x => x.Language == languageType);
27 | }
28 |
29 | #region GetLanguages
30 |
31 | private List GetLanguages()
32 | {
33 | List source = new List
34 | {
35 | new LanguageModel("UNITED_STATES", LanguageType.UnitedStates),
36 | new LanguageModel("KOREA", LanguageType.Korea),
37 | new LanguageModel("CHINA", LanguageType.China),
38 | new LanguageModel("JAPAN", LanguageType.Japan),
39 | };
40 | return source;
41 | }
42 | #endregion
43 | }
44 | }
45 |
--------------------------------------------------------------------------------
/src/DevFlow.Languages/Views/Translator.cs:
--------------------------------------------------------------------------------
1 | using DevFlow.LayoutSupport.Controls;
2 | using System.Windows;
3 |
4 | namespace DevFlow.Languages.Views
5 | {
6 | public class Translator : BasicWindow
7 | {
8 | #region DefaultStyleKey
9 |
10 | static Translator()
11 | {
12 | DefaultStyleKeyProperty.OverrideMetadata(typeof(Translator), new FrameworkPropertyMetadata(typeof(Translator)));
13 | }
14 | #endregion
15 | }
16 | }
17 |
--------------------------------------------------------------------------------
/src/DevFlow.LayoutSupport/Controls/BasicScroll.cs:
--------------------------------------------------------------------------------
1 | using System.Windows;
2 | using System.Windows.Controls;
3 |
4 | namespace DevFlow.LayoutSupport.Controls
5 | {
6 | public class BasicScroll : ScrollViewer
7 | {
8 | #region DefaultStyleKey
9 |
10 | static BasicScroll()
11 | {
12 | DefaultStyleKeyProperty.OverrideMetadata(typeof(BasicScroll), new FrameworkPropertyMetadata(typeof(BasicScroll)));
13 | }
14 | #endregion
15 | }
16 | }
17 |
--------------------------------------------------------------------------------
/src/DevFlow.LayoutSupport/Controls/BasicWindow.cs:
--------------------------------------------------------------------------------
1 | using System.Windows;
2 |
3 | namespace DevFlow.LayoutSupport.Controls
4 | {
5 | public class BasicWindow : Explorer
6 | {
7 | #region DefaultStyleKey
8 |
9 | static BasicWindow()
10 | {
11 | DefaultStyleKeyProperty.OverrideMetadata(typeof(BasicWindow), new FrameworkPropertyMetadata(typeof(BasicWindow)));
12 | }
13 | #endregion
14 |
15 | #region COnstructor
16 |
17 | public BasicWindow()
18 | {
19 | }
20 | #endregion
21 | }
22 | }
23 |
24 |
25 |
26 |
27 |
--------------------------------------------------------------------------------
/src/DevFlow.LayoutSupport/Controls/ColorSlider.cs:
--------------------------------------------------------------------------------
1 | using System.Windows;
2 | using System.Windows.Controls;
3 |
4 | namespace DevFlow.LayoutSupport.Controls
5 | {
6 | public class ColorSlider : Slider
7 | {
8 | #region DefaultStyleKey
9 |
10 | static ColorSlider()
11 | {
12 | DefaultStyleKeyProperty.OverrideMetadata(typeof(ColorSlider), new FrameworkPropertyMetadata(typeof(ColorSlider)));
13 | }
14 | #endregion
15 | }
16 | }
17 |
--------------------------------------------------------------------------------
/src/DevFlow.LayoutSupport/Controls/Explorer.cs:
--------------------------------------------------------------------------------
1 | using DevFlow.Controls.Primitives;
2 | using DevFlow.Data.Menu;
3 | using DevFlow.Data.Settings;
4 | using DevFlow.Foundation.Flowbase;
5 | using System;
6 | using System.Collections.Generic;
7 | using System.Linq;
8 | using System.Windows;
9 | using System.Windows.Controls;
10 | using System.Windows.Input;
11 |
12 | namespace DevFlow.LayoutSupport.Controls
13 | {
14 | public class Explorer : FlowWindow
15 | {
16 | #region DependencyProperties
17 |
18 | public static readonly DependencyProperty TitleTemplateProperty = DependencyProperty.Register("TitleTemplate", typeof(DataTemplate), typeof(Explorer), new PropertyMetadata(null));
19 | public static readonly DependencyProperty SubTitleProperty = DependencyProperty.Register("SubTitle", typeof(object), typeof(Explorer), new PropertyMetadata(null));
20 | #endregion
21 |
22 | #region DefaultStyleKey
23 |
24 | static Explorer()
25 | {
26 | DefaultStyleKeyProperty.OverrideMetadata(typeof(Explorer), new FrameworkPropertyMetadata(typeof(Explorer)));
27 | }
28 | #endregion
29 |
30 | #region Variables
31 |
32 | protected bool IsFixedSize;
33 | protected MenuModel MenuInfo;
34 | private List Options => FlowConfig.Config.ViewOptions;
35 | #endregion
36 |
37 | #region TitleTemplate
38 |
39 | public DataTemplate TitleTemplate
40 | {
41 | get => (DataTemplate)GetValue(TitleTemplateProperty);
42 | set => SetValue(TitleTemplateProperty, value);
43 | }
44 | #endregion
45 |
46 | #region SubTitle
47 |
48 | public object SubTitle
49 | {
50 | get => GetValue(SubTitleProperty);
51 | set => SetValue(SubTitleProperty, value);
52 | }
53 | #endregion
54 |
55 | #region Constructor
56 |
57 | public Explorer()
58 | {
59 | WindowStyle = WindowStyle.None;
60 | ResizeMode = ResizeMode.CanResize;
61 | AllowsTransparency = true;
62 | }
63 | #endregion
64 |
65 | #region OnApplyTemplate
66 |
67 | public override void OnApplyTemplate()
68 | {
69 | if (GetTemplateChild("PART_CloseButton") is Button btn)
70 | {
71 | btn.Click += (s, e) => Close();
72 | }
73 | if (GetTemplateChild("PART_DragBar") is DraggableBar bar)
74 | {
75 | bar.MouseDown += WindowDragMove;
76 | }
77 | }
78 | #endregion
79 |
80 | #region OnShow
81 |
82 | public override void OnShow(MenuModel menu)
83 | {
84 | MenuInfo = menu;
85 | if (Options.FirstOrDefault(x => x.IconType == menu.IconType) is ViewOptionModel option)
86 | {
87 | Left = option.LocX;
88 | Top = option.LocY;
89 |
90 | if (!IsFixedSize)
91 | {
92 | Width = option.Width;
93 | Height = option.Height;
94 | }
95 | }
96 | Show();
97 | }
98 | #endregion
99 |
100 | #region OnClosed
101 |
102 | protected override void OnClosed(EventArgs e)
103 | {
104 | base.OnClosed(e);
105 | FlowConfig.SaveLocation(MenuInfo, (int)Left, (int)Top, (int)ActualWidth, (int)ActualHeight);
106 | }
107 | #endregion
108 |
109 | #region WindowDragMove
110 |
111 | private void WindowDragMove(object sender, MouseButtonEventArgs e)
112 | {
113 | if (e.LeftButton == MouseButtonState.Pressed)
114 | {
115 | GetWindow(this).DragMove();
116 | }
117 | }
118 | #endregion
119 | }
120 | }
121 |
--------------------------------------------------------------------------------
/src/DevFlow.LayoutSupport/Controls/FlowIcon.cs:
--------------------------------------------------------------------------------
1 | using DevFlow.Controls.Primitives;
2 | using System.Windows;
3 |
4 | namespace DevFlow.LayoutSupport.Controls
5 | {
6 | public class FlowIcon : Icon
7 | {
8 | static FlowIcon()
9 | {
10 | DefaultStyleKeyProperty.OverrideMetadata(typeof(FlowIcon), new FrameworkPropertyMetadata(typeof(FlowIcon)));
11 | }
12 | }
13 | }
14 |
--------------------------------------------------------------------------------
/src/DevFlow.LayoutSupport/Properties/AssemblyInfo.cs:
--------------------------------------------------------------------------------
1 | using System.Reflection;
2 | using System.Runtime.InteropServices;
3 | using System.Windows;
4 |
5 | // 어셈블리에 대한 일반 정보는 다음 특성 집합을 통해
6 | // 제어됩니다. 어셈블리와 관련된 정보를 수정하려면
7 | // 이러한 특성 값을 변경하세요.
8 | [assembly: AssemblyTitle("DevFlow.LayoutSupport")]
9 | [assembly: AssemblyDescription("")]
10 | [assembly: AssemblyConfiguration("")]
11 | [assembly: AssemblyCompany("")]
12 | [assembly: AssemblyProduct("DevFlow.LayoutSupport")]
13 | [assembly: AssemblyCopyright("Copyright © 2021")]
14 | [assembly: AssemblyTrademark("")]
15 | [assembly: AssemblyCulture("")]
16 |
17 | // ComVisible을 false로 설정하면 이 어셈블리의 형식이 COM 구성 요소에
18 | // 표시되지 않습니다. COM에서 이 어셈블리의 형식에 액세스하려면
19 | // 해당 형식에 대해 ComVisible 특성을 true로 설정하세요.
20 | [assembly: ComVisible(false)]
21 |
22 | //지역화 가능 애플리케이션 빌드를 시작하려면 다음을 설정하세요.
23 | //.csproj 파일에서 내에 CultureYouAreCodingWith를
24 | //설정하십시오. 예를 들어 소스 파일에서 영어(미국)를
25 | //사용하는 경우 를 en-US로 설정합니다. 그런 다음 아래
26 | //NeutralResourceLanguage 특성의 주석 처리를 제거합니다. 아래 줄의 "en-US"를 업데이트하여
27 | //프로젝트 파일의 UICulture 설정과 일치시킵니다.
28 |
29 | //[assembly: NeutralResourcesLanguage("en-US", UltimateResourceFallbackLocation.Satellite)]
30 |
31 |
32 | [assembly: ThemeInfo(
33 | ResourceDictionaryLocation.None, //테마별 리소스 사전의 위치
34 | //(페이지 또는 응용 프로그램 리소스 사진에
35 | // 리소스가 없는 경우에 사용됨)
36 | ResourceDictionaryLocation.SourceAssembly //제네릭 리소스 사전의 위치
37 | //(페이지 또는 응용 프로그램 리소스 사진에
38 | // 리소스가 없는 경우에 사용됨)
39 | )]
40 |
41 |
42 | // 어셈블리의 버전 정보는 다음 네 가지 값으로 구성됩니다.
43 | //
44 | // 주 버전
45 | // 부 버전
46 | // 빌드 번호
47 | // 수정 버전
48 | //
49 | // 모든 값을 지정하거나 아래와 같이 '*'를 사용하여 빌드 번호 및 수정 번호를
50 | // 기본값으로 할 수 있습니다.
51 | // [assembly: AssemblyVersion("1.0.*")]
52 | [assembly: AssemblyVersion("1.0.0.0")]
53 | [assembly: AssemblyFileVersion("1.0.0.0")]
54 |
--------------------------------------------------------------------------------
/src/DevFlow.LayoutSupport/Properties/Resources.Designer.cs:
--------------------------------------------------------------------------------
1 | //------------------------------------------------------------------------------
2 | //
3 | // 이 코드는 도구를 사용하여 생성되었습니다.
4 | // 런타임 버전:4.0.30319.42000
5 | //
6 | // 파일 내용을 변경하면 잘못된 동작이 발생할 수 있으며, 코드를 다시 생성하면
7 | // 이러한 변경 내용이 손실됩니다.
8 | //
9 | //------------------------------------------------------------------------------
10 |
11 | namespace DevFlow.LayoutSupport.Properties {
12 |
13 |
14 | ///
15 | /// 지역화된 문자열 등을 찾기 위한 강력한 형식의 리소스 클래스입니다.
16 | ///
17 | // 이 클래스는 ResGen 또는 Visual Studio와 같은 도구를 통해 StronglyTypedResourceBuilder
18 | // 클래스에서 자동으로 생성되었습니다.
19 | // 멤버를 추가하거나 제거하려면 .ResX 파일을 편집한 다음 /str 옵션을 사용하여
20 | // ResGen을 다시 실행하거나 VS 프로젝트를 다시 빌드하십시오.
21 | [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0")]
22 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
23 | [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
24 | internal class Resources {
25 |
26 | private static global::System.Resources.ResourceManager resourceMan;
27 |
28 | private static global::System.Globalization.CultureInfo resourceCulture;
29 |
30 | [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
31 | internal Resources() {
32 | }
33 |
34 | ///
35 | /// 이 클래스에서 사용하는 캐시된 ResourceManager 인스턴스를 반환합니다.
36 | ///
37 | [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
38 | internal static global::System.Resources.ResourceManager ResourceManager {
39 | get {
40 | if ((resourceMan == null)) {
41 | global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("DevFlow.LayoutSupport.Properties.Resources", typeof(Resources).Assembly);
42 | resourceMan = temp;
43 | }
44 | return resourceMan;
45 | }
46 | }
47 |
48 | ///
49 | /// 이 강력한 형식의 리소스 클래스를 사용하여 모든 리소스 조회에 대해 현재 스레드의 CurrentUICulture 속성을
50 | /// 재정의합니다.
51 | ///
52 | [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
53 | internal static global::System.Globalization.CultureInfo Culture {
54 | get {
55 | return resourceCulture;
56 | }
57 | set {
58 | resourceCulture = value;
59 | }
60 | }
61 | }
62 | }
63 |
--------------------------------------------------------------------------------
/src/DevFlow.LayoutSupport/Properties/Settings.Designer.cs:
--------------------------------------------------------------------------------
1 | //------------------------------------------------------------------------------
2 | //
3 | // This code was generated by a tool.
4 | // Runtime Version:4.0.30319.42000
5 | //
6 | // Changes to this file may cause incorrect behavior and will be lost if
7 | // the code is regenerated.
8 | //
9 | //------------------------------------------------------------------------------
10 |
11 | namespace DevFlow.LayoutSupport.Properties
12 | {
13 |
14 |
15 | [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
16 | [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "11.0.0.0")]
17 | internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase
18 | {
19 |
20 | private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings())));
21 |
22 | public static Settings Default
23 | {
24 | get
25 | {
26 | return defaultInstance;
27 | }
28 | }
29 | }
30 | }
31 |
--------------------------------------------------------------------------------
/src/DevFlow.LayoutSupport/Properties/Settings.settings:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
--------------------------------------------------------------------------------
/src/DevFlow.LayoutSupport/Themes/Generic.xaml:
--------------------------------------------------------------------------------
1 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
--------------------------------------------------------------------------------
/src/DevFlow.LayoutSupport/Themes/Styles/BasicWindow.xaml:
--------------------------------------------------------------------------------
1 |
5 |
6 |
27 |
28 |
75 |
76 |
77 |
78 |
79 |
80 |
--------------------------------------------------------------------------------
/src/DevFlow.LayoutSupport/Themes/Styles/FlowIcon.xaml:
--------------------------------------------------------------------------------
1 |
4 |
5 |
27 |
28 |
29 |
--------------------------------------------------------------------------------
/src/DevFlow.LayoutSupport/packages.config:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
--------------------------------------------------------------------------------
/src/DevFlow.Main/Properties/AssemblyInfo.cs:
--------------------------------------------------------------------------------
1 | using System.Reflection;
2 | using System.Runtime.InteropServices;
3 | using System.Windows;
4 |
5 | // 어셈블리에 대한 일반 정보는 다음 특성 집합을 통해
6 | // 제어됩니다. 어셈블리와 관련된 정보를 수정하려면
7 | // 이러한 특성 값을 변경하세요.
8 | [assembly: AssemblyTitle("DevFlow.Main")]
9 | [assembly: AssemblyDescription("")]
10 | [assembly: AssemblyConfiguration("")]
11 | [assembly: AssemblyCompany("")]
12 | [assembly: AssemblyProduct("DevFlow.Main")]
13 | [assembly: AssemblyCopyright("Copyright © 2021")]
14 | [assembly: AssemblyTrademark("")]
15 | [assembly: AssemblyCulture("")]
16 |
17 | // ComVisible을 false로 설정하면 이 어셈블리의 형식이 COM 구성 요소에
18 | // 표시되지 않습니다. COM에서 이 어셈블리의 형식에 액세스하려면
19 | // 해당 형식에 대해 ComVisible 특성을 true로 설정하세요.
20 | [assembly: ComVisible(false)]
21 |
22 | //지역화 가능 애플리케이션 빌드를 시작하려면 다음을 설정하세요.
23 | //.csproj 파일에서 내에 CultureYouAreCodingWith를
24 | //설정하십시오. 예를 들어 소스 파일에서 영어(미국)를
25 | //사용하는 경우 를 en-US로 설정합니다. 그런 다음 아래
26 | //NeutralResourceLanguage 특성의 주석 처리를 제거합니다. 아래 줄의 "en-US"를 업데이트하여
27 | //프로젝트 파일의 UICulture 설정과 일치시킵니다.
28 |
29 | //[assembly: NeutralResourcesLanguage("en-US", UltimateResourceFallbackLocation.Satellite)]
30 |
31 |
32 | [assembly: ThemeInfo(
33 | ResourceDictionaryLocation.None, //테마별 리소스 사전의 위치
34 | //(페이지 또는 응용 프로그램 리소스 사진에
35 | // 리소스가 없는 경우에 사용됨)
36 | ResourceDictionaryLocation.SourceAssembly //제네릭 리소스 사전의 위치
37 | //(페이지 또는 응용 프로그램 리소스 사진에
38 | // 리소스가 없는 경우에 사용됨)
39 | )]
40 |
41 |
42 | // 어셈블리의 버전 정보는 다음 네 가지 값으로 구성됩니다.
43 | //
44 | // 주 버전
45 | // 부 버전
46 | // 빌드 번호
47 | // 수정 버전
48 | //
49 | // 모든 값을 지정하거나 아래와 같이 '*'를 사용하여 빌드 번호 및 수정 번호를
50 | // 기본값으로 할 수 있습니다.
51 | // [assembly: AssemblyVersion("1.0.*")]
52 | [assembly: AssemblyVersion("1.0.0.0")]
53 | [assembly: AssemblyFileVersion("1.0.0.0")]
54 |
--------------------------------------------------------------------------------
/src/DevFlow.Main/Properties/Resources.Designer.cs:
--------------------------------------------------------------------------------
1 | //------------------------------------------------------------------------------
2 | //
3 | // 이 코드는 도구를 사용하여 생성되었습니다.
4 | // 런타임 버전:4.0.30319.42000
5 | //
6 | // 파일 내용을 변경하면 잘못된 동작이 발생할 수 있으며, 코드를 다시 생성하면
7 | // 이러한 변경 내용이 손실됩니다.
8 | //
9 | //------------------------------------------------------------------------------
10 |
11 | namespace DevFlow.Main.Properties {
12 |
13 |
14 | ///
15 | /// 지역화된 문자열 등을 찾기 위한 강력한 형식의 리소스 클래스입니다.
16 | ///
17 | // 이 클래스는 ResGen 또는 Visual Studio와 같은 도구를 통해 StronglyTypedResourceBuilder
18 | // 클래스에서 자동으로 생성되었습니다.
19 | // 멤버를 추가하거나 제거하려면 .ResX 파일을 편집한 다음 /str 옵션을 사용하여
20 | // ResGen을 다시 실행하거나 VS 프로젝트를 다시 빌드하십시오.
21 | [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0")]
22 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
23 | [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
24 | internal class Resources {
25 |
26 | private static global::System.Resources.ResourceManager resourceMan;
27 |
28 | private static global::System.Globalization.CultureInfo resourceCulture;
29 |
30 | [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
31 | internal Resources() {
32 | }
33 |
34 | ///
35 | /// 이 클래스에서 사용하는 캐시된 ResourceManager 인스턴스를 반환합니다.
36 | ///
37 | [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
38 | internal static global::System.Resources.ResourceManager ResourceManager {
39 | get {
40 | if ((resourceMan == null)) {
41 | global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("DevFlow.Main.Properties.Resources", typeof(Resources).Assembly);
42 | resourceMan = temp;
43 | }
44 | return resourceMan;
45 | }
46 | }
47 |
48 | ///
49 | /// 이 강력한 형식의 리소스 클래스를 사용하여 모든 리소스 조회에 대해 현재 스레드의 CurrentUICulture 속성을
50 | /// 재정의합니다.
51 | ///
52 | [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
53 | internal static global::System.Globalization.CultureInfo Culture {
54 | get {
55 | return resourceCulture;
56 | }
57 | set {
58 | resourceCulture = value;
59 | }
60 | }
61 | }
62 | }
63 |
--------------------------------------------------------------------------------
/src/DevFlow.Main/Properties/Settings.Designer.cs:
--------------------------------------------------------------------------------
1 | //------------------------------------------------------------------------------
2 | //
3 | // This code was generated by a tool.
4 | // Runtime Version:4.0.30319.42000
5 | //
6 | // Changes to this file may cause incorrect behavior and will be lost if
7 | // the code is regenerated.
8 | //
9 | //------------------------------------------------------------------------------
10 |
11 | namespace DevFlow.Main.Properties
12 | {
13 |
14 |
15 | [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
16 | [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "11.0.0.0")]
17 | internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase
18 | {
19 |
20 | private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings())));
21 |
22 | public static Settings Default
23 | {
24 | get
25 | {
26 | return defaultInstance;
27 | }
28 | }
29 | }
30 | }
31 |
--------------------------------------------------------------------------------
/src/DevFlow.Main/Properties/Settings.settings:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
--------------------------------------------------------------------------------
/src/DevFlow.Main/Reviews/DemoMainWindow.xaml:
--------------------------------------------------------------------------------
1 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
--------------------------------------------------------------------------------
/src/DevFlow.Main/Reviews/DemoMainWindow.xaml.cs:
--------------------------------------------------------------------------------
1 | namespace DevFlow.Main.Designs
2 | {
3 | public partial class DemoMainWindow : Views.MainWindow
4 | {
5 | public DemoMainWindow()
6 | {
7 | InitializeComponent();
8 | }
9 | }
10 | }
11 |
--------------------------------------------------------------------------------
/src/DevFlow.Main/Themes/Generic.xaml:
--------------------------------------------------------------------------------
1 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/src/DevFlow.Main/Themes/Styles/MainWindow.xaml:
--------------------------------------------------------------------------------
1 |
8 |
9 |
11 |
12 |
17 |
18 |
21 |
22 |
27 |
28 |
29 |
31 |
32 |
33 |
65 |
66 |
67 |
68 |
69 |
81 |
82 |
83 |
84 |
--------------------------------------------------------------------------------
/src/DevFlow.Main/ViewModels/MainViewModel.cs:
--------------------------------------------------------------------------------
1 | using System.Linq;
2 | using System.Collections.ObjectModel;
3 | using DevFlow.Data;
4 | using DevFlow.Data.Menu;
5 | using DevFlow.Data.Theme;
6 | using DevFlow.Data.Works;
7 | using DevFlow.Languages.ViewModels;
8 | using DevFlow.Languages.Views;
9 | using DevFlow.Main.Views;
10 | using DevFlow.Menus.ViewModels;
11 | using DevFlow.Skins.ViewModels;
12 | using DevFlow.Skins.Views;
13 | using DevFlow.Foundation.Flowbase;
14 | using DevFlow.Foundation.Flowcore;
15 | using DevFlow.Foundation.Mvvm;
16 | using DevFlow.Data.Language;
17 | using DevFlow.Colors.Views;
18 | using DevFlow.Colors.ViewModels;
19 | using System;
20 | using DevFlow.Finders.Local.ViewModel;
21 | using DevFlow.Finders.UI.Views;
22 |
23 | namespace DevFlow.Main.ViewModels
24 | {
25 | public class MainViewModel : ObservableObject
26 | {
27 | #region Variables
28 |
29 | private readonly FlowTheme theme;
30 | private readonly FlowCulture culture;
31 | #endregion
32 |
33 | #region Wallpaper
34 |
35 | public string Wallpaper { get; set; }
36 | #endregion
37 |
38 | #region Menu
39 |
40 | public QuickSlotViewModel Menu { get; }
41 | #endregion
42 |
43 | #region Theme
44 |
45 | public SwitchSkinViewModel Skin { get; }
46 | #endregion
47 |
48 | #region Translate
49 |
50 | private TranslatorViewModel Translate { get; }
51 | #endregion
52 |
53 | #region Works
54 |
55 | public ObservableCollection Works { get; set; }
56 | #endregion
57 |
58 | #region Constructor
59 |
60 | public MainViewModel()
61 | {
62 | Wallpaper = "/DevFlow.Resources;component/Images/wallpaper-08.jpg";
63 |
64 | Works = new ObservableCollection();
65 | Menu = new QuickSlotViewModel(new RelayCommand(MenuSelected));
66 | }
67 |
68 | public MainViewModel(FlowTheme _theme, FlowCulture _culture) : this()
69 | {
70 | theme = _theme;
71 | culture = _culture;
72 | Skin = new SwitchSkinViewModel(SkinSelected, theme.GetCurrentTheme());
73 | Translate = new TranslatorViewModel(LanguageChanged, culture.GetCurrentLanguage());
74 | }
75 | #endregion
76 |
77 | #region MenuSelected
78 |
79 | private void MenuSelected(MenuModel menu)
80 | {
81 | if (Works.FirstOrDefault(x => x.Menu.Equals(menu)) is null)
82 | {
83 | IFlowElement content = null;
84 |
85 | switch (menu.IconType)
86 | {
87 | case GeoIcon.FolderOpenOutline: content = new Finder().UseViewModel(new FinderViewModel()); break;
88 | case GeoIcon.EyedropperVariant: content = new ColorSpoid().UseViewModel(new ColorSpoidViewModel()); break;
89 | case GeoIcon.Palette: content = new SwitchSkin().UseViewModel(Skin); break;
90 | case GeoIcon.Web: content = new Translator().UseViewModel(Translate); break;
91 | case GeoIcon.Close: Environment.Exit(0); break;
92 | default: content = new EmptyView(); break;
93 | }
94 | content.OnShow(menu);
95 | }
96 |
97 | }
98 | #endregion
99 |
100 | #region SkinSelected
101 |
102 | private void SkinSelected(SkinModel theme)
103 | {
104 | this.theme.Switch(theme.Skin);
105 | FlowConfig.SaveTheme(theme.Skin);
106 | }
107 | #endregion
108 |
109 | #region LanguageChanged
110 |
111 | private void LanguageChanged(LanguageModel culture)
112 | {
113 | this.culture.Switch(culture.Language);
114 | FlowConfig.SaveLanguage(culture.Language);
115 | }
116 | #endregion
117 | }
118 | }
119 |
--------------------------------------------------------------------------------
/src/DevFlow.Main/Views/EmptyView.cs:
--------------------------------------------------------------------------------
1 | using System.Windows;
2 | using DevFlow.LayoutSupport.Controls;
3 |
4 | namespace DevFlow.Main.Views
5 | {
6 | public class EmptyView : Explorer
7 | {
8 | #region DefaultStyleKey
9 |
10 | static EmptyView()
11 | {
12 | DefaultStyleKeyProperty.OverrideMetadata(typeof(EmptyView), new FrameworkPropertyMetadata(typeof(EmptyView)));
13 | }
14 | #endregion
15 | }
16 | }
17 |
--------------------------------------------------------------------------------
/src/DevFlow.Main/Views/MainWindow.cs:
--------------------------------------------------------------------------------
1 | using System.Windows;
2 | using DevFlow.Controls.Primitives;
3 | using DevFlow.Main.ViewModels;
4 |
5 | namespace DevFlow.Main.Views
6 | {
7 | public class MainWindow : SystemWindow
8 | {
9 | #region DefaultStyleKey
10 |
11 | static MainWindow()
12 | {
13 | DefaultStyleKeyProperty.OverrideMetadata(typeof(MainWindow), new FrameworkPropertyMetadata(typeof(MainWindow)));
14 | }
15 | #endregion
16 |
17 | #region Constructor
18 |
19 | public MainWindow()
20 | {
21 |
22 | }
23 | #endregion
24 |
25 | #region OnDesignerMode
26 |
27 | protected override void OnDesignerMode()
28 | {
29 | DataContext = new MainViewModel();
30 | }
31 | #endregion
32 | }
33 | }
--------------------------------------------------------------------------------
/src/DevFlow.Menus/Properties/AssemblyInfo.cs:
--------------------------------------------------------------------------------
1 | using System.Reflection;
2 | using System.Runtime.InteropServices;
3 | using System.Windows;
4 |
5 | // 어셈블리에 대한 일반 정보는 다음 특성 집합을 통해
6 | // 제어됩니다. 어셈블리와 관련된 정보를 수정하려면
7 | // 이러한 특성 값을 변경하세요.
8 | [assembly: AssemblyTitle("DevFlow.Menus")]
9 | [assembly: AssemblyDescription("")]
10 | [assembly: AssemblyConfiguration("")]
11 | [assembly: AssemblyCompany("")]
12 | [assembly: AssemblyProduct("DevFlow.Menus")]
13 | [assembly: AssemblyCopyright("Copyright © 2021")]
14 | [assembly: AssemblyTrademark("")]
15 | [assembly: AssemblyCulture("")]
16 |
17 | // ComVisible을 false로 설정하면 이 어셈블리의 형식이 COM 구성 요소에
18 | // 표시되지 않습니다. COM에서 이 어셈블리의 형식에 액세스하려면
19 | // 해당 형식에 대해 ComVisible 특성을 true로 설정하세요.
20 | [assembly: ComVisible(false)]
21 |
22 | //지역화 가능 애플리케이션 빌드를 시작하려면 다음을 설정하세요.
23 | //.csproj 파일에서 내에 CultureYouAreCodingWith를
24 | //설정하십시오. 예를 들어 소스 파일에서 영어(미국)를
25 | //사용하는 경우 를 en-US로 설정합니다. 그런 다음 아래
26 | //NeutralResourceLanguage 특성의 주석 처리를 제거합니다. 아래 줄의 "en-US"를 업데이트하여
27 | //프로젝트 파일의 UICulture 설정과 일치시킵니다.
28 |
29 | //[assembly: NeutralResourcesLanguage("en-US", UltimateResourceFallbackLocation.Satellite)]
30 |
31 |
32 | [assembly: ThemeInfo(
33 | ResourceDictionaryLocation.None, //테마별 리소스 사전의 위치
34 | //(페이지 또는 응용 프로그램 리소스 사진에
35 | // 리소스가 없는 경우에 사용됨)
36 | ResourceDictionaryLocation.SourceAssembly //제네릭 리소스 사전의 위치
37 | //(페이지 또는 응용 프로그램 리소스 사진에
38 | // 리소스가 없는 경우에 사용됨)
39 | )]
40 |
41 |
42 | // 어셈블리의 버전 정보는 다음 네 가지 값으로 구성됩니다.
43 | //
44 | // 주 버전
45 | // 부 버전
46 | // 빌드 번호
47 | // 수정 버전
48 | //
49 | // 모든 값을 지정하거나 아래와 같이 '*'를 사용하여 빌드 번호 및 수정 번호를
50 | // 기본값으로 할 수 있습니다.
51 | // [assembly: AssemblyVersion("1.0.*")]
52 | [assembly: AssemblyVersion("1.0.0.0")]
53 | [assembly: AssemblyFileVersion("1.0.0.0")]
54 |
--------------------------------------------------------------------------------
/src/DevFlow.Menus/Properties/Resources.Designer.cs:
--------------------------------------------------------------------------------
1 | //------------------------------------------------------------------------------
2 | //
3 | // 이 코드는 도구를 사용하여 생성되었습니다.
4 | // 런타임 버전:4.0.30319.42000
5 | //
6 | // 파일 내용을 변경하면 잘못된 동작이 발생할 수 있으며, 코드를 다시 생성하면
7 | // 이러한 변경 내용이 손실됩니다.
8 | //
9 | //------------------------------------------------------------------------------
10 |
11 | namespace DevFlow.Menus.Properties {
12 |
13 |
14 | ///
15 | /// 지역화된 문자열 등을 찾기 위한 강력한 형식의 리소스 클래스입니다.
16 | ///
17 | // 이 클래스는 ResGen 또는 Visual Studio와 같은 도구를 통해 StronglyTypedResourceBuilder
18 | // 클래스에서 자동으로 생성되었습니다.
19 | // 멤버를 추가하거나 제거하려면 .ResX 파일을 편집한 다음 /str 옵션을 사용하여
20 | // ResGen을 다시 실행하거나 VS 프로젝트를 다시 빌드하십시오.
21 | [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0")]
22 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
23 | [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
24 | internal class Resources {
25 |
26 | private static global::System.Resources.ResourceManager resourceMan;
27 |
28 | private static global::System.Globalization.CultureInfo resourceCulture;
29 |
30 | [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
31 | internal Resources() {
32 | }
33 |
34 | ///
35 | /// 이 클래스에서 사용하는 캐시된 ResourceManager 인스턴스를 반환합니다.
36 | ///
37 | [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
38 | internal static global::System.Resources.ResourceManager ResourceManager {
39 | get {
40 | if ((resourceMan == null)) {
41 | global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("DevFlow.Menus.Properties.Resources", typeof(Resources).Assembly);
42 | resourceMan = temp;
43 | }
44 | return resourceMan;
45 | }
46 | }
47 |
48 | ///
49 | /// 이 강력한 형식의 리소스 클래스를 사용하여 모든 리소스 조회에 대해 현재 스레드의 CurrentUICulture 속성을
50 | /// 재정의합니다.
51 | ///
52 | [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
53 | internal static global::System.Globalization.CultureInfo Culture {
54 | get {
55 | return resourceCulture;
56 | }
57 | set {
58 | resourceCulture = value;
59 | }
60 | }
61 | }
62 | }
63 |
--------------------------------------------------------------------------------
/src/DevFlow.Menus/Properties/Settings.Designer.cs:
--------------------------------------------------------------------------------
1 | //------------------------------------------------------------------------------
2 | //
3 | // This code was generated by a tool.
4 | // Runtime Version:4.0.30319.42000
5 | //
6 | // Changes to this file may cause incorrect behavior and will be lost if
7 | // the code is regenerated.
8 | //
9 | //------------------------------------------------------------------------------
10 |
11 | namespace DevFlow.Menus.Properties
12 | {
13 |
14 |
15 | [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
16 | [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "11.0.0.0")]
17 | internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase
18 | {
19 |
20 | private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings())));
21 |
22 | public static Settings Default
23 | {
24 | get
25 | {
26 | return defaultInstance;
27 | }
28 | }
29 | }
30 | }
31 |
--------------------------------------------------------------------------------
/src/DevFlow.Menus/Properties/Settings.settings:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
--------------------------------------------------------------------------------
/src/DevFlow.Menus/Reviews/DemoQuickSlot.xaml:
--------------------------------------------------------------------------------
1 |
8 |
9 |
--------------------------------------------------------------------------------
/src/DevFlow.Menus/Reviews/DemoQuickSlot.xaml.cs:
--------------------------------------------------------------------------------
1 | using DevFlow.Menus.Views;
2 |
3 | namespace DevFlow.Menus.Designs
4 | {
5 | public partial class DemoQuickSlot : QuickSlot
6 | {
7 | public DemoQuickSlot()
8 | {
9 | InitializeComponent();
10 | }
11 | }
12 | }
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
--------------------------------------------------------------------------------
/src/DevFlow.Menus/ViewModels/QuickSlotViewModel.cs:
--------------------------------------------------------------------------------
1 | using System.Collections.Generic;
2 | using System.Windows;
3 | using System.Windows.Input;
4 | using DevFlow.Data;
5 | using DevFlow.Data.Menu;
6 | using DevFlow.Foundation.Mvvm;
7 |
8 | namespace DevFlow.Menus.ViewModels
9 | {
10 | public class QuickSlotViewModel : ObservableObject
11 | {
12 | #region Commands
13 |
14 | public ICommand DragWindowCommand { get; set; }
15 | #endregion
16 |
17 | #region Menus
18 |
19 | public List Menus { get; set; }
20 | #endregion
21 |
22 | #region Constructors
23 |
24 | public QuickSlotViewModel()
25 | {
26 | DragWindowCommand = new RelayCommand(DragWindow);
27 | Menus = GetMenus();
28 | }
29 |
30 | public QuickSlotViewModel(RelayCommand menuSelected) : this()
31 | {
32 | Menus.ForEach(x => x.MenuClickCommand = menuSelected);
33 | }
34 | #endregion
35 |
36 | #region GetMenus
37 |
38 | private List GetMenus()
39 | {
40 | List menus = new List();
41 | menus.Add(new MenuModel { Seq = 0, Name = "Move", IconType = GeoIcon.ArrowAll });
42 | menus.Add(new MenuModel { Seq = 0, Name = "Directory", IconType = GeoIcon.FolderOpenOutline });
43 | menus.Add(new MenuModel { Seq = 1, Name = "Color", IconType = GeoIcon.EyedropperVariant });
44 | menus.Add(new MenuModel { Seq = 2, Name = "Theme", IconType = GeoIcon.Palette });
45 | menus.Add(new MenuModel { Seq = 3, Name = "Web", IconType = GeoIcon.Web });
46 | menus.Add(new MenuModel { Seq = 99, Name = "Close", IconType = GeoIcon.Close });
47 | return menus;
48 | }
49 | #endregion
50 |
51 | #region DragWindow
52 |
53 | private void DragWindow(MouseEventArgs e)
54 | {
55 | Window.GetWindow((UIElement)e.Source).DragMove();
56 | }
57 | #endregion
58 | }
59 | }
60 |
--------------------------------------------------------------------------------
/src/DevFlow.Menus/Views/QuickSlot.cs:
--------------------------------------------------------------------------------
1 | using DevFlow.Controls.Primitives;
2 | using DevFlow.Menus.ViewModels;
3 | using System.Windows;
4 |
5 | namespace DevFlow.Menus.Views
6 | {
7 | public class QuickSlot : Express
8 | {
9 | #region DefaultStyleKey
10 |
11 | static QuickSlot()
12 | {
13 | DefaultStyleKeyProperty.OverrideMetadata(typeof(QuickSlot), new FrameworkPropertyMetadata(typeof(QuickSlot)));
14 | }
15 | #endregion
16 |
17 | #region Constructor
18 |
19 | public QuickSlot()
20 | {
21 | }
22 | #endregion
23 |
24 | #region OnDesignerMode
25 |
26 | protected override void OnDesignerMode()
27 | {
28 | DataContext = new QuickSlotViewModel();
29 | }
30 | #endregion
31 | }
32 | }
33 |
--------------------------------------------------------------------------------
/src/DevFlow.Reflects/Properties/AssemblyInfo.cs:
--------------------------------------------------------------------------------
1 | using System.Reflection;
2 | using System.Runtime.InteropServices;
3 | using System.Windows;
4 |
5 | // 어셈블리에 대한 일반 정보는 다음 특성 집합을 통해
6 | // 제어됩니다. 어셈블리와 관련된 정보를 수정하려면
7 | // 이러한 특성 값을 변경하세요.
8 | [assembly: AssemblyTitle("DevFlow.Reflects")]
9 | [assembly: AssemblyDescription("")]
10 | [assembly: AssemblyConfiguration("")]
11 | [assembly: AssemblyCompany("")]
12 | [assembly: AssemblyProduct("DevFlow.Reflects")]
13 | [assembly: AssemblyCopyright("Copyright © 2021")]
14 | [assembly: AssemblyTrademark("")]
15 | [assembly: AssemblyCulture("")]
16 |
17 | // ComVisible을 false로 설정하면 이 어셈블리의 형식이 COM 구성 요소에
18 | // 표시되지 않습니다. COM에서 이 어셈블리의 형식에 액세스하려면
19 | // 해당 형식에 대해 ComVisible 특성을 true로 설정하세요.
20 | [assembly: ComVisible(false)]
21 |
22 | //지역화 가능 애플리케이션 빌드를 시작하려면 다음을 설정하세요.
23 | //.csproj 파일에서 내에 CultureYouAreCodingWith를
24 | //설정하십시오. 예를 들어 소스 파일에서 영어(미국)를
25 | //사용하는 경우 를 en-US로 설정합니다. 그런 다음 아래
26 | //NeutralResourceLanguage 특성의 주석 처리를 제거합니다. 아래 줄의 "en-US"를 업데이트하여
27 | //프로젝트 파일의 UICulture 설정과 일치시킵니다.
28 |
29 | //[assembly: NeutralResourcesLanguage("en-US", UltimateResourceFallbackLocation.Satellite)]
30 |
31 |
32 | [assembly: ThemeInfo(
33 | ResourceDictionaryLocation.None, //테마별 리소스 사전의 위치
34 | //(페이지 또는 응용 프로그램 리소스 사진에
35 | // 리소스가 없는 경우에 사용됨)
36 | ResourceDictionaryLocation.SourceAssembly //제네릭 리소스 사전의 위치
37 | //(페이지 또는 응용 프로그램 리소스 사진에
38 | // 리소스가 없는 경우에 사용됨)
39 | )]
40 |
41 |
42 | // 어셈블리의 버전 정보는 다음 네 가지 값으로 구성됩니다.
43 | //
44 | // 주 버전
45 | // 부 버전
46 | // 빌드 번호
47 | // 수정 버전
48 | //
49 | // 모든 값을 지정하거나 아래와 같이 '*'를 사용하여 빌드 번호 및 수정 번호를
50 | // 기본값으로 할 수 있습니다.
51 | // [assembly: AssemblyVersion("1.0.*")]
52 | [assembly: AssemblyVersion("1.0.0.0")]
53 | [assembly: AssemblyFileVersion("1.0.0.0")]
54 |
--------------------------------------------------------------------------------
/src/DevFlow.Reflects/Properties/Resources.Designer.cs:
--------------------------------------------------------------------------------
1 | //------------------------------------------------------------------------------
2 | //
3 | // 이 코드는 도구를 사용하여 생성되었습니다.
4 | // 런타임 버전:4.0.30319.42000
5 | //
6 | // 파일 내용을 변경하면 잘못된 동작이 발생할 수 있으며, 코드를 다시 생성하면
7 | // 이러한 변경 내용이 손실됩니다.
8 | //
9 | //------------------------------------------------------------------------------
10 |
11 | namespace DevFlow.Reflects.Properties {
12 |
13 |
14 | ///
15 | /// 지역화된 문자열 등을 찾기 위한 강력한 형식의 리소스 클래스입니다.
16 | ///
17 | // 이 클래스는 ResGen 또는 Visual Studio와 같은 도구를 통해 StronglyTypedResourceBuilder
18 | // 클래스에서 자동으로 생성되었습니다.
19 | // 멤버를 추가하거나 제거하려면 .ResX 파일을 편집한 다음 /str 옵션을 사용하여
20 | // ResGen을 다시 실행하거나 VS 프로젝트를 다시 빌드하십시오.
21 | [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0")]
22 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
23 | [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
24 | internal class Resources {
25 |
26 | private static global::System.Resources.ResourceManager resourceMan;
27 |
28 | private static global::System.Globalization.CultureInfo resourceCulture;
29 |
30 | [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
31 | internal Resources() {
32 | }
33 |
34 | ///
35 | /// 이 클래스에서 사용하는 캐시된 ResourceManager 인스턴스를 반환합니다.
36 | ///
37 | [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
38 | internal static global::System.Resources.ResourceManager ResourceManager {
39 | get {
40 | if ((resourceMan == null)) {
41 | global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("DevFlow.Reflects.Properties.Resources", typeof(Resources).Assembly);
42 | resourceMan = temp;
43 | }
44 | return resourceMan;
45 | }
46 | }
47 |
48 | ///
49 | /// 이 강력한 형식의 리소스 클래스를 사용하여 모든 리소스 조회에 대해 현재 스레드의 CurrentUICulture 속성을
50 | /// 재정의합니다.
51 | ///
52 | [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
53 | internal static global::System.Globalization.CultureInfo Culture {
54 | get {
55 | return resourceCulture;
56 | }
57 | set {
58 | resourceCulture = value;
59 | }
60 | }
61 | }
62 | }
63 |
--------------------------------------------------------------------------------
/src/DevFlow.Reflects/Properties/Settings.Designer.cs:
--------------------------------------------------------------------------------
1 | //------------------------------------------------------------------------------
2 | //
3 | // This code was generated by a tool.
4 | // Runtime Version:4.0.30319.42000
5 | //
6 | // Changes to this file may cause incorrect behavior and will be lost if
7 | // the code is regenerated.
8 | //
9 | //------------------------------------------------------------------------------
10 |
11 | namespace DevFlow.Reflects.Properties
12 | {
13 |
14 |
15 | [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
16 | [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "11.0.0.0")]
17 | internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase
18 | {
19 |
20 | private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings())));
21 |
22 | public static Settings Default
23 | {
24 | get
25 | {
26 | return defaultInstance;
27 | }
28 | }
29 | }
30 | }
31 |
--------------------------------------------------------------------------------
/src/DevFlow.Reflects/Properties/Settings.settings:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
--------------------------------------------------------------------------------
/src/DevFlow.Reflects/Themes/Generic.xaml:
--------------------------------------------------------------------------------
1 |
5 |
6 |
18 |
19 |
--------------------------------------------------------------------------------
/src/DevFlow.Reflects/ViewModels/ReflectorViewModel.cs:
--------------------------------------------------------------------------------
1 | using DevFlow.Foundation.Mvvm;
2 |
3 | namespace DevFlow.Reflects.ViewModels
4 | {
5 | public class ReflectorViewModel : ObservableObject
6 | {
7 | #region Constructor
8 |
9 | public ReflectorViewModel()
10 | {
11 | }
12 | #endregion
13 | }
14 | }
15 |
--------------------------------------------------------------------------------
/src/DevFlow.Reflects/Views/Reflector.cs:
--------------------------------------------------------------------------------
1 | using DevFlow.LayoutSupport.Controls;
2 | using System.Windows;
3 |
4 | namespace DevFlow.Reflects.Views
5 | {
6 | public class Reflector : BasicWindow
7 | {
8 | static Reflector()
9 | {
10 | DefaultStyleKeyProperty.OverrideMetadata(typeof(Reflector), new FrameworkPropertyMetadata(typeof(Reflector)));
11 | }
12 | }
13 | }
14 |
--------------------------------------------------------------------------------
/src/DevFlow.Resources/Images/wallpaper-01.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/JamesnetGroup/devflow/44f9cb30d433e117077e1bca3bc0fe713e008a4a/src/DevFlow.Resources/Images/wallpaper-01.jpg
--------------------------------------------------------------------------------
/src/DevFlow.Resources/Images/wallpaper-02.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/JamesnetGroup/devflow/44f9cb30d433e117077e1bca3bc0fe713e008a4a/src/DevFlow.Resources/Images/wallpaper-02.jpg
--------------------------------------------------------------------------------
/src/DevFlow.Resources/Images/wallpaper-03.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/JamesnetGroup/devflow/44f9cb30d433e117077e1bca3bc0fe713e008a4a/src/DevFlow.Resources/Images/wallpaper-03.jpg
--------------------------------------------------------------------------------
/src/DevFlow.Resources/Images/wallpaper-04.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/JamesnetGroup/devflow/44f9cb30d433e117077e1bca3bc0fe713e008a4a/src/DevFlow.Resources/Images/wallpaper-04.jpg
--------------------------------------------------------------------------------
/src/DevFlow.Resources/Images/wallpaper-05.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/JamesnetGroup/devflow/44f9cb30d433e117077e1bca3bc0fe713e008a4a/src/DevFlow.Resources/Images/wallpaper-05.jpg
--------------------------------------------------------------------------------
/src/DevFlow.Resources/Images/wallpaper-06.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/JamesnetGroup/devflow/44f9cb30d433e117077e1bca3bc0fe713e008a4a/src/DevFlow.Resources/Images/wallpaper-06.jpg
--------------------------------------------------------------------------------
/src/DevFlow.Resources/Images/wallpaper-07.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/JamesnetGroup/devflow/44f9cb30d433e117077e1bca3bc0fe713e008a4a/src/DevFlow.Resources/Images/wallpaper-07.jpg
--------------------------------------------------------------------------------
/src/DevFlow.Resources/Images/wallpaper-08.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/JamesnetGroup/devflow/44f9cb30d433e117077e1bca3bc0fe713e008a4a/src/DevFlow.Resources/Images/wallpaper-08.jpg
--------------------------------------------------------------------------------
/src/DevFlow.Resources/Images/wallpaper-09.JPG:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/JamesnetGroup/devflow/44f9cb30d433e117077e1bca3bc0fe713e008a4a/src/DevFlow.Resources/Images/wallpaper-09.JPG
--------------------------------------------------------------------------------
/src/DevFlow.Resources/Images/wallpaper-10.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/JamesnetGroup/devflow/44f9cb30d433e117077e1bca3bc0fe713e008a4a/src/DevFlow.Resources/Images/wallpaper-10.jpg
--------------------------------------------------------------------------------
/src/DevFlow.Resources/Properties/AssemblyInfo.cs:
--------------------------------------------------------------------------------
1 | using System.Reflection;
2 | using System.Runtime.InteropServices;
3 | using System.Windows;
4 |
5 | // 어셈블리에 대한 일반 정보는 다음 특성 집합을 통해
6 | // 제어됩니다. 어셈블리와 관련된 정보를 수정하려면
7 | // 이러한 특성 값을 변경하세요.
8 | [assembly: AssemblyTitle("DevFlow.Resources")]
9 | [assembly: AssemblyDescription("")]
10 | [assembly: AssemblyConfiguration("")]
11 | [assembly: AssemblyCompany("")]
12 | [assembly: AssemblyProduct("DevFlow.Resources")]
13 | [assembly: AssemblyCopyright("Copyright © 2021")]
14 | [assembly: AssemblyTrademark("")]
15 | [assembly: AssemblyCulture("")]
16 |
17 | // ComVisible을 false로 설정하면 이 어셈블리의 형식이 COM 구성 요소에
18 | // 표시되지 않습니다. COM에서 이 어셈블리의 형식에 액세스하려면
19 | // 해당 형식에 대해 ComVisible 특성을 true로 설정하세요.
20 | [assembly: ComVisible(false)]
21 |
22 | //지역화 가능 애플리케이션 빌드를 시작하려면 다음을 설정하세요.
23 | //.csproj 파일에서 내에 CultureYouAreCodingWith를
24 | //설정하십시오. 예를 들어 소스 파일에서 영어(미국)를
25 | //사용하는 경우 를 en-US로 설정합니다. 그런 다음 아래
26 | //NeutralResourceLanguage 특성의 주석 처리를 제거합니다. 아래 줄의 "en-US"를 업데이트하여
27 | //프로젝트 파일의 UICulture 설정과 일치시킵니다.
28 |
29 | //[assembly: NeutralResourcesLanguage("en-US", UltimateResourceFallbackLocation.Satellite)]
30 |
31 |
32 | [assembly: ThemeInfo(
33 | ResourceDictionaryLocation.None, //테마별 리소스 사전의 위치
34 | //(페이지 또는 응용 프로그램 리소스 사진에
35 | // 리소스가 없는 경우에 사용됨)
36 | ResourceDictionaryLocation.SourceAssembly //제네릭 리소스 사전의 위치
37 | //(페이지 또는 응용 프로그램 리소스 사진에
38 | // 리소스가 없는 경우에 사용됨)
39 | )]
40 |
41 |
42 | // 어셈블리의 버전 정보는 다음 네 가지 값으로 구성됩니다.
43 | //
44 | // 주 버전
45 | // 부 버전
46 | // 빌드 번호
47 | // 수정 버전
48 | //
49 | // 모든 값을 지정하거나 아래와 같이 '*'를 사용하여 빌드 번호 및 수정 번호를
50 | // 기본값으로 할 수 있습니다.
51 | // [assembly: AssemblyVersion("1.0.*")]
52 | [assembly: AssemblyVersion("1.0.0.0")]
53 | [assembly: AssemblyFileVersion("1.0.0.0")]
54 |
--------------------------------------------------------------------------------
/src/DevFlow.Resources/Properties/Resources.Designer.cs:
--------------------------------------------------------------------------------
1 | //------------------------------------------------------------------------------
2 | //
3 | // 이 코드는 도구를 사용하여 생성되었습니다.
4 | // 런타임 버전:4.0.30319.42000
5 | //
6 | // 파일 내용을 변경하면 잘못된 동작이 발생할 수 있으며, 코드를 다시 생성하면
7 | // 이러한 변경 내용이 손실됩니다.
8 | //
9 | //------------------------------------------------------------------------------
10 |
11 | namespace DevFlow.Resources.Properties {
12 |
13 |
14 | ///
15 | /// 지역화된 문자열 등을 찾기 위한 강력한 형식의 리소스 클래스입니다.
16 | ///
17 | // 이 클래스는 ResGen 또는 Visual Studio와 같은 도구를 통해 StronglyTypedResourceBuilder
18 | // 클래스에서 자동으로 생성되었습니다.
19 | // 멤버를 추가하거나 제거하려면 .ResX 파일을 편집한 다음 /str 옵션을 사용하여
20 | // ResGen을 다시 실행하거나 VS 프로젝트를 다시 빌드하십시오.
21 | [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0")]
22 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
23 | [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
24 | internal class Resources {
25 |
26 | private static global::System.Resources.ResourceManager resourceMan;
27 |
28 | private static global::System.Globalization.CultureInfo resourceCulture;
29 |
30 | [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
31 | internal Resources() {
32 | }
33 |
34 | ///
35 | /// 이 클래스에서 사용하는 캐시된 ResourceManager 인스턴스를 반환합니다.
36 | ///
37 | [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
38 | internal static global::System.Resources.ResourceManager ResourceManager {
39 | get {
40 | if ((resourceMan == null)) {
41 | global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("DevFlow.Resources.Properties.Resources", typeof(Resources).Assembly);
42 | resourceMan = temp;
43 | }
44 | return resourceMan;
45 | }
46 | }
47 |
48 | ///
49 | /// 이 강력한 형식의 리소스 클래스를 사용하여 모든 리소스 조회에 대해 현재 스레드의 CurrentUICulture 속성을
50 | /// 재정의합니다.
51 | ///
52 | [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
53 | internal static global::System.Globalization.CultureInfo Culture {
54 | get {
55 | return resourceCulture;
56 | }
57 | set {
58 | resourceCulture = value;
59 | }
60 | }
61 | }
62 | }
63 |
--------------------------------------------------------------------------------
/src/DevFlow.Resources/Properties/Settings.Designer.cs:
--------------------------------------------------------------------------------
1 | //------------------------------------------------------------------------------
2 | //
3 | // This code was generated by a tool.
4 | // Runtime Version:4.0.30319.42000
5 | //
6 | // Changes to this file may cause incorrect behavior and will be lost if
7 | // the code is regenerated.
8 | //
9 | //------------------------------------------------------------------------------
10 |
11 | namespace DevFlow.Resources.Properties
12 | {
13 |
14 |
15 | [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
16 | [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "11.0.0.0")]
17 | internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase
18 | {
19 |
20 | private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings())));
21 |
22 | public static Settings Default
23 | {
24 | get
25 | {
26 | return defaultInstance;
27 | }
28 | }
29 | }
30 | }
31 |
--------------------------------------------------------------------------------
/src/DevFlow.Resources/Properties/Settings.settings:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
--------------------------------------------------------------------------------
/src/DevFlow.Resources/Themes/Converters.xaml:
--------------------------------------------------------------------------------
1 |
5 |
6 |
7 |
--------------------------------------------------------------------------------
/src/DevFlow.Resources/Themes/DrawingImage/pc-screen.xaml:
--------------------------------------------------------------------------------
1 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
--------------------------------------------------------------------------------
/src/DevFlow.Resources/Themes/Generic.Dark.xaml:
--------------------------------------------------------------------------------
1 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
39 |
40 |
41 |
42 |
43 |
44 |
45 |
46 |
47 |
48 |
49 |
50 |
51 |
--------------------------------------------------------------------------------
/src/DevFlow.Resources/Themes/Generic.Drawings.xaml:
--------------------------------------------------------------------------------
1 |
4 |
5 |
6 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/src/DevFlow.Resources/Themes/Generic.Elena.xaml:
--------------------------------------------------------------------------------
1 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
39 |
40 |
41 |
42 |
43 |
44 |
45 |
46 |
47 |
48 |
49 |
50 |
51 |
--------------------------------------------------------------------------------
/src/DevFlow.Resources/Themes/Generic.James.xaml:
--------------------------------------------------------------------------------
1 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
39 |
40 |
41 |
42 |
43 |
44 |
45 |
46 |
47 |
48 |
49 |
50 |
51 |
--------------------------------------------------------------------------------
/src/DevFlow.Resources/Themes/Generic.White.xaml:
--------------------------------------------------------------------------------
1 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
39 |
40 |
41 |
42 |
43 |
44 |
45 |
46 |
47 |
48 |
49 |
50 |
51 |
--------------------------------------------------------------------------------
/src/DevFlow.Resources/Themes/Generic.xaml:
--------------------------------------------------------------------------------
1 |
4 |
5 |
--------------------------------------------------------------------------------
/src/DevFlow.Resources/Themes/Languages/CN.xaml:
--------------------------------------------------------------------------------
1 |
4 | 中国
5 | 法国
6 | 德国
7 | 日本
8 | 大韩民国
9 | 英国
10 | 美国
11 |
12 | 语言变化
13 | 选择 DevFlow 首选项语言。 你也可以实时更改语言或简单地添加新语言。
14 |
15 | 主题偏好
16 | 您希望如何改变 DevFlow 主题? 选择你想要的主题。 你可以创造你自己的新主题
17 | 白色
18 | 深蓝
19 | 詹姆斯
20 | 艾琳娜
21 |
22 | 电影历史
23 | 您可以拍摄 DevFlow 开发过程历史的屏幕照片。 我们来看看这个程序是如何经历变革的?
24 |
25 | 彩色球面
26 |
--------------------------------------------------------------------------------
/src/DevFlow.Resources/Themes/Languages/EN.xaml:
--------------------------------------------------------------------------------
1 |
4 | China
5 | France
6 | Germany
7 | Japan
8 | Korea
9 | United Kingdom
10 | United States
11 |
12 | Language changes
13 | Select the DevFlow preference language. You can also change languages in real time or simply add new languages.
14 |
15 | Theme preferences
16 | How would you like to change the DevFlow theme? Choose the theme you want. And you can create your own new theme.
17 | White
18 | Dark
19 | James
20 | Elena
21 |
22 | Screenshot History
23 | You can take a screenshot of the DevFlow development process history. Shall we take a look at how the program went through the process of change?
24 |
25 | Color Spoid
26 |
--------------------------------------------------------------------------------
/src/DevFlow.Resources/Themes/Languages/JP.xaml:
--------------------------------------------------------------------------------
1 |
4 | 中国
5 | フランス
6 | ドイツ
7 | 日本
8 | 大韓民国
9 | イギリス
10 | アメリカ
11 |
12 | 言語の変更
13 | DevFlow プリファレンス言語を選択します。 リアルタイムで言語を変更することも、単に新しい言語を追加することもできます。
14 |
15 | テーマ設定
16 | DevFlowのテーマをどのように変更しますか? 目的のテーマを選択します。 自分だけの新しいテーマを作ることもできます
17 | 白
18 | 暗黒い
19 | ジェイムズ
20 | エレナ
21 |
22 | スクリーンショット履歴
23 | DevFlow 開発プロセス履歴のスクリーンショットを取得できます。 プログラムがどのように変化していったのか見てみましょうか?
24 |
25 | カラースポイド
26 |
27 |
28 |
29 |
--------------------------------------------------------------------------------
/src/DevFlow.Resources/Themes/Languages/KO.xaml:
--------------------------------------------------------------------------------
1 |
4 | 중국
5 | 프랑스
6 | 독일
7 | 일본
8 | 한국
9 | 영국
10 | 미국
11 |
12 | 다국어 설정
13 | DevFlow 기본 설정 언어를 선택하세요. 실시간으로 언어를 변경하거나 새로운 언어를 간단하게 추가할 수도 있습니다.
14 |
15 | 테마 설정
16 | DevFlow 테마를 어떻게 바꾸고 싶으세요? 원하는 테마를 선택하세요. 그리고 당신만의 새로운 테마를 만들수도 있습니다.
17 | 화이트
18 | 다크
19 | 제임스
20 | 엘레나
21 |
22 | 스크린샷 히스토리
23 | DevFlow 개발 과정 역사를 스크린샷으로 하눈에 살펴볼 수 있습니다. 프로그램이 어떻게 변화 과정을 거쳐나갔는지 한번 살펴볼까요?
24 |
25 | 컬러 추출하기
26 |
--------------------------------------------------------------------------------
/src/DevFlow.Serialization/Color/ConvertColor.cs:
--------------------------------------------------------------------------------
1 | using DevFlow.Serialization.Data;
2 | using System;
3 | using System.Linq;
4 |
5 | namespace DevFlow.Serialization.Color
6 | {
7 | public static class ConvertColor
8 | {
9 | public static ColorStruct Parse(string hex)
10 | {
11 | hex = hex.Replace("#", "");
12 | byte[] data = Enumerable.Range(0, hex.Length)
13 | .Where(x => x % 2 == 0)
14 | .Select(x => Convert.ToByte(hex.Substring(x, 2), 16))
15 | .ToArray();
16 |
17 | ColorStruct color = new ColorStruct
18 | {
19 | Red = data[1],
20 | Green = data[2],
21 | Blue = data[3],
22 | Alpha = data[0]
23 | };
24 | return color;
25 | }
26 |
27 | public static string Hex(ColorStruct rgba)
28 | {
29 | string r = rgba.Red.ToString("X2");
30 | string g = rgba.Green.ToString("X2");
31 | string b = rgba.Blue.ToString("X2");
32 | string a = rgba.Alpha.ToString("X2");
33 |
34 | return $"#{a}{r}{g}{b}";
35 | }
36 |
37 | public static string ReverseHex(ColorStruct rgba)
38 | {
39 | byte max = 255;
40 |
41 | string xr = ((byte)(max - rgba.Red)).ToString("X2");
42 | string xg = ((byte)(max - rgba.Green)).ToString("X2");
43 | string xb = ((byte)(max - rgba.Blue)).ToString("X2");
44 | return $"#FF{xr}{xg}{xb}";
45 | }
46 |
47 | public static string Contrast(ColorStruct rgba, int standard = 142)
48 | {
49 | string reverse = "#FFFFFFFF";
50 | if (((rgba.Red * 0.299) + (rgba.Green * 0.587) + (rgba.Blue * 0.114)) > standard)
51 | {
52 | reverse = "#FF000000";
53 | }
54 | return reverse;
55 | }
56 | }
57 | }
58 |
--------------------------------------------------------------------------------
/src/DevFlow.Serialization/Data/ColorStruct.cs:
--------------------------------------------------------------------------------
1 | namespace DevFlow.Serialization.Data
2 | {
3 | public struct ColorStruct
4 | {
5 | public byte Red { get; set; }
6 | public byte Green { get; set; }
7 | public byte Blue { get; set; }
8 | public byte Alpha { get; set; }
9 |
10 | public ColorStruct(byte red, byte green, byte blue, byte alpha)
11 | {
12 | Red = red;
13 | Green = green;
14 | Blue = blue;
15 | Alpha = alpha;
16 | }
17 | public ColorStruct(int red, int green, int blue, int alpha)
18 | {
19 | Red = (byte)red;
20 | Green = (byte)green;
21 | Blue = (byte)blue;
22 | Alpha = (byte)alpha;
23 | }
24 |
25 | public ColorStruct(System.Drawing.Color color)
26 | {
27 | Red = color.R;
28 | Green = color.G;
29 | Blue = color.B;
30 | Alpha = color.A;
31 | }
32 |
33 | public ColorStruct SetAddBlue(int value)
34 | {
35 | Blue = (byte)(Blue + value);
36 | return this;
37 | }
38 | }
39 | }
40 |
--------------------------------------------------------------------------------
/src/DevFlow.Serialization/DevFlow.Serialization.csproj:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | Debug
6 | AnyCPU
7 | {5164EC60-CB8F-41D8-8386-E6B258F8F0C5}
8 | Library
9 | Properties
10 | DevFlow.Serialization
11 | DevFlow.Serialization
12 | v4.6.1
13 | 512
14 | true
15 |
16 |
17 | true
18 | full
19 | false
20 | bin\Debug\
21 | DEBUG;TRACE
22 | prompt
23 | 4
24 |
25 |
26 | pdbonly
27 | true
28 | bin\Release\
29 | TRACE
30 | prompt
31 | 4
32 |
33 |
34 |
35 |
36 |
37 |
38 |
39 |
40 |
41 |
42 |
43 |
44 |
45 |
46 |
47 |
48 |
49 |
50 |
--------------------------------------------------------------------------------
/src/DevFlow.Serialization/Properties/AssemblyInfo.cs:
--------------------------------------------------------------------------------
1 | using System.Reflection;
2 | using System.Runtime.InteropServices;
3 |
4 | // 어셈블리에 대한 일반 정보는 다음 특성 집합을 통해
5 | // 제어됩니다. 어셈블리와 관련된 정보를 수정하려면
6 | // 이러한 특성 값을 변경하세요.
7 | [assembly: AssemblyTitle("DevFlow.Serialization")]
8 | [assembly: AssemblyDescription("")]
9 | [assembly: AssemblyConfiguration("")]
10 | [assembly: AssemblyCompany("")]
11 | [assembly: AssemblyProduct("DevFlow.Serialization")]
12 | [assembly: AssemblyCopyright("Copyright © 2021")]
13 | [assembly: AssemblyTrademark("")]
14 | [assembly: AssemblyCulture("")]
15 |
16 | // ComVisible을 false로 설정하면 이 어셈블리의 형식이 COM 구성 요소에
17 | // 표시되지 않습니다. COM에서 이 어셈블리의 형식에 액세스하려면
18 | // 해당 형식에 대해 ComVisible 특성을 true로 설정하세요.
19 | [assembly: ComVisible(false)]
20 |
21 | // 이 프로젝트가 COM에 노출되는 경우 다음 GUID는 typelib의 ID를 나타냅니다.
22 | [assembly: Guid("5164ec60-cb8f-41d8-8386-e6b258f8f0c5")]
23 |
24 | // 어셈블리의 버전 정보는 다음 네 가지 값으로 구성됩니다.
25 | //
26 | // 주 버전
27 | // 부 버전
28 | // 빌드 번호
29 | // 수정 버전
30 | //
31 | // 모든 값을 지정하거나 아래와 같이 '*'를 사용하여 빌드 번호 및 수정 번호를
32 | // 기본값으로 할 수 있습니다.
33 | // [assembly: AssemblyVersion("1.0.*")]
34 | [assembly: AssemblyVersion("1.0.0.0")]
35 | [assembly: AssemblyFileVersion("1.0.0.0")]
36 |
--------------------------------------------------------------------------------
/src/DevFlow.Skins/Properties/AssemblyInfo.cs:
--------------------------------------------------------------------------------
1 | using System.Reflection;
2 | using System.Runtime.InteropServices;
3 | using System.Windows;
4 |
5 | // 어셈블리에 대한 일반 정보는 다음 특성 집합을 통해
6 | // 제어됩니다. 어셈블리와 관련된 정보를 수정하려면
7 | // 이러한 특성 값을 변경하세요.
8 | [assembly: AssemblyTitle("DevFlow.Skins")]
9 | [assembly: AssemblyDescription("")]
10 | [assembly: AssemblyConfiguration("")]
11 | [assembly: AssemblyCompany("")]
12 | [assembly: AssemblyProduct("DevFlow.Skins")]
13 | [assembly: AssemblyCopyright("Copyright © 2021")]
14 | [assembly: AssemblyTrademark("")]
15 | [assembly: AssemblyCulture("")]
16 |
17 | // ComVisible을 false로 설정하면 이 어셈블리의 형식이 COM 구성 요소에
18 | // 표시되지 않습니다. COM에서 이 어셈블리의 형식에 액세스하려면
19 | // 해당 형식에 대해 ComVisible 특성을 true로 설정하세요.
20 | [assembly: ComVisible(false)]
21 |
22 | //지역화 가능 애플리케이션 빌드를 시작하려면 다음을 설정하세요.
23 | //.csproj 파일에서 내에 CultureYouAreCodingWith를
24 | //설정하십시오. 예를 들어 소스 파일에서 영어(미국)를
25 | //사용하는 경우 를 en-US로 설정합니다. 그런 다음 아래
26 | //NeutralResourceLanguage 특성의 주석 처리를 제거합니다. 아래 줄의 "en-US"를 업데이트하여
27 | //프로젝트 파일의 UICulture 설정과 일치시킵니다.
28 |
29 | //[assembly: NeutralResourcesLanguage("en-US", UltimateResourceFallbackLocation.Satellite)]
30 |
31 |
32 | [assembly: ThemeInfo(
33 | ResourceDictionaryLocation.None, //테마별 리소스 사전의 위치
34 | //(페이지 또는 응용 프로그램 리소스 사진에
35 | // 리소스가 없는 경우에 사용됨)
36 | ResourceDictionaryLocation.SourceAssembly //제네릭 리소스 사전의 위치
37 | //(페이지 또는 응용 프로그램 리소스 사진에
38 | // 리소스가 없는 경우에 사용됨)
39 | )]
40 |
41 |
42 | // 어셈블리의 버전 정보는 다음 네 가지 값으로 구성됩니다.
43 | //
44 | // 주 버전
45 | // 부 버전
46 | // 빌드 번호
47 | // 수정 버전
48 | //
49 | // 모든 값을 지정하거나 아래와 같이 '*'를 사용하여 빌드 번호 및 수정 번호를
50 | // 기본값으로 할 수 있습니다.
51 | // [assembly: AssemblyVersion("1.0.*")]
52 | [assembly: AssemblyVersion("1.0.0.0")]
53 | [assembly: AssemblyFileVersion("1.0.0.0")]
54 |
--------------------------------------------------------------------------------
/src/DevFlow.Skins/Properties/Resources.Designer.cs:
--------------------------------------------------------------------------------
1 | //------------------------------------------------------------------------------
2 | //
3 | // 이 코드는 도구를 사용하여 생성되었습니다.
4 | // 런타임 버전:4.0.30319.42000
5 | //
6 | // 파일 내용을 변경하면 잘못된 동작이 발생할 수 있으며, 코드를 다시 생성하면
7 | // 이러한 변경 내용이 손실됩니다.
8 | //
9 | //------------------------------------------------------------------------------
10 |
11 | namespace DevFlow.Skins.Properties {
12 |
13 |
14 | ///
15 | /// 지역화된 문자열 등을 찾기 위한 강력한 형식의 리소스 클래스입니다.
16 | ///
17 | // 이 클래스는 ResGen 또는 Visual Studio와 같은 도구를 통해 StronglyTypedResourceBuilder
18 | // 클래스에서 자동으로 생성되었습니다.
19 | // 멤버를 추가하거나 제거하려면 .ResX 파일을 편집한 다음 /str 옵션을 사용하여
20 | // ResGen을 다시 실행하거나 VS 프로젝트를 다시 빌드하십시오.
21 | [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0")]
22 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
23 | [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
24 | internal class Resources {
25 |
26 | private static global::System.Resources.ResourceManager resourceMan;
27 |
28 | private static global::System.Globalization.CultureInfo resourceCulture;
29 |
30 | [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
31 | internal Resources() {
32 | }
33 |
34 | ///
35 | /// 이 클래스에서 사용하는 캐시된 ResourceManager 인스턴스를 반환합니다.
36 | ///
37 | [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
38 | internal static global::System.Resources.ResourceManager ResourceManager {
39 | get {
40 | if ((resourceMan == null)) {
41 | global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("DevFlow.Skins.Properties.Resources", typeof(Resources).Assembly);
42 | resourceMan = temp;
43 | }
44 | return resourceMan;
45 | }
46 | }
47 |
48 | ///
49 | /// 이 강력한 형식의 리소스 클래스를 사용하여 모든 리소스 조회에 대해 현재 스레드의 CurrentUICulture 속성을
50 | /// 재정의합니다.
51 | ///
52 | [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
53 | internal static global::System.Globalization.CultureInfo Culture {
54 | get {
55 | return resourceCulture;
56 | }
57 | set {
58 | resourceCulture = value;
59 | }
60 | }
61 | }
62 | }
63 |
--------------------------------------------------------------------------------
/src/DevFlow.Skins/Properties/Settings.Designer.cs:
--------------------------------------------------------------------------------
1 | //------------------------------------------------------------------------------
2 | //
3 | // This code was generated by a tool.
4 | // Runtime Version:4.0.30319.42000
5 | //
6 | // Changes to this file may cause incorrect behavior and will be lost if
7 | // the code is regenerated.
8 | //
9 | //------------------------------------------------------------------------------
10 |
11 | namespace DevFlow.Skins.Properties
12 | {
13 |
14 |
15 | [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
16 | [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "11.0.0.0")]
17 | internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase
18 | {
19 |
20 | private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings())));
21 |
22 | public static Settings Default
23 | {
24 | get
25 | {
26 | return defaultInstance;
27 | }
28 | }
29 | }
30 | }
31 |
--------------------------------------------------------------------------------
/src/DevFlow.Skins/Properties/Settings.settings:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
--------------------------------------------------------------------------------
/src/DevFlow.Skins/ViewModels/SwitchSkinViewModel.cs:
--------------------------------------------------------------------------------
1 | using DevFlow.Data;
2 | using DevFlow.Data.Theme;
3 | using DevFlow.Foundation.Mvvm;
4 | using System;
5 | using System.Collections.Generic;
6 | using System.Linq;
7 |
8 | namespace DevFlow.Skins.ViewModels
9 | {
10 | public class SwitchSkinViewModel : ObservableObject
11 | {
12 | private SkinModel _currentSkin;
13 |
14 | public List Skins { get; }
15 |
16 | public SkinModel CurrentSkin
17 | {
18 | get => _currentSkin;
19 | set { _currentSkin = value; OnPropertyChanged(); }
20 | }
21 |
22 | public SwitchSkinViewModel(Action SkinSelected, ThemeType nowTheme)
23 | {
24 | Skins = GetSkins();
25 | Skins.ForEach(x => x.SelectSkinCommand = new RelayCommand(SkinSelected));
26 |
27 | CurrentSkin = Skins.First(x => x.Skin == nowTheme);
28 | }
29 |
30 | #region GetSkins
31 |
32 | private List GetSkins()
33 | {
34 | List source = new List
35 | {
36 | new SkinModel("THEME_WHITE", ThemeType.White),
37 | new SkinModel("THEME_DARK", ThemeType.Dark),
38 | new SkinModel("THEME_JAMES", ThemeType.James),
39 | new SkinModel("THEME_ELENA", ThemeType.Elena)
40 | };
41 | return source;
42 | }
43 | #endregion
44 | }
45 | }
46 |
--------------------------------------------------------------------------------
/src/DevFlow.Skins/Views/SwitchSkin.cs:
--------------------------------------------------------------------------------
1 | using DevFlow.LayoutSupport.Controls;
2 | using System.Windows;
3 |
4 | namespace DevFlow.Skins.Views
5 | {
6 | public class SwitchSkin : BasicWindow
7 | {
8 | #region DefaultStyleKey
9 |
10 | static SwitchSkin()
11 | {
12 | DefaultStyleKeyProperty.OverrideMetadata(typeof(SwitchSkin), new FrameworkPropertyMetadata(typeof(SwitchSkin)));
13 | }
14 | #endregion
15 |
16 | #region Constructor
17 |
18 | public SwitchSkin()
19 | {
20 | }
21 | #endregion
22 | }
23 | }
24 |
--------------------------------------------------------------------------------
/src/DevFlow/AddTest.txt:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/DevFlow/App.config:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/src/DevFlow/App.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Windows;
3 | using DevFlow.Data;
4 | using DevFlow.Data.Settings;
5 | using DevFlow.Main.ViewModels;
6 | using DevFlow.Foundation.Flowbase;
7 |
8 | namespace DevFlow
9 | {
10 | public class App : FlowApp
11 | {
12 | protected override ThemeType OnSetDefaultTheme(ThemeType type)
13 | {
14 | return ThemeType.Dark;
15 | }
16 |
17 | protected override void OnApplyThemeManager()
18 | {
19 | AddTheme(ThemeType.Dark, "Generic.Dark.xaml");
20 | AddTheme(ThemeType.White, "Generic.White.xaml");
21 | AddTheme(ThemeType.James, "Generic.James.xaml");
22 | AddTheme(ThemeType.Elena, "Generic.Elena.xaml");
23 | }
24 |
25 | protected override void OnApplyCultureManager()
26 | {
27 | AddLanguage(LanguageType.UnitedStates, "EN.xaml");
28 | AddLanguage(LanguageType.Korea, "KO.xaml");
29 | AddLanguage(LanguageType.China, "CN.xaml");
30 | AddLanguage(LanguageType.Japan, "JP.xaml");
31 | }
32 |
33 | protected override void OnStartup(StartupEventArgs e)
34 | {
35 | Resources.MergedDictionaries.Add(new ResourceDictionary { Source = new Uri("/DevFlow.Resources;component/Themes/Generic.Drawings.xaml", UriKind.RelativeOrAbsolute) });
36 |
37 | bool dialogResult = true;
38 |
39 | ConfigModel config = FlowConfig.LoadConfig();
40 |
41 | Theme.Switch(config.Theme);
42 | Culture.Switch(config.Language);
43 |
44 | while (dialogResult)
45 | {
46 | ShutdownMode = ShutdownMode.OnExplicitShutdown;
47 | Main.Views.MainWindow main = new()
48 | {
49 | DataContext = new MainViewModel(Theme, Culture)
50 | };
51 | _ = main.ShowDialog();
52 | dialogResult = (bool)main.DialogResult;
53 | }
54 | Environment.Exit(0);
55 | }
56 | }
57 | }
58 |
--------------------------------------------------------------------------------
/src/DevFlow/Properties/AssemblyInfo.cs:
--------------------------------------------------------------------------------
1 | using System.Reflection;
2 | using System.Runtime.InteropServices;
3 | using System.Windows;
4 |
5 | // 어셈블리에 대한 일반 정보는 다음 특성 집합을 통해
6 | // 제어됩니다. 어셈블리와 관련된 정보를 수정하려면
7 | // 이러한 특성 값을 변경하세요.
8 | [assembly: AssemblyTitle("DevFlow")]
9 | [assembly: AssemblyDescription("")]
10 | [assembly: AssemblyConfiguration("")]
11 | [assembly: AssemblyCompany("")]
12 | [assembly: AssemblyProduct("DevFlow")]
13 | [assembly: AssemblyCopyright("Copyright © 2021")]
14 | [assembly: AssemblyTrademark("")]
15 | [assembly: AssemblyCulture("")]
16 |
17 | // ComVisible을 false로 설정하면 이 어셈블리의 형식이 COM 구성 요소에
18 | // 표시되지 않습니다. COM에서 이 어셈블리의 형식에 액세스하려면
19 | // 해당 형식에 대해 ComVisible 특성을 true로 설정하세요.
20 | [assembly: ComVisible(false)]
21 |
22 | //지역화 가능 애플리케이션 빌드를 시작하려면 다음을 설정하세요.
23 | //.csproj 파일에서 내에 CultureYouAreCodingWith를
24 | //설정하십시오. 예를 들어 소스 파일에서 영어(미국)를
25 | //사용하는 경우 를 en-US로 설정합니다. 그런 다음 아래
26 | //NeutralResourceLanguage 특성의 주석 처리를 제거합니다. 아래 줄의 "en-US"를 업데이트하여
27 | //프로젝트 파일의 UICulture 설정과 일치시킵니다.
28 |
29 | //[assembly: NeutralResourcesLanguage("en-US", UltimateResourceFallbackLocation.Satellite)]
30 |
31 |
32 | [assembly: ThemeInfo(
33 | ResourceDictionaryLocation.None, //테마별 리소스 사전의 위치
34 | //(페이지 또는 응용 프로그램 리소스 사진에
35 | // 리소스가 없는 경우에 사용됨)
36 | ResourceDictionaryLocation.SourceAssembly //제네릭 리소스 사전의 위치
37 | //(페이지 또는 응용 프로그램 리소스 사진에
38 | // 리소스가 없는 경우에 사용됨)
39 | )]
40 |
41 |
42 | // 어셈블리의 버전 정보는 다음 네 가지 값으로 구성됩니다.
43 | //
44 | // 주 버전
45 | // 부 버전
46 | // 빌드 번호
47 | // 수정 버전
48 | //
49 | // 모든 값을 지정하거나 아래와 같이 '*'를 사용하여 빌드 번호 및 수정 번호를
50 | // 기본값으로 할 수 있습니다.
51 | // [assembly: AssemblyVersion("1.0.*")]
52 | [assembly: AssemblyVersion("1.0.0.0")]
53 | [assembly: AssemblyFileVersion("1.0.0.0")]
54 |
--------------------------------------------------------------------------------
/src/DevFlow/Properties/Resources.Designer.cs:
--------------------------------------------------------------------------------
1 | //------------------------------------------------------------------------------
2 | //
3 | // 이 코드는 도구를 사용하여 생성되었습니다.
4 | // 런타임 버전:4.0.30319.42000
5 | //
6 | // 파일 내용을 변경하면 잘못된 동작이 발생할 수 있으며, 코드를 다시 생성하면
7 | // 이러한 변경 내용이 손실됩니다.
8 | //
9 | //------------------------------------------------------------------------------
10 |
11 |
12 | namespace DevFlow.Properties
13 | {
14 | ///
15 | /// 지역화된 문자열 등을 찾기 위한 강력한 형식의 리소스 클래스입니다.
16 | ///
17 | // 이 클래스는 ResGen 또는 Visual Studio와 같은 도구를 통해 StronglyTypedResourceBuilder
18 | // 클래스에서 자동으로 생성되었습니다.
19 | // 멤버를 추가하거나 제거하려면 .ResX 파일을 편집한 다음 /str 옵션을 사용하여
20 | // ResGen을 다시 실행하거나 VS 프로젝트를 다시 빌드하십시오.
21 | [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0")]
22 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
23 | [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
24 | internal class Resources
25 | {
26 |
27 | private static global::System.Resources.ResourceManager resourceMan;
28 |
29 | private static global::System.Globalization.CultureInfo resourceCulture;
30 |
31 | [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
32 | internal Resources()
33 | {
34 | }
35 |
36 | ///
37 | /// 이 클래스에서 사용하는 캐시된 ResourceManager 인스턴스를 반환합니다.
38 | ///
39 | [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
40 | internal static global::System.Resources.ResourceManager ResourceManager
41 | {
42 | get
43 | {
44 | if ((resourceMan == null))
45 | {
46 | global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("DevFlow.Properties.Resources", typeof(Resources).Assembly);
47 | resourceMan = temp;
48 | }
49 | return resourceMan;
50 | }
51 | }
52 |
53 | ///
54 | /// 이 강력한 형식의 리소스 클래스를 사용하여 모든 리소스 조회에 대해 현재 스레드의 CurrentUICulture 속성을
55 | /// 재정의합니다.
56 | ///
57 | [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
58 | internal static global::System.Globalization.CultureInfo Culture
59 | {
60 | get
61 | {
62 | return resourceCulture;
63 | }
64 | set
65 | {
66 | resourceCulture = value;
67 | }
68 | }
69 | }
70 | }
71 |
--------------------------------------------------------------------------------
/src/DevFlow/Properties/Settings.Designer.cs:
--------------------------------------------------------------------------------
1 | //------------------------------------------------------------------------------
2 | //
3 | // This code was generated by a tool.
4 | // Runtime Version:4.0.30319.42000
5 | //
6 | // Changes to this file may cause incorrect behavior and will be lost if
7 | // the code is regenerated.
8 | //
9 | //------------------------------------------------------------------------------
10 |
11 |
12 | namespace DevFlow.Properties
13 | {
14 | [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
15 | [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "11.0.0.0")]
16 | internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase
17 | {
18 |
19 | private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings())));
20 |
21 | public static Settings Default
22 | {
23 | get
24 | {
25 | return defaultInstance;
26 | }
27 | }
28 | }
29 | }
30 |
--------------------------------------------------------------------------------
/src/DevFlow/Properties/Settings.settings:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
--------------------------------------------------------------------------------
/src/DevFlow/Reviews/DemoWindow.xaml:
--------------------------------------------------------------------------------
1 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
--------------------------------------------------------------------------------
/src/DevFlow/Reviews/DemoWindow.xaml.cs:
--------------------------------------------------------------------------------
1 | using DevFlow.Main.Views;
2 |
3 | namespace DevFlow.Designs
4 | {
5 | public partial class DemoWindow : MainWindow
6 | {
7 | #region Constructor
8 |
9 | public DemoWindow()
10 | {
11 | InitializeComponent();
12 | }
13 | #endregion
14 | }
15 | }
16 |
--------------------------------------------------------------------------------
/src/DevFlow/Startup.cs:
--------------------------------------------------------------------------------
1 | using System;
2 |
3 | namespace DevFlow
4 | {
5 | public class Startup
6 | {
7 | [STAThread]
8 | public static void Main(string[] args)
9 | {
10 | _ = new App().Run();
11 | }
12 | }
13 | }
14 |
--------------------------------------------------------------------------------
/src/DevFlow/code.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/JamesnetGroup/devflow/44f9cb30d433e117077e1bca3bc0fe713e008a4a/src/DevFlow/code.ico
--------------------------------------------------------------------------------
/src/DevFlow/dev1.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/JamesnetGroup/devflow/44f9cb30d433e117077e1bca3bc0fe713e008a4a/src/DevFlow/dev1.ico
--------------------------------------------------------------------------------
/src/DevFlow/dev2.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/JamesnetGroup/devflow/44f9cb30d433e117077e1bca3bc0fe713e008a4a/src/DevFlow/dev2.ico
--------------------------------------------------------------------------------
/src/DevFlow/icon.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/JamesnetGroup/devflow/44f9cb30d433e117077e1bca3bc0fe713e008a4a/src/DevFlow/icon.ico
--------------------------------------------------------------------------------
/src/DevFlow/idea.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/JamesnetGroup/devflow/44f9cb30d433e117077e1bca3bc0fe713e008a4a/src/DevFlow/idea.ico
--------------------------------------------------------------------------------
/src/DevFlow/packages.config:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
--------------------------------------------------------------------------------
/src/DevFlow/set.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/JamesnetGroup/devflow/44f9cb30d433e117077e1bca3bc0fe713e008a4a/src/DevFlow/set.ico
--------------------------------------------------------------------------------
/src/DevFlow/setting.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/JamesnetGroup/devflow/44f9cb30d433e117077e1bca3bc0fe713e008a4a/src/DevFlow/setting.ico
--------------------------------------------------------------------------------