Skip to content
GitLab
Projects
Groups
Snippets
Help
Loading...
Help
What's new
10
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Open sidebar
Marco Bubke
flatpak-qt-creator
Commits
ab20c6ea
Commit
ab20c6ea
authored
Dec 03, 2008
by
Oswald Buddenhagen
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
add "copy" action to problems output pane.
parent
eefb35a8
Changes
3
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
75 additions
and
2 deletions
+75
-2
src/plugins/coreplugin/coreconstants.h
src/plugins/coreplugin/coreconstants.h
+1
-0
src/plugins/projectexplorer/taskwindow.cpp
src/plugins/projectexplorer/taskwindow.cpp
+58
-2
src/plugins/projectexplorer/taskwindow.h
src/plugins/projectexplorer/taskwindow.h
+16
-0
No files found.
src/plugins/coreplugin/coreconstants.h
View file @
ab20c6ea
...
...
@@ -94,6 +94,7 @@ const char * const C_WELCOME_MODE = "Core.WelcomeMode";
const
char
*
const
C_EDIT_MODE
=
"Core.EditMode"
;
const
char
*
const
C_EDITORMANAGER
=
"Core.EditorManager"
;
const
char
*
const
C_NAVIGATION_PANE
=
"Core.NavigationPane"
;
const
char
*
const
C_PROBLEM_PANE
=
"Core.ProblemPane"
;
//default editor kind
const
char
*
const
K_DEFAULT_TEXT_EDITOR
=
"Plain Text Editor"
;
...
...
src/plugins/projectexplorer/taskwindow.cpp
View file @
ab20c6ea
...
...
@@ -37,6 +37,7 @@
#include <coreplugin/actionmanager/actionmanager.h>
#include <coreplugin/editormanager/editormanager.h>
#include <coreplugin/coreconstants.h>
#include <coreplugin/uniqueidmanager.h>
#include <texteditor/itexteditor.h>
#include <texteditor/basetexteditor.h>
#include <projectexplorerconstants.h>
...
...
@@ -47,6 +48,8 @@
#include <QtGui/QListView>
#include <QtGui/QPainter>
#include <QtCore/QAbstractItemModel>
#include <QtGui/QApplication>
#include <QtGui/QClipboard>
#include <QtGui/QFont>
#include <QtGui/QFontMetrics>
#include <QtGui/QTextLayout>
...
...
@@ -81,7 +84,7 @@ public:
QModelIndex
firstError
()
const
;
void
setFileNotFound
(
const
QModelIndex
&
index
,
bool
b
);
enum
Roles
{
File
=
Qt
::
UserRole
,
Line
,
Description
,
FileNotFound
};
enum
Roles
{
File
=
Qt
::
UserRole
,
Line
,
Description
,
FileNotFound
,
Type
};
private:
QList
<
TaskItem
>
m_items
;
int
m_maxSizeOfFileName
;
...
...
@@ -196,6 +199,8 @@ QVariant TaskModel::data(const QModelIndex &index, int role) const
return
m_items
.
at
(
index
.
row
()).
description
;
else
if
(
role
==
TaskModel
::
FileNotFound
)
return
m_items
.
at
(
index
.
row
()).
fileNotFound
;
else
if
(
role
==
TaskModel
::
Type
)
return
(
int
)
m_items
.
at
(
index
.
row
()).
type
;
else
if
(
role
==
Qt
::
DecorationRole
)
{
if
(
m_items
.
at
(
index
.
row
()).
type
==
ProjectExplorer
::
BuildParserInterface
::
Error
)
{
return
QIcon
(
":/projectexplorer/images/compile_error.png"
);
...
...
@@ -257,6 +262,15 @@ TaskWindow::TaskWindow()
TaskDelegate
*
tld
=
new
TaskDelegate
(
this
);
m_listview
->
setItemDelegate
(
tld
);
m_listview
->
setWindowIcon
(
QIcon
(
":/qt4projectmanager/images/window.png"
));
m_listview
->
setContextMenuPolicy
(
Qt
::
ActionsContextMenu
);
m_taskWindowContext
=
new
TaskWindowContext
(
m_listview
);
m_coreIFace
->
addContextObject
(
m_taskWindowContext
);
m_copyAction
=
new
QAction
(
QIcon
(
Core
::
Constants
::
ICON_COPY
),
tr
(
"&Copy"
),
this
);
m_coreIFace
->
actionManager
()
->
registerAction
(
m_copyAction
,
Core
::
Constants
::
COPY
,
m_taskWindowContext
->
context
());
m_listview
->
addAction
(
m_copyAction
);
connect
(
m_listview
->
selectionModel
(),
SIGNAL
(
currentChanged
(
const
QModelIndex
&
,
const
QModelIndex
&
)),
tld
,
SLOT
(
currentChanged
(
const
QModelIndex
&
,
const
QModelIndex
&
)));
...
...
@@ -266,12 +280,15 @@ TaskWindow::TaskWindow()
connect
(
m_listview
,
SIGNAL
(
clicked
(
const
QModelIndex
&
)),
this
,
SLOT
(
showTaskInFile
(
const
QModelIndex
&
)));
connect
(
m_copyAction
,
SIGNAL
(
triggered
()),
SLOT
(
copy
()));
m_errorCount
=
0
;
m_currentTask
=
-
1
;
}
TaskWindow
::~
TaskWindow
()
{
m_coreIFace
->
removeContextObject
(
m_taskWindowContext
);
delete
m_listview
;
delete
m_model
;
}
...
...
@@ -291,6 +308,7 @@ void TaskWindow::clearContents()
m_errorCount
=
0
;
m_currentTask
=
-
1
;
m_model
->
clear
();
m_copyAction
->
setEnabled
(
false
);
emit
tasksChanged
();
}
...
...
@@ -305,6 +323,7 @@ void TaskWindow::addItem(ProjectExplorer::BuildParserInterface::PatternType type
m_model
->
addTask
(
type
,
description
,
file
,
line
);
if
(
type
==
ProjectExplorer
::
BuildParserInterface
::
Error
)
++
m_errorCount
;
m_copyAction
->
setEnabled
(
true
);
emit
tasksChanged
();
}
...
...
@@ -327,6 +346,25 @@ void TaskWindow::showTaskInFile(const QModelIndex &index)
m_listview
->
selectionModel
()
->
select
(
index
,
QItemSelectionModel
::
ClearAndSelect
);
}
void
TaskWindow
::
copy
()
{
QModelIndex
index
=
m_listview
->
selectionModel
()
->
currentIndex
();
QString
file
=
index
.
data
(
TaskModel
::
File
).
toString
();
QString
line
=
index
.
data
(
TaskModel
::
Line
).
toString
();
QString
description
=
index
.
data
(
TaskModel
::
Description
).
toString
();
QString
type
;
switch
(
index
.
data
(
TaskModel
::
Type
).
toInt
())
{
case
ProjectExplorer
::
BuildParserInterface
::
Error
:
type
=
"error: "
;
break
;
case
ProjectExplorer
::
BuildParserInterface
::
Warning
:
type
=
"warning: "
;
break
;
}
QApplication
::
clipboard
()
->
setText
(
file
+
':'
+
line
+
": "
+
type
+
description
);
}
int
TaskWindow
::
numberOfTasks
()
const
{
return
m_model
->
rowCount
(
QModelIndex
());
...
...
@@ -483,7 +521,7 @@ void TaskDelegate::paint(QPainter *painter, const QStyleOptionViewItem &option,
painter
->
fillRect
(
width
,
2
+
opt
.
rect
.
top
(),
gwidth
,
fm
.
height
()
+
1
,
lg
);
}
}
else
{
// Descri
t
ption
// Description
QString
description
=
index
.
data
(
TaskModel
::
Description
).
toString
();
// Layout the description
int
leading
=
fm
.
leading
();
...
...
@@ -536,3 +574,21 @@ void TaskDelegate::paint(QPainter *painter, const QStyleOptionViewItem &option,
painter
->
drawLine
(
0
,
opt
.
rect
.
bottom
(),
opt
.
rect
.
right
(),
opt
.
rect
.
bottom
());
painter
->
restore
();
}
TaskWindowContext
::
TaskWindowContext
(
QWidget
*
widget
)
:
m_taskList
(
widget
)
{
Core
::
ICore
*
core
=
ExtensionSystem
::
PluginManager
::
instance
()
->
getObject
<
Core
::
ICore
>
();
m_context
<<
core
->
uniqueIDManager
()
->
uniqueIdentifier
(
Core
::
Constants
::
C_PROBLEM_PANE
);
}
QList
<
int
>
TaskWindowContext
::
context
()
const
{
return
m_context
;
}
QWidget
*
TaskWindowContext
::
widget
()
{
return
m_taskList
;
}
src/plugins/projectexplorer/taskwindow.h
View file @
ab20c6ea
...
...
@@ -37,6 +37,7 @@
#include "buildparserinterface.h"
#include <coreplugin/ioutputpane.h>
#include <coreplugin/icontext.h>
#include <coreplugin/icore.h>
#include <QtGui/QTreeWidget>
...
...
@@ -49,6 +50,7 @@ namespace Internal {
class
TaskModel
;
class
TaskView
;
class
TaskWindowContext
;
class
TaskWindow
:
public
Core
::
IOutputPane
{
...
...
@@ -82,6 +84,7 @@ signals:
private
slots
:
void
showTaskInFile
(
const
QModelIndex
&
index
);
void
copy
();
private:
int
sizeHintForColumn
(
int
column
)
const
;
...
...
@@ -92,6 +95,8 @@ private:
TaskModel
*
m_model
;
TaskView
*
m_listview
;
TaskWindowContext
*
m_taskWindowContext
;
QAction
*
m_copyAction
;
};
class
TaskView
:
public
QListView
...
...
@@ -122,6 +127,17 @@ private:
void
generateGradientPixmap
(
int
width
,
int
height
,
QColor
color
,
bool
selected
)
const
;
};
class
TaskWindowContext
:
public
Core
::
IContext
{
public:
TaskWindowContext
(
QWidget
*
widget
);
virtual
QList
<
int
>
context
()
const
;
virtual
QWidget
*
widget
();
private:
QWidget
*
m_taskList
;
QList
<
int
>
m_context
;
};
}
//namespace Internal
}
//namespace ProjectExplorer
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a 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