Browse Source

Merge pull request #1576 from arkpar/mix_ux

Mix bugfixes
cl-refactor
Arkadiy Paronyan 10 years ago
parent
commit
70720f2693
  1. 4
      mix/InverseMouseArea.cpp
  2. 8
      mix/InverseMouseArea.h
  3. 1
      mix/qml/Application.qml
  4. 36
      mix/qml/CodeEditorView.qml
  5. 2
      mix/qml/ProjectModel.qml
  6. 9
      mix/qml/StatesComboBox.qml
  7. 2
      mix/qml/WebCodeEditor.qml
  8. 1
      mix/qml/js/ProjectModel.js
  9. 8
      mix/test/qml/TestMain.qml
  10. 1
      mix/test/qml/js/TestDebugger.js

4
mix/InverseMouseArea.cpp

@ -39,11 +39,11 @@ bool InverseMouseArea::eventFilter(QObject* _obj, QEvent* _ev)
{ {
Q_UNUSED(_obj); Q_UNUSED(_obj);
if (this->m_active && _ev->type() == QEvent::MouseButtonPress && !this->contains(static_cast<QMouseEvent*>(_ev)->pos())) if (this->m_active && _ev->type() == QEvent::MouseButtonPress && !this->contains(static_cast<QMouseEvent*>(_ev)->pos()))
emit clickedOutside(); emit clickedOutside(QPointF(static_cast<QMouseEvent*>(_ev)->pos()));
return false; return false;
} }
bool InverseMouseArea::contains(const QPoint& _point) const bool InverseMouseArea::contains(const QPointF& _point) const
{ {
if (!this->m_active) if (!this->m_active)
return false; return false;

8
mix/InverseMouseArea.h

@ -41,15 +41,15 @@ public:
void setActive(bool _v); void setActive(bool _v);
protected: protected:
void itemChange(ItemChange _c, const ItemChangeData& _v); void itemChange(ItemChange _c, const ItemChangeData& _v) override;
bool eventFilter(QObject* _obj, QEvent *_ev); bool eventFilter(QObject* _obj, QEvent *_ev) override;
bool contains(const QPoint& _point) const; bool contains(const QPointF& _point) const override;
private: private:
bool m_active; bool m_active;
signals: signals:
void clickedOutside(); void clickedOutside(QPointF _point);
}; };
} }

1
mix/qml/Application.qml

