프로젝트

일반

사용자정보

개정판 9f428148

ID9f428148b97dba3cb0ef994f755c4963eba5c92f
상위 1d6948c4
하위 61943ed9

백흠경이(가) 5년 이상 전에 추가함

issue #1172: 데이터 이관 - SQLite에 있는 데이타를 MSSQL로 이관한다

Change-Id: I11bba04b97b5cdd8462e1d24f909d76dcf43cd95

차이점 보기:

DTI_PID/DTI_PID/AppDocData.py
111 111
        self._titleBlockProperties = None
112 112
        self.needReOpening = None
113 113

  
114
        self.configTable = None
114
        self._configs = None
115 115

  
116 116
    def clearItemList(self, trim):
117 117
        '''
......
1170 1170
        """ get configurations from database """
1171 1171
        res = []
1172 1172

  
1173
        if self.configTable is None:
1174
            self.configTable = []
1173
        if self._configs is None:
1174
            self._configs = []
1175 1175
            conn = self.project.database.connect()
1176 1176
            with conn:
1177 1177
                try:
......
1183 1183
                    cursor.execute(sql)
1184 1184
                    rows = cursor.fetchall()
1185 1185
                    for row in rows:
1186
                        self.configTable.append(Config(row[0], row[1], row[2]))
1186
                        self._configs.append(Config(row[0], row[1], row[2]))
1187 1187
                # Catch the exception
1188 1188
                except Exception as ex:
1189 1189
                    print('error occured({}) in {}:{}'.format(ex, sys.exc_info()[-1].tb_frame.f_code.co_filename, sys.exc_info()[-1].tb_lineno))
1190 1190

  
1191 1191
        if key is not None:
1192
            for con in self.configTable:
1193
                if con.section == section and con.key == key:
1194
                    res.append(con)
1192
            return [con for con in self._configs if con.section == section and con.key == key]
1195 1193
        else:
1196
            for con in self.configTable:
1197
                if con.section == section:
1198
                    res.append(con)
1194
            return [con for con in self._configs if con.section == section]
1199 1195

  
1200 1196
        return res
1201 1197

  
......
1268 1264
                        else:
1269 1265
                            if sql is not None and 2 == len(sql):
1270 1266
                                cursor.execute(self.project.database.to_sql(sql[0]), sql[1])
1267
                self.configTable = None # reset config table
1271 1268
                conn.commit()
1272 1269
            # Catch the exception
1273 1270
            except Exception as ex:
......
3110 3107
    @property
3111 3108
    def OCRData(self):
3112 3109
        if self._OCRData is None:
3113
            configs = self.getConfigs('Text Recognition', 'OCR Data')
3110
            configs = self.etConfigs('Text Recognition', 'OCR Data')
3114 3111
            self._OCRData = configs[0].value if 1 == len(configs) else 'eng'
3115 3112

  
3116 3113
        return self._OCRData
DTI_PID/DTI_PID/Configs.py
6 6
from AppDocData import AppDocData
7 7
from CodeTables import CodeTable
8 8

  
9
class Config:
10
    def __init__(self, section, key, value):
11
        self.section = section
12
        self.key = key
13
        self.value = value
14

  
15 9
class LineNoConfig:
16 10
    DELIMITER = '"'
17 11

  
DTI_PID/DTI_PID/DataTransferDialog.py
1
# coding: utf-8
2
""" This is Data Transfer dialog module """
3

  
4
import os
5
import sys
6
from PyQt5.QtCore import *
7
from PyQt5.QtGui import *
8
from PyQt5.QtWidgets import *
9

  
10
from AppDocData import AppDocData, MessageType
11

  
12
sys.path.insert(0, os.path.dirname(os.path.realpath(__file__)) + '\\UI')
13
import DataTransfer_UI
14

  
15
class QDataTransferDialog(QDialog):
16
    """ This Data Trasnfer dialog class """
17

  
18
    def __init__(self, parent):
19
        QDialog.__init__(self, parent)
20

  
21
        self.ui = DataTransfer_UI.Ui_DataTransferDialog()
22
        self.ui.setupUi(self)
23
        self.ui.lineEditPassword.setEchoMode(QLineEdit.Password) 
24
        self.ui.pushButtonTestConnection.clicked.connect(self.on_test_connection_clicked)
25

  
26
        self.load_data()
27

  
28
    def load_data(self):
29
        """ load mssql server information and drawing list """
30
        from AppDocData import AppDocData
31

  
32
        configs = AppDocData.instance().getConfigs('Data Transfer')
33
        for config in configs:
34
            if 'Server' == config.key:
35
                self.ui.lineEditServer.setText(config.value)
36
            elif 'User' == config.key:
37
                self.ui.lineEditUser.setText(config.value)
38
            elif 'Password' == config.key:
39
                self.ui.lineEditPassword.setText(config.value)
40

  
41
        self.load_drawing_list()
42

  
43
    def load_drawing_list(self):
44
        """ load drawing list """
45

  
46
        try:
47
            app_doc_data = AppDocData.instance()
48
            drawings = app_doc_data.getDrawings()
49

  
50
            self.ui.treeWidgetDrawingList.clear()
51
            self.ui.treeWidgetDrawingList.root = QTreeWidgetItem(self.ui.treeWidgetDrawingList, [self.tr('P&ID Drawings'), ''])
52
            self.ui.treeWidgetDrawingList.root.setFlags(self.ui.treeWidgetDrawingList.root.flags() | Qt.ItemIsTristate | Qt.ItemIsUserCheckable)
53
            self.ui.treeWidgetDrawingList.root.setCheckState(0, Qt.Unchecked)
54
            files = app_doc_data.getDrawingFileList()
55
            for file in files:
56
                drawing = [drawing for drawing in drawings if drawing[1] == file]
57
                if not drawing or not drawing[0]:
58
                    drawings.append([None, file, None])
59

  
60
                item = QTreeWidgetItem(self.ui.treeWidgetDrawingList.root, [file, drawing[0][2] if drawing and drawing[0] else ''])
61
                item.setIcon(0, QIcon(':newPrefix/image.png'))
62
                item.setFlags(item.flags() | Qt.ItemIsUserCheckable)
63
                item.setCheckState(0, Qt.Unchecked)
64
            
65
            self.ui.treeWidgetDrawingList.root.setText(0, self.tr('P&ID Drawings')+'({})'.format(self.ui.treeWidgetDrawingList.root.childCount()))
66
            self.ui.treeWidgetDrawingList.expandItem(self.ui.treeWidgetDrawingList.root)
67
            self.ui.treeWidgetDrawingList.root.sortChildren(0, Qt.AscendingOrder)
68
            self.ui.treeWidgetDrawingList.resizeColumnToContents(0)
69
        except Exception as ex:
70
            from App import App
71
            message = 'error occured({}) in {}:{}'.format(ex, sys.exc_info()[-1].tb_frame.f_code.co_filename, sys.exc_info()[-1].tb_lineno)
72
            App.mainWnd().addMessage.emit(MessageType.Error, message)
73

  
74
    def on_test_connection_clicked(self):
75
        """ test if connection is success or not """
76
        from AppDocData import AppDocData
77
        from AppDatabase import AppDatabase
78

  
79
        server = self.ui.lineEditServer.text()
80
        user = self.ui.lineEditUser.text()
81
        password = self.ui.lineEditPassword.text()
82
        if server and user and password:
83
            app_doc_data = AppDocData.instance()
84
            database = AppDatabase('MSSQL', self.ui.lineEditServer.text(), self.ui.lineEditUser.text(), self.ui.lineEditPassword.text(), db_path=app_doc_data.project.getName())
85
            try:
86
                conn = database.connect()
87
                with conn:
88
                    QMessageBox.information(self, self.tr('Information'), self.tr('Test connection is success'))
89
            except Exception as ex:
90
                mb = QMessageBox()
91
                mb.setIcon(QMessageBox.Critical)
92
                mb.setWindowTitle(self.tr('Error'))
93
                mb.setText('{}'.format(ex))
94
                mb.exec_()
95

  
96
    def accept(self):
97
        """ save sql information to database """
98
        from AppDocData import Config
99

  
100
        try:
101
            configs = []
102
            configs.append(Config('Data Transfer', 'Server', self.ui.lineEditServer.text()))
103
            configs.append(Config('Data Transfer', 'User', self.ui.lineEditUser.text()))
104
            configs.append(Config('Data Transfer', 'Password', self.ui.lineEditPassword.text()))
105
            AppDocData.instance().saveConfigs(configs)
106

  
107
            QDialog.accept(self)
108
        except Exception as ex:
109
            from App import App
110
            message = 'error occured({}) in {}:{}'.format(ex, sys.exc_info()[-1].tb_frame.f_code.co_filename, sys.exc_info()[-1].tb_lineno)
111
            App.mainWnd().addMessage.emit(MessageType.Error, message)
DTI_PID/DTI_PID/Drawing.py
51 51
        else:
52 52
            self._attrs.append([name, value])
53 53

  
54
        print('attribute({},{})'.format(name, value))
54
        print('attribute({},{})'.format(name, value))
55

  
56
    def transfer(self, database):
57
        """ data transfer to given database """
58
        pass
DTI_PID/DTI_PID/ID2.pro
1
SOURCES += MainWindow_UI.py MainWindow.py License_UI.py License.py Project_UI.py ProjectDialog.py Recognition_UI.py SymbolPropertyTableWidget.py SymbolEditor_UI.py TextItemEdit_UI.py TrainingEditor_UI.py TrainingImageList_UI.py SpecBreak_UI.py ItemDataExport_UI.py OcrResultDialog_UI.py SymbolAttrEditor_UI.py SymbolEditor_UI.py TrainingImageListDialog.py Configuration_UI.py Configuration_Area_UI.py ItemDataFormat_UI.py ItemDataExportDialog.py HMB_UI.py RecognitionDialog.py LineNoTracer.py ConnectAttr_UI.py ItemTreeWidget.py
1
SOURCES += MainWindow_UI.py MainWindow.py License_UI.py License.py Project_UI.py ProjectDialog.py Recognition_UI.py SymbolPropertyTableWidget.py SymbolEditor_UI.py TextItemEdit_UI.py TrainingEditor_UI.py TrainingImageList_UI.py SpecBreak_UI.py ItemDataExport_UI.py OcrResultDialog_UI.py SymbolAttrEditor_UI.py SymbolEditor_UI.py TrainingImageListDialog.py Configuration_UI.py Configuration_Area_UI.py ItemDataFormat_UI.py ItemDataExportDialog.py HMB_UI.py RecognitionDialog.py LineNoTracer.py ConnectAttr_UI.py ItemTreeWidget.py .\UI\DataTransfer_UI.py 
2 2
TRANSLATIONS = translate/ko_kr.ts translate/ja_jp.ts
DTI_PID/DTI_PID/MainWindow.py
206 206
        self.actionItem_Data_List.triggered.connect(self.showItemDataList)
207 207
        self.actionText_Data_List.triggered.connect(self.showTextDataList)
208 208
        self.actionSpecialItemTypes.triggered.connect(self.on_show_special_item_types)  ### show special item types dialog
209
        self.actionDataTransfer.triggered.connect(self.on_show_data_transfer)  ### show data transfer dialog
210
        self.actionOPCRelation.triggered.connect(self.on_show_opc_relation)     ### show OPC Relation dialog
209 211
        self.actionCodeTable.triggered.connect(self.onShowCodeTable)
210 212
        self.actionImage_Drawing.triggered.connect(self.onViewImageDrawing)
211 213
        self.actionDrawing_Only.triggered.connect(self.onViewDrawingOnly)
......
1014 1016
        dlg = QSpecialItemTypesDialog(self)
1015 1017
        dlg.exec_()
1016 1018

  
1019
    def on_show_data_transfer(self):
1020
        """ show data transfer dialog """
1021
        from DataTransferDialog import QDataTransferDialog
1022

  
1023
        dlg = QDataTransferDialog(self)
1024
        dlg.exec_()
1025

  
1026
    def on_show_opc_relation(self):
1027
        """ show opc relation dialog """
1028
        from OPCRelationDialog import QOPCRelationDialog
1029

  
1030
        dlg = QOPCRelationDialog(self)
1031
        dlg.exec_()
1032

  
1017 1033
    '''
