Browse Source

fix: 로그인화면 교체 및 디자인 수정

master
seuuung 2 months ago
parent
commit
f7572eaa0b
  1. BIN
      .vs/marking_gui.slnx/FileContentIndex/39788850-5095-4727-824a-b7633641276a.vsidx
  2. BIN
      .vs/marking_gui.slnx/FileContentIndex/5aec86f5-6062-4241-89fe-a2d7cacc7094.vsidx
  3. BIN
      .vs/marking_gui.slnx/FileContentIndex/69f01546-7ea2-4b97-b377-8aef86bfa5e6.vsidx
  4. 0
      .vs/marking_gui.slnx/FileContentIndex/b5393d54-c101-4f5a-80aa-1b6a40dcea0c.vsidx
  5. BIN
      .vs/marking_gui.slnx/FileContentIndex/e9aaf3b7-f547-4846-9bb0-c8cac36ad7c4.vsidx
  6. BIN
      .vs/marking_gui.slnx/v18/.suo
  7. 50
      .vs/marking_gui.slnx/v18/DocumentLayout.backup.json
  8. 50
      .vs/marking_gui.slnx/v18/DocumentLayout.json
  9. BIN
      build_err.txt
  10. 1086
      build_summary.txt
  11. 50
      marking_gui/MainWindow.xaml
  12. 64
      marking_gui/MainWindow.xaml.cs
  13. 295
      marking_gui/Services/LoginServicesStub.cs
  14. 37
      marking_gui/StartupLoginWindow.xaml
  15. 364
      marking_gui/StartupLoginWindow.xaml.cs
  16. BIN
      marking_gui/bin/Debug/marking_gui.exe
  17. BIN
      marking_gui/bin/Debug/marking_gui.pdb
  18. 2
      marking_gui/marking_gui.csproj
  19. BIN
      marking_gui/obj/Debug/DesignTimeResolveAssemblyReferencesInput.cache
  20. BIN
      marking_gui/obj/Debug/MainWindow.baml
  21. 139
      marking_gui/obj/Debug/MainWindow.g.cs
  22. 114
      marking_gui/obj/Debug/MainWindow.g.i.cs
  23. BIN
      marking_gui/obj/Debug/StartupLoginWindow.baml
  24. 39
      marking_gui/obj/Debug/StartupLoginWindow.g.cs
  25. 39
      marking_gui/obj/Debug/StartupLoginWindow.g.i.cs
  26. 2
      marking_gui/obj/Debug/marking_gui.csproj.CoreCompileInputs.cache
  27. 38
      marking_gui/obj/Debug/marking_gui.csproj.FileListAbsolute.txt
  28. BIN
      marking_gui/obj/Debug/marking_gui.exe
  29. BIN
      marking_gui/obj/Debug/marking_gui.g.resources
  30. BIN
      marking_gui/obj/Debug/marking_gui.pdb
  31. 2
      marking_gui/obj/Debug/marking_gui_MarkupCompile.cache
  32. 1086
      msbuild.log
  33. 2
      program_flow.md

BIN
.vs/marking_gui.slnx/FileContentIndex/39788850-5095-4727-824a-b7633641276a.vsidx

Binary file not shown.

BIN
.vs/marking_gui.slnx/FileContentIndex/5aec86f5-6062-4241-89fe-a2d7cacc7094.vsidx

Binary file not shown.

BIN
.vs/marking_gui.slnx/FileContentIndex/69f01546-7ea2-4b97-b377-8aef86bfa5e6.vsidx

Binary file not shown.

0
.vs/marking_gui.slnx/FileContentIndex/4e3dbeba-e08b-43de-be8a-fe9195aea94a.vsidx → .vs/marking_gui.slnx/FileContentIndex/b5393d54-c101-4f5a-80aa-1b6a40dcea0c.vsidx

BIN
.vs/marking_gui.slnx/FileContentIndex/e9aaf3b7-f547-4846-9bb0-c8cac36ad7c4.vsidx

Binary file not shown.

BIN
.vs/marking_gui.slnx/v18/.suo

Binary file not shown.

50
.vs/marking_gui.slnx/v18/DocumentLayout.backup.json

