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
0031e542
Commit
0031e542
authored
Mar 31, 2010
by
con
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Mark QmlDesigner designer as experimental, and add button to enable it
from text editor.
parent
3191cfe8
Changes
3
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
107 additions
and
1 deletion
+107
-1
src/plugins/qmldesigner/QmlDesigner.pluginspec
src/plugins/qmldesigner/QmlDesigner.pluginspec
+1
-1
src/plugins/qmljseditor/qmljseditorfactory.cpp
src/plugins/qmljseditor/qmljseditorfactory.cpp
+102
-0
src/plugins/qmljseditor/qmljseditorfactory.h
src/plugins/qmljseditor/qmljseditorfactory.h
+4
-0
No files found.
src/plugins/qmldesigner/QmlDesigner.pluginspec
View file @
0031e542
<plugin name="QmlDesigner" version="1.3.82" compatVersion="1.3.82">
<plugin name="QmlDesigner" version="1.3.82" compatVersion="1.3.82"
experimental="true"
>
<vendor>Nokia Corporation</vendor>
<copyright>(C) 2010 Nokia Corporation</copyright>
<license>
...
...
src/plugins/qmljseditor/qmljseditorfactory.cpp
View file @
0031e542
...
...
@@ -33,10 +33,49 @@
#include "qmljseditorconstants.h"
#include "qmljseditorplugin.h"
#include <extensionsystem/pluginmanager.h>
#include <extensionsystem/pluginspec.h>
#include <coreplugin/icore.h>
#include <coreplugin/editormanager/editormanager.h>
#include <QtCore/QFileInfo>
#include <QtCore/QDebug>
#include <QtCore/QSettings>
#include <QtGui/QMessageBox>
#include <QtGui/QPushButton>
#include <QtGui/QMainWindow>
namespace
{
const
char
*
const
QMLDESIGNER_INFO_BAR
=
"QmlJSEditor.QmlDesignerInfoBar"
;
const
char
*
const
KEY_QMLGROUP
=
"QML"
;
const
char
*
const
KEY_NAGABOUTDESIGNER
=
"AskAboutVisualDesigner"
;
bool
isQmlDesignerExperimentallyDisabled
()
{
ExtensionSystem
::
PluginManager
*
pm
=
ExtensionSystem
::
PluginManager
::
instance
();
foreach
(
const
ExtensionSystem
::
PluginSpec
*
spec
,
pm
->
plugins
())
{
if
(
spec
->
name
()
==
QLatin1String
(
"QmlDesigner"
))
{
if
(
spec
->
isExperimental
()
&&
!
spec
->
isEnabled
())
return
true
;
return
false
;
}
}
return
false
;
}
bool
isNaggingAboutExperimentalDesignerEnabled
()
{
if
(
!
isQmlDesignerExperimentallyDisabled
())
{
return
false
;
}
QSettings
*
settings
=
Core
::
ICore
::
instance
()
->
settings
();
settings
->
beginGroup
(
QLatin1String
(
KEY_QMLGROUP
));
bool
nag
=
settings
->
value
(
QLatin1String
(
KEY_NAGABOUTDESIGNER
),
true
).
toBool
();
settings
->
endGroup
();
return
nag
;
}
}
using
namespace
QmlJSEditor
::
Internal
;
using
namespace
QmlJSEditor
::
Constants
;
...
...
@@ -77,6 +116,14 @@ Core::IFile *QmlJSEditorFactory::open(const QString &fileName)
Core
::
IEditor
*
QmlJSEditorFactory
::
createEditor
(
QWidget
*
parent
)
{
static
bool
listenerInitialized
=
false
;
if
(
!
listenerInitialized
)
{
listenerInitialized
=
true
;
if
(
isNaggingAboutExperimentalDesignerEnabled
())
{
connect
(
Core
::
EditorManager
::
instance
(),
SIGNAL
(
currentEditorChanged
(
Core
::
IEditor
*
)),
SLOT
(
updateEditorInfoBar
(
Core
::
IEditor
*
)));
}
}
QmlJSTextEditor
*
rc
=
new
QmlJSTextEditor
(
parent
);
QmlJSEditorPlugin
::
instance
()
->
initializeEditor
(
rc
);
return
rc
->
editableInterface
();
...
...
@@ -86,3 +133,58 @@ QStringList QmlJSEditorFactory::mimeTypes() const
{
return
m_mimeTypes
;
}
void
QmlJSEditorFactory
::
updateEditorInfoBar
(
Core
::
IEditor
*
editor
)
{
if
(
qobject_cast
<
QmlJSEditorEditable
*>
(
editor
))
{
Core
::
EditorManager
::
instance
()
->
showEditorInfoBar
(
QMLDESIGNER_INFO_BAR
,
tr
(
"Do you want to enable the experimental Quick Designer?"
),
tr
(
"Enable Quick Designer"
),
this
,
SLOT
(
activateQmlDesigner
()));
}
else
{
Core
::
EditorManager
::
instance
()
->
hideEditorInfoBar
(
QMLDESIGNER_INFO_BAR
);
}
}
void
QmlJSEditorFactory
::
activateQmlDesigner
()
{
QString
menu
;
#ifdef Q_WS_MAC
menu
=
tr
(
"Qt Creator -> About Plugins..."
);
#else
menu
=
tr
(
"Help -> About Plugins..."
);
#endif
QMessageBox
message
(
Core
::
ICore
::
instance
()
->
mainWindow
());
message
.
setWindowTitle
(
tr
(
"Enable experimental Quick Designer?"
));
message
.
setText
(
tr
(
"Do you want to enable the experimental Quick Designer? "
"After enabling it, you can access the visual design capabilities by switching to Design Mode. "
"This can affect the overall stability of Qt Creator. "
"To disable Quick Designer again, visit the menu '%1' and disable 'QmlDesigner'."
).
arg
(
menu
));
message
.
setIcon
(
QMessageBox
::
Question
);
QPushButton
*
enable
=
message
.
addButton
(
tr
(
"Enable Quick Designer"
),
QMessageBox
::
AcceptRole
);
QPushButton
*
dontNag
=
message
.
addButton
(
tr
(
"Never ask me again"
),
QMessageBox
::
ActionRole
);
message
.
addButton
(
tr
(
"Cancel"
),
QMessageBox
::
RejectRole
);
message
.
exec
();
if
(
message
.
clickedButton
()
==
enable
)
{
ExtensionSystem
::
PluginManager
*
pm
=
ExtensionSystem
::
PluginManager
::
instance
();
foreach
(
ExtensionSystem
::
PluginSpec
*
spec
,
pm
->
plugins
())
{
if
(
spec
->
name
()
==
QLatin1String
(
"QmlDesigner"
))
{
spec
->
setEnabled
(
true
);
pm
->
writeSettings
();
QMessageBox
::
information
(
Core
::
ICore
::
instance
()
->
mainWindow
(),
tr
(
"Please restart Qt Creator"
),
tr
(
"Please restart Qt Creator to make the change effective."
));
disconnect
(
Core
::
EditorManager
::
instance
(),
SIGNAL
(
currentEditorChanged
(
Core
::
IEditor
*
)),
this
,
SLOT
(
updateEditorInfoBar
(
Core
::
IEditor
*
)));
Core
::
EditorManager
::
instance
()
->
hideEditorInfoBar
(
QMLDESIGNER_INFO_BAR
);
return
;
}
}
}
else
if
(
message
.
clickedButton
()
==
dontNag
)
{
QSettings
*
settings
=
Core
::
ICore
::
instance
()
->
settings
();
settings
->
beginGroup
(
QLatin1String
(
KEY_QMLGROUP
));
settings
->
setValue
(
QLatin1String
(
KEY_NAGABOUTDESIGNER
),
false
);
settings
->
endGroup
();
disconnect
(
Core
::
EditorManager
::
instance
(),
SIGNAL
(
currentEditorChanged
(
Core
::
IEditor
*
)),
this
,
SLOT
(
updateEditorInfoBar
(
Core
::
IEditor
*
)));
Core
::
EditorManager
::
instance
()
->
hideEditorInfoBar
(
QMLDESIGNER_INFO_BAR
);
}
}
src/plugins/qmljseditor/qmljseditorfactory.h
View file @
0031e542
...
...
@@ -58,6 +58,10 @@ public:
Core
::
IFile
*
open
(
const
QString
&
fileName
);
Core
::
IEditor
*
createEditor
(
QWidget
*
parent
);
private
slots
:
void
activateQmlDesigner
();
void
updateEditorInfoBar
(
Core
::
IEditor
*
editor
);
private:
QStringList
m_mimeTypes
;
};
...
...
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