1018 1034
        @brief  show nominal diameter dialog 
1019 1035
        @author humkyung
DTI_PID/DTI_PID/MainWindow_UI.py
1 1
# -*- coding: utf-8 -*-
2 2

  
3
# Form implementation generated from reading ui file '.\UI\MainWindow.ui'
3
# Form implementation generated from reading ui file '.\ui\MainWindow.ui'
4 4
#
5 5
# Created by: PyQt5 UI code generator 5.13.0
6 6
#
......
472 472
        self.actionImport_Text_From_CAD.setObjectName("actionImport_Text_From_CAD")
473 473
        self.actionSpecialItemTypes = QtWidgets.QAction(MainWindow)
474 474
        self.actionSpecialItemTypes.setObjectName("actionSpecialItemTypes")
475
        self.actionDataTransfer = QtWidgets.QAction(MainWindow)
476
        self.actionDataTransfer.setObjectName("actionDataTransfer")
477
        self.actionOPCRelation = QtWidgets.QAction(MainWindow)
478
        self.actionOPCRelation.setObjectName("actionOPCRelation")
475 479
        self.menu.addAction(self.actionOpen)
476 480
        self.menu.addAction(self.actionArea)
477 481
        self.menu.addAction(self.actionConfiguration)
......
484 488
        self.menu_2.addAction(self.actionItem_Data_List)
485 489
        self.menu_2.addSeparator()
486 490
        self.menu_2.addAction(self.actionSpecialItemTypes)
491
        self.menu_2.addAction(self.actionOPCRelation)
492
        self.menu_2.addSeparator()
487 493
        self.menu_2.addAction(self.actionCodeTable)
488 494
        self.menu_2.addAction(self.actionOCR_Training)
489 495
        self.menu_3.addAction(self.actionImage_Drawing)
......
498 504
        self.menu_3.addAction(self.actionDrawing_Only)
499 505
        self.menu_4.addAction(self.actionpdf_to_image)
500 506
        self.menu_4.addAction(self.actionImport_Text_From_CAD)
507
        self.menu_4.addSeparator()
508
        self.menu_4.addAction(self.actionDataTransfer)
501 509
        self.menu_5.addAction(self.actionFindReplaceText)
502 510
        self.menu_5.addAction(self.actionText_Data_List)
503 511
        self.menubar.addAction(self.menu.menuAction())
......
614 622
        self.actionImport_Text_From_CAD.setText(_translate("MainWindow", "Import Text From CAD"))
615 623
        self.actionSpecialItemTypes.setText(_translate("MainWindow", "Special Item Types"))
616 624
        self.actionSpecialItemTypes.setToolTip(_translate("MainWindow", "Special Item Types"))
625
        self.actionDataTransfer.setText(_translate("MainWindow", "DataTransfer"))
626
        self.actionDataTransfer.setToolTip(_translate("MainWindow", "Data Transfer"))
627
        self.actionOPCRelation.setText(_translate("MainWindow", "OPCRelation"))
628
        self.actionOPCRelation.setToolTip(_translate("MainWindow", "OPC Relation"))
617 629
import MainWindow_rc
DTI_PID/DTI_PID/OPCRelationDialog.py
1
# coding: utf-8
2
""" This is OPC Relation dialog module """
3

  
4
import os
5
import sys
6
from PyQt5.QtCore import *
7
from PyQt5.QtGui import *
8
from PyQt5.QtWidgets import *
9
from AppDocData import AppDocData, MessageType
10

  
11
sys.path.insert(0, os.path.dirname(os.path.realpath(__file__)) + '\\UI')
12
import OPCRelation_UI
13

  
14
class QOPCRelationDialog(QDialog):
15
    """ This OPC Relation dialog class """
16

  
17
    def __init__(self, parent):
18
        QDialog.__init__(self, parent)
19

  
20
        self.ui = OPCRelation_UI.Ui_OPCRelationDialog()
21
        self.ui.setupUi(self)
22

  
23
    def accept(self):
24
        """ save sql information to database """
25
        try:
26
            QDialog.accept(self)
27
        except Exception as ex:
28
            from App import App
29
            message = 'error occured({}) in {}:{}'.format(ex, sys.exc_info()[-1].tb_frame.f_code.co_filename, sys.exc_info()[-1].tb_lineno)