@ -5,17 +5,6 @@
{
"AbsoluteMoniker": "D:0:0:{9E96D5BE-9375-4ED3-82DE-F200F83EBC2F}|marking_gui\\marking_gui.csproj|c:\\users\\computer1\\desktop\\mobi\\marking_gui\\marking_gui\\mainwindow.xaml||{F11ACC28-31D1-4C80-A34B-F4E09D3D753C}",
"RelativeMoniker": "D:0:0:{9E96D5BE-9375-4ED3-82DE-F200F83EBC2F}|marking_gui\\marking_gui.csproj|solutionrelative:marking_gui\\mainwindow.xaml||{F11ACC28-31D1-4C80-A34B-F4E09D3D753C}"
},
{
"AbsoluteMoniker": "D:0:0:{9E96D5BE-9375-4ED3-82DE-F200F83EBC2F}|marking_gui\\marking_gui.csproj|C:\\Users\\COMPUTER1\\Desktop\\mobi\\marking_gui\\marking_gui\\startuploginwindow.xaml||{F11ACC28-31D1-4C80-A34B-F4E09D3D753C}",
"RelativeMoniker": "D:0:0:{9E96D5BE-9375-4ED3-82DE-F200F83EBC2F}|marking_gui\\marking_gui.csproj|solutionrelative:marking_gui\\startuploginwindow.xaml||{F11ACC28-31D1-4C80-A34B-F4E09D3D753C}"
},
{
"AbsoluteMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|C:\\Users\\wjddn\\Desktop\\amosense\\AMO_Housing\\MainWindow.xaml.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
},
{
"AbsoluteMoniker": "D:0:0:{9E96D5BE-9375-4ED3-82DE-F200F83EBC2F}|marking_gui\\marking_gui.csproj|C:\\Users\\COMPUTER1\\Desktop\\mobi\\marking_gui\\marking_gui\\mainwindow.xaml.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
"RelativeMoniker": "D:0:0:{9E96D5BE-9375-4ED3-82DE-F200F83EBC2F}|marking_gui\\marking_gui.csproj|solutionrelative:marking_gui\\mainwindow.xaml.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
}
],
"DocumentGroupContainers": [
@ -25,31 +14,8 @@
"DocumentGroups": [
{
"DockedWidth": 200,
"SelectedChildIndex": 2,
"SelectedChildIndex": 0,
"Children": [
{
"$type": "Document",
"DocumentIndex": 1,
"Title": "StartupLoginWindow.xaml",
"DocumentMoniker": "C:\\Users\\COMPUTER1\\Desktop\\mobi\\marking_gui\\marking_gui\\StartupLoginWindow.xaml",
"RelativeDocumentMoniker": "marking_gui\\StartupLoginWindow.xaml",
"ToolTip": "C:\\Users\\COMPUTER1\\Desktop\\mobi\\marking_gui\\marking_gui\\StartupLoginWindow.xaml",
"RelativeToolTip": "marking_gui\\StartupLoginWindow.xaml",
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.003549|",
"WhenOpened": "2026-06-08T01:06:29.984Z"
},
{
"$type": "Document",
"DocumentIndex": 2,
"Title": "MainWindow.xaml.cs",
"DocumentMoniker": "C:\\Users\\wjddn\\Desktop\\amosense\\AMO_Housing\\MainWindow.xaml.cs",
"RelativeDocumentMoniker": "..\\..\\..\\..\\wjddn\\Desktop\\amosense\\AMO_Housing\\MainWindow.xaml.cs",
"ToolTip": "C:\\Users\\wjddn\\Desktop\\amosense\\AMO_Housing\\MainWindow.xaml.cs",
"RelativeToolTip": "..\\..\\..\\..\\wjddn\\Desktop\\amosense\\AMO_Housing\\MainWindow.xaml.cs",
"ViewState": "AgIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==",
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
"WhenOpened": "2026-06-08T00:52:55.21Z"
},
{
"$type": "Document",
"DocumentIndex": 0,
@ -59,20 +25,8 @@
"ToolTip": "C:\\Users\\COMPUTER1\\Desktop\\mobi\\marking_gui\\marking_gui\\MainWindow.xaml",
"RelativeToolTip": "marking_gui\\MainWindow.xaml",
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.003549|",
"WhenOpened": "2026-06-05T02:08:02.816Z",
"WhenOpened": "2026-06-16T05:11:43.746Z",
"EditorCaption": ""
},
{
"$type": "Document",
"DocumentIndex": 3,
"Title": "MainWindow.xaml.cs",
"DocumentMoniker": "C:\\Users\\COMPUTER1\\Desktop\\mobi\\marking_gui\\marking_gui\\MainWindow.xaml.cs",
"RelativeDocumentMoniker": "marking_gui\\MainWindow.xaml.cs",
"ToolTip": "C:\\Users\\COMPUTER1\\Desktop\\mobi\\marking_gui\\marking_gui\\MainWindow.xaml.cs",
"RelativeToolTip": "marking_gui\\MainWindow.xaml.cs",
"ViewState": "AgIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==",
"Icon": "00000000-0000-0000-0000-000000000000.000000|iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAADKSURBVDhP7ZMhDoNAEEX/VlStqMYwJ\u002BgFegguwB1AIsC1ZhWKE3AVkj3DojCEBIOumZqWLENoSVPZl6zYPz8/k5ldQHC\u002BWbbtyFLfjW1HDvOGbTuyMYaJiIui2AxUYd5wN92ljvB0RHe9KCLiKIqglEJZlkr6VvgdAAARMQAkScJpmm52MiNnQEQ8DMO\u002BEGPMqviag3\u002BkZ\u002BZt8Yn0HPzLN/wDfh2gtYZzbnOVzjkOgmChLd52XddcVRX6vvflGa01sixDHMef/8ReHgD\u002BXy4W5TMHAAAAAElFTkSuQmCC",
"WhenOpened": "2026-06-05T02:08:02.789Z"
}
]
}

50
.vs/marking_gui.slnx/v18/DocumentLayout.json

@ -5,17 +5,6 @@
{
"AbsoluteMoniker": "D:0:0:{9E96D5BE-9375-4ED3-82DE-F200F83EBC2F}|marking_gui\\marking_gui.csproj|c:\\users\\computer1\\desktop\\mobi\\marking_gui\\marking_gui\\mainwindow.xaml||{F11ACC28-31D1-4C80-A34B-F4E09D3D753C}",
"RelativeMoniker": "D:0:0:{9E96D5BE-9375-4ED3-82DE-F200F83EBC2F}|marking_gui\\marking_gui.csproj|solutionrelative:marking_gui\\mainwindow.xaml||{F11ACC28-31D1-4C80-A34B-F4E09D3D753C}"
},
{
"AbsoluteMoniker": "D:0:0:{9E96D5BE-9375-4ED3-82DE-F200F83EBC2F}|marking_gui\\marking_gui.csproj|C:\\Users\\COMPUTER1\\Desktop\\mobi\\marking_gui\\marking_gui\\startuploginwindow.xaml||{F11ACC28-31D1-4C80-A34B-F4E09D3D753C}",
"RelativeMoniker": "D:0:0:{9E96D5BE-9375-4ED3-82DE-F200F83EBC2F}|marking_gui\\marking_gui.csproj|solutionrelative:marking_gui\\startuploginwindow.xaml||{F11ACC28-31D1-4C80-A34B-F4E09D3D753C}"
},
{
"AbsoluteMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|C:\\Users\\wjddn\\Desktop\\amosense\\AMO_Housing\\MainWindow.xaml.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
},
{
"AbsoluteMoniker": "D:0:0:{9E96D5BE-9375-4ED3-82DE-F200F83EBC2F}|marking_gui\\marking_gui.csproj|C:\\Users\\COMPUTER1\\Desktop\\mobi\\marking_gui\\marking_gui\\mainwindow.xaml.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
"RelativeMoniker": "D:0:0:{9E96D5BE-9375-4ED3-82DE-F200F83EBC2F}|marking_gui\\marking_gui.csproj|solutionrelative:marking_gui\\mainwindow.xaml.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
}
],
"DocumentGroupContainers": [
@ -25,31 +14,8 @@
"DocumentGroups": [
{
"DockedWidth": 200,
"SelectedChildIndex": 2,
"SelectedChildIndex": 0,
"Children": [
{
"$type": "Document",
"DocumentIndex": 1,
"Title": "StartupLoginWindow.xaml",
"DocumentMoniker": "C:\\Users\\COMPUTER1\\Desktop\\mobi\\marking_gui\\marking_gui\\StartupLoginWindow.xaml",
"RelativeDocumentMoniker": "marking_gui\\StartupLoginWindow.xaml",
"ToolTip": "C:\\Users\\COMPUTER1\\Desktop\\mobi\\marking_gui\\marking_gui\\StartupLoginWindow.xaml",
"RelativeToolTip": "marking_gui\\StartupLoginWindow.xaml",
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.003549|",
"WhenOpened": "2026-06-08T01:06:29.984Z"
},
{
"$type": "Document",
"DocumentIndex": 2,
"Title": "MainWindow.xaml.cs",
"DocumentMoniker": "C:\\Users\\wjddn\\Desktop\\amosense\\AMO_Housing\\MainWindow.xaml.cs",
"RelativeDocumentMoniker": "..\\..\\..\\..\\wjddn\\Desktop\\amosense\\AMO_Housing\\MainWindow.xaml.cs",
"ToolTip": "C:\\Users\\wjddn\\Desktop\\amosense\\AMO_Housing\\MainWindow.xaml.cs",
"RelativeToolTip": "..\\..\\..\\..\\wjddn\\Desktop\\amosense\\AMO_Housing\\MainWindow.xaml.cs",
"ViewState": "AgIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==",
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
"WhenOpened": "2026-06-08T00:52:55.21Z"
},
{
"$type": "Document",
"DocumentIndex": 0,
@ -59,20 +25,8 @@
"ToolTip": "C:\\Users\\COMPUTER1\\Desktop\\mobi\\marking_gui\\marking_gui\\MainWindow.xaml",
"RelativeToolTip": "marking_gui\\MainWindow.xaml",
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.003549|",
"WhenOpened": "2026-06-05T02:08:02.816Z",
"WhenOpened": "2026-06-16T05:11:43.746Z",
"EditorCaption": ""
},
{
"$type": "Document",
"DocumentIndex": 3,
"Title": "MainWindow.xaml.cs",
"DocumentMoniker": "C:\\Users\\COMPUTER1\\Desktop\\mobi\\marking_gui\\marking_gui\\MainWindow.xaml.cs",
"RelativeDocumentMoniker": "marking_gui\\MainWindow.xaml.cs",
"ToolTip": "C:\\Users\\COMPUTER1\\Desktop\\mobi\\marking_gui\\marking_gui\\MainWindow.xaml.cs",
"RelativeToolTip": "marking_gui\\MainWindow.xaml.cs",
"ViewState": "AgIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==",
"Icon": "00000000-0000-0000-0000-000000000000.000000|iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAADKSURBVDhP7ZMhDoNAEEX/VlStqMYwJ\u002BgFegguwB1AIsC1ZhWKE3AVkj3DojCEBIOumZqWLENoSVPZl6zYPz8/k5ldQHC\u002BWbbtyFLfjW1HDvOGbTuyMYaJiIui2AxUYd5wN92ljvB0RHe9KCLiKIqglEJZlkr6VvgdAAARMQAkScJpmm52MiNnQEQ8DMO\u002BEGPMqviag3\u002BkZ\u002BZt8Yn0HPzLN/wDfh2gtYZzbnOVzjkOgmChLd52XddcVRX6vvflGa01sixDHMef/8ReHgD\u002BXy4W5TMHAAAAAElFTkSuQmCC",
"WhenOpened": "2026-06-05T02:08:02.789Z"
}
]
}

BIN
build_err.txt

Binary file not shown.

1086
build_summary.txt

File diff suppressed because it is too large

50
marking_gui/MainWindow.xaml

@ -6,7 +6,7 @@
xmlns:local="clr-namespace:marking_gui"
mc:Ignorable="d"
Title="양산형 테스트 기기 모니터링 시스템" Height="700" Width="900"
MinWidth="900" MinHeight="700" WindowState="Maximized"
MinWidth="900" MinHeight="700" WindowState="Maximized" WindowStyle="None"
WindowStartupLocation="CenterScreen" Background="#F3F4F6"
ContentRendered="Window_ContentRendered">
<Window.Resources>
@ -116,7 +116,7 @@
<Grid>
<Grid.RowDefinitions>
<!-- 상단 헤더 -->
<RowDefinition Height="70"/>
<RowDefinition Height="55"/>
<!-- 메인 콘텐츠 -->
<RowDefinition Height="*"/>
<!-- 하단 푸터 (스타트 버튼 배치) -->
@ -126,7 +126,7 @@
</Grid.RowDefinitions>
<!-- 1. 상단 헤더 영역 -->
<Border Grid.Row="0" Background="#1F2937" Padding="20,10">
<Border Grid.Row="0" Background="#111827" Padding="20,10" MouseLeftButtonDown="TopBar_MouseLeftButtonDown">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*"/>
@ -134,14 +134,46 @@
</Grid.ColumnDefinitions>
<StackPanel Orientation="Horizontal" VerticalAlignment="Center">
<TextBlock Text="Marking" Foreground="White" FontSize="20" FontWeight="Bold" VerticalAlignment="Center"/>
<TextBlock Text="v1.0.0 (Updated: 2026-06-05)" Foreground="#9CA3AF" FontSize="12" VerticalAlignment="Bottom" Margin="12,0,0,2"/>
<TextBlock x:Name="txtCurrentTime" Text="0000-00-00 00:00:00" Foreground="White" FontSize="15" FontWeight="Bold" VerticalAlignment="Bottom" Margin="25,0,0,2"/>
<TextBlock Text="상태: 대기 중" x:Name="txtSystemStatus" Foreground="#10B981" FontSize="15" FontWeight="Bold" VerticalAlignment="Bottom" Margin="25,0,0,2"/>
<TextBlock Text="v1.0.0 (Updated: 2026-06-05)" Foreground="#6B7280" FontSize="12" VerticalAlignment="Bottom" Margin="12,0,0,2"/>
<TextBlock x:Name="txtCurrentTime" Text="0000-00-00 00:00:00" Foreground="#E5E7EB" FontSize="15" FontWeight="Bold" VerticalAlignment="Bottom" Margin="25,0,0,2"/>
<TextBlock Text="상태: 대기 중" x:Name="txtSystemStatus" Foreground="#10B981" FontSize="15" FontWeight="Bold" VerticalAlignment="Bottom" Margin="25,0,0,2" Visibility="Collapsed"/>
</StackPanel>
<StackPanel Grid.Column="1" Orientation="Horizontal" VerticalAlignment="Center">
<TextBlock x:Name="txtOperatorInfo" Text="[작업자: ---]" Foreground="#9CA3AF" FontSize="13" FontWeight="Medium" VerticalAlignment="Center" Margin="0,0,15,0"/>
<TextBlock x:Name="txtModelLineInfo" Text="[모델: --- | 라인: ---]" Foreground="#9CA3AF" FontSize="13" FontWeight="Medium" VerticalAlignment="Center" Margin="0,0,20,0"/>
<Button x:Name="btnLogout" Content="로그아웃" Style="{StaticResource RedButtonStyle}" Click="btnLogout_Click" VerticalAlignment="Center" Width="70" Height="28"/>
<!-- 작업자 정보 배지 -->
<Border Background="#1F2937" CornerRadius="4" Padding="10,6" Margin="0,0,10,0">
<StackPanel Orientation="Horizontal">
<TextBlock Text="작업자" Foreground="#9CA3AF" FontSize="12" FontWeight="SemiBold" VerticalAlignment="Center" Margin="0,0,6,0"/>
<TextBlock x:Name="txtOperatorInfo" Text="---" Foreground="White" FontSize="13" FontWeight="Bold" VerticalAlignment="Center"/>
</StackPanel>
</Border>
<!-- 모델 정보 배지 -->
<Border Background="#1F2937" CornerRadius="4" Padding="10,6" Margin="0,0,10,0">
<StackPanel Orientation="Horizontal">
<TextBlock Text="모델" Foreground="#9CA3AF" FontSize="12" FontWeight="SemiBold" VerticalAlignment="Center" Margin="0,0,6,0"/>
<TextBlock x:Name="txtModelInfo" Text="---" Foreground="White" FontSize="13" FontWeight="Bold" VerticalAlignment="Center"/>
</StackPanel>
</Border>
<!-- 라인 정보 배지 -->
<Border Background="#1F2937" CornerRadius="4" Padding="10,6" Margin="0,0,15,0">
<StackPanel Orientation="Horizontal">
<TextBlock Text="라인" Foreground="#9CA3AF" FontSize="12" FontWeight="SemiBold" VerticalAlignment="Center" Margin="0,0,6,0"/>
<TextBlock x:Name="txtLineInfo" Text="---" Foreground="White" FontSize="13" FontWeight="Bold" VerticalAlignment="Center"/>
</StackPanel>
</Border>
<Button x:Name="btnLogout" Content="로그아웃" Style="{StaticResource RedButtonStyle}" Click="btnLogout_Click" VerticalAlignment="Center" Width="70" Height="28" Margin="0,0,20,0"/>
<!-- 시스템 창 제어 버튼 -->
<StackPanel Orientation="Horizontal" VerticalAlignment="Center">
<Button Width="36" Height="36" Background="Transparent" BorderThickness="0" Click="BtnMinimize_Click" ToolTip="최소화">
<TextBlock Text="0" FontFamily="Marlett" FontSize="16" Foreground="White" VerticalAlignment="Center" HorizontalAlignment="Center"/>
</Button>
<Button x:Name="btnMaximize" Width="36" Height="36" Background="Transparent" BorderThickness="0" Click="BtnMaximize_Click" ToolTip="창 모드">
<TextBlock x:Name="txtMaximizeIcon" Text="2" FontFamily="Marlett" FontSize="16" Foreground="White" VerticalAlignment="Center" HorizontalAlignment="Center"/>
</Button>
<Button Width="36" Height="36" Background="Transparent" BorderThickness="0" Click="BtnClose_Click" ToolTip="프로그램 종료">
<TextBlock Text="r" FontFamily="Marlett" FontSize="16" Foreground="#E74C3C" VerticalAlignment="Center" HorizontalAlignment="Center"/>
</Button>
</StackPanel>
</StackPanel>
</Grid>
</Border>

64
marking_gui/MainWindow.xaml.cs

@ -1,5 +1,6 @@
using System;
using System.Windows;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Threading;
using marking_gui.Models;
@ -39,13 +40,15 @@ namespace marking_gui
{
if (txtOperatorInfo != null)
{
txtOperatorInfo.Text = string.Format("[작업자: {0}]", _loginInfo.Operator);
txtOperatorInfo.Text = _loginInfo.Operator;
}
if (txtModelLineInfo != null)
if (txtModelInfo != null)
{
txtModelLineInfo.Text = string.Format("[모델: {0} | 라인: {1}]",
string.IsNullOrEmpty(_loginInfo.Model) ? "N/A" : _loginInfo.Model,
string.IsNullOrEmpty(_loginInfo.LineNo) ? "N/A" : _loginInfo.LineNo);
txtModelInfo.Text = string.IsNullOrEmpty(_loginInfo.Model) ? "N/A" : _loginInfo.Model;
}
if (txtLineInfo != null)
{
txtLineInfo.Text = string.IsNullOrEmpty(_loginInfo.LineNo) ? "N/A" : _loginInfo.LineNo;
}
}
@ -332,6 +335,12 @@ namespace marking_gui
// 로그아웃 버튼 클릭 핸들러
private void btnLogout_Click(object sender, RoutedEventArgs e)
{
MessageBoxResult confirmResult = MessageBox.Show(this, "로그아웃 하시겠습니까?", "로그아웃 확인", MessageBoxButton.YesNo, MessageBoxImage.Question);
if (confirmResult != MessageBoxResult.Yes)
{
return;
}
// 로그인 정보 클리어
_loginInfo = new Housing.Login.StartupLoginWindowResult { Operator = "---", Model = "---", LineNo = "---" };
DisplayLoginInfo();
@ -340,5 +349,50 @@ namespace marking_gui
// 로그인 화면 다시 팝업
ShowLoginPopup();
}
private void BtnMinimize_Click(object sender, RoutedEventArgs e)
{
this.WindowState = WindowState.Minimized;
}
private void BtnMaximize_Click(object sender, RoutedEventArgs e)
{
if (this.WindowState == WindowState.Maximized)
{
this.WindowState = WindowState.Normal;
txtMaximizeIcon.Text = "1"; // Restore icon
btnMaximize.ToolTip = "최대화";
}
else
{
this.WindowState = WindowState.Maximized;
txtMaximizeIcon.Text = "2"; // Maximize icon
btnMaximize.ToolTip = "창 모드";
}
}
private void BtnClose_Click(object sender, RoutedEventArgs e)
{
this.Close();
}
private void TopBar_MouseLeftButtonDown(object sender, MouseButtonEventArgs e)
{
if (e.ClickCount == 2)
{
BtnMaximize_Click(sender, e);
}
else
{
try
{
this.DragMove();
}
catch (InvalidOperationException)
{
// DragMove가 간혹 최대화 상태에서 예기치 않게 예외를 낼 수 있으므로 안전 조치
}
}
}
}
}

295
marking_gui/Services/LoginServicesStub.cs

@ -0,0 +1,295 @@
using System;
using System.Collections.Generic;
using System.IO;
using System.Text.RegularExpressions;
using System.Threading.Tasks;
namespace Housing.Services
{
// 1. DatabaseSettings
public class DatabaseSettings
{
public string ConnectionString { get; set; } = string.Empty;
public static DatabaseSettings Load(string path)
{
var settings = new DatabaseSettings();
try
{
if (File.Exists(path))
{
var lines = File.ReadAllLines(path);
foreach (var line in lines)
{
var trimmed = line.Trim();
if (trimmed.StartsWith("ConnectionString", StringComparison.OrdinalIgnoreCase))
{
var parts = trimmed.Split(new[] { '=' }, 2);
if (parts.Length == 2)
{
settings.ConnectionString = parts[1].Trim();
}
}
}
}
}
catch
{
// 로드 실패 시 무시
}
return settings;
}
}
// 2. LoginSettings
public class LoginSettings
{
public bool OfflinePreview { get; set; } = true; // 기본값은 오프라인 테스트 편의를 위해 true
public static LoginSettings Load(string path)
{
var settings = new LoginSettings();
try
{
if (File.Exists(path))
{
var lines = File.ReadAllLines(path);
foreach (var line in lines)
{
var trimmed = line.Trim();
if (trimmed.StartsWith("OfflinePreview", StringComparison.OrdinalIgnoreCase))
{
var parts = trimmed.Split(new[] { '=' }, 2);
if (parts.Length == 2)
{
if (bool.TryParse(parts[1].Trim(), out var val))
{
settings.OfflinePreview = val;
}
else if (int.TryParse(parts[1].Trim(), out var intVal))
{
settings.OfflinePreview = intVal != 0;
}
}
}
}
}
}
catch
{
// 로드 실패 시 무시
}
return settings;
}
}
// 3. LoginHistoryStore
public class LoginHistoryStore
{
private readonly string _filePath;
private readonly Dictionary<string, List<string>> _history = new Dictionary<string, List<string>>(StringComparer.OrdinalIgnoreCase);
private LoginHistoryStore(string filePath)
{
_filePath = filePath;
}
public static LoginHistoryStore Load(string path)
{
var store = new LoginHistoryStore(path);
store.LoadFromFile();
return store;
}
public List<string> GetValues(string fieldName)
{
if (_history.TryGetValue(fieldName, out var list))
{
return new List<string>(list);
}
return new List<string>();
}
public void Remember(string fieldName, string value)
{
if (string.IsNullOrWhiteSpace(value)) return;
value = value.Trim();
if (!_history.TryGetValue(fieldName, out var list))
{
list = new List<string>();
_history[fieldName] = list;
}
// 중복 제거 및 맨 앞으로 이동
list.RemoveAll(x => string.Equals(x, value, StringComparison.OrdinalIgnoreCase));
list.Insert(0, value);
// 최대 5개 이력 유지
if (list.Count > 5)
{
list.RemoveRange(5, list.Count - 5);
}
}
public bool Forget(string fieldName, string value)
{
if (string.IsNullOrWhiteSpace(value)) return false;
value = value.Trim();
if (_history.TryGetValue(fieldName, out var list))
{
bool removed = list.RemoveAll(x => string.Equals(x, value, StringComparison.OrdinalIgnoreCase)) > 0;
return removed;
}
return false;
}
public void Save()
{
try
{
var dir = Path.GetDirectoryName(_filePath);
if (!string.IsNullOrEmpty(dir) && !Directory.Exists(dir))
{
Directory.CreateDirectory(dir);
}
// 초간단 JSON 형식으로 직렬화 (의존성 최소화)
using (var sw = new StreamWriter(_filePath))
{
sw.WriteLine("{");
var keys = new List<string>(_history.Keys);
for (int i = 0; i < keys.Count; i++)
{
var key = keys[i];
var values = _history[key];
var arrayItems = new List<string>();
foreach (var val in values)
{
// 따옴표 escape
var escaped = val.Replace("\"", "\\\"");
arrayItems.Add($"\"{escaped}\"");
}
var line = $" \"{key}\": [{string.Join(", ", arrayItems)}]";
if (i < keys.Count - 1)
{
line += ",";
}
sw.WriteLine(line);
}
sw.WriteLine("}");
}
}
catch
{
// 저장 오류 시 무시
}
}
private void LoadFromFile()
{
try
{
if (!File.Exists(_filePath)) return;
var text = File.ReadAllText(_filePath);
// 정규식이나 아주 심플한 파싱으로 키와 배열 파싱
// 형식 예: "Maker": ["MOBI", "TEST"]
var matches = Regex.Matches(text, @"""([^""]+)""\s*:\s*\[([^\]]*)\]");
foreach (Match match in matches)
{
var key = match.Groups[1].Value;
var arrayContent = match.Groups[2].Value;
var valueMatches = Regex.Matches(arrayContent, @"""([^""]*)""");
var list = new List<string>();
foreach (Match valMatch in valueMatches)
{
list.Add(valMatch.Groups[1].Value);
}
_history[key] = list;
}
}
catch
{
// 로드 오류 시 무시
}
}
}
// 4. LoginAccountRepository
public class LoginAccountRepository
{
private readonly DatabaseSettings _dbSettings;
private readonly LoginSettings _loginSettings;
public LoginAccountRepository(DatabaseSettings dbSettings, LoginSettings loginSettings)
{
_dbSettings = dbSettings;
_loginSettings = loginSettings;
}
public async Task<bool> ExistsAsync(string operatorId, string password)
{
// 오프라인 모드인 경우 기본 성공
if (_loginSettings.OfflinePreview)
{
return true;
}
// DB 커넥션 스트링이 비어있으면 기본값 확인
if (string.IsNullOrWhiteSpace(_dbSettings.ConnectionString))
{
return IsDefaultAccount(operatorId, password);
}
try
{
// 실제 DB에서 계정을 조회해보기 위한 시도
using (var conn = new System.Data.SqlClient.SqlConnection(_dbSettings.ConnectionString))
{
await conn.OpenAsync();
// 우선 Users 또는 Accounts와 같이 로그인 테이블명이 뭔지 모를 수 있으므로
// 쿼리 실패 시 default 계정 검증으로 fallback 하도록 구성
const string query = "SELECT COUNT(*) FROM [Users] WHERE [OperatorId] = @Id AND [Password] = @Pw";
using (var cmd = new System.Data.SqlClient.SqlCommand(query, conn))
{
cmd.Parameters.AddWithValue("@Id", operatorId);
cmd.Parameters.AddWithValue("@Pw", password);
var count = (int)await cmd.ExecuteScalarAsync();
return count > 0;
}
}
}
catch
{
// DB 연결이나 쿼리 오류 발생 시, 테스트 편의를 위해 test/test 혹은 admin/admin 등 디폴트 계정을 제공
return IsDefaultAccount(operatorId, password);
}
}
private bool IsDefaultAccount(string operatorId, string password)
{
// 기본 개발/테스트용 계정 처리
if (string.Equals(operatorId, "test", StringComparison.OrdinalIgnoreCase) &&
string.Equals(password, "test", StringComparison.OrdinalIgnoreCase))
{
return true;
}
if (string.Equals(operatorId, "admin", StringComparison.OrdinalIgnoreCase) &&
string.Equals(password, "admin", StringComparison.OrdinalIgnoreCase))
{
return true;
}
if (string.Equals(operatorId, "su", StringComparison.OrdinalIgnoreCase) &&
string.Equals(password, "su", StringComparison.OrdinalIgnoreCase))
{
return true;
}
return false;
}
}
}

37
marking_gui/StartupLoginWindow.xaml

@ -221,7 +221,7 @@
</Grid.ColumnDefinitions>
<StackPanel>
<TextBlock Text="AMO MARKING SYSTEM"
<TextBlock Text="MARKING"
Foreground="{StaticResource HmiTextBrush}"
FontSize="27"
FontWeight="Bold"
@ -377,11 +377,11 @@
<RowDefinition Height="Auto"/>
</Grid.RowDefinitions>
<TextBlock Text="Color Code"
<TextBlock Text="Variant 1"
Style="{StaticResource FieldLabelStyle}"/>
<TextBox x:Name="ColorCodeTextBox"
<TextBox x:Name="Variant1TextBox"
Grid.Row="1"
Text="BK-01"
Text="V1-01"
Style="{StaticResource InputStyle}"/>
</Grid>
</Border>
@ -395,11 +395,11 @@
<RowDefinition Height="Auto"/>
</Grid.RowDefinitions>
<TextBlock Text="Line"
<TextBlock Text="Variant 2"
Style="{StaticResource FieldLabelStyle}"/>
<TextBox x:Name="LineNoTextBox"
<TextBox x:Name="Variant2TextBox"
Grid.Row="1"
Text="LINE-3"
Text="V2-01"
Style="{StaticResource InputStyle}"/>
</Grid>
</Border>
@ -459,6 +459,8 @@
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="10"/>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="10"/>
<ColumnDefinition Width="*"/>
</Grid.ColumnDefinitions>
<Border Grid.Column="0"
@ -469,6 +471,23 @@
<RowDefinition Height="Auto"/>
</Grid.RowDefinitions>
<TextBlock Text="Line"
Style="{StaticResource FieldLabelStyle}"/>
<TextBox x:Name="LineNoTextBox"
Grid.Row="1"
Text="LINE-3"
Style="{StaticResource InputStyle}"/>
</Grid>
</Border>
<Border Grid.Column="2"
Style="{StaticResource FieldTileStyle}">
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="Auto"/>
<RowDefinition Height="Auto"/>
</Grid.RowDefinitions>
<TextBlock Text="Lot No"
Style="{StaticResource FieldLabelStyle}"/>
<TextBox x:Name="LotNoTextBox"
@ -478,7 +497,7 @@
</Grid>
</Border>
<Border Grid.Column="2"
<Border Grid.Column="4"
Style="{StaticResource FieldTileStyle}">
<Grid>
<Grid.RowDefinitions>
@ -496,7 +515,7 @@
</Border>
</Grid>
<Button x:Name="LogInButton"
<Button x:Name="LoginButton"
Grid.Row="9"
Content="ACCESS / LOG IN"
Style="{StaticResource LoginButtonStyle}"

364
marking_gui/StartupLoginWindow.xaml.cs

@ -1,71 +1,335 @@
#nullable enable
using System;
using System.IO;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Controls.Primitives;
using System.Windows.Threading;
using Housing.Services;
namespace Housing.Login
{
/*
* Usage in App.xaml.cs or Program.cs:
*
* var loginWindow = new Housing.Login.StartupLoginWindow();
* if (loginWindow.ShowDialog() != true)
* {
* return;
* }
*
* StartupLoginWindowResult loginResult = loginWindow.Result;
*/
public sealed class StartupLoginWindowResult
{
public string Maker { get; set; } = string.Empty;
public string Model { get; set; } = string.Empty;
public string ColorCode { get; set; } = string.Empty;
public string Operator { get; set; } = string.Empty;
public string Password { get; set; } = string.Empty;
public string LineNo { get; set; } = string.Empty;
public string LotNo { get; set; } = string.Empty;
public string JigNo { get; set; } = string.Empty;
}
public partial class StartupLoginWindow : Window
{
public StartupLoginWindowResult Result { get; private set; } = new StartupLoginWindowResult();
public StartupLoginWindow()
{
InitializeComponent();
PasswordBox.Password = "test";
public sealed class StartupLoginWindowResult
{
public string Maker { get; set; } = string.Empty;
public string Model { get; set; } = string.Empty;
public string Variant1 { get; set; } = string.Empty;
public string Variant2 { get; set; } = string.Empty;
public string Operator { get; set; } = string.Empty;
public string Password { get; set; } = string.Empty;
public string LineNo { get; set; } = string.Empty;
public string LotNo { get; set; } = string.Empty;
public string JigNo { get; set; } = string.Empty;
}
public partial class StartupLoginWindow : Window
{
private const string OperatorHistoryFieldName = "Operator";
private const string SuppressedOperatorHistoryValue = "su";
private readonly LoginHistoryStore _loginHistoryStore;
private Popup? _openHistoryPopup;
public StartupLoginWindowResult Result { get; private set; } = new();
public StartupLoginWindow()
{
_loginHistoryStore = LoginHistoryStore.Load(GetLoginHistoryPath());
RemoveSuppressedOperatorHistory();
InitializeComponent();
AttachLoginHistoryMenus();
this.PasswordBox.GotKeyboardFocus += (_, _) => CloseHistoryPopup();
LoginButton.GotKeyboardFocus += (_, _) => CloseHistoryPopup();
OperatorTextBox.Focus();
}
private async void LogInButton_Click(object sender, RoutedEventArgs e)
{
CloseHistoryPopup();
if (!TryReadRequiredFields(out var loginResult))
{
return;
}
if (sender is Button button)
{
button.IsEnabled = false;
}
private void LogInButton_Click(object sender, RoutedEventArgs e)
try
{
if (string.IsNullOrWhiteSpace(OperatorTextBox.Text))
var loginSettings = LoginSettings.Load(GetDatabaseIniPath());
if (loginSettings.OfflinePreview)
{
MessageBox.Show(this, "Please enter Operator.", "Login", MessageBoxButton.OK, MessageBoxImage.Warning);
OperatorTextBox.Focus();
Result = loginResult;
SaveLoginHistory(loginResult);
DialogResult = true;
Close();
return;
}
if (string.IsNullOrWhiteSpace(PasswordBox.Password))
var repository = new LoginAccountRepository(
DatabaseSettings.Load(GetDatabaseIniPath()),
loginSettings);
if (!await repository.ExistsAsync(loginResult.Operator, loginResult.Password))
{
MessageBox.Show(this, "Please enter Password.", "Login", MessageBoxButton.OK, MessageBoxImage.Warning);
PasswordBox.Focus();
MessageBox.Show(this, "DB에 등록된 ID/PW가 아닙니다.", "Login", MessageBoxButton.OK, MessageBoxImage.Error);
this.PasswordBox.Clear();
this.PasswordBox.Focus();
return;
}
Result = new StartupLoginWindowResult
Result = loginResult;
SaveLoginHistory(loginResult);
DialogResult = true;
Close();
}
catch (Exception ex)
{
MessageBox.Show(this, $"로그인 DB 확인 실패: {ex.Message}", "Login", MessageBoxButton.OK, MessageBoxImage.Error);
OperatorTextBox.Focus();
OperatorTextBox.SelectAll();
}
finally
{
if (sender is Button loginButton)
{
loginButton.IsEnabled = true;
}
}
}
private bool TryReadRequiredFields(out StartupLoginWindowResult result)
{
result = new StartupLoginWindowResult();
if (!TryReadTextBox(MakerTextBox, "Maker", out var maker) ||
!TryReadTextBox(ModelTextBox, "Model", out var model) ||
!TryReadTextBox(Variant1TextBox, "Variant 1", out var variant1) ||
!TryReadTextBox(Variant2TextBox, "Variant 2", out var variant2) ||
!TryReadTextBox(OperatorTextBox, "ID", out var loginId) ||
!TryReadPasswordBox(this.PasswordBox, "PW", out var password) ||
!TryReadTextBox(LineNoTextBox, "Line", out var lineNo) ||
!TryReadTextBox(LotNoTextBox, "Lot No", out var lotNo) ||
!TryReadTextBox(JigNoTextBox, "Jig No", out var jigNo))
{
return false;
}
result = new StartupLoginWindowResult
{
Maker = maker,
Model = model,
Variant1 = variant1,
Variant2 = variant2,
Operator = loginId,
Password = password,
LineNo = lineNo,
LotNo = lotNo,
JigNo = jigNo
};
return true;
}
private void AttachLoginHistoryMenus()
{
AttachHistoryMenu(MakerTextBox, "Maker", ModelTextBox);
AttachHistoryMenu(ModelTextBox, "Model", Variant1TextBox);
AttachHistoryMenu(Variant1TextBox, "Variant1", Variant2TextBox);
AttachHistoryMenu(Variant2TextBox, "Variant2", OperatorTextBox);
AttachHistoryMenu(OperatorTextBox, OperatorHistoryFieldName, this.PasswordBox);
AttachHistoryMenu(LineNoTextBox, "LineNo", LotNoTextBox);
AttachHistoryMenu(LotNoTextBox, "LotNo", JigNoTextBox);
AttachHistoryMenu(JigNoTextBox, "JigNo", LoginButton);
}
private void AttachHistoryMenu(TextBox textBox, string fieldName, Control nextFocusControl)
{
textBox.GotKeyboardFocus += (_, _) => ShowHistoryMenu(textBox, fieldName, nextFocusControl);
textBox.PreviewMouseLeftButtonDown += (_, _) =>
{
if (textBox.IsKeyboardFocusWithin)
{
ShowHistoryMenu(textBox, fieldName, nextFocusControl);
}
};
}
private void ShowHistoryMenu(TextBox textBox, string fieldName, Control nextFocusControl)
{
var values = _loginHistoryStore.GetValues(fieldName);
if (values.Count == 0)
{
CloseHistoryPopup();
return;
}
CloseHistoryPopup();
var menuWidth = Math.Max(160, textBox.ActualWidth);
var stackPanel = new StackPanel();
var popup = new Popup
{
PlacementTarget = textBox,
Placement = PlacementMode.Bottom,
HorizontalOffset = 0,
StaysOpen = true,
AllowsTransparency = true,
Focusable = false
};
foreach (var value in values)
{
var item = new Button
{
Content = value,
MinWidth = menuWidth,
Padding = new Thickness(10, 6, 10, 6),
BorderThickness = new Thickness(0),
Background = textBox.Background,
Foreground = textBox.Foreground,
HorizontalContentAlignment = HorizontalAlignment.Left
};
item.Click += (_, _) =>
{
Maker = MakerTextBox.Text.Trim(),
Model = ModelTextBox.Text.Trim(),
ColorCode = ColorCodeTextBox.Text.Trim(),
Operator = OperatorTextBox.Text.Trim(),
Password = PasswordBox.Password,
LineNo = LineNoTextBox.Text.Trim(),
LotNo = LotNoTextBox.Text.Trim(),
JigNo = JigNoTextBox.Text.Trim()
textBox.Text = value;
textBox.CaretIndex = textBox.Text.Length;
CloseHistoryPopup();
FocusControl(nextFocusControl);
};
stackPanel.Children.Add(item);
}
DialogResult = true;
Close();
popup.Child = new Border
{
Width = menuWidth,
MaxHeight = 180,
Background = textBox.Background,
BorderBrush = textBox.BorderBrush,
BorderThickness = new Thickness(1),
Child = new ScrollViewer
{
MaxHeight = 180,
VerticalScrollBarVisibility = ScrollBarVisibility.Auto,
Content = stackPanel
}
};
_openHistoryPopup = popup;
popup.IsOpen = true;
}
private void CloseHistoryPopup()
{
if (_openHistoryPopup is not null)
{
_openHistoryPopup.IsOpen = false;
_openHistoryPopup = null;
}
}
private void FocusControl(Control control)
{
Dispatcher.BeginInvoke(new Action(() =>
{
control.Focus();
if (control is TextBox textBox)
{
textBox.CaretIndex = textBox.Text.Length;
}
else if (control is PasswordBox passwordBox)
{
passwordBox.Focus();
}
}), DispatcherPriority.Input);
}
private void SaveLoginHistory(StartupLoginWindowResult result)
{
_loginHistoryStore.Remember("Maker", result.Maker);
_loginHistoryStore.Remember("Model", result.Model);
_loginHistoryStore.Remember("Variant1", result.Variant1);
_loginHistoryStore.Remember("Variant2", result.Variant2);
RememberOperatorHistory(result.Operator);
_loginHistoryStore.Remember("LineNo", result.LineNo);
_loginHistoryStore.Remember("LotNo", result.LotNo);
_loginHistoryStore.Remember("JigNo", result.JigNo);
_loginHistoryStore.Save();
}
private void RememberOperatorHistory(string operatorId)
{
if (IsSuppressedOperatorHistoryValue(operatorId))
{
_loginHistoryStore.Forget(OperatorHistoryFieldName, operatorId);
return;
}
_loginHistoryStore.Remember(OperatorHistoryFieldName, operatorId);
}
private void RemoveSuppressedOperatorHistory()
{
try
{
if (_loginHistoryStore.Forget(OperatorHistoryFieldName, SuppressedOperatorHistoryValue))
{
_loginHistoryStore.Save();
}
}
catch
{
// Login history cleanup is optional and should not block the login window.
}
}
private static bool IsSuppressedOperatorHistoryValue(string value)
{
return string.Equals(value.Trim(), SuppressedOperatorHistoryValue, StringComparison.OrdinalIgnoreCase);
}
private bool TryReadTextBox(TextBox textBox, string fieldName, out string value)
{
value = textBox.Text.Trim();
if (!string.IsNullOrWhiteSpace(value))
{
return true;
}
MessageBox.Show(this, $"{fieldName}을(를) 입력하세요.", "Login", MessageBoxButton.OK, MessageBoxImage.Warning);
textBox.Focus();
textBox.SelectAll();
return false;
}
private bool TryReadPasswordBox(PasswordBox passwordBox, string fieldName, out string value)
{
value = passwordBox.Password;
if (!string.IsNullOrWhiteSpace(value))
{
return true;
}
MessageBox.Show(this, $"{fieldName}을(를) 입력하세요.", "Login", MessageBoxButton.OK, MessageBoxImage.Warning);
passwordBox.Focus();
passwordBox.SelectAll();
return false;
}
private static string GetDatabaseIniPath()
{
return Path.Combine(AppContext.BaseDirectory, "Database.ini");
}
private static string GetLoginHistoryPath()
{
return Path.Combine(
Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData),
"Housing",
"LoginHistory.json");
}
}
}

BIN
marking_gui/bin/Debug/marking_gui.exe

Binary file not shown.

BIN
marking_gui/bin/Debug/marking_gui.pdb

Binary file not shown.

2
marking_gui/marking_gui.csproj

@ -9,6 +9,7 @@
<RootNamespace>marking_gui</RootNamespace>
<AssemblyName>marking_gui</AssemblyName>
<TargetFrameworkVersion>v4.7.2</TargetFrameworkVersion>
<LangVersion>10.0</LangVersion>
<FileAlignment>512</FileAlignment>
<ProjectTypeGuids>{60dc8134-eba5-43b8-bcc9-bb4bc16c2548};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>
<WarningLevel>4</WarningLevel>
@ -89,6 +90,7 @@
<Compile Include="Services\MssqlDatabaseService.cs" />
<Compile Include="Services\MockMeasurer.cs" />
<Compile Include="Services\MemoryReaderService.cs" />
<Compile Include="Services\LoginServicesStub.cs" />
</ItemGroup>
<ItemGroup>
<Compile Include="Properties\AssemblyInfo.cs">

BIN
marking_gui/obj/Debug/DesignTimeResolveAssemblyReferencesInput.cache

Binary file not shown.

BIN
marking_gui/obj/Debug/MainWindow.baml

Binary file not shown.

139
marking_gui/obj/Debug/MainWindow.g.cs

@ -1,4 +1,4 @@
#pragma checksum "..\..\MainWindow.xaml" "{8829d00f-11b8-4213-878b-770e8597ac16}" "4CDD2CF11DE0113F519A2E056CC537A47D29160F4556FDA78FE0307C695D33F2"
#pragma checksum "..\..\MainWindow.xaml" "{8829d00f-11b8-4213-878b-770e8597ac16}" "78353F577CF95121F4374AAAC541156B6A45BBD586BC828F32989335C29F1F19"
//------------------------------------------------------------------------------
// <auto-generated>
// 이 코드는 도구를 사용하여 생성되었습니다.
@ -57,7 +57,7 @@ namespace marking_gui {
#line hidden
#line 142 "..\..\MainWindow.xaml"
#line 146 "..\..\MainWindow.xaml"
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
internal System.Windows.Controls.TextBlock txtOperatorInfo;
@ -65,15 +65,23 @@ namespace marking_gui {
#line hidden
#line 143 "..\..\MainWindow.xaml"
#line 153 "..\..\MainWindow.xaml"
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
internal System.Windows.Controls.TextBlock txtModelLineInfo;
internal System.Windows.Controls.TextBlock txtModelInfo;
#line default
#line hidden
#line 144 "..\..\MainWindow.xaml"
#line 160 "..\..\MainWindow.xaml"
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
internal System.Windows.Controls.TextBlock txtLineInfo;
#line default
#line hidden
#line 163 "..\..\MainWindow.xaml"
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
internal System.Windows.Controls.Button btnLogout;
@ -81,7 +89,23 @@ namespace marking_gui {
#line hidden
#line 169 "..\..\MainWindow.xaml"
#line 170 "..\..\MainWindow.xaml"
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
internal System.Windows.Controls.Button btnMaximize;
#line default
#line hidden
#line 171 "..\..\MainWindow.xaml"
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
internal System.Windows.Controls.TextBlock txtMaximizeIcon;
#line default
#line hidden
#line 201 "..\..\MainWindow.xaml"
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
internal System.Windows.Controls.TextBox txtSerial;
@ -89,7 +113,7 @@ namespace marking_gui {
#line hidden
#line 200 "..\..\MainWindow.xaml"
#line 232 "..\..\MainWindow.xaml"
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
internal System.Windows.Controls.TextBlock txtPrevHousing;
@ -97,7 +121,7 @@ namespace marking_gui {
#line hidden
#line 211 "..\..\MainWindow.xaml"
#line 243 "..\..\MainWindow.xaml"
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
internal System.Windows.Controls.TextBlock txtPrevCal;
@ -105,7 +129,7 @@ namespace marking_gui {
#line hidden
#line 222 "..\..\MainWindow.xaml"
#line 254 "..\..\MainWindow.xaml"
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
internal System.Windows.Controls.TextBlock txtPrevEol;
@ -113,7 +137,7 @@ namespace marking_gui {
#line hidden
#line 256 "..\..\MainWindow.xaml"
#line 288 "..\..\MainWindow.xaml"
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
internal System.Windows.Controls.TextBlock txtVoltage;
@ -121,7 +145,7 @@ namespace marking_gui {
#line hidden
#line 260 "..\..\MainWindow.xaml"
#line 292 "..\..\MainWindow.xaml"
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
internal System.Windows.Controls.TextBlock txtVoltageRangeGuide;
@ -129,7 +153,7 @@ namespace marking_gui {
#line hidden
#line 275 "..\..\MainWindow.xaml"
#line 307 "..\..\MainWindow.xaml"
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
internal System.Windows.Controls.TextBlock txtCurrent;
@ -137,7 +161,7 @@ namespace marking_gui {
#line hidden
#line 279 "..\..\MainWindow.xaml"
#line 311 "..\..\MainWindow.xaml"
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
internal System.Windows.Controls.TextBlock txtCurrentRangeGuide;
@ -145,7 +169,7 @@ namespace marking_gui {
#line hidden
#line 285 "..\..\MainWindow.xaml"
#line 317 "..\..\MainWindow.xaml"
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
internal System.Windows.Controls.Border borderFinalResult;
@ -153,7 +177,7 @@ namespace marking_gui {
#line hidden
#line 294 "..\..\MainWindow.xaml"
#line 326 "..\..\MainWindow.xaml"
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
internal System.Windows.Controls.TextBlock txtFinalResult;
@ -161,7 +185,7 @@ namespace marking_gui {
#line hidden
#line 295 "..\..\MainWindow.xaml"
#line 327 "..\..\MainWindow.xaml"
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
internal System.Windows.Controls.TextBlock txtFinalSerial;
@ -169,7 +193,7 @@ namespace marking_gui {
#line hidden
#line 305 "..\..\MainWindow.xaml"
#line 337 "..\..\MainWindow.xaml"
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
internal System.Windows.Controls.Button btnStart;
@ -177,7 +201,7 @@ namespace marking_gui {
#line hidden
#line 314 "..\..\MainWindow.xaml"
#line 346 "..\..\MainWindow.xaml"
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
internal System.Windows.Controls.Button btnOpenSettings;
@ -223,72 +247,111 @@ namespace marking_gui {
#line hidden
return;
case 2:
this.txtCurrentTime = ((System.Windows.Controls.TextBlock)(target));
#line 129 "..\..\MainWindow.xaml"
((System.Windows.Controls.Border)(target)).MouseLeftButtonDown += new System.Windows.Input.MouseButtonEventHandler(this.TopBar_MouseLeftButtonDown);
#line default
#line hidden
return;
case 3:
this.txtSystemStatus = ((System.Windows.Controls.TextBlock)(target));
this.txtCurrentTime = ((System.Windows.Controls.TextBlock)(target));
return;
case 4:
this.txtOperatorInfo = ((System.Windows.Controls.TextBlock)(target));
this.txtSystemStatus = ((System.Windows.Controls.TextBlock)(target));
return;
case 5:
this.txtModelLineInfo = ((System.Windows.Controls.TextBlock)(target));
this.txtOperatorInfo = ((System.Windows.Controls.TextBlock)(target));
return;
case 6:
this.txtModelInfo = ((System.Windows.Controls.TextBlock)(target));
return;
case 7:
this.txtLineInfo = ((System.Windows.Controls.TextBlock)(target));
return;
case 8:
this.btnLogout = ((System.Windows.Controls.Button)(target));
#line 144 "..\..\MainWindow.xaml"
#line 163 "..\..\MainWindow.xaml"
this.btnLogout.Click += new System.Windows.RoutedEventHandler(this.btnLogout_Click);
#line default
#line hidden
return;
case 7:
case 9:
#line 167 "..\..\MainWindow.xaml"
((System.Windows.Controls.Button)(target)).Click += new System.Windows.RoutedEventHandler(this.BtnMinimize_Click);
#line default
#line hidden
return;
case 10:
this.btnMaximize = ((System.Windows.Controls.Button)(target));
#line 170 "..\..\MainWindow.xaml"
this.btnMaximize.Click += new System.Windows.RoutedEventHandler(this.BtnMaximize_Click);
#line default
#line hidden
return;
case 11:
this.txtMaximizeIcon = ((System.Windows.Controls.TextBlock)(target));
return;
case 12:
#line 173 "..\..\MainWindow.xaml"
((System.Windows.Controls.Button)(target)).Click += new System.Windows.RoutedEventHandler(this.BtnClose_Click);
#line default
#line hidden
return;
case 13:
this.txtSerial = ((System.Windows.Controls.TextBox)(target));
return;
case 8:
case 14:
this.txtPrevHousing = ((System.Windows.Controls.TextBlock)(target));
return;
case 9:
case 15:
this.txtPrevCal = ((System.Windows.Controls.TextBlock)(target));
return;
case 10:
case 16:
this.txtPrevEol = ((System.Windows.Controls.TextBlock)(target));
return;
case 11:
case 17:
this.txtVoltage = ((System.Windows.Controls.TextBlock)(target));
return;
case 12:
case 18:
this.txtVoltageRangeGuide = ((System.Windows.Controls.TextBlock)(target));
return;
case 13:
case 19:
this.txtCurrent = ((System.Windows.Controls.TextBlock)(target));
return;
case 14:
case 20:
this.txtCurrentRangeGuide = ((System.Windows.Controls.TextBlock)(target));
return;
case 15:
case 21:
this.borderFinalResult = ((System.Windows.Controls.Border)(target));
return;
case 16:
case 22:
this.txtFinalResult = ((System.Windows.Controls.TextBlock)(target));
return;
case 17:
case 23:
this.txtFinalSerial = ((System.Windows.Controls.TextBlock)(target));
return;
case 18:
case 24:
this.btnStart = ((System.Windows.Controls.Button)(target));
#line 306 "..\..\MainWindow.xaml"
#line 338 "..\..\MainWindow.xaml"
this.btnStart.Click += new System.Windows.RoutedEventHandler(this.btnStart_Click);
#line default
#line hidden
return;
case 19:
case 25:
this.btnOpenSettings = ((System.Windows.Controls.Button)(target));
#line 315 "..\..\MainWindow.xaml"
#line 347 "..\..\MainWindow.xaml"
this.btnOpenSettings.Click += new System.Windows.RoutedEventHandler(this.btnOpenSettings_Click);
#line default

114
marking_gui/obj/Debug/MainWindow.g.i.cs

@ -1,4 +1,4 @@
#pragma checksum "..\..\MainWindow.xaml" "{8829d00f-11b8-4213-878b-770e8597ac16}" "8EE9B0D077C65F0A6ECE7B0CF99EADE8D3584BEB5C5ACE53A6444D7C659E9A91"
#pragma checksum "..\..\MainWindow.xaml" "{8829d00f-11b8-4213-878b-770e8597ac16}" "60B18A2C8EC6850BAA7CCDBE87ACA2C0E97BE83EC5737A82EA9755C4685A0C2C"
//------------------------------------------------------------------------------
// <auto-generated>
// 이 코드는 도구를 사용하여 생성되었습니다.
@ -41,47 +41,63 @@ namespace marking_gui {
public partial class MainWindow : System.Windows.Window, System.Windows.Markup.IComponentConnector {
#line 105 "..\..\MainWindow.xaml"
#line 138 "..\..\MainWindow.xaml"
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
internal System.Windows.Controls.TextBlock txtLoginInfo;
internal System.Windows.Controls.TextBlock txtCurrentTime;
#line default
#line hidden
#line 108 "..\..\MainWindow.xaml"
#line 139 "..\..\MainWindow.xaml"
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
internal System.Windows.Controls.TextBlock txtCurrentTime;
internal System.Windows.Controls.TextBlock txtSystemStatus;
#line default
#line hidden
#line 109 "..\..\MainWindow.xaml"
#line 146 "..\..\MainWindow.xaml"
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
internal System.Windows.Controls.TextBlock txtSystemStatus;
internal System.Windows.Controls.TextBlock txtOperatorInfo;
#line default
#line hidden
#line 139 "..\..\MainWindow.xaml"
#line 153 "..\..\MainWindow.xaml"
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
internal System.Windows.Controls.TextBox txtSerial;
internal System.Windows.Controls.TextBlock txtModelInfo;
#line default
#line hidden
#line 141 "..\..\MainWindow.xaml"
#line 160 "..\..\MainWindow.xaml"
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
internal System.Windows.Controls.Button btnSearchSerial;
internal System.Windows.Controls.TextBlock txtLineInfo;
#line default
#line hidden
#line 172 "..\..\MainWindow.xaml"
#line 163 "..\..\MainWindow.xaml"
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
internal System.Windows.Controls.Button btnLogout;
#line default
#line hidden
#line 188 "..\..\MainWindow.xaml"
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
internal System.Windows.Controls.TextBox txtSerial;
#line default
#line hidden
#line 219 "..\..\MainWindow.xaml"
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
internal System.Windows.Controls.TextBlock txtPrevHousing;
@ -89,7 +105,7 @@ namespace marking_gui {
#line hidden
#line 183 "..\..\MainWindow.xaml"
#line 230 "..\..\MainWindow.xaml"
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
internal System.Windows.Controls.TextBlock txtPrevCal;
@ -97,7 +113,7 @@ namespace marking_gui {
#line hidden
#line 194 "..\..\MainWindow.xaml"
#line 241 "..\..\MainWindow.xaml"
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
internal System.Windows.Controls.TextBlock txtPrevEol;
@ -105,7 +121,7 @@ namespace marking_gui {
#line hidden
#line 228 "..\..\MainWindow.xaml"
#line 275 "..\..\MainWindow.xaml"
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
internal System.Windows.Controls.TextBlock txtVoltage;
@ -113,7 +129,7 @@ namespace marking_gui {
#line hidden
#line 232 "..\..\MainWindow.xaml"
#line 279 "..\..\MainWindow.xaml"
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
internal System.Windows.Controls.TextBlock txtVoltageRangeGuide;
@ -121,7 +137,7 @@ namespace marking_gui {
#line hidden
#line 247 "..\..\MainWindow.xaml"
#line 294 "..\..\MainWindow.xaml"
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
internal System.Windows.Controls.TextBlock txtCurrent;
@ -129,7 +145,7 @@ namespace marking_gui {
#line hidden
#line 251 "..\..\MainWindow.xaml"
#line 298 "..\..\MainWindow.xaml"
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
internal System.Windows.Controls.TextBlock txtCurrentRangeGuide;
@ -137,7 +153,7 @@ namespace marking_gui {
#line hidden
#line 257 "..\..\MainWindow.xaml"
#line 304 "..\..\MainWindow.xaml"
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
internal System.Windows.Controls.Border borderFinalResult;
@ -145,7 +161,7 @@ namespace marking_gui {
#line hidden
#line 266 "..\..\MainWindow.xaml"
#line 313 "..\..\MainWindow.xaml"
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
internal System.Windows.Controls.TextBlock txtFinalResult;
@ -153,7 +169,7 @@ namespace marking_gui {
#line hidden
#line 267 "..\..\MainWindow.xaml"
#line 314 "..\..\MainWindow.xaml"
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
internal System.Windows.Controls.TextBlock txtFinalSerial;
@ -161,7 +177,7 @@ namespace marking_gui {
#line hidden
#line 277 "..\..\MainWindow.xaml"
#line 324 "..\..\MainWindow.xaml"
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
internal System.Windows.Controls.Button btnStart;
@ -169,7 +185,7 @@ namespace marking_gui {
#line hidden
#line 286 "..\..\MainWindow.xaml"
#line 333 "..\..\MainWindow.xaml"
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
internal System.Windows.Controls.Button btnOpenSettings;
@ -207,7 +223,12 @@ namespace marking_gui {
switch (connectionId)
{
case 1:
this.txtLoginInfo = ((System.Windows.Controls.TextBlock)(target));
#line 11 "..\..\MainWindow.xaml"
((marking_gui.MainWindow)(target)).ContentRendered += new System.EventHandler(this.Window_ContentRendered);
#line default
#line hidden
return;
case 2:
this.txtCurrentTime = ((System.Windows.Controls.TextBlock)(target));
@ -216,60 +237,69 @@ namespace marking_gui {
this.txtSystemStatus = ((System.Windows.Controls.TextBlock)(target));
return;
case 4:
this.txtSerial = ((System.Windows.Controls.TextBox)(target));
this.txtOperatorInfo = ((System.Windows.Controls.TextBlock)(target));
return;
case 5:
this.btnSearchSerial = ((System.Windows.Controls.Button)(target));
this.txtModelInfo = ((System.Windows.Controls.TextBlock)(target));
return;
case 6:
this.txtLineInfo = ((System.Windows.Controls.TextBlock)(target));
return;
case 7:
this.btnLogout = ((System.Windows.Controls.Button)(target));
#line 141 "..\..\MainWindow.xaml"
this.btnSearchSerial.Click += new System.Windows.RoutedEventHandler(this.btnSearchSerial_Click);
#line 163 "..\..\MainWindow.xaml"
this.btnLogout.Click += new System.Windows.RoutedEventHandler(this.btnLogout_Click);
#line default
#line hidden
return;
case 6:
case 8:
this.txtSerial = ((System.Windows.Controls.TextBox)(target));
return;
case 9:
this.txtPrevHousing = ((System.Windows.Controls.TextBlock)(target));
return;
case 7:
case 10:
this.txtPrevCal = ((System.Windows.Controls.TextBlock)(target));
return;
case 8:
case 11:
this.txtPrevEol = ((System.Windows.Controls.TextBlock)(target));
return;
case 9:
case 12:
this.txtVoltage = ((System.Windows.Controls.TextBlock)(target));
return;
case 10:
case 13:
this.txtVoltageRangeGuide = ((System.Windows.Controls.TextBlock)(target));
return;
case 11:
case 14:
this.txtCurrent = ((System.Windows.Controls.TextBlock)(target));
return;
case 12:
case 15:
this.txtCurrentRangeGuide = ((System.Windows.Controls.TextBlock)(target));
return;
case 13:
case 16:
this.borderFinalResult = ((System.Windows.Controls.Border)(target));
return;
case 14:
case 17:
this.txtFinalResult = ((System.Windows.Controls.TextBlock)(target));
return;
case 15:
case 18:
this.txtFinalSerial = ((System.Windows.Controls.TextBlock)(target));
return;
case 16:
case 19:
this.btnStart = ((System.Windows.Controls.Button)(target));
#line 278 "..\..\MainWindow.xaml"
#line 325 "..\..\MainWindow.xaml"
this.btnStart.Click += new System.Windows.RoutedEventHandler(this.btnStart_Click);
#line default
#line hidden
return;
case 17:
case 20:
this.btnOpenSettings = ((System.Windows.Controls.Button)(target));
#line 287 "..\..\MainWindow.xaml"
#line 334 "..\..\MainWindow.xaml"
this.btnOpenSettings.Click += new System.Windows.RoutedEventHandler(this.btnOpenSettings_Click);
#line default

BIN
marking_gui/obj/Debug/StartupLoginWindow.baml

Binary file not shown.

39
marking_gui/obj/Debug/StartupLoginWindow.g.cs

@ -1,4 +1,4 @@
#pragma checksum "..\..\StartupLoginWindow.xaml" "{8829d00f-11b8-4213-878b-770e8597ac16}" "79E8A6E048755DAD2C14DA7C41DFC6A5FC9DE46DE190A1192894F5DCFCB3E54D"
#pragma checksum "..\..\StartupLoginWindow.xaml" "{8829d00f-11b8-4213-878b-770e8597ac16}" "722E0887EE8192805D77793F6780CDB03B22E7B72F70E2D394ECFCEBCA0B9C94"
//------------------------------------------------------------------------------
// <auto-generated>
// 이 코드는 도구를 사용하여 생성되었습니다.
@ -58,7 +58,7 @@ namespace Housing.Login {
#line 382 "..\..\StartupLoginWindow.xaml"
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
internal System.Windows.Controls.TextBox ColorCodeTextBox;
internal System.Windows.Controls.TextBox Variant1TextBox;
#line default
#line hidden
@ -66,7 +66,7 @@ namespace Housing.Login {
#line 400 "..\..\StartupLoginWindow.xaml"
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
internal System.Windows.Controls.TextBox LineNoTextBox;
internal System.Windows.Controls.TextBox Variant2TextBox;
#line default
#line hidden
@ -88,7 +88,15 @@ namespace Housing.Login {
#line hidden
#line 474 "..\..\StartupLoginWindow.xaml"
#line 476 "..\..\StartupLoginWindow.xaml"
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
internal System.Windows.Controls.TextBox LineNoTextBox;
#line default
#line hidden
#line 493 "..\..\StartupLoginWindow.xaml"
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
internal System.Windows.Controls.TextBox LotNoTextBox;
@ -96,7 +104,7 @@ namespace Housing.Login {
#line hidden
#line 491 "..\..\StartupLoginWindow.xaml"
#line 510 "..\..\StartupLoginWindow.xaml"
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
internal System.Windows.Controls.TextBox JigNoTextBox;
@ -104,9 +112,9 @@ namespace Housing.Login {
#line hidden
#line 499 "..\..\StartupLoginWindow.xaml"
#line 518 "..\..\StartupLoginWindow.xaml"
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
internal System.Windows.Controls.Button LogInButton;
internal System.Windows.Controls.Button LoginButton;
#line default
#line hidden
@ -148,10 +156,10 @@ namespace Housing.Login {
this.ModelTextBox = ((System.Windows.Controls.TextBox)(target));
return;
case 3:
this.ColorCodeTextBox = ((System.Windows.Controls.TextBox)(target));
this.Variant1TextBox = ((System.Windows.Controls.TextBox)(target));
return;
case 4:
this.LineNoTextBox = ((System.Windows.Controls.TextBox)(target));
this.Variant2TextBox = ((System.Windows.Controls.TextBox)(target));
return;
case 5:
this.OperatorTextBox = ((System.Windows.Controls.TextBox)(target));
@ -160,16 +168,19 @@ namespace Housing.Login {
this.PasswordBox = ((System.Windows.Controls.PasswordBox)(target));
return;
case 7:
this.LotNoTextBox = ((System.Windows.Controls.TextBox)(target));
this.LineNoTextBox = ((System.Windows.Controls.TextBox)(target));
return;
case 8:
this.JigNoTextBox = ((System.Windows.Controls.TextBox)(target));
this.LotNoTextBox = ((System.Windows.Controls.TextBox)(target));
return;
case 9:
this.LogInButton = ((System.Windows.Controls.Button)(target));
this.JigNoTextBox = ((System.Windows.Controls.TextBox)(target));
return;
case 10:
this.LoginButton = ((System.Windows.Controls.Button)(target));
#line 503 "..\..\StartupLoginWindow.xaml"
this.LogInButton.Click += new System.Windows.RoutedEventHandler(this.LogInButton_Click);
#line 522 "..\..\StartupLoginWindow.xaml"
this.LoginButton.Click += new System.Windows.RoutedEventHandler(this.LogInButton_Click);
#line default
#line hidden

39
marking_gui/obj/Debug/StartupLoginWindow.g.i.cs

@ -1,4 +1,4 @@
#pragma checksum "..\..\StartupLoginWindow.xaml" "{8829d00f-11b8-4213-878b-770e8597ac16}" "79E8A6E048755DAD2C14DA7C41DFC6A5FC9DE46DE190A1192894F5DCFCB3E54D"
#pragma checksum "..\..\StartupLoginWindow.xaml" "{8829d00f-11b8-4213-878b-770e8597ac16}" "722E0887EE8192805D77793F6780CDB03B22E7B72F70E2D394ECFCEBCA0B9C94"
//------------------------------------------------------------------------------
// <auto-generated>
// 이 코드는 도구를 사용하여 생성되었습니다.
@ -58,7 +58,7 @@ namespace Housing.Login {
#line 382 "..\..\StartupLoginWindow.xaml"
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
internal System.Windows.Controls.TextBox ColorCodeTextBox;
internal System.Windows.Controls.TextBox Variant1TextBox;
#line default
#line hidden
@ -66,7 +66,7 @@ namespace Housing.Login {
#line 400 "..\..\StartupLoginWindow.xaml"
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
internal System.Windows.Controls.TextBox LineNoTextBox;
internal System.Windows.Controls.TextBox Variant2TextBox;
#line default
#line hidden
@ -88,7 +88,15 @@ namespace Housing.Login {
#line hidden
#line 474 "..\..\StartupLoginWindow.xaml"
#line 476 "..\..\StartupLoginWindow.xaml"
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
internal System.Windows.Controls.TextBox LineNoTextBox;
#line default
#line hidden
#line 493 "..\..\StartupLoginWindow.xaml"
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
internal System.Windows.Controls.TextBox LotNoTextBox;
@ -96,7 +104,7 @@ namespace Housing.Login {
#line hidden
#line 491 "..\..\StartupLoginWindow.xaml"
#line 510 "..\..\StartupLoginWindow.xaml"
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
internal System.Windows.Controls.TextBox JigNoTextBox;
@ -104,9 +112,9 @@ namespace Housing.Login {
#line hidden
#line 499 "..\..\StartupLoginWindow.xaml"
#line 518 "..\..\StartupLoginWindow.xaml"
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
internal System.Windows.Controls.Button LogInButton;
internal System.Windows.Controls.Button LoginButton;
#line default
#line hidden
@ -148,10 +156,10 @@ namespace Housing.Login {
this.ModelTextBox = ((System.Windows.Controls.TextBox)(target));
return;
case 3:
this.ColorCodeTextBox = ((System.Windows.Controls.TextBox)(target));
this.Variant1TextBox = ((System.Windows.Controls.TextBox)(target));
return;
case 4:
this.LineNoTextBox = ((System.Windows.Controls.TextBox)(target));
this.Variant2TextBox = ((System.Windows.Controls.TextBox)(target));
return;
case 5:
this.OperatorTextBox = ((System.Windows.Controls.TextBox)(target));
@ -160,16 +168,19 @@ namespace Housing.Login {
this.PasswordBox = ((System.Windows.Controls.PasswordBox)(target));
return;
case 7:
this.LotNoTextBox = ((System.Windows.Controls.TextBox)(target));
this.LineNoTextBox = ((System.Windows.Controls.TextBox)(target));
return;
case 8:
this.JigNoTextBox = ((System.Windows.Controls.TextBox)(target));
this.LotNoTextBox = ((System.Windows.Controls.TextBox)(target));
return;
case 9:
this.LogInButton = ((System.Windows.Controls.Button)(target));
this.JigNoTextBox = ((System.Windows.Controls.TextBox)(target));
return;
case 10:
this.LoginButton = ((System.Windows.Controls.Button)(target));
#line 503 "..\..\StartupLoginWindow.xaml"
this.LogInButton.Click += new System.Windows.RoutedEventHandler(this.LogInButton_Click);
#line 522 "..\..\StartupLoginWindow.xaml"
this.LoginButton.Click += new System.Windows.RoutedEventHandler(this.LogInButton_Click);
#line default
#line hidden

2
marking_gui/obj/Debug/marking_gui.csproj.CoreCompileInputs.cache

@ -1 +1 @@
ec6dd6e1649354a88820f29fa99f449377f51e4d5e8d8707b3c7326a682c80e1
786424e28f57daf62f6180d8da5730790c336df832876ad7e4dec61838b897e5

38
marking_gui/obj/Debug/marking_gui.csproj.FileListAbsolute.txt

@ -1,22 +1,3 @@
C:\Users\COMPUTER1\Desktop\mobi\marking_gui\marking_gui\obj\Debug\marking_gui.Properties.Resources.resources
C:\Users\COMPUTER1\Desktop\mobi\marking_gui\marking_gui\obj\Debug\marking_gui.csproj.GenerateResource.cache
C:\Users\COMPUTER1\Desktop\mobi\marking_gui\marking_gui\bin\Debug\marking_gui.exe.config
C:\Users\COMPUTER1\Desktop\mobi\marking_gui\marking_gui\bin\Debug\marking_gui.exe
C:\Users\COMPUTER1\Desktop\mobi\marking_gui\marking_gui\bin\Debug\marking_gui.pdb
C:\Users\COMPUTER1\Desktop\mobi\marking_gui\marking_gui\obj\Debug\MainWindow.g.cs
C:\Users\COMPUTER1\Desktop\mobi\marking_gui\marking_gui\obj\Debug\App.g.cs
C:\Users\COMPUTER1\Desktop\mobi\marking_gui\marking_gui\obj\Debug\marking_gui_MarkupCompile.cache
C:\Users\COMPUTER1\Desktop\mobi\marking_gui\marking_gui\obj\Debug\marking_gui_MarkupCompile.lref
C:\Users\COMPUTER1\Desktop\mobi\marking_gui\marking_gui\obj\Debug\MainWindow.baml
C:\Users\COMPUTER1\Desktop\mobi\marking_gui\marking_gui\obj\Debug\marking_gui.g.resources
C:\Users\COMPUTER1\Desktop\mobi\marking_gui\marking_gui\obj\Debug\marking_gui.exe
C:\Users\COMPUTER1\Desktop\mobi\marking_gui\marking_gui\obj\Debug\marking_gui.pdb
C:\Users\COMPUTER1\Desktop\mobi\marking_gui\marking_gui\obj\Debug\SettingsWindow.baml
C:\Users\COMPUTER1\Desktop\mobi\marking_gui\marking_gui\obj\Debug\SettingsWindow.g.cs
C:\Users\COMPUTER1\Desktop\mobi\marking_gui\marking_gui\obj\Debug\marking_gui.csproj.AssemblyReference.cache
C:\Users\COMPUTER1\Desktop\mobi\marking_gui\marking_gui\obj\Debug\marking_gui.csproj.CoreCompileInputs.cache
C:\Users\COMPUTER1\Desktop\mobi\marking_gui\marking_gui\obj\Debug\StartupLoginWindow.baml
C:\Users\COMPUTER1\Desktop\mobi\marking_gui\marking_gui\obj\Debug\StartupLoginWindow.g.cs
C:\Users\wjddn\Desktop\amosense\marking_gui\marking_gui\bin\Debug\marking_gui.exe.config
C:\Users\wjddn\Desktop\amosense\marking_gui\marking_gui\bin\Debug\marking_gui.exe
C:\Users\wjddn\Desktop\amosense\marking_gui\marking_gui\bin\Debug\marking_gui.pdb
@ -37,4 +18,23 @@ C:\Users\wjddn\Desktop\amosense\marking_gui\marking_gui\obj\Debug\marking_gui.cs
C:\Users\wjddn\Desktop\amosense\marking_gui\marking_gui\obj\Debug\marking_gui.exe
C:\Users\wjddn\Desktop\amosense\marking_gui\marking_gui\obj\Debug\marking_gui.pdb
C:\Users\wjddn\Desktop\amosense\marking_gui\marking_gui\obj\Debug\App.baml
C:\Users\COMPUTER1\Desktop\mobi\marking_gui\marking_gui\obj\Debug\marking_gui.csproj.AssemblyReference.cache
C:\Users\COMPUTER1\Desktop\mobi\marking_gui\marking_gui\obj\Debug\marking_gui.Properties.Resources.resources
C:\Users\COMPUTER1\Desktop\mobi\marking_gui\marking_gui\obj\Debug\marking_gui.csproj.GenerateResource.cache
C:\Users\COMPUTER1\Desktop\mobi\marking_gui\marking_gui\obj\Debug\marking_gui.csproj.CoreCompileInputs.cache
C:\Users\COMPUTER1\Desktop\mobi\marking_gui\marking_gui\bin\Debug\marking_gui.exe.config
C:\Users\COMPUTER1\Desktop\mobi\marking_gui\marking_gui\bin\Debug\marking_gui.exe
C:\Users\COMPUTER1\Desktop\mobi\marking_gui\marking_gui\bin\Debug\marking_gui.pdb
C:\Users\COMPUTER1\Desktop\mobi\marking_gui\marking_gui\obj\Debug\SettingsWindow.baml
C:\Users\COMPUTER1\Desktop\mobi\marking_gui\marking_gui\obj\Debug\StartupLoginWindow.baml
C:\Users\COMPUTER1\Desktop\mobi\marking_gui\marking_gui\obj\Debug\MainWindow.g.cs
C:\Users\COMPUTER1\Desktop\mobi\marking_gui\marking_gui\obj\Debug\SettingsWindow.g.cs
C:\Users\COMPUTER1\Desktop\mobi\marking_gui\marking_gui\obj\Debug\StartupLoginWindow.g.cs
C:\Users\COMPUTER1\Desktop\mobi\marking_gui\marking_gui\obj\Debug\App.g.cs
C:\Users\COMPUTER1\Desktop\mobi\marking_gui\marking_gui\obj\Debug\marking_gui_MarkupCompile.cache
C:\Users\COMPUTER1\Desktop\mobi\marking_gui\marking_gui\obj\Debug\marking_gui_MarkupCompile.lref
C:\Users\COMPUTER1\Desktop\mobi\marking_gui\marking_gui\obj\Debug\App.baml
C:\Users\COMPUTER1\Desktop\mobi\marking_gui\marking_gui\obj\Debug\MainWindow.baml
C:\Users\COMPUTER1\Desktop\mobi\marking_gui\marking_gui\obj\Debug\marking_gui.g.resources
C:\Users\COMPUTER1\Desktop\mobi\marking_gui\marking_gui\obj\Debug\marking_gui.exe
C:\Users\COMPUTER1\Desktop\mobi\marking_gui\marking_gui\obj\Debug\marking_gui.pdb

BIN
marking_gui/obj/Debug/marking_gui.exe

Binary file not shown.

BIN
marking_gui/obj/Debug/marking_gui.g.resources

Binary file not shown.

BIN
marking_gui/obj/Debug/marking_gui.pdb

Binary file not shown.

2
marking_gui/obj/Debug/marking_gui_MarkupCompile.cache

@ -12,7 +12,7 @@ DEBUG;TRACE
C:\Users\COMPUTER1\Desktop\mobi\marking_gui\marking_gui\App.xaml
31238780151
12-1027158311
13495465398
141066371409
MainWindow.xaml;SettingsWindow.xaml;StartupLoginWindow.xaml;

1086
msbuild.log

File diff suppressed because it is too large

2
program_flow.md

@ -26,7 +26,7 @@ graph TD
D -- 취소/닫기 --> E([프로그램 종료])
D -- 로그인 성공 --> F[상단바 우측에 작업자/모델/라인 정보 표출 및 메인 활성화]
F --> G[▶ 검사 시작 START 버튼 클릭]
G --> H[UI 화면 상태 및 측정 수치 -.-- 로 강제 초기화]
G --> H[UI 화면 상태 및 측정 수치 초기화]
H --> I[메모리로부터 S/N를 자동으로 읽어서 입력받음]
I --> J[데이터베이스에서 이전 검사 결과 조회]
J --> K{이전 검사 결과 확인}

Loading…
Cancel
Save