개정판 3a04bc04
issue #49: add user dictionary table and fix symbol labeling if 663
Change-Id: Ic5cbf6a4cbbe4438872759e671ed8fd803ad789e
DTI_PID/DTI_PID/AppDocData.py | ||
---|---|---|
790 | 790 |
|
791 | 791 |
fileNames = os.listdir(os.path.join(os.path.dirname(os.path.realpath(__file__)), 'Scripts')) |
792 | 792 |
for fileName in fileNames: |
793 |
if fileName.endswith(".sql") and (1 == len(os.path.splitext(fileName)[0].split('.'))):
|
|
793 |
if fileName.endswith(".sql") and ('SQLite_Project' == os.path.splitext(fileName)[0].split('.')[0]):
|
|
794 | 794 |
try: |
795 | 795 |
file = QFile( |
796 | 796 |
os.path.join(os.path.dirname(os.path.realpath(__file__)), 'Scripts', fileName)) |
DTI_PID/DTI_PID/CodeTableDialog.py | ||
---|---|---|
15 | 15 |
This code table dialog class |
16 | 16 |
""" |
17 | 17 |
|
18 |
CODE_TABLES = ('Nominal Diameter', 'Fluid Code', 'Insulation Purpose', 'PnID Number', 'Piping Materials Class', 'Unit Number', 'ValveOperCodes', 'EqpTagNames', 'ReservedWords') |
|
18 |
CODE_TABLES = ('Nominal Diameter', 'Fluid Code', 'Insulation Purpose', 'PnID Number', 'Piping Materials Class', 'Unit Number', 'ValveOperCodes', 'EqpTagNames', 'ReservedWords', 'Dictionary')
|
|
19 | 19 |
|
20 | 20 |
def __init__(self, parent): |
21 | 21 |
QDialog.__init__(self, parent) |
DTI_PID/DTI_PID/CodeTable_UI.py | ||
---|---|---|
1 | 1 |
# -*- coding: utf-8 -*- |
2 | 2 |
|
3 |
# Form implementation generated from reading ui file '.\UI\CodeTable.ui'
|
|
3 |
# Form implementation generated from reading ui file './UI/CodeTable.ui'
|
|
4 | 4 |
# |
5 |
# Created by: PyQt5 UI code generator 5.13.0
|
|
5 |
# Created by: PyQt5 UI code generator 5.11.3
|
|
6 | 6 |
# |
7 | 7 |
# WARNING! All changes made in this file will be lost! |
8 | 8 |
|
9 |
|
|
10 | 9 |
from PyQt5 import QtCore, QtGui, QtWidgets |
11 | 10 |
|
12 |
|
|
13 | 11 |
class Ui_CodeTableDialog(object): |
14 | 12 |
def setupUi(self, CodeTableDialog): |
15 | 13 |
CodeTableDialog.setObjectName("CodeTableDialog") |
... | ... | |
141 | 139 |
self.gridLayout_11.addWidget(self.groupBox_6, 0, 0, 1, 1) |
142 | 140 |
self.gridLayout_12.addLayout(self.gridLayout_11, 0, 0, 1, 1) |
143 | 141 |
self.tabWidget.addTab(self.tabUnitNumber, "") |
144 |
self.tab = QtWidgets.QWidget() |
|
145 |
self.tab.setObjectName("tab")
|
|
146 |
self.gridLayout_19 = QtWidgets.QGridLayout(self.tab) |
|
142 |
self.tabValveOperCodes = QtWidgets.QWidget()
|
|
143 |
self.tabValveOperCodes.setObjectName("tabValveOperCodes")
|
|
144 |
self.gridLayout_19 = QtWidgets.QGridLayout(self.tabValveOperCodes)
|
|
147 | 145 |
self.gridLayout_19.setObjectName("gridLayout_19") |
148 |
self.groupBox_7 = QtWidgets.QGroupBox(self.tab) |
|
146 |
self.groupBox_7 = QtWidgets.QGroupBox(self.tabValveOperCodes)
|
|
149 | 147 |
self.groupBox_7.setObjectName("groupBox_7") |
150 | 148 |
self.gridLayout_20 = QtWidgets.QGridLayout(self.groupBox_7) |
151 | 149 |
self.gridLayout_20.setObjectName("gridLayout_20") |
... | ... | |
156 | 154 |
self.tableWidgetValveOperCodes.verticalHeader().setVisible(False) |
157 | 155 |
self.gridLayout_20.addWidget(self.tableWidgetValveOperCodes, 0, 0, 1, 1) |
158 | 156 |
self.gridLayout_19.addWidget(self.groupBox_7, 0, 0, 1, 1) |
159 |
self.tabWidget.addTab(self.tab, "") |
|
160 |
self.tab_2 = QtWidgets.QWidget()
|
|
161 |
self.tab_2.setObjectName("tab_2")
|
|
162 |
self.gridLayout_22 = QtWidgets.QGridLayout(self.tab_2)
|
|
157 |
self.tabWidget.addTab(self.tabValveOperCodes, "")
|
|
158 |
self.tabEqpTagNames = QtWidgets.QWidget()
|
|
159 |
self.tabEqpTagNames.setObjectName("tabEqpTagNames")
|
|
160 |
self.gridLayout_22 = QtWidgets.QGridLayout(self.tabEqpTagNames)
|
|
163 | 161 |
self.gridLayout_22.setObjectName("gridLayout_22") |
164 |
self.groupBox_8 = QtWidgets.QGroupBox(self.tab_2)
|
|
162 |
self.groupBox_8 = QtWidgets.QGroupBox(self.tabEqpTagNames)
|
|
165 | 163 |
self.groupBox_8.setObjectName("groupBox_8") |
166 | 164 |
self.gridLayout_21 = QtWidgets.QGridLayout(self.groupBox_8) |
167 | 165 |
self.gridLayout_21.setObjectName("gridLayout_21") |
... | ... | |
172 | 170 |
self.tableWidgetEqpTagNames.verticalHeader().setVisible(False) |
173 | 171 |
self.gridLayout_21.addWidget(self.tableWidgetEqpTagNames, 0, 0, 1, 1) |
174 | 172 |
self.gridLayout_22.addWidget(self.groupBox_8, 0, 0, 1, 1) |
175 |
self.tabWidget.addTab(self.tab_2, "")
|
|
176 |
self.tab_3 = QtWidgets.QWidget()
|
|
177 |
self.tab_3.setObjectName("tab_3")
|
|
178 |
self.gridLayout_24 = QtWidgets.QGridLayout(self.tab_3)
|
|
173 |
self.tabWidget.addTab(self.tabEqpTagNames, "")
|
|
174 |
self.tabReservedWord = QtWidgets.QWidget()
|
|
175 |
self.tabReservedWord.setObjectName("tabReservedWord")
|
|
176 |
self.gridLayout_24 = QtWidgets.QGridLayout(self.tabReservedWord)
|
|
179 | 177 |
self.gridLayout_24.setObjectName("gridLayout_24") |
180 |
self.groupBox_9 = QtWidgets.QGroupBox(self.tab_3)
|
|
178 |
self.groupBox_9 = QtWidgets.QGroupBox(self.tabReservedWord)
|
|
181 | 179 |
self.groupBox_9.setObjectName("groupBox_9") |
182 | 180 |
self.gridLayout_23 = QtWidgets.QGridLayout(self.groupBox_9) |
183 | 181 |
self.gridLayout_23.setObjectName("gridLayout_23") |
... | ... | |
189 | 187 |
self.tableWidgetReservedWords.verticalHeader().setVisible(False) |
190 | 188 |
self.gridLayout_23.addWidget(self.tableWidgetReservedWords, 0, 0, 1, 1) |
191 | 189 |
self.gridLayout_24.addWidget(self.groupBox_9, 0, 0, 1, 1) |
192 |
self.tabWidget.addTab(self.tab_3, "") |
|
190 |
self.tabWidget.addTab(self.tabReservedWord, "") |
|
191 |
self.tabDIctionary = QtWidgets.QWidget() |
|
192 |
self.tabDIctionary.setObjectName("tabDIctionary") |
|
193 |
self.gridLayout_25 = QtWidgets.QGridLayout(self.tabDIctionary) |
|
194 |
self.gridLayout_25.setObjectName("gridLayout_25") |
|
195 |
self.groupBox_10 = QtWidgets.QGroupBox(self.tabDIctionary) |
|
196 |
self.groupBox_10.setObjectName("groupBox_10") |
|
197 |
self.gridLayout_26 = QtWidgets.QGridLayout(self.groupBox_10) |
|
198 |
self.gridLayout_26.setObjectName("gridLayout_26") |
|
199 |
self.tableWidgetDictionary = QtWidgets.QTableWidget(self.groupBox_10) |
|
200 |
self.tableWidgetDictionary.setObjectName("tableWidgetDictionary") |
|
201 |
self.tableWidgetDictionary.setColumnCount(3) |
|
202 |
self.tableWidgetDictionary.setRowCount(0) |
|
203 |
item = QtWidgets.QTableWidgetItem() |
|
204 |
self.tableWidgetDictionary.setHorizontalHeaderItem(0, item) |
|
205 |
item = QtWidgets.QTableWidgetItem() |
|
206 |
self.tableWidgetDictionary.setHorizontalHeaderItem(1, item) |
|
207 |
item = QtWidgets.QTableWidgetItem() |
|
208 |
self.tableWidgetDictionary.setHorizontalHeaderItem(2, item) |
|
209 |
self.gridLayout_26.addWidget(self.tableWidgetDictionary, 0, 0, 1, 1) |
|
210 |
self.gridLayout_25.addWidget(self.groupBox_10, 0, 0, 1, 1) |
|
211 |
self.tabWidget.addTab(self.tabDIctionary, "") |
|
193 | 212 |
self.gridLayout.addWidget(self.tabWidget, 0, 0, 1, 1) |
194 | 213 |
self.buttonBox = QtWidgets.QDialogButtonBox(CodeTableDialog) |
195 | 214 |
self.buttonBox.setFocusPolicy(QtCore.Qt.TabFocus) |
... | ... | |
220 | 239 |
self.groupBox_6.setTitle(_translate("CodeTableDialog", "Unit Number")) |
221 | 240 |
self.tabWidget.setTabText(self.tabWidget.indexOf(self.tabUnitNumber), _translate("CodeTableDialog", "Unit Number")) |
222 | 241 |
self.groupBox_7.setTitle(_translate("CodeTableDialog", "Valve Oper Code")) |
223 |
self.tabWidget.setTabText(self.tabWidget.indexOf(self.tab), _translate("CodeTableDialog", "Valve Oper Codes")) |
|
242 |
self.tabWidget.setTabText(self.tabWidget.indexOf(self.tabValveOperCodes), _translate("CodeTableDialog", "Valve Oper Codes"))
|
|
224 | 243 |
self.groupBox_8.setTitle(_translate("CodeTableDialog", "Tag Name")) |
225 |
self.tabWidget.setTabText(self.tabWidget.indexOf(self.tab_2), _translate("CodeTableDialog", "Eqp Tag Names"))
|
|
244 |
self.tabWidget.setTabText(self.tabWidget.indexOf(self.tabEqpTagNames), _translate("CodeTableDialog", "Eqp Tag Names"))
|
|
226 | 245 |
self.groupBox_9.setTitle(_translate("CodeTableDialog", "Reserved Word")) |
227 |
self.tabWidget.setTabText(self.tabWidget.indexOf(self.tab_3), _translate("CodeTableDialog", "Reserved Words")) |
|
246 |
self.tabWidget.setTabText(self.tabWidget.indexOf(self.tabReservedWord), _translate("CodeTableDialog", "Reserved Words")) |
|
247 |
self.groupBox_10.setTitle(_translate("CodeTableDialog", "Dictionary")) |
|
248 |
item = self.tableWidgetDictionary.horizontalHeaderItem(0) |
|
249 |
item.setText(_translate("CodeTableDialog", "1")) |
|
250 |
item = self.tableWidgetDictionary.horizontalHeaderItem(1) |
|
251 |
item.setText(_translate("CodeTableDialog", "2")) |
|
252 |
item = self.tableWidgetDictionary.horizontalHeaderItem(2) |
|
253 |
item.setText(_translate("CodeTableDialog", "3")) |
|
254 |
self.tabWidget.setTabText(self.tabWidget.indexOf(self.tabDIctionary), _translate("CodeTableDialog", "Dictionary")) |
|
255 |
|
|
228 | 256 |
import MainWindow_rc |
257 |
|
|
258 |
if __name__ == "__main__": |
|
259 |
import sys |
|
260 |
app = QtWidgets.QApplication(sys.argv) |
|
261 |
CodeTableDialog = QtWidgets.QDialog() |
|
262 |
ui = Ui_CodeTableDialog() |
|
263 |
ui.setupUi(CodeTableDialog) |
|
264 |
CodeTableDialog.show() |
|
265 |
sys.exit(app.exec_()) |
|
266 |
|
DTI_PID/DTI_PID/Scripts/MSSQL/ID2.sql | ||
---|---|---|
1948 | 1948 |
Description TEXT, |
1949 | 1949 |
Allowables TEXT |
1950 | 1950 |
); |
1951 |
|
|
1952 |
CREATE TABLE Dictionary ( |
|
1953 |
UID VARCHAR (37) CONSTRAINT Dictionary_PK PRIMARY KEY |
|
1954 |
NOT NULL, |
|
1955 |
Code VARCHAR (32) NOT NULL |
|
1956 |
UNIQUE, |
|
1957 |
Description TEXT, |
|
1958 |
Allowables TEXT |
|
1959 |
); |
DTI_PID/DTI_PID/Scripts/SQLite_Project.tables.sql | ||
---|---|---|
1 |
CREATE TABLE IF NOT EXISTS `Dictionary` ( |
|
2 |
`UID` varchar (37) NOT NULL, |
|
3 |
`Code` varchar (32) NOT NULL UNIQUE, |
|
4 |
`Description` TEXT, |
|
5 |
`Allowables` TEXT, PRIMARY KEY(`UID`) |
|
6 |
); |
DTI_PID/DTI_PID/TextItemFactory.py | ||
---|---|---|
48 | 48 |
text = textInfo.getText() |
49 | 49 |
docData = AppDocData.instance() |
50 | 50 |
|
51 |
''' |
|
51 | 52 |
""" create normal text item if it is not in drawing area """ |
52 | 53 |
area = docData.getArea('Drawing') |
53 | 54 |
if area is None or not area.contains([textInfo.getX(), textInfo.getY()]): |
54 | 55 |
item = QEngineeringTextItem() |
55 | 56 |
item.setToolTip(text) |
56 | 57 |
item.setPlainText(text) |
58 |
''' |
|
57 | 59 |
|
58 | 60 |
configs = docData.getConfigs('Size', 'Delimiter') |
59 | 61 |
sizeDelimiter = configs[0].value.upper() if 1 == len(configs) else None |
... | ... | |
133 | 135 |
item.setToolTip('Valve Operation Code = {}'.format(text)) |
134 | 136 |
item.setPlainText(text) |
135 | 137 |
else: |
138 |
text = self.fix_dictionary_word(text) |
|
136 | 139 |
item = QEngineeringTextItem() |
137 | 140 |
item.setToolTip(text) |
138 | 141 |
item.setPlainText(text) |
... | ... | |
350 | 353 |
|
351 | 354 |
return True if found else False |
352 | 355 |
|
356 |
def fix_dictionary_word(self, text): |
|
357 |
""" fix if given text is in dictionary """ |
|
358 |
from CodeTables import CodeTable |
|
359 |
|
|
360 |
found = CodeTable.instance('Dictionary').find_match_exactly(text) |
|
361 |
|
|
362 |
return found if found else text |
|
363 |
|
|
353 | 364 |
def is_reserved_word(self, text): |
354 | 365 |
""" check if given text is reserved words """ |
355 | 366 |
from CodeTables import CodeTable |
DTI_PID/DTI_PID/TrainingSymbolEditorDialog.py | ||
---|---|---|
237 | 237 |
return |
238 | 238 |
|
239 | 239 |
label = self.ui.lineEditChar.text() |
240 |
if label != '' and label != 'None':
|
|
240 |
if label == '' or label == 'None':
|
|
241 | 241 |
return |
242 | 242 |
|
243 | 243 |
items[0].char = label |
... | ... | |
308 | 308 |
xml.append(segmentedNode) |
309 | 309 |
|
310 | 310 |
labelContent = [] |
311 |
counts = {} |
|
311 | 312 |
for item in items: |
312 | 313 |
if type(item) is QTrainingBoxItem: |
313 | 314 |
rect = item.rect() |
314 | 315 |
label, xMin, yMin, xMax, yMax = item.char, int(rect.x()), int(rect.y()), int(rect.x()) + int(rect.width()), int(rect.y()) + int(rect.height()) |
315 | 316 |
|
317 |
if label == 'None' or label == '': |
|
318 |
continue |
|
316 | 319 |
if label not in labelContent: |
317 | 320 |
labelContent.append(label) |
321 |
counts[label] = 1 |
|
322 |
else: |
|
323 |
counts[label] = counts[label] + 1 |
|
318 | 324 |
|
319 | 325 |
objectNode = Element('object') |
320 | 326 |
nameNode = Element('name') |
... | ... | |
352 | 358 |
modifiedTime = str(datetime.datetime.strptime(time.ctime(os.path.getmtime(self.trainingLabelPath)), "%a %b %d %H:%M:%S %Y")) |
353 | 359 |
self.dateItem.setText(modifiedTime) |
354 | 360 |
|
355 |
labels = ','.join(labelContent) |
|
361 |
labelCount = [label + ':' + str(counts[label]) for label in labelContent] |
|
362 |
labels = ','.join(labelCount) |
|
356 | 363 |
self.boxItem.setText(labels) |
357 | 364 |
|
358 | 365 |
self.isChanged = False |
... | ... | |
459 | 466 |
self.ui.spinBoxWidth.setValue(self.ui.spinBoxWidth.value() + 1) |
460 | 467 |
elif event.key() == Qt.Key_Down: |
461 | 468 |
self.ui.spinBoxWidth.setValue(self.ui.spinBoxWidth.value() - 1) |
462 |
elif event.key() == Qt.Key_Return: |
|
463 |
pass |
|
469 |
elif event.key() == Qt.Key_Return and not self.ui.lineEditChar.hasFocus(): |
|
470 |
if self.ui.tableWidget.selectedItems(): |
|
471 |
self.isChanged = True |
|
472 |
self.onCharChanged(self.ui.tableWidget.selectedItems()[0].text()) |
|
464 | 473 |
except Exception as ex: |
465 | 474 |
print('error occurred({}) in {}:{}'.format(ex, sys.exc_info()[-1].tb_frame.f_code.co_filename, sys.exc_info()[-1].tb_lineno)) |
466 | 475 |
from App import App |
DTI_PID/DTI_PID/TrainingSymbolImageListDialog.py | ||
---|---|---|
70 | 70 |
self.ui.lineEditTargetLabel.setEnabled(True) |
71 | 71 |
self.ui.lineEditTargetLabel.setHidden(False) |
72 | 72 |
|
73 |
appDocData = AppDocData.instance() |
|
74 |
project = appDocData.getCurrentProject() |
|
75 |
dataList = appDocData.getTrainingSymbolFileList() |
|
76 |
|
|
77 | 73 |
# for reset chart |
78 |
self.labelList = [] |
|
79 |
for labelCounts in self.labelList: |
|
80 |
labelCount = [labelCounts[0], labelCounts[1]] |
|
81 |
self.labelList.append(labelCount) |
|
82 |
for data in dataList: |
|
83 |
if data.find('.xml') is not -1: |
|
84 |
labelPath = os.path.join(project.getTrainingSymbolFilePath(), data) |
|
85 |
xml = parse(labelPath) |
|
86 |
root = xml.getroot() |
|
87 |
objects = list(root.iter('object')) |
|
88 |
for object_node in objects: |
|
89 |
name = object_node.find('name').text |
|
90 |
matches = [_label for _label in self.labelList if _label[0] == name] |
|
91 |
if matches: |
|
92 |
matches[0][1] = matches[0][1] + 1 |
|
93 |
else: |
|
94 |
self.labelList.append([name, 1]) |
|
95 | 74 |
self.makeChart() |
96 | 75 |
|
97 | 76 |
''' |
... | ... | |
131 | 110 |
self.ui.tableWidgetList.setItem(row, 2, QTableWidgetItem(modifiedTime)) |
132 | 111 |
|
133 | 112 |
labels = [] |
113 |
counts = {} |
|
134 | 114 |
xml = parse(labelPath) |
135 | 115 |
root = xml.getroot() |
136 | 116 |
objects = list(root.iter('object')) |
... | ... | |
138 | 118 |
name = object_node.find('name').text |
139 | 119 |
if name not in labels: |
140 | 120 |
labels.append(name) |
141 |
labelContent = QTableWidgetItem(','.join(labels)) |
|
121 |
counts[name] = 1 |
|
122 |
else: |
|
123 |
counts[name] = counts[name] + 1 |
|
124 |
labelCount = [label + ':' + str(counts[label]) for label in labels] |
|
125 |
labelContent = QTableWidgetItem(','.join(labelCount)) |
|
142 | 126 |
labelContent.setFont(QFont('Consolas', 9, QFont.Bold)) |
143 | 127 |
self.ui.tableWidgetList.setItem(row, 3, QTableWidgetItem(labelContent)) |
144 | 128 |
break |
... | ... | |
174 | 158 |
os.remove(labelName) |
175 | 159 |
self.ui.tableWidgetList.item(row, 2).setText('') |
176 | 160 |
self.ui.tableWidgetList.item(row, 3).setText('') |
177 |
#self.listUpdate()
|
|
161 |
self.listUpdate() |
|
178 | 162 |
except Exception as ex: |
179 | 163 |
from App import App |
180 | 164 |
from AppDocData import MessageType |
... | ... | |
207 | 191 |
if os.path.isfile(labelName): |
208 | 192 |
os.remove(labelName) |
209 | 193 |
self.ui.tableWidgetList.removeRow(row) |
210 |
#self.listUpdate()
|
|
194 |
self.listUpdate() |
|
211 | 195 |
except Exception as ex: |
212 | 196 |
from App import App |
213 | 197 |
from AppDocData import MessageType |
... | ... | |
316 | 300 |
@date 2018.11.19 |
317 | 301 |
''' |
318 | 302 |
try: |
303 |
appDocData = AppDocData.instance() |
|
304 |
project = appDocData.getCurrentProject() |
|
305 |
dataList = appDocData.getTrainingSymbolFileList() |
|
306 |
|
|
307 |
self.labelList = [] |
|
308 |
for labelCounts in self.labelList: |
|
309 |
labelCount = [labelCounts[0], labelCounts[1]] |
|
310 |
self.labelList.append(labelCount) |
|
311 |
for data in dataList: |
|
312 |
if data.find('.xml') is not -1: |
|
313 |
labelPath = os.path.join(project.getTrainingSymbolFilePath(), data) |
|
314 |
xml = parse(labelPath) |
|
315 |
root = xml.getroot() |
|
316 |
objects = list(root.iter('object')) |
|
317 |
for object_node in objects: |
|
318 |
name = object_node.find('name').text |
|
319 |
matches = [_label for _label in self.labelList if _label[0] == name] |
|
320 |
if matches: |
|
321 |
matches[0][1] = matches[0][1] + 1 |
|
322 |
else: |
|
323 |
self.labelList.append([name, 1]) |
|
324 |
|
|
319 | 325 |
barList = [] |
320 | 326 |
categories = [] |
321 | 327 |
for char in self.labelList: |
... | ... | |
412 | 418 |
try: |
413 | 419 |
dialog = QTrainingSymbolEditorDialog(self, drawingPath, traininglabelPath, boundarySymbolData, self.ui.tableWidgetList.item(row, 2), self.ui.tableWidgetList.item(row, 3)) |
414 | 420 |
dialog.exec_() |
421 |
self.makeChart() |
|
415 | 422 |
except Exception as ex: |
416 | 423 |
from App import App |
417 | 424 |
from AppDocData import MessageType |
DTI_PID/DTI_PID/UI/CodeTable.ui | ||
---|---|---|
236 | 236 |
</item> |
237 | 237 |
</layout> |
238 | 238 |
</widget> |
239 |
<widget class="QWidget" name="tab"> |
|
239 |
<widget class="QWidget" name="tabValveOperCodes">
|
|
240 | 240 |
<attribute name="title"> |
241 | 241 |
<string>Valve Oper Codes</string> |
242 | 242 |
</attribute> |
... | ... | |
265 | 265 |
</item> |
266 | 266 |
</layout> |
267 | 267 |
</widget> |
268 |
<widget class="QWidget" name="tab_2">
|
|
268 |
<widget class="QWidget" name="tabEqpTagNames">
|
|
269 | 269 |
<attribute name="title"> |
270 | 270 |
<string>Eqp Tag Names</string> |
271 | 271 |
</attribute> |
... | ... | |
294 | 294 |
</item> |
295 | 295 |
</layout> |
296 | 296 |
</widget> |
297 |
<widget class="QWidget" name="tab_3">
|
|
297 |
<widget class="QWidget" name="tabReservedWord">
|
|
298 | 298 |
<attribute name="title"> |
299 | 299 |
<string>Reserved Words</string> |
300 | 300 |
</attribute> |
... | ... | |
327 | 327 |
</item> |
328 | 328 |
</layout> |
329 | 329 |
</widget> |
330 |
<widget class="QWidget" name="tabDIctionary"> |
|
331 |
<attribute name="title"> |
|
332 |
<string>Dictionary</string> |
|
333 |
</attribute> |
|
334 |
<layout class="QGridLayout" name="gridLayout_25"> |
|
335 |
<item row="0" column="0"> |
|
336 |
<widget class="QGroupBox" name="groupBox_10"> |
|
337 |
<property name="title"> |
|
338 |
<string>Dictionary</string> |
|
339 |
</property> |
|
340 |
<layout class="QGridLayout" name="gridLayout_26"> |
|
341 |
<item row="0" column="0"> |
|
342 |
<widget class="QTableWidget" name="tableWidgetDictionary"> |
|
343 |
<column> |
|
344 |
<property name="text"> |
|
345 |
<string>1</string> |
|
346 |
</property> |
|
347 |
</column> |
|
348 |
<column> |
|
349 |
<property name="text"> |
|
350 |
<string>2</string> |
|
351 |
</property> |
|
352 |
</column> |
|
353 |
<column> |
|
354 |
<property name="text"> |
|
355 |
<string>3</string> |
|
356 |
</property> |
|
357 |
</column> |
|
358 |
</widget> |
|
359 |
</item> |
|
360 |
</layout> |
|
361 |
</widget> |
|
362 |
</item> |
|
363 |
</layout> |
|
364 |
</widget> |
|
330 | 365 |
</widget> |
331 | 366 |
</item> |
332 | 367 |
<item row="1" column="0"> |
ID2.wxs | ||
---|---|---|
595 | 595 |
<Component Id="cmp9328CFFA10A72DCA6244A094882E743E" Directory="dir33A2F09B010813323099475AA1D7838F" Guid="AC86719D-15F2-4601-92DC-9B3E47BD5E99" Win64='yes'> |
596 | 596 |
<File Id="filB15D33FCA16268EADB7561290B6A042A" KeyPath="yes" Source=".\dist\App\Scripts\App.Configuration.sql" /> |
597 | 597 |
</Component> |
598 |
<Component Id="cmp6D9CB04DA9E84CA5977C5A83C0B48674" Directory="dir33A2F09B010813323099475AA1D7838F" Guid="0E6C41F5-6BF1-4CD0-AD81-915EC9843E77" Win64='yes'> |
|
599 |
<File Id="filDB325694A01D417D8396804B50B0D978" KeyPath="yes" Source=".\dist\App\Scripts\SQLite_Project.tables.sql" /> |
|
600 |
</Component> |
|
598 | 601 |
<Component Id="cmp6232EB62D3B54FC2A5CBD4347BDA0E5B" Directory="dir33A2F09B010813323099475AA1D7838F" Guid="2AE1098A-DB3D-444B-9290-6C6C2C2D67DD" Win64='yes'> |
599 | 602 |
<File Id="filB2A004E58F2B490EB6B6A46CDDCB385F" KeyPath="yes" Source=".\dist\App\Scripts\Project.Projects.sql" /> |
600 | 603 |
</Component> |
내보내기 Unified diff