30
            App.mainWnd().addMessage.emit(MessageType.Error, message)
DTI_PID/DTI_PID/UI/DataTransfer.ui
1
<?xml version="1.0" encoding="UTF-8"?>
2
<ui version="4.0">
3
 <class>DataTransferDialog</class>
4
 <widget class="QDialog" name="DataTransferDialog">
5
  <property name="geometry">
6
   <rect>
7
    <x>0</x>
8
    <y>0</y>
9
    <width>683</width>
10
    <height>385</height>
11
   </rect>
12
  </property>
13
  <property name="windowTitle">
14
   <string>Data Transfer</string>
15
  </property>
16
  <layout class="QGridLayout" name="gridLayout">
17
   <item row="2" column="0">
18
    <widget class="QDialogButtonBox" name="buttonBox">
19
     <property name="orientation">
20
      <enum>Qt::Horizontal</enum>
21
     </property>
22
     <property name="standardButtons">
23
      <set>QDialogButtonBox::Cancel|QDialogButtonBox::Ok</set>
24
     </property>
25
    </widget>
26
   </item>
27
   <item row="0" column="0">
28
    <widget class="QSplitter" name="splitter">
29
     <property name="baseSize">
30
      <size>
31
       <width>0</width>
32
       <height>0</height>
33
      </size>
34
     </property>
35
     <property name="orientation">
36
      <enum>Qt::Horizontal</enum>
37
     </property>
38
     <widget class="QGroupBox" name="groupBox">
39
      <property name="title">
40
       <string>Drawings</string>
41
      </property>
42
      <layout class="QGridLayout" name="gridLayout_2">
43
       <item row="0" column="0">
44
        <widget class="QTreeWidget" name="treeWidgetDrawingList">
45
         <property name="minimumSize">
46
          <size>
47
           <width>100</width>
48
           <height>0</height>
49
          </size>
50
         </property>
51
         <property name="baseSize">
52
          <size>
53
           <width>200</width>
54
           <height>0</height>
55
          </size>
56
         </property>
57
         <attribute name="headerVisible">
58
          <bool>false</bool>
59
         </attribute>
60
         <column>
61
          <property name="text">
62
           <string notr="true">1</string>
63
          </property>
64
         </column>
65
        </widget>
66
       </item>
67
      </layout>
68
     </widget>
69
     <widget class="QGroupBox" name="groupBox_2">
70
      <property name="title">
71
       <string>MSSQL</string>
72
      </property>
73
      <layout class="QGridLayout" name="gridLayout_3">
74
       <item row="1" column="0">
75
        <layout class="QFormLayout" name="formLayout">
76
         <property name="formAlignment">
77
          <set>Qt::AlignLeading|Qt::AlignLeft|Qt::AlignVCenter</set>
78
         </property>
79
         <item row="0" column="0">
80
          <widget class="QLabel" name="label">
81
           <property name="text">
82
            <string>Server</string>
83
           </property>
84
          </widget>
85
         </item>
86
         <item row="0" column="1">
87
          <widget class="QLineEdit" name="lineEditServer"/>
88
         </item>
89
         <item row="1" column="0">
90
          <widget class="QLabel" name="label_2">
91
           <property name="text">
92
            <string>User</string>
93
           </property>
94
          </widget>
95
         </item>
96
         <item row="1" column="1">
97
          <widget class="QLineEdit" name="lineEditUser"/>
98
         </item>
99
         <item row="2" column="0">
100
          <widget class="QLabel" name="label_3">
101
           <property name="text">
102
            <string>Password</string>
103
           </property>
104
          </widget>
105
         </item>
106
         <item row="2" column="1">
107
          <widget class="QLineEdit" name="lineEditPassword"/>
108
         </item>
109
        </layout>
110
       </item>
111
       <item row="2" column="0">
112
        <widget class="QPushButton" name="pushButtonTestConnection">
113
         <property name="text">
114
          <string>Test Connection</string>
115
         </property>
116
        </widget>
117
       </item>
118
      </layout>
119
     </widget>
120
    </widget>
121
   </item>
122
   <item row="1" column="0">
123
    <widget class="QProgressBar" name="progressBarDataTransfer">
124
     <property name="value">
125
      <number>24</number>
126
     </property>
127
    </widget>
128
   </item>
129
  </layout>
130
 </widget>
131
 <resources/>
132
 <connections>
133
  <connection>
134
   <sender>buttonBox</sender>
135
   <signal>accepted()</signal>
136
   <receiver>DataTransferDialog</receiver>
137
   <slot>accept()</slot>
138
   <hints>
139
    <hint type="sourcelabel">
140
     <x>248</x>
141
     <y>254</y>
142
    </hint>
143
    <hint type="destinationlabel">
144
     <x>157</x>
145
     <y>274</y>
146
    </hint>
147
   </hints>
148
  </connection>
149
  <connection>
150
   <sender>buttonBox</sender>
151
   <signal>rejected()</signal>
152
   <receiver>DataTransferDialog</receiver>
153
   <slot>reject()</slot>
154
   <hints>
155
    <hint type="sourcelabel">
156
     <x>316</x>
157
     <y>260</y>
158
    </hint>
159
    <hint type="destinationlabel">
160
     <x>286</x>
161
     <y>274</y>
162
    </hint>
163
   </hints>
164
  </connection>
165
 </connections>
166
</ui>
DTI_PID/DTI_PID/UI/DataTransfer_UI.py
1
# -*- coding: utf-8 -*-
2

  
3
# Form implementation generated from reading ui file '.\UI\DataTransfer.ui'
4
#
5
# Created by: PyQt5 UI code generator 5.13.0
6
#
7
# WARNING! All changes made in this file will be lost!
8

  
9

  
10
from PyQt5 import QtCore, QtGui, QtWidgets
11

  
12

  
13
class Ui_DataTransferDialog(object):
14
    def setupUi(self, DataTransferDialog):
15
        DataTransferDialog.setObjectName("DataTransferDialog")
16
        DataTransferDialog.resize(683, 385)
17
        self.gridLayout = QtWidgets.QGridLayout(DataTransferDialog)
18
        self.gridLayout.setObjectName("gridLayout")
19
        self.buttonBox = QtWidgets.QDialogButtonBox(DataTransferDialog)
20
        self.buttonBox.setOrientation(QtCore.Qt.Horizontal)
21
        self.buttonBox.setStandardButtons(QtWidgets.QDialogButtonBox.Cancel|QtWidgets.QDialogButtonBox.Ok)
22
        self.buttonBox.setObjectName("buttonBox")
23
        self.gridLayout.addWidget(self.buttonBox, 2, 0, 1, 1)
24
        self.splitter = QtWidgets.QSplitter(DataTransferDialog)
25
        self.splitter.setBaseSize(QtCore.QSize(0, 0))
26
        self.splitter.setOrientation(QtCore.Qt.Horizontal)
27
        self.splitter.setObjectName("splitter")
28
        self.groupBox = QtWidgets.QGroupBox(self.splitter)
29
        self.groupBox.setObjectName("groupBox")
30
        self.gridLayout_2 = QtWidgets.QGridLayout(self.groupBox)
31
        self.gridLayout_2.setObjectName("gridLayout_2")
32
        self.treeWidgetDrawingList = QtWidgets.QTreeWidget(self.groupBox)
33
        self.treeWidgetDrawingList.setMinimumSize(QtCore.QSize(100, 0))
34
        self.treeWidgetDrawingList.setBaseSize(QtCore.QSize(200, 0))
35
        self.treeWidgetDrawingList.setObjectName("treeWidgetDrawingList")
36
        self.treeWidgetDrawingList.headerItem().setText(0, "1")
37
        self.treeWidgetDrawingList.header().setVisible(False)
38
        self.gridLayout_2.addWidget(self.treeWidgetDrawingList, 0, 0, 1, 1)
39
        self.groupBox_2 = QtWidgets.QGroupBox(self.splitter)
40
        self.groupBox_2.setObjectName("groupBox_2")
41
        self.gridLayout_3 = QtWidgets.QGridLayout(self.groupBox_2)
42
        self.gridLayout_3.setObjectName("gridLayout_3")
43
        self.formLayout = QtWidgets.QFormLayout()