@ -29,6 +29,7 @@ ApplicationWindow {
property alias clientModel: clientModel; property alias clientModel: clientModel;
property alias projectModel: projectModel; property alias projectModel: projectModel;
property alias appService: appService; property alias appService: appService;
property bool trackLastProject: true;
ApplicationService { ApplicationService {
id: appService id: appService

36
mix/qml/CodeEditorView.qml

@ -46,31 +46,36 @@ Item {
else else
{ {
editorListModel.set(openDocCount, document); editorListModel.set(openDocCount, document);
editors.itemAt(openDocCount).visible = true; doLoadDocument(editors.itemAt(openDocCount).item, editorListModel.get(openDocCount), false)
doLoadDocument(editors.itemAt(openDocCount).item, editorListModel.get(openDocCount)) loadComplete();
} }
openDocCount++; openDocCount++;
} }
function doLoadDocument(editor, document) { function doLoadDocument(editor, document, create) {
var data = fileIo.readFile(document.path); var data = fileIo.readFile(document.path);
if (create)
{
editor.onLoadComplete.connect(function() { editor.onLoadComplete.connect(function() {
loadComplete(); codeEditorView.loadComplete();
}); });
editor.onEditorTextChanged.connect(function() { editor.onEditorTextChanged.connect(function() {
documentEdit(document.documentId); documentEdit(editor.document.documentId);
if (document.isContract) if (editor.document.isContract)
codeModel.registerCodeChange(document.documentId, editor.getText()); codeModel.registerCodeChange(editor.document.documentId, editor.getText());
}); });
editor.onBreakpointsChanged.connect(function() { editor.onBreakpointsChanged.connect(function() {
if (document.isContract) if (editor.document.isContract)
breakpointsChanged(document.documentId); breakpointsChanged(editor.document.documentId);
}); });
editor.setText(data, document.syntaxMode);
editor.onIsCleanChanged.connect(function() { editor.onIsCleanChanged.connect(function() {
isCleanChanged(editor.isClean, document.documentId); isCleanChanged(editor.isClean, editor.document.documentId);
}); });
}
editor.document = document;
editor.sourceName = document.documentId; editor.sourceName = document.documentId;
editor.setText(data, document.syntaxMode);
editor.changeGeneration();
} }
function getEditor(documentId) { function getEditor(documentId) {
@ -192,9 +197,6 @@ Item {
} }
onProjectClosed: { onProjectClosed: {
for (var i = 0; i < editorListModel.count; i++)
editors.itemAt(i).visible = false;
//editorListModel.clear();
currentDocumentId = ""; currentDocumentId = "";
openDocCount = 0; openDocCount = 0;
} }
@ -234,7 +236,7 @@ Item {
property variant item property variant item
property variant doc property variant doc
onYes: { onYes: {
doLoadDocument(item, doc); doLoadDocument(item, doc, false);
resetEditStatus(doc.documentId); resetEditStatus(doc.documentId);
} }
} }
@ -251,7 +253,7 @@ Item {
asynchronous: true asynchronous: true
anchors.fill: parent anchors.fill: parent
source: appService.haveWebEngine ? "WebCodeEditor.qml" : "CodeEditor.qml" source: appService.haveWebEngine ? "WebCodeEditor.qml" : "CodeEditor.qml"
visible: (index >= 0 && index < editorListModel.count && currentDocumentId === editorListModel.get(index).documentId) visible: (index >= 0 && index < openDocCount && currentDocumentId === editorListModel.get(index).documentId)
property bool changed: false property bool changed: false
onVisibleChanged: { onVisibleChanged: {
loadIfNotLoaded() loadIfNotLoaded()
@ -271,7 +273,7 @@ Item {
loadIfNotLoaded() loadIfNotLoaded()
} }
onLoaded: { onLoaded: {
doLoadDocument(loader.item, editorListModel.get(index)) doLoadDocument(loader.item, editorListModel.get(index), true)
} }
Connections Connections

2
mix/qml/ProjectModel.qml

@ -76,7 +76,7 @@ Item {
Connections { Connections {
target: mainApplication target: mainApplication
onLoaded: { onLoaded: {
if (projectSettings.lastProjectPath && projectSettings.lastProjectPath !== "") if (mainApplication.trackLastProject && projectSettings.lastProjectPath && projectSettings.lastProjectPath !== "")
projectModel.loadProject(projectSettings.lastProjectPath) projectModel.loadProject(projectSettings.lastProjectPath)
} }
} }

9
mix/qml/StatesComboBox.qml

@ -99,11 +99,10 @@ Rectangle {
} }
MouseArea { MouseArea {
id: selectorArea
anchors.fill: parent anchors.fill: parent
onClicked: { onClicked: {
if (outsideClick.trigerred) if (statesCombo.state === "")
outsideClick.trigerred = false;
else if (statesCombo.state === "")
statesCombo.state = "dropDown"; statesCombo.state = "dropDown";
} }
} }
@ -133,12 +132,12 @@ Rectangle {
InverseMouseArea InverseMouseArea
{ {
property bool trigerred: false
id: outsideClick id: outsideClick
anchors.fill: parent anchors.fill: parent
active: false active: false
onClickedOutside: { onClickedOutside: {
trigerred = true; var p = selectorArea.mapFromItem(null, _point.x, _point.y);
if (!selectorArea.contains(Qt.point(p.x, p.y)))
statesCombo.hideDropDown() statesCombo.hideDropDown()
} }
} }

2
mix/qml/WebCodeEditor.qml

@ -18,6 +18,7 @@ Item {
property bool unloaded: false property bool unloaded: false
property var currentBreakpoints: [] property var currentBreakpoints: []
property string sourceName property string sourceName
property var document
function setText(text, mode) { function setText(text, mode) {
currentText = text; currentText = text;
@ -117,6 +118,7 @@ Item {
codeModel.onCompilationError.connect(compilationError); codeModel.onCompilationError.connect(compilationError);
} }
parent.changeGeneration(); parent.changeGeneration();
loadComplete();
} }
} }

1
mix/qml/js/ProjectModel.js

@ -124,6 +124,7 @@ function loadProject(path) {
for(var i = 0; i < projectData.files.length; i++) { for(var i = 0; i < projectData.files.length; i++) {
addFile(projectData.files[i]); addFile(projectData.files[i]);
} }
if (mainApplication.trackLastProject)
projectSettings.lastProjectPath = path; projectSettings.lastProjectPath = path;
projectLoading(projectData); projectLoading(projectData);
projectLoaded() projectLoaded()

8
mix/test/qml/TestMain.qml

@ -30,18 +30,20 @@ TestCase
Application Application
{ {
id: mainApplication id: mainApplication
trackLastProject: false
} }
function newProject() function newProject()
{ {
waitForRendering(mainApplication.mainContent, 10000);
mainApplication.projectModel.createProject(); mainApplication.projectModel.createProject();
var projectDlg = mainApplication.projectModel.newProjectDialog; var projectDlg = mainApplication.projectModel.newProjectDialog;
wait(30); wait(30);
projectDlg.projectTitle = "TestProject"; projectDlg.projectTitle = "TestProject";
projectDlg.pathFieldText = "/tmp/MixTest"; //TODO: get platform temp path projectDlg.pathFieldText = "/tmp/MixTest"; //TODO: get platform temp path
projectDlg.acceptAndClose(); projectDlg.acceptAndClose();
wait(30); wait(1);
if (!ts.waitForSignal(mainApplication.codeModel, "compilationComplete()", 5000))
fail("new contract not compiled");
} }
function editContract(c) function editContract(c)
@ -55,7 +57,7 @@ TestCase
function editHtml(c) function editHtml(c)
{ {
mainApplication.projectModel.openDocument("index.html"); mainApplication.projectModel.openDocument("index.html");
wait(1); ts.waitForSignal(mainApplication.mainContent.codeEditor, "loadComplete()", 5000);
mainApplication.mainContent.codeEditor.getEditor("index.html").setText(c); mainApplication.mainContent.codeEditor.getEditor("index.html").setText(c);
ts.keyPressChar(mainApplication, "S", Qt.ControlModifier, 200); //Ctrl+S ts.keyPressChar(mainApplication, "S", Qt.ControlModifier, 200); //Ctrl+S
} }

1
mix/test/qml/js/TestDebugger.js

@ -75,7 +75,6 @@ function test_constructorParameters()
ts.typeString("442", transactionDialog); ts.typeString("442", transactionDialog);
transactionDialog.acceptAndClose(); transactionDialog.acceptAndClose();
mainApplication.projectModel.stateDialog.model.addTransaction(); mainApplication.projectModel.stateDialog.model.addTransaction();
ts.waitForRendering(transactionDialog, 3000);
transactionDialog.selectFunction("getZ"); transactionDialog.selectFunction("getZ");
transactionDialog.acceptAndClose(); transactionDialog.acceptAndClose();
mainApplication.projectModel.stateDialog.acceptAndClose(); mainApplication.projectModel.stateDialog.acceptAndClose();

Loading…
Cancel
Save