1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
|
# Copyright (C) 2022 The Qt Company Ltd.
# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only WITH Qt-GPL-exception-1.0
source("../../shared/qtcreator.py")
source("../../shared/suites_qtta.py")
def handlePackagingMessageBoxes():
if platform.system() == "Darwin":
messageBox = "{type='QMessageBox' unnamed='1' visible='1'}"
else:
messageBox = ("{type='QMessageBox' unnamed='1' visible='1' "
"windowTitle='Add Packaging Files to Project'}")
while (True):
try:
waitForObject(messageBox, 3000)
clickButton(waitForObject("{text='Yes' type='QPushButton' unnamed='1' visible='1' "
"window=%s}" % messageBox))
except:
break
def openExample(examplesLineEdit, input, exampleRegex, exampleName, waitForChildCount=0):
replaceEditorContent(examplesLineEdit, input)
listView = waitForObject("{type='QListView' name='AllItemsView' visible='1' "
"window=':Qt Creator_Core::Internal::MainWindow'}")
filterModel = __childrenOfType__(listView, 'QSortFilterProxyModel')
if len(filterModel) != 1:
test.fatal("Failed to find filter proxy model.")
return None
filterModel = filterModel[0]
if waitForChildCount > 0:
waitFor("filterModel.rowCount() == waitForChildCount", 3000)
waitFor('findExampleOrTutorial(listView, exampleRegex) is not None', 3000)
example = findExampleOrTutorial(listView, exampleRegex, True)
if test.verify(example is not None, "Verifying: Example (%s) is shown." % exampleName):
mouseClick(waitForObjectItem(listView, str(example.text)))
handlePackagingMessageBoxes()
helpWidget = waitForObject(":Help Widget_Help::Internal::HelpWidget")
test.verify(waitFor('exampleName in str(helpWidget.windowTitle)', 5000),
"Verifying: The example application is opened inside Help.")
sendEvent("QCloseEvent", helpWidget)
# assume the correct kit is selected, hit Configure Project
clickButton(waitForObject(":Qt Creator.Configure Project_QPushButton"))
return example
def main():
# open Qt Creator
startQC()
if not startedWithoutPluginError():
return
qchs = []
for p in QtPath.getPaths(QtPath.DOCS):
qchs.extend([os.path.join(p, "qtopengl.qch"), os.path.join(p, "qtwidgets.qch")])
addHelpDocumentation(qchs)
setFixedHelpViewer(HelpViewer.HELPMODE)
if not test.verify(object.exists(getWelcomeScreenSideBarButton('Get Started')),
"Verifying: Qt Creator displays Welcome Page with Getting Started."):
test.fatal("Something's wrong - leaving test.")
invokeMenuItem("File", "Exit")
return
# select "Examples" topic
switchToSubMode('Examples')
expect = (("QListView", "unnamed='1' visible='1' window=':Qt Creator_Core::Internal::MainWindow'",
"examples list"),
("QLineEdit", "placeholderText='Search in Examples...'", "examples search line edit"),
("QComboBox", "currentText~='.*Qt.*' visible='1'", "Qt version combo box"))
search = "{type='%s' %s}"
test.verify(all(map(checkIfObjectExists, (search % (exp[0], exp[1]) for exp in expect))),
"Verifying: 'Examples' topic is opened and the examples are shown.")
examplesLineEdit = waitForObject(search % (expect[1][0], expect[1][1]))
mouseClick(examplesLineEdit)
combo = waitForObject(search % (expect[2][0], expect[2][1]))
test.log("Using examples from Kit %s." % str(combo.currentText))
replaceEditorContent(examplesLineEdit, "qwerty")
listView = waitForObject("{type='QListView' name='AllItemsView'}")
waitFor('findExampleOrTutorial(listView, ".*") is None', 3000)
example = findExampleOrTutorial(listView, ".*", True)
test.verify(example is None, "Verifying: No example is shown.")
proFiles = [os.path.join(p, "opengl", "2dpainting", "2dpainting.pro")
for p in QtPath.getPaths(QtPath.EXAMPLES)]
cleanUpUserFiles(proFiles)
example = openExample(examplesLineEdit, "2d painting", "2D Painting.*", "2D Painting Example")
if example is not None:
test.verify(checkIfObjectExists("{column='0' container=':Qt Creator_Utils::NavigationTreeView'"
" text='2dpainting' type='QModelIndex'}"),
"Verifying: The project is shown in 'Edit' mode.")
invokeContextMenuOnProject('2dpainting', 'Close Project "2dpainting"')
navTree = waitForObject(":Qt Creator_Utils::NavigationTreeView")
waitFor("navTree.model().rowCount(navTree.rootIndex()) == 0", 2000)
test.verify(not checkIfObjectItemExists(":Qt Creator_Utils::NavigationTreeView", "2dpainting"),
"Verifying: The first example is closed.")
# go to "Welcome" page and choose another example
switchViewTo(ViewConstants.WELCOME)
proFiles = [os.path.join(p, "widgets", "itemviews", "addressbook", "addressbook.pro")
for p in QtPath.getPaths(QtPath.EXAMPLES)]
cleanUpUserFiles(proFiles)
examplesLineEdit = waitForObject(search %(expect[1][0], expect[1][1]))
example = openExample(examplesLineEdit, "address book", "(0000 )?Address Book.*",
"Address Book Example", 3)
if example is not None:
# close second example application
test.verify(checkIfObjectExists("{column='0' container=':Qt Creator_Utils::NavigationTreeView'"
" text='propertyanimation' type='QModelIndex'}", False) and
checkIfObjectExists("{column='0' container=':Qt Creator_Utils::NavigationTreeView'"
" text='addressbook' type='QModelIndex'}"),
"Verifying: The project is shown in 'Edit' mode while old project isn't.")
invokeContextMenuOnProject('addressbook', 'Close Project "addressbook"')
navTree = waitForObject(":Qt Creator_Utils::NavigationTreeView")
waitFor("navTree.model().rowCount(navTree.rootIndex()) == 0", 2000)
test.verify(not checkIfObjectItemExists(":Qt Creator_Utils::NavigationTreeView", "addressbook"),
"Verifying: The second example is closed.")
# exit Qt Creator
invokeMenuItem("File", "Exit")
|