44
        self.formLayout.setFormAlignment(QtCore.Qt.AlignLeading|QtCore.Qt.AlignLeft|QtCore.Qt.AlignVCenter)
45
        self.formLayout.setObjectName("formLayout")
46
        self.label = QtWidgets.QLabel(self.groupBox_2)
47
        self.label.setObjectName("label")
48
        self.formLayout.setWidget(0, QtWidgets.QFormLayout.LabelRole, self.label)
49
        self.lineEditServer = QtWidgets.QLineEdit(self.groupBox_2)
50
        self.lineEditServer.setObjectName("lineEditServer")
51
        self.formLayout.setWidget(0, QtWidgets.QFormLayout.FieldRole, self.lineEditServer)
52
        self.label_2 = QtWidgets.QLabel(self.groupBox_2)
53
        self.label_2.setObjectName("label_2")
54
        self.formLayout.setWidget(1, QtWidgets.QFormLayout.LabelRole, self.label_2)
55
        self.lineEditUser = QtWidgets.QLineEdit(self.groupBox_2)
56
        self.lineEditUser.setObjectName("lineEditUser")
57
        self.formLayout.setWidget(1, QtWidgets.QFormLayout.FieldRole, self.lineEditUser)
58
        self.label_3 = QtWidgets.QLabel(self.groupBox_2)
59
        self.label_3.setObjectName("label_3")
60
        self.formLayout.setWidget(2, QtWidgets.QFormLayout.LabelRole, self.label_3)
61
        self.lineEditPassword = QtWidgets.QLineEdit(self.groupBox_2)
62
        self.lineEditPassword.setObjectName("lineEditPassword")
63
        self.formLayout.setWidget(2, QtWidgets.QFormLayout.FieldRole, self.lineEditPassword)
64
        self.gridLayout_3.addLayout(self.formLayout, 1, 0, 1, 1)
65
        self.pushButtonTestConnection = QtWidgets.QPushButton(self.groupBox_2)
66
        self.pushButtonTestConnection.setObjectName("pushButtonTestConnection")
67
        self.gridLayout_3.addWidget(self.pushButtonTestConnection, 2, 0, 1, 1)
68
        self.gridLayout.addWidget(self.splitter, 0, 0, 1, 1)
69
        self.progressBarDataTransfer = QtWidgets.QProgressBar(DataTransferDialog)
70
        self.progressBarDataTransfer.setProperty("value", 24)
71
        self.progressBarDataTransfer.setObjectName("progressBarDataTransfer")
72
        self.gridLayout.addWidget(self.progressBarDataTransfer, 1, 0, 1, 1)
73

  
74
        self.retranslateUi(DataTransferDialog)
75
        self.buttonBox.accepted.connect(DataTransferDialog.accept)
76
        self.buttonBox.rejected.connect(DataTransferDialog.reject)
77
        QtCore.QMetaObject.connectSlotsByName(DataTransferDialog)
78

  
79
    def retranslateUi(self, DataTransferDialog):
80
        _translate = QtCore.QCoreApplication.translate
81
        DataTransferDialog.setWindowTitle(_translate("DataTransferDialog", "Data Transfer"))
82
        self.groupBox.setTitle(_translate("DataTransferDialog", "Drawings"))
83
        self.groupBox_2.setTitle(_translate("DataTransferDialog", "MSSQL"))
84
        self.label.setText(_translate("DataTransferDialog", "Server"))
85
        self.label_2.setText(_translate("DataTransferDialog", "User"))
86
        self.label_3.setText(_translate("DataTransferDialog", "Password"))
87
        self.pushButtonTestConnection.setText(_translate("DataTransferDialog", "Test Connection"))
DTI_PID/DTI_PID/UI/MainWindow.ui
85 85
    <addaction name="actionItem_Data_List"/>
86 86
    <addaction name="separator"/>
87 87
    <addaction name="actionSpecialItemTypes"/>
88
    <addaction name="actionOPCRelation"/>
89
    <addaction name="separator"/>
88 90
    <addaction name="actionCodeTable"/>
89 91
    <addaction name="actionOCR_Training"/>
90 92
   </widget>
......
109 111
    </property>
110 112
    <addaction name="actionpdf_to_image"/>
111 113
    <addaction name="actionImport_Text_From_CAD"/>
114
    <addaction name="separator"/>
115
    <addaction name="actionDataTransfer"/>
112 116
   </widget>
113 117
   <widget class="QMenu" name="menu_5">
114 118
    <property name="title">
......
1026 1030
    <string>Special Item Types</string>
1027 1031
   </property>
1028 1032
  </action>
1033
  <action name="actionDataTransfer">
1034
   <property name="text">
1035
    <string>DataTransfer</string>
1036
   </property>
1037
   <property name="toolTip">
1038
    <string>Data Transfer</string>
1039
   </property>
1040
  </action>
1041
  <action name="actionOPCRelation">
1042
   <property name="text">
1043
    <string>OPCRelation</string>
1044
   </property>
1045
   <property name="toolTip">
1046
    <string>OPC Relation</string>
1047
   </property>
1048
  </action>
1029 1049
 </widget>
1030 1050
 <resources>
1031 1051
  <include location="../res/MainWindow.qrc"/>
DTI_PID/DTI_PID/UI/OPCRelation.ui
1
<?xml version="1.0" encoding="UTF-8"?>
2
<ui version="4.0">
3
 <class>OPCRelationDialog</class>
4
 <widget class="QDialog" name="OPCRelationDialog">
5
  <property name="geometry">
6
   <rect>
7
    <x>0</x>
8
    <y>0</y>
9
    <width>766</width>
10
    <height>410</height>
11
   </rect>
12
  </property>
13
  <property name="windowTitle">
14
   <string>OPC Relation</string>
15
  </property>
16
  <layout class="QGridLayout" name="gridLayout">
17
   <item row="2" column="0">
18
    <widget class="QDialogButtonBox" name="buttonBox">
19
     <property name="orientation">
20
      <enum>Qt::Horizontal</enum>
21
     </property>
22
     <property name="standardButtons">
23
      <set>QDialogButtonBox::Cancel|QDialogButtonBox::Ok</set>
24
     </property>
25
    </widget>
26
   </item>
27
   <item row="0" column="0">
28
    <widget class="QSplitter" name="splitter">
29
     <property name="orientation">
30
      <enum>Qt::Horizontal</enum>
31
     </property>
32
     <widget class="QTableWidget" name="tableWidgetSource"/>
33
     <widget class="QTableWidget" name="tableWidgetTarget"/>
34
    </widget>
35
   </item>
36
  </layout>
37
 </widget>
38
 <resources/>
39
 <connections>
40
  <connection>
41
   <sender>buttonBox</sender>
42
   <signal>accepted()</signal>
43
   <receiver>OPCRelationDialog</receiver>
44
   <slot>accept()</slot>
45
   <hints>
46
    <hint type="sourcelabel">
47
     <x>248</x>
48
     <y>254</y>
49
    </hint>
50
    <hint type="destinationlabel">
51
     <x>157</x>
52
     <y>274</y>
53
    </hint>
54
   </hints>
55
  </connection>
56
  <connection>
57
   <sender>buttonBox</sender>
58
   <signal>rejected()</signal>
59
   <receiver>OPCRelationDialog</receiver>
60
   <slot>reject()</slot>
61
   <hints>
62
    <hint type="sourcelabel">
63
     <x>316</x>
64
     <y>260</y>
65
    </hint>
66
    <hint type="destinationlabel">
67
     <x>286</x>
68
     <y>274</y>
69
    </hint>
70
   </hints>
71
  </connection>
72
 </connections>
73
</ui>
DTI_PID/DTI_PID/UI/OPCRelation_UI.py
1
# -*- coding: utf-8 -*-
2

  
3
# Form implementation generated from reading ui file '.\ui\OPCRelation.ui'
4
#
5
# Created by: PyQt5 UI code generator 5.13.0
6
#
7
# WARNING! All changes made in this file will be lost!
8

  
9

  
10
from PyQt5 import QtCore, QtGui, QtWidgets
11

  
12

  
13
class Ui_OPCRelationDialog(object):
14
    def setupUi(self, OPCRelationDialog):
15
        OPCRelationDialog.setObjectName("OPCRelationDialog")
