Skip to content
GitLab
Projects
Groups
Snippets
/
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
Menu
Open sidebar
Tobias Hunger
qt-creator
Commits
502bc0df
Commit
502bc0df
authored
Dec 08, 2008
by
hjk
Browse files
Merge branch '0.9.1-beta' of git@scm.dev.nokia.troll.no:creator/mainline into 0.9.1-beta
parents
e07976f6
be9dfc8c
Changes
7
Hide whitespace changes
Inline
Side-by-side
doc/qtcreator.qdoc
View file @
502bc0df
...
...
@@ -69,7 +69,7 @@
\image qtcreator-breakdown.png
\se
e
ction1 The Mode Selectors
\section1 The Mode Selectors
When working in Qt Creator, you can be in one of five modes: \bold Project,
\bold Edit, \bold Debug, \bold Help, and \bold Output.
...
...
@@ -613,7 +613,7 @@
\page creator-debugging.html
\nextpage creator-tips.html
\title Debugging
W
ith Qt Creator
\title Debugging
w
ith Qt Creator
\table
\row
...
...
@@ -677,9 +677,9 @@
\list
\o At a particular line you want the program to stop -- click on the
left margin or press \key F9 (\key F8 for Mac O
s
X).
\o At
the name of
a function that you want the program to stop -- enter
the
function's name in \gui{Set Breakpoint at Function...} under the
left margin or press \key F9 (\key F8 for Mac O
S
X).
\o At a function that you want the program to stop -- enter
the
function's name in \gui{Set Breakpoint at Function...} under the
\gui Debug menu.
\endlist
...
...
@@ -744,7 +744,7 @@
When the program being debugged is stopped, Qt Creator displays the nested
function calls leading to the current position as a \e call stack trace.
This stack trace is built up from \e
call stack frames, each representing a
This stack trace is built up from \e
{
call stack frames
}
, each representing a
particular function. For each function, Qt Creator will try to retrieve the
file name and line number of the corresponding source files. This data is
shown in the \gui Stack view.
...
...
@@ -765,11 +765,10 @@
\section2 Threads
The \gui Thread view displays the state of the program being debugged one
thread at a time. If a multi-threaded program is stopped, the \gui Thread
view or the combobox named \gui Thread in the debugger's status bar can
be used to switch from one thread to another. The \gui Stack view will
adjust itself accordingly.
If a multi-threaded program is stopped, the \gui Thread view or the
combobox named \gui Thread in the debugger's status bar can be used to
switch from one thread to another. The \gui Stack view will adjust itself
accordingly.
\section2 Locals and Watchers
...
...
@@ -851,8 +850,8 @@
function, the latter the current state of the CPU registers.
Both views are mainly useful in connection with the low-level
\gui{Step single instruction} and \gui{Step over single instruction}
commands
commands
.
\section1 A Walkthrough for the Debugger Frontend
...
...
@@ -947,8 +946,9 @@
\bold{Running Qt Creator from the Command Line}
You can start Qt Creator from a command prompt with an existing session or
\c{.pro} file by giving the name as argument on the command line.
You can start Qt Creator from a command prompt with the name of an existing
session or \c{.pro} file by giving the name as argument on the command
line.
\bold{Show and Hide the Sidebar}
...
...
src/libs/cplusplus/OverviewModel.cpp
View file @
502bc0df
...
...
@@ -74,10 +74,10 @@ Symbol *OverviewModel::globalSymbolAt(unsigned index) const
QModelIndex
OverviewModel
::
index
(
int
row
,
int
column
,
const
QModelIndex
&
parent
)
const
{
if
(
!
hasDocument
())
{
return
QModelIndex
();
}
else
if
(
!
parent
.
isValid
())
{
Symbol
*
symbol
=
globalSymbolAt
(
row
);
if
(
!
parent
.
isValid
())
{
if
(
row
==
0
)
// account for no symbol item
return
createIndex
(
row
,
column
);
Symbol
*
symbol
=
globalSymbolAt
(
row
-
1
);
// account for no symbol item
return
createIndex
(
row
,
column
,
symbol
);
}
else
{
Symbol
*
parentSymbol
=
static_cast
<
Symbol
*>
(
parent
.
internalPointer
());
...
...
@@ -96,12 +96,20 @@ QModelIndex OverviewModel::index(int row, int column, const QModelIndex &parent)
QModelIndex
OverviewModel
::
parent
(
const
QModelIndex
&
child
)
const
{
Symbol
*
symbol
=
static_cast
<
Symbol
*>
(
child
.
internalPointer
());
Q_ASSERT
(
symbol
!=
0
);
if
(
!
symbol
)
// account for no symbol item
return
QModelIndex
();
if
(
Scope
*
scope
=
symbol
->
scope
())
{
Symbol
*
parentSymbol
=
scope
->
owner
();
if
(
parentSymbol
&&
parentSymbol
->
scope
())
return
createIndex
(
parentSymbol
->
index
(),
0
,
parentSymbol
);
if
(
parentSymbol
&&
parentSymbol
->
scope
())
{
QModelIndex
index
;
if
(
parentSymbol
->
scope
()
&&
parentSymbol
->
scope
()
->
owner
()
&&
parentSymbol
->
scope
()
->
owner
()
->
scope
())
// the parent doesn't have a parent
index
=
createIndex
(
parentSymbol
->
index
(),
0
,
parentSymbol
);
else
//+1 to account for no symbol item
index
=
createIndex
(
parentSymbol
->
index
()
+
1
,
0
,
parentSymbol
);
return
index
;
}
}
return
QModelIndex
();
...
...
@@ -110,22 +118,27 @@ QModelIndex OverviewModel::parent(const QModelIndex &child) const
int
OverviewModel
::
rowCount
(
const
QModelIndex
&
parent
)
const
{
if
(
hasDocument
())
{
if
(
!
parent
.
isValid
())
{
return
globalSymbolCount
()
;
if
(
!
parent
.
isValid
())
{
return
globalSymbolCount
()
+
1
;
// account for no symbol item
}
else
{
if
(
!
parent
.
parent
().
isValid
()
&&
parent
.
row
()
==
0
)
// account for no symbol item
return
0
;
Symbol
*
parentSymbol
=
static_cast
<
Symbol
*>
(
parent
.
internalPointer
());
Q_ASSERT
(
parentSymbol
!=
0
);
if
(
ScopedSymbol
*
scopedSymbol
=
parentSymbol
->
asScopedSymbol
())
{
if
(
!
scopedSymbol
->
isFunction
())
{
if
(
!
scopedSymbol
->
isFunction
())
{
Scope
*
parentScope
=
scopedSymbol
->
members
();
Q_ASSERT
(
parentScope
!=
0
);
return
parentScope
->
symbolCount
();
}
}
return
0
;
}
}
if
(
!
parent
.
isValid
())
return
1
;
// account for no symbol item
return
0
;
}
...
...
@@ -136,6 +149,19 @@ int OverviewModel::columnCount(const QModelIndex &) const
QVariant
OverviewModel
::
data
(
const
QModelIndex
&
index
,
int
role
)
const
{
// account for no symbol item
if
(
!
index
.
parent
().
isValid
()
&&
index
.
row
()
==
0
)
{
switch
(
role
)
{
case
Qt
::
DisplayRole
:
if
(
rowCount
()
>
1
)
return
tr
(
"<Select Symbol>"
);
else
return
tr
(
"<No Symbols>"
);
default:
return
QVariant
();
}
//switch
}
switch
(
role
)
{
case
Qt
::
DisplayRole
:
{
Symbol
*
symbol
=
static_cast
<
Symbol
*>
(
index
.
internalPointer
());
...
...
src/plugins/cppeditor/cppeditor.cpp
View file @
502bc0df
...
...
@@ -203,9 +203,7 @@ void CPPEditor::createToolBar(CPPEditorEditable *editable)
m_methodCombo
->
setMaxVisibleItems
(
20
);
m_overviewModel
=
new
OverviewModel
(
this
);
m_noSymbolsModel
=
new
QStringListModel
(
this
);
m_noSymbolsModel
->
setStringList
(
QStringList
()
<<
tr
(
"<no symbols>"
));
m_methodCombo
->
setModel
(
m_noSymbolsModel
);
m_methodCombo
->
setModel
(
m_overviewModel
);
connect
(
m_methodCombo
,
SIGNAL
(
activated
(
int
)),
this
,
SLOT
(
jumpToMethod
(
int
)));
connect
(
this
,
SIGNAL
(
cursorPositionChanged
()),
this
,
SLOT
(
updateMethodBoxIndex
()));
...
...
@@ -318,16 +316,9 @@ void CPPEditor::onDocumentUpdated(Document::Ptr doc)
return
;
m_overviewModel
->
rebuild
(
doc
);
if
(
m_overviewModel
->
rowCount
()
>
0
)
{
if
(
m_methodCombo
->
model
()
!=
m_overviewModel
)
m_methodCombo
->
setModel
(
m_overviewModel
);
OverviewTreeView
*
treeView
=
static_cast
<
OverviewTreeView
*>
(
m_methodCombo
->
view
());
treeView
->
sync
();
updateMethodBoxIndex
();
}
else
{
if
(
m_methodCombo
->
model
()
!=
m_noSymbolsModel
)
m_methodCombo
->
setModel
(
m_noSymbolsModel
);
}
OverviewTreeView
*
treeView
=
static_cast
<
OverviewTreeView
*>
(
m_methodCombo
->
view
());
treeView
->
sync
();
updateMethodBoxIndex
();
}
void
CPPEditor
::
updateFileName
()
...
...
@@ -335,8 +326,6 @@ void CPPEditor::updateFileName()
void
CPPEditor
::
jumpToMethod
(
int
)
{
if
(
m_methodCombo
->
model
()
!=
m_overviewModel
)
return
;
QModelIndex
index
=
m_methodCombo
->
view
()
->
currentIndex
();
Symbol
*
symbol
=
m_overviewModel
->
symbolFromIndex
(
index
);
if
(
!
symbol
)
...
...
@@ -351,8 +340,6 @@ void CPPEditor::jumpToMethod(int)
void
CPPEditor
::
updateMethodBoxIndex
()
{
if
(
m_methodCombo
->
model
()
!=
m_overviewModel
)
return
;
int
line
=
0
,
column
=
0
;
convertPosition
(
position
(),
&
line
,
&
column
);
...
...
@@ -362,7 +349,7 @@ void CPPEditor::updateMethodBoxIndex()
for
(
int
row
=
0
;
row
<
rc
;
++
row
)
{
const
QModelIndex
index
=
m_overviewModel
->
index
(
row
,
0
,
QModelIndex
());
Symbol
*
symbol
=
m_overviewModel
->
symbolFromIndex
(
index
);
if
(
symbol
->
line
()
>
unsigned
(
line
))
if
(
symbol
&&
symbol
->
line
()
>
unsigned
(
line
))
break
;
lastIndex
=
index
;
}
...
...
src/plugins/cppeditor/cppeditor.h
View file @
502bc0df
...
...
@@ -139,7 +139,6 @@ private:
QList
<
int
>
m_contexts
;
QComboBox
*
m_methodCombo
;
CPlusPlus
::
OverviewModel
*
m_overviewModel
;
QStringListModel
*
m_noSymbolsModel
;
};
}
// namespace Internal
...
...
src/plugins/cpptools/cppmodelmanager.cpp
View file @
502bc0df
...
...
@@ -115,7 +115,6 @@ public:
void
setWorkingCopy
(
const
QMap
<
QString
,
QByteArray
>
&
workingCopy
);
void
setIncludePaths
(
const
QStringList
&
includePaths
);
void
setFrameworkPaths
(
const
QStringList
&
frameworkPaths
);
void
addIncludePath
(
const
QString
&
path
);
void
setProjectFiles
(
const
QStringList
&
files
);
void
run
(
QString
&
fileName
);
void
operator
()(
QString
&
fileName
);
...
...
@@ -170,9 +169,6 @@ void CppPreprocessor::setIncludePaths(const QStringList &includePaths)
void
CppPreprocessor
::
setFrameworkPaths
(
const
QStringList
&
frameworkPaths
)
{
m_frameworkPaths
=
frameworkPaths
;
}
void
CppPreprocessor
::
addIncludePath
(
const
QString
&
path
)
{
m_includePaths
.
append
(
path
);
}
void
CppPreprocessor
::
setProjectFiles
(
const
QStringList
&
files
)
{
m_projectFiles
=
files
;
}
...
...
@@ -488,14 +484,14 @@ void CppModelManager::ensureUpdated()
if
(
!
m_dirty
)
return
;
m_projectFiles
=
update
ProjectFiles
();
m_includePaths
=
update
IncludePaths
();
m_frameworkPaths
=
update
FrameworkPaths
();
m_definedMacros
=
update
DefinedMacros
();
m_projectFiles
=
internal
ProjectFiles
();
m_includePaths
=
internal
IncludePaths
();
m_frameworkPaths
=
internal
FrameworkPaths
();
m_definedMacros
=
internal
DefinedMacros
();
m_dirty
=
false
;
}
QStringList
CppModelManager
::
update
ProjectFiles
()
const
QStringList
CppModelManager
::
internal
ProjectFiles
()
const
{
QStringList
files
;
QMapIterator
<
ProjectExplorer
::
Project
*
,
ProjectInfo
>
it
(
m_projects
);
...
...
@@ -504,10 +500,11 @@ QStringList CppModelManager::updateProjectFiles() const
ProjectInfo
pinfo
=
it
.
value
();
files
+=
pinfo
.
sourceFiles
;
}
files
.
removeDuplicates
();
return
files
;
}
QStringList
CppModelManager
::
update
IncludePaths
()
const
QStringList
CppModelManager
::
internal
IncludePaths
()
const
{
QStringList
includePaths
;
QMapIterator
<
ProjectExplorer
::
Project
*
,
ProjectInfo
>
it
(
m_projects
);
...
...
@@ -516,10 +513,11 @@ QStringList CppModelManager::updateIncludePaths() const
ProjectInfo
pinfo
=
it
.
value
();
includePaths
+=
pinfo
.
includePaths
;
}
includePaths
.
removeDuplicates
();
return
includePaths
;
}
QStringList
CppModelManager
::
update
FrameworkPaths
()
const
QStringList
CppModelManager
::
internal
FrameworkPaths
()
const
{
QStringList
frameworkPaths
;
QMapIterator
<
ProjectExplorer
::
Project
*
,
ProjectInfo
>
it
(
m_projects
);
...
...
@@ -528,10 +526,11 @@ QStringList CppModelManager::updateFrameworkPaths() const
ProjectInfo
pinfo
=
it
.
value
();
frameworkPaths
+=
pinfo
.
frameworkPaths
;
}
frameworkPaths
.
removeDuplicates
();
return
frameworkPaths
;
}
QByteArray
CppModelManager
::
update
DefinedMacros
()
const
QByteArray
CppModelManager
::
internal
DefinedMacros
()
const
{
QByteArray
macros
;
QMapIterator
<
ProjectExplorer
::
Project
*
,
ProjectInfo
>
it
(
m_projects
);
...
...
@@ -588,6 +587,7 @@ void CppModelManager::updateProjectInfo(const ProjectInfo &pinfo)
return
;
m_projects
.
insert
(
pinfo
.
project
,
pinfo
);
m_dirty
=
true
;
}
QFuture
<
void
>
CppModelManager
::
refreshSourceFiles
(
const
QStringList
&
sourceFiles
)
...
...
src/plugins/cpptools/cppmodelmanager.h
View file @
502bc0df
...
...
@@ -133,10 +133,10 @@ private:
}
void
ensureUpdated
();
QStringList
update
ProjectFiles
()
const
;
QStringList
update
IncludePaths
()
const
;
QStringList
update
FrameworkPaths
()
const
;
QByteArray
update
DefinedMacros
()
const
;
QStringList
internal
ProjectFiles
()
const
;
QStringList
internal
IncludePaths
()
const
;
QStringList
internal
FrameworkPaths
()
const
;
QByteArray
internal
DefinedMacros
()
const
;
static
void
parse
(
QFutureInterface
<
void
>
&
future
,
CppPreprocessor
*
preproc
,
...
...
src/qworkbench.pri
View file @
502bc0df
IDE_SOURCE_TREE = $$PWD/../
isEmpty(TEST) {
CONFIG(debug, debug|release)
{
isEmpty(TEST)
:CONFIG(debug, debug|release)
{
!debug_and_release|build_pass
{
TEST = 1
}
}
!isEmpty(TEST) {
equals(TEST, 1) {
QT +=testlib
DEFINES+=WITH_TESTS
}
equals(TEST, 1) {
QT +=testlib
DEFINES += WITH_TESTS
}
isEmpty(IDE_BUILD_TREE) {
...
...
Write
Preview
Supports
Markdown
0%
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment