├── .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 [![英文](https://img.shields.io/badge/docs-English-blue.svg)](README.md) [![中文](https://img.shields.io/badge/docs-中文-red.svg)](README.zh-CN.md) [![韩文](https://img.shields.io/badge/docs-한국어-green.svg)](README.ko.md) 2 | 3 | 用于高级学习和实验的模块化、小部件风格的 WPF 应用程序 4 | [![许可证: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT) 5 | [![.NET](https://img.shields.io/badge/.NET-8.0-blue.svg)](https://dotnet.microsoft.com/download) 6 | [![星标](https://img.shields.io/github/stars/jamesnet214/devflow.svg)](https://github.com/jamesnet214/devflow/stargazers) 7 | [![问题](https://img.shields.io/github/issues/jamesnet214/devflow.svg)](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 | --> 11 | 12 | 17 | 18 | 21 | 22 | 27 | 28 | 29 | 31 | 32 | 33 | 65 | 66 | 67 | 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 --------------------------------------------------------------------------------