16
        OPCRelationDialog.resize(766, 410)
17
        self.gridLayout = QtWidgets.QGridLayout(OPCRelationDialog)
18
        self.gridLayout.setObjectName("gridLayout")
19
        self.buttonBox = QtWidgets.QDialogButtonBox(OPCRelationDialog)
20
        self.buttonBox.setOrientation(QtCore.Qt.Horizontal)
21
        self.buttonBox.setStandardButtons(QtWidgets.QDialogButtonBox.Cancel|QtWidgets.QDialogButtonBox.Ok)
22
        self.buttonBox.setObjectName("buttonBox")
23
        self.gridLayout.addWidget(self.buttonBox, 2, 0, 1, 1)
24
        self.splitter = QtWidgets.QSplitter(OPCRelationDialog)
25
        self.splitter.setOrientation(QtCore.Qt.Horizontal)
26
        self.splitter.setObjectName("splitter")
27
        self.tableWidgetSource = QtWidgets.QTableWidget(self.splitter)
28
        self.tableWidgetSource.setObjectName("tableWidgetSource")
29
        self.tableWidgetSource.setColumnCount(0)
30
        self.tableWidgetSource.setRowCount(0)
31
        self.tableWidgetTarget = QtWidgets.QTableWidget(self.splitter)
32
        self.tableWidgetTarget.setObjectName("tableWidgetTarget")
33
        self.tableWidgetTarget.setColumnCount(0)
34
        self.tableWidgetTarget.setRowCount(0)
35
        self.gridLayout.addWidget(self.splitter, 0, 0, 1, 1)
36

  
37
        self.retranslateUi(OPCRelationDialog)
38
        self.buttonBox.accepted.connect(OPCRelationDialog.accept)
39
        self.buttonBox.rejected.connect(OPCRelationDialog.reject)
40
        QtCore.QMetaObject.connectSlotsByName(OPCRelationDialog)
41

  
42
    def retranslateUi(self, OPCRelationDialog):
43
        _translate = QtCore.QCoreApplication.translate
44
        OPCRelationDialog.setWindowTitle(_translate("OPCRelationDialog", "OPC Relation"))
DTI_PID/DTI_PID/translate/ja_jp.ts
3 3
<context>
4 4
    <name>AreaDialog</name>
5 5
    <message>
6
        <location filename="../Configuration_Area_UI.py" line="232"/>
6
        <location filename="../Configuration_Area_UI.py" line="234"/>
7 7
        <source>Area</source>
8 8
        <translation type="unfinished"></translation>
9 9
    </message>
10 10
    <message>
11
        <location filename="../Configuration_Area_UI.py" line="233"/>
11
        <location filename="../Configuration_Area_UI.py" line="235"/>
12 12
        <source>Rev. No : </source>
13 13
        <translation type="unfinished"></translation>
14 14
    </message>
15 15
    <message>
16
        <location filename="../Configuration_Area_UI.py" line="244"/>
16
        <location filename="../Configuration_Area_UI.py" line="246"/>
17 17
        <source>...</source>
18 18
        <translation type="unfinished"></translation>
19 19
    </message>
20 20
    <message>
21
        <location filename="../Configuration_Area_UI.py" line="237"/>
21
        <location filename="../Configuration_Area_UI.py" line="239"/>
22 22
        <source>Drawing</source>
23 23
        <translation type="unfinished"></translation>
24 24
    </message>
25 25
    <message>
26
        <location filename="../Configuration_Area_UI.py" line="238"/>
26
        <location filename="../Configuration_Area_UI.py" line="240"/>
27 27
        <source>Unit : </source>
28 28
        <translation type="unfinished"></translation>
29 29
    </message>
30 30
    <message>
31
        <location filename="../Configuration_Area_UI.py" line="239"/>
31
        <location filename="../Configuration_Area_UI.py" line="241"/>
32 32
        <source>Drawing No : </source>
33 33
        <translation type="unfinished"></translation>
34 34
    </message>
35 35
    <message>
36
        <location filename="../Configuration_Area_UI.py" line="241"/>
36
        <location filename="../Configuration_Area_UI.py" line="243"/>
37 37
        <source>History Data : </source>
38 38
        <translation type="unfinished"></translation>
39 39
    </message>
40 40
    <message>
41
        <location filename="../Configuration_Area_UI.py" line="242"/>
41
        <location filename="../Configuration_Area_UI.py" line="244"/>
42 42
        <source>Note : </source>
43 43
        <translation type="unfinished"></translation>
44 44
    </message>
45 45
    <message>
46
        <location filename="../Configuration_Area_UI.py" line="259"/>
46
        <location filename="../Configuration_Area_UI.py" line="261"/>
47 47
        <source>-</source>
48 48
        <translation type="unfinished"></translation>
49 49
    </message>
50 50
    <message>
51
        <location filename="../Configuration_Area_UI.py" line="251"/>
51
        <location filename="../Configuration_Area_UI.py" line="253"/>
52 52
        <source>Equipment Desc. Area</source>
53 53
        <translation type="unfinished"></translation>
54 54
    </message>
55 55
    <message>
56
        <location filename="../Configuration_Area_UI.py" line="258"/>
56
        <location filename="../Configuration_Area_UI.py" line="260"/>
57 57
        <source>+</source>
58 58
        <translation type="unfinished"></translation>
59 59
    </message>
60 60
    <message>
61
        <location filename="../Configuration_Area_UI.py" line="254"/>
61
        <location filename="../Configuration_Area_UI.py" line="256"/>
62 62
        <source>Title Block</source>
63 63
        <translation type="unfinished"></translation>
64 64
    </message>
65 65
    <message>
66
        <location filename="../Configuration_Area_UI.py" line="257"/>
66
        <location filename="../Configuration_Area_UI.py" line="259"/>
67 67
        <source>Typical Area</source>
68 68
        <translation type="unfinished"></translation>
69 69
    </message>
......
71 71
<context>
72 72
    <name>ConfigurationDialog</name>
73 73
    <message>
74
        <location filename="../Configuration_UI.py" line="463"/>
74
        <location filename="../Configuration_UI.py" line="552"/>
75 75
        <source>Configuration</source>
76 76
        <translation type="unfinished"></translation>
77 77
    </message>
78 78
    <message>
79
        <location filename="../Configuration_UI.py" line="486"/>
80
        <source>Minimum Text Size : </source>
79
        <location filename="../Configuration_UI.py" line="553"/>
80
        <source>Attribute</source>
81 81
        <translation type="unfinished"></translation>
82 82
    </message>
83 83
    <message>
84
        <location filename="../Configuration_UI.py" line="487"/>
85
        <source>Maximum Text Size : </source>
84
        <location filename="../Configuration_UI.py" line="554"/>
85
        <source>Size Delimiter : </source>
86 86
        <translation type="unfinished"></translation>
87 87
    </message>
88 88
    <message>
89
        <location filename="../Configuration_UI.py" line="465"/>
90
        <source>Size Delimiter : </source>
89
        <location filename="../Configuration_UI.py" line="555"/>
90
        <source>Attribute Detection Range(Ratio) : </source>
91 91
        <translation type="unfinished"></translation>
92 92
    </message>
93 93
    <message>
94
        <location filename="../Configuration_UI.py" line="468"/>
95
        <source> &lt; Area &lt; </source>
94
        <location filename="../Configuration_UI.py" line="556"/>
95
        <source>Line Flow Mark Position(Percent) : </source>
96 96
        <translation type="unfinished"></translation>
97 97
    </message>
98 98
    <message>
99
        <location filename="../Configuration_UI.py" line="470"/>
100
        <source>Sliding Window Size(WxH) : </source>
99
        <location filename="../Configuration_UI.py" line="557"/>
100
        <source>Line Flow Mark Minimum Line Length : </source>
101
        <translation type="unfinished"></translation>
102
    </message>
103
    <message>
104
        <location filename="../Configuration_UI.py" line="558"/>
105
        <source>Line Detection</source>
106
        <translation type="unfinished"></translation>
107
    </message>
108
    <message>
109
        <location filename="../Configuration_UI.py" line="559"/>
110
        <source>&lt; Area &lt; </source>
111
        <translation type="unfinished"></translation>
112
    </message>
113
    <message>
114
        <location filename="../Configuration_UI.py" line="560"/>
115
        <source>Ignore Small Object Size : </source>
116
        <translation type="unfinished"></translation>
117
    </message>
118
    <message>
119
        <location filename="../Configuration_UI.py" line="561"/>
120
        <source>Length to Connect Line</source>
101 121
        <translation type="unfinished"></translation>
102 122
    </message>
103 123
    <message>
104
        <location filename="../Configuration_UI.py" line="469"/>
124
        <location filename="../Configuration_UI.py" line="562"/>
105 125
        <source>Small Line Minimum Length</source>
106 126
        <translation type="unfinished"></translation>
107 127
    </message>
108 128
    <message>
109
        <location filename="../Configuration_UI.py" line="471"/>
129
        <location filename="../Configuration_UI.py" line="563"/>
130
        <source>Sliding Window Size(WxH) : </source>
131
        <translation type="unfinished"></translation>
132
    </message>
133
    <message>
134
        <location filename="../Configuration_UI.py" line="564"/>
135
        <source>Default Line Type</source>
136
        <translation type="unfinished"></translation>
137
    </message>
138
    <message>
139
        <location filename="../Configuration_UI.py" line="565"/>
110 140
        <source>Line No</source>
111 141
        <translation type="unfinished"></translation>
112 142
    </message>
113 143
    <message>
114
        <location filename="../Configuration_UI.py" line="472"/>
115
        <source>Size Unit : </source>
144
        <location filename="../Configuration_UI.py" line="566"/>
145
        <source>Line No Attribute</source>
116 146
        <translation type="unfinished"></translation>
117 147
    </message>
118 148
    <message>
119
        <location filename="../Configuration_UI.py" line="473"/>
120
        <source>Metric</source>
149
        <location filename="../Configuration_UI.py" line="567"/>
150
        <source>Add</source>
121 151
        <translation type="unfinished"></translation>
122 152
    </message>
123 153
    <message>
124
        <location filename="../Configuration_UI.py" line="474"/>
125
        <source>Inch</source>
154
        <location filename="../Configuration_UI.py" line="568"/>
155
        <source>Delete</source>
126 156
        <translation type="unfinished"></translation>
127 157
    </message>
128 158
    <message>
129
        <location filename="../Configuration_UI.py" line="475"/>
130
        <source>Line No Attribute</source>
159
        <location filename="../Configuration_UI.py" line="569"/>
160
        <source>Text Detection</source>
161
        <translation type="unfinished"></translation>
162
    </message>
163
    <message>
164
        <location filename="../Configuration_UI.py" line="570"/>
165
        <source>OCR Source : </source>
166
        <translation type="unfinished"></translation>
167
    </message>
168
    <message>
169
        <location filename="../Configuration_UI.py" line="571"/>
170
        <source>Detected string : </source>
171
        <translation type="unfinished"></translation>
172
    </message>
173
    <message>
174
        <location filename="../Configuration_UI.py" line="572"/>
175
        <source>Expansion Size : </source>
176
        <translation type="unfinished"></translation>
177
    </message>
178
    <message>
179
        <location filename="../Configuration_UI.py" line="573"/>
180
        <source>Erosion Size : </source>
181
        <translation type="unfinished"></translation>
182
    </message>
183
    <message>
184
        <location filename="../Configuration_UI.py" line="574"/>
185
        <source>Minimum Text Size : </source>
186
        <translation type="unfinished"></translation>
187
    </message>
188
    <message>
189
        <location filename="../Configuration_UI.py" line="575"/>
190
        <source>Maximum Text Size : </source>
131 191
        <translation type="unfinished"></translation>
132 192
    </message>
133 193
    <message>
134
        <location filename="../Configuration_UI.py" line="476"/>
135
        <source>Delimiter : </source>
194
        <location filename="../Configuration_UI.py" line="576"/>
195
        <source>Merge Size : </source>
136 196
        <translation type="unfinished"></translation>
137 197
    </message>
138 198
    <message>
139
        <location filename="../Configuration_UI.py" line="492"/>
199
        <location filename="../Configuration_UI.py" line="577"/>
200
        <source>Filter</source>
201
        <translation type="unfinished"></translation>
202
    </message>
203
    <message>
204
        <location filename="../Configuration_UI.py" line="578"/>
205
        <source>Minimum Detection Size : </source>
206
        <translation type="unfinished"></translation>
207
    </message>
208
    <message>
209
        <location filename="../Configuration_UI.py" line="579"/>
210
        <source>Drawing Dilate Size : </source>
211
        <translation type="unfinished"></translation>
212
    </message>
213
    <message>
214
        <location filename="../Configuration_UI.py" line="580"/>
215
        <source>Recognition</source>
216
        <translation type="unfinished"></translation>
217
    </message>
218
    <message>
219
        <location filename="../Configuration_UI.py" line="581"/>
140 220
        <source>Nozzle Name Rule</source>
141 221
        <translation type="unfinished"></translation>
142 222
    </message>
143 223
    <message>
144
        <location filename="../Configuration_UI.py" line="493"/>
224
        <location filename="../Configuration_UI.py" line="582"/>
145 225
        <source>Nozzle Name : </source>
146 226
        <translation type="unfinished"></translation>
147 227
    </message>
148 228
    <message>
149
        <location filename="../Configuration_UI.py" line="494"/>
229
        <location filename="../Configuration_UI.py" line="583"/>
150 230
        <source>Note No Tag Rule</source>
151 231
        <translation type="unfinished"></translation>
152 232
    </message>
153 233
    <message>
154
        <location filename="../Configuration_UI.py" line="505"/>
155
        <source>Line No Color</source>
234
        <location filename="../Configuration_UI.py" line="584"/>
235
        <source>Note No Symbol Name : </source>
156 236
        <translation type="unfinished"></translation>
157 237
    </message>
158 238
    <message>
159
        <location filename="../Configuration_UI.py" line="507"/>
160
        <source>Random</source>
239
        <location filename="../Configuration_UI.py" line="585"/>
240
        <source>Note No Expression : </source>
161 241
        <translation type="unfinished"></translation>
162 242
    </message>
163 243
    <message>
164
        <location filename="../Configuration_UI.py" line="508"/>
165
        <source>Property</source>
244
        <location filename="../Configuration_UI.py" line="586"/>
245
        <source>Drain Size</source>
166 246
        <translation type="unfinished"></translation>
167 247
    </message>
168 248
    <message>
169
        <location filename="../Configuration_UI.py" line="466"/>
170
        <source>Line Detection</source>
249
        <location filename="../Configuration_UI.py" line="587"/>
250
        <source>Drain Size : </source>
171 251
        <translation type="unfinished"></translation>
172 252
    </message>
173 253
    <message>
174
        <location filename="../Configuration_UI.py" line="479"/>
175
        <source>Add</source>
254
        <location filename="../Configuration_UI.py" line="588"/>
255
        <source>Supplied by Tag Rule</source>
176 256
        <translation type="unfinished"></translation>
177 257
    </message>
178 258
    <message>
179
        <location filename="../Configuration_UI.py" line="480"/>
180
        <source>Delete</source>
259
        <location filename="../Configuration_UI.py" line="589"/>
260
        <source>Supplied by Vendor : </source>
181 261
        <translation type="unfinished"></translation>
182 262
    </message>
183 263
    <message>
184
        <location filename="../Configuration_UI.py" line="481"/>
185
        <source>Text Detection</source>
264
        <location filename="../Configuration_UI.py" line="590"/>
265
        <source>OPC Tag Rule</source>
186 266
        <translation type="unfinished"></translation>
187 267
    </message>
188 268
    <message>
189
        <location filename="../Configuration_UI.py" line="482"/>
190
        <source>OCR Source : </source>
269
        <location filename="../Configuration_UI.py" line="591"/>
270
        <source>From Prefix : </source>
191 271
        <translation type="unfinished"></translation>
192 272
    </message>
193 273
    <message>
194
        <location filename="../Configuration_UI.py" line="483"/>
195
        <source>Detected string : </source>
274
        <location filename="../Configuration_UI.py" line="592"/>
275
        <source>To Prefix : </source>
196 276
        <translation type="unfinished"></translation>
197 277
    </message>
198 278
    <message>
199
        <location filename="../Configuration_UI.py" line="484"/>
200
        <source>Expansion Size : </source>
279
        <location filename="../Configuration_UI.py" line="593"/>
280
        <source>FROM</source>
201 281
        <translation type="unfinished"></translation>
202 282
    </message>
203 283
    <message>
204
        <location filename="../Configuration_UI.py" line="485"/>
205
        <source>Erosion Size : </source>
284
        <location filename="../Configuration_UI.py" line="594"/>
285
        <source>TO</source>
206 286
        <translation type="unfinished"></translation>
207 287
    </message>
208 288
    <message>
209
        <location filename="../Configuration_UI.py" line="488"/>
210
        <source>Merge Size : </source>
289
        <location filename="../Configuration_UI.py" line="595"/>
290
        <source>Tag Rule</source>
211 291
        <translation type="unfinished"></translation>
212 292
    </message>
213 293
    <message>
214
        <location filename="../Configuration_UI.py" line="491"/>
215
        <source>Recognition</source>
294
        <location filename="../Configuration_UI.py" line="596"/>
295
        <source>Line Style</source>
216 296
        <translation type="unfinished"></translation>
217 297
    </message>
218 298
    <message>
219
        <location filename="../Configuration_UI.py" line="498"/>
220
        <source>Line Style</source>
299
        <location filename="../Configuration_UI.py" line="597"/>
300
        <source>Symbol Style</source>
221 301
        <translation type="unfinished"></translation>
222 302
    </message>
223 303
    <message>
224
        <location filename="../Configuration_UI.py" line="499"/>
304
        <location filename="../Configuration_UI.py" line="598"/>
305
        <source>Instrument Color : </source>
306
        <translation type="unfinished"></translation>
307
    </message>
308
    <message>
309
        <location filename="../Configuration_UI.py" line="599"/>
310
        <source>Equipment Color : </source>
311
        <translation type="unfinished"></translation>
312
    </message>
313
    <message>
314
        <location filename="../Configuration_UI.py" line="600"/>
315
        <source>Symbol Opacity : </source>
316
        <translation type="unfinished"></translation>
317
    </message>
318
    <message>
319
        <location filename="../Configuration_UI.py" line="601"/>
225 320
        <source>Text Style</source>
226 321
        <translation type="unfinished"></translation>
227 322
    </message>
228 323
    <message>
229
        <location filename="../Configuration_UI.py" line="500"/>
324
        <location filename="../Configuration_UI.py" line="602"/>
230 325
        <source>Font Size : </source>
231 326
        <translation type="unfinished"></translation>
232 327
    </message>
233 328
    <message>
234
        <location filename="../Configuration_UI.py" line="501"/>
329
        <location filename="../Configuration_UI.py" line="603"/>
235 330
        <source>Auto</source>
236 331
        <translation type="unfinished"></translation>
237 332
    </message>
238 333
    <message>
239
        <location filename="../Configuration_UI.py" line="502"/>
334
        <location filename="../Configuration_UI.py" line="604"/>
240 335
        <source>Fixed</source>
241 336
        <translation type="unfinished"></translation>
242 337
    </message>
243 338
    <message>
244
        <location filename="../Configuration_UI.py" line="503"/>
339
        <location filename="../Configuration_UI.py" line="605"/>
245 340
        <source>Font Name : </source>
246 341
        <translation type="unfinished"></translation>
247 342
    </message>
248 343
    <message>
249
        <location filename="../Configuration_UI.py" line="504"/>
344
        <location filename="../Configuration_UI.py" line="606"/>
250 345
        <source>Style</source>
251 346
        <translation type="unfinished"></translation>
252 347
    </message>
253 348
    <message>
254
        <location filename="../Configuration_UI.py" line="506"/>
255
        <source>Color Representation</source>
349
        <location filename="../Configuration_UI.py" line="611"/>
350
        <source>Line No Color</source>
256 351
        <translation type="unfinished"></translation>
257 352
    </message>
258 353
    <message>
259
        <location filename="../Configuration_UI.py" line="509"/>
260
        <source>Line Color</source>
354
        <location filename="../Configuration_UI.py" line="608"/>
355
        <source>Color Representation</source>
261 356
        <translation type="unfinished"></translation>
262 357
    </message>
263 358
    <message>
264
        <location filename="../Configuration_UI.py" line="497"/>
265
        <source>Tag Number Rule</source>
359
        <location filename="../Configuration_UI.py" line="609"/>
360
        <source>Random</source>
266 361
        <translation type="unfinished"></translation>
267 362
    </message>
268 363
    <message>
269
        <location filename="../Configuration_UI.py" line="464"/>
270
        <source>Attribute Detection</source>
364
        <location filename="../Configuration_UI.py" line="610"/>
365
        <source>Property</source>
271 366
        <translation type="unfinished"></translation>
272 367
    </message>
368
</context>
369
<context>
370
    <name>ConnectAttr</name>
273 371
    <message>
274
        <location filename="../Configuration_UI.py" line="489"/>
275
        <source>Filter</source>
372
        <location filename="../ConnectAttr_UI.py" line="66"/>
373
        <source>Connect Attribute</source>
276 374
        <translation type="unfinished"></translation>
277 375
    </message>
278 376
    <message>
279
        <location filename="../Configuration_UI.py" line="490"/>
280
        <source>Minimum Detection Size : </source>
377
        <location filename="../ConnectAttr_UI.py" line="67"/>
378
        <source>Update Line Type</source>
281 379
        <translation type="unfinished"></translation>
282 380
    </message>
283 381
    <message>
284
        <location filename="../Configuration_UI.py" line="495"/>
285
        <source>Note No Expression : </source>
382
        <location filename="../ConnectAttr_UI.py" line="68"/>
383
        <source>Start</source>
286 384
        <translation type="unfinished"></translation>
287 385
    </message>
386
</context>
387
<context>
388
    <name>DataTransferDialog</name>
288 389
    <message>
289
        <location filename="../Configuration_UI.py" line="496"/>
290
        <source>Note No Symbol Name : </source>
390
        <location filename="../UI/DataTransfer_UI.py" line="77"/>
391
        <source>Data Transfer</source>
291 392
        <translation type="unfinished"></translation>
292 393
    </message>
293 394
    <message>
294
        <location filename="../Configuration_UI.py" line="478"/>
295
        <source>properties : </source>
395
        <location filename="../UI/DataTransfer_UI.py" line="78"/>
396
        <source>Drawings</source>
296 397
        <translation type="unfinished"></translation>
297 398
    </message>
298 399
    <message>
299
        <location filename="../Configuration_UI.py" line="467"/>
300
        <source>Ignore Small Object Size : </source>
400
        <location filename="../UI/DataTransfer_UI.py" line="79"/>
401
        <source>MSSQL</source>
301 402
        <translation type="unfinished"></translation>
302 403
    </message>
303
</context>
304
<context>
305
    <name>ConnectAttr</name>
306 404
    <message>
307
        <location filename="../ConnectAttr_UI.py" line="63"/>
308
        <source>Start</source>
405
        <location filename="../UI/DataTransfer_UI.py" line="80"/>
406
        <source>Server</source>
309 407
        <translation type="unfinished"></translation>
310 408
    </message>
311 409
    <message>
312
        <location filename="../ConnectAttr_UI.py" line="62"/>
313
        <source>Connect Attribute</source>
410
        <location filename="../UI/DataTransfer_UI.py" line="81"/>
411
        <source>User</source>
314 412
        <translation type="unfinished"></translation>
315 413
    </message>
316
</context>
317
<context>
318
    <name>Dialog</name>
319 414
    <message>
320
        <location filename="../SymbolEditor_UI.py" line="514"/>
321
        <source>Dialog</source>
415
        <location filename="../UI/DataTransfer_UI.py" line="82"/>
416
        <source>Password</source>
322 417
        <translation type="unfinished"></translation>
323 418
    </message>
324 419
    <message>
325
        <location filename="../SymbolEditor_UI.py" line="515"/>
326
        <source>Zoom</source>
420
        <location filename="../UI/DataTransfer_UI.py" line="83"/>
421
        <source>Test Connection</source>
327 422
        <translation type="unfinished"></translation>
328 423
    </message>
424
</context>
425
<context>
426
    <name>Dialog</name>
329 427
    <message>
330
        <location filename="../SymbolEditor_UI.py" line="516"/>
331
        <source>Hand</source>
428
        <location filename="../SymbolEditor_UI.py" line="591"/>
429
        <source>Symbol Editor</source>
332 430
        <translation type="unfinished"></translation>
333 431
    </message>
334 432
    <message>
335
        <location filename="../SymbolEditor_UI.py" line="517"/>
336
        <source>Remove Text</source>
433
        <location filename="../SymbolEditor_UI.py" line="592"/>
434
        <source>Show Guideline</source>
337 435
        <translation type="unfinished"></translation>
338 436
    </message>
339 437
    <message>
340
        <location filename="../SymbolEditor_UI.py" line="518"/>
341
        <source>Init Zoom</source>
438
        <location filename="../SymbolEditor_UI.py" line="593"/>
439
        <source>Normal Color :</source>
342 440
        <translation type="unfinished"></translation>
343 441
    </message>
344 442
    <message>
345
        <location filename="../SymbolEditor_UI.py" line="519"/>
346
        <source>Show Guideline</source>
443
        <location filename="../SymbolEditor_UI.py" line="594"/>
444
        <source>Highlight Color :</source>
347 445
        <translation type="unfinished"></translation>
348 446
    </message>
349 447
    <message>
350
        <location filename="../SymbolEditor_UI.py" line="520"/>
448
        <location filename="../SymbolEditor_UI.py" line="595"/>
351 449
        <source>Symbol Name</source>
352 450
        <translation type="unfinished"></translation>
353 451
    </message>
354 452
    <message>
355
        <location filename="../SymbolEditor_UI.py" line="521"/>
453
        <location filename="../SymbolEditor_UI.py" line="596"/>
356 454
        <source>Threshold(%)</source>
357 455
        <translation type="unfinished"></translation>
358 456
    </message>
359 457
    <message>
360
        <location filename="../SymbolEditor_UI.py" line="522"/>
458
        <location filename="../SymbolEditor_UI.py" line="597"/>
361 459
        <source>Min Feature Count</source>
362 460
        <translation type="unfinished"></translation>
363 461
    </message>
364 462
    <message>
365
        <location filename="../SymbolEditor_UI.py" line="523"/>
463
        <location filename="../SymbolEditor_UI.py" line="598"/>
366 464
        <source>Rotation Count</source>
367 465
        <translation type="unfinished"></translation>
368 466
    </message>
369 467
    <message>
370
        <location filename="../SymbolEditor_UI.py" line="524"/>
468
        <location filename="../SymbolEditor_UI.py" line="599"/>
371 469
        <source>Include Child Symbol</source>
372 470
        <translation type="unfinished"></translation>
373 471
    </message>
374 472
    <message>
375
        <location filename="../SymbolEditor_UI.py" line="525"/>
473
        <location filename="../SymbolEditor_UI.py" line="600"/>
376 474
        <source>Symbol Type</source>
377 475
        <translation type="unfinished"></translation>
378 476
    </message>
379 477
    <message>
380
        <location filename="../SymbolEditor_UI.py" line="526"/>
478
        <location filename="../SymbolEditor_UI.py" line="601"/>
381 479
        <source>Base Symbol</source>
382 480
        <translation type="unfinished"></translation>
383 481
    </message>
384 482
    <message>
385
        <location filename="../SymbolEditor_UI.py" line="527"/>
483
        <location filename="../SymbolEditor_UI.py" line="602"/>
386 484
        <source>Addition Symbol</source>
387 485
        <translation type="unfinished"></translation>
388 486
    </message>
389 487
    <message>
390
        <location filename="../SymbolEditor_UI.py" line="532"/>
488
        <location filename="../SymbolEditor_UI.py" line="607"/>
391 489
        <source>Add</source>
392 490
        <translation type="unfinished"></translation>
393 491
    </message>
394 492
    <message>
395
        <location filename="../SymbolEditor_UI.py" line="529"/>
493
        <location filename="../SymbolEditor_UI.py" line="604"/>
396 494
        <source>Original Point</source>
397 495
        <translation type="unfinished"></translation>
398 496
    </message>
399 497
    <message>
400
        <location filename="../SymbolEditor_UI.py" line="531"/>
498
        <location filename="../SymbolEditor_UI.py" line="606"/>
401 499
        <source>Connection Point</source>
402 500
        <translation type="unfinished"></translation>
403 501
    </message>
404 502
    <message>
405
        <location filename="../SymbolEditor_UI.py" line="533"/>
503
        <location filename="../SymbolEditor_UI.py" line="608"/>
406 504
        <source>Del</source>
407 505
        <translation type="unfinished"></translation>
408 506
    </message>
409 507
    <message>
410
        <location filename="../SymbolEditor_UI.py" line="534"/>
508
        <location filename="../SymbolEditor_UI.py" line="609"/>
411 509
        <source>Include Ins&apos;t Label</source>
412 510
        <translation type="unfinished"></translation>
413 511
    </message>
414 512
    <message>
415
        <location filename="../SymbolEditor_UI.py" line="535"/>
513
        <location filename="../SymbolEditor_UI.py" line="610"/>
416 514
        <source>Exclude</source>
417 515
        <translation type="unfinished"></translation>
418 516
    </message>
419 517
    <message>
420
        <location filename="../SymbolEditor_UI.py" line="536"/>
518
        <location filename="../SymbolEditor_UI.py" line="611"/>
421 519
        <source>Insert Symbol When Create</source>
422 520
        <translation type="unfinished"></translation>
423 521
    </message>
424 522
    <message>
425
        <location filename="../OcrResultDialog_UI.py" line="131"/>
426
        <source>OCR</source>
523
        <location filename="../SymbolEditor_UI.py" line="612"/>
524
        <source>Detect Flip</source>
427 525
        <translation type="unfinished"></translation>
428 526
    </message>
429 527
    <message>
430
        <location filename="../OcrResultDialog_UI.py" line="132"/>
431
        <source>Recognition Object</source>
528
        <location filename="../SymbolEditor_UI.py" line="613"/>
529
        <source>Change Base, Additional</source>
432 530
        <translation type="unfinished"></translation>
433 531
    </message>
434 532
    <message>
435
        <location filename="../OcrResultDialog_UI.py" line="135"/>
436
        <source>Recognition Result</source>
533
        <location filename="../SymbolEditor_UI.py" line="614"/>
534
        <source>Symbol Info on Drawing</source>
437 535
        <translation type="unfinished"></translation>
438 536
    </message>
439 537
    <message>
440
        <location filename="../OcrResultDialog_UI.py" line="136"/>
441
        <source>Save OCR Training Image</source>
538
        <location filename="../SymbolEditor_UI.py" line="615"/>
539
        <source>Change Item on Drawing without DB Update</source>
540
        <translation type="unfinished"></translation>
541
    </message>
542
    <message>
543
        <location filename="../OcrResultDialog_UI.py" line="140"/>
544
        <source>OCR</source>
545
        <translation type="unfinished"></translation>
546
    </message>
547
    <message>
548
        <location filename="../OcrResultDialog_UI.py" line="141"/>
549
        <source>Recognition Object</source>
442 550
        <translation type="unfinished"></translation>
443 551
    </message>
444 552
    <message encoding="UTF-8">
445
        <location filename="../OcrResultDialog_UI.py" line="133"/>
553
        <location filename="../OcrResultDialog_UI.py" line="142"/>
446 554
        <source>반시계 방향 회전</source>
447 555
        <translation type="unfinished"></translation>
448 556
    </message>
449 557
    <message encoding="UTF-8">
450
        <location filename="../OcrResultDialog_UI.py" line="134"/>
558
        <location filename="../OcrResultDialog_UI.py" line="143"/>
451 559
        <source>시계 방향 회전</source>
452 560
        <translation type="unfinished"></translation>
453 561
    </message>
562
    <message>
563
        <location filename="../OcrResultDialog_UI.py" line="144"/>
564
        <source>Recognition Result</source>
565
        <translation type="unfinished"></translation>
566
    </message>
... 이 차이점은 표시할 수 있는 최대 줄수를 초과해서 이 차이점은 잘렸습니다.

내보내기 Unified diff

클립보드 이미지 추가 (최대 크기: 500 MB)