Permalink
Browse files

Merge branch 'master' of github.com:qreal/qreal into robots

Conflicts:
	qrkernel/settingsDefaultValues

Removed obsolete installer file
  • Loading branch information...
2 parents 2ade7fb + 99dbcd6 commit 2f633bbb8d1847855cda926ce59986246ab89516 @dvvrd dvvrd committed Feb 27, 2013
View
@@ -0,0 +1,44 @@
+![logo](http://qreal.ru/template/icon.png)
+#[QReal] (http://qreal.ru)
+
+QReal представляет собой metaCASE-инструментарий, т.е. среду для создания новых визуальных языков и интегрированных сред программирования для них.
+Руководители: [Юрий Литвинов](https://github.com/yurii-litvinov) и [Тимофей Брыксин](https://github.com/jzuken)
+
+Подробнее о возможностях QReal см. в статье [“Технология визуального предметно-ориентированного проектирования и разработки ПО QReal”](http://qreal.ru/papers/QReal-technology-2011.pdf)
+и [других публикациях](https://github.com/qreal/qreal/wiki/%D0%9F%D1%83%D0%B1%D0%BB%D0%B8%D0%BA%D0%B0%D1%86%D0%B8%D0%B8)
+
+###Техническая документация
+Для ознакомления с возможностями QReal в [Wiki-странице](https://github.com/qreal/qreal/wiki) в разделе “Пользовательская документация” доступно подробное описание основной функциональности.
+
+##[QReal:Robots](http://qreal.ru/static.php?link=robots)
+QReal:Robots — среда визуального программирования роботов Lego Mindstorms NXT 2.0, созданная на основе технологии QReal.
+На данный момент поддерживается выполнение программ путем интерпретации команд по Bluetooth и USB, получение по диаграммам исходного кода программы на языке C, а также получение бинарного кода программы для прошивки на робота.
+
+Также возможно выполнение программы с помощью двухмерной модели робота на экране.
+
+Подробнее про QReal:Robots см. в статье ["Среда визуального программирования роботов QReal:Robots"](https://docs.google.com/document/d/1ODzZQf_8NSRdAMJIlh_xYiAIPRMpSnCKz6ZBDv0Ehpg/edit?authkey=CMGp2tYE).
+
+###Начать работу с QReal:Robots
+* [Установка](http://qreal.ru/static.php?link=download-robots)
+* [Пользовательская документация](http://qreal.ru/static.php?link=for_users)
+
+##Багтрекер
+Хотите заявить о желаемой функциональности и найденных ошибках? [Пожалуйста, откройте билет на трекере](https://github.com/qreal/qreal/issues).</br>
+Но сначала, пожалуйста, ознакомьтесь с [правилами оформления](https://github.com/qreal/qreal/wiki/%D0%91%D0%B0%D0%B3%D1%82%D1%80%D0%B5%D0%BA%D0%B5%D1%80).
+
+##Студентам
+Возможно оформление работы в рамках проекта в качестве [курсовой или дипломной работы](https://github.com/qreal/qreal/wiki/%D0%A2%D0%B5%D0%BC%D1%8B-%D0%BA%D1%83%D1%80%D1%81%D0%BE%D0%B2%D1%8B%D1%85-%D0%B8-%D0%B4%D0%B8%D0%BF%D0%BB%D0%BE%D0%BC%D0%BD%D1%8B%D1%85-%D1%80%D0%B0%D0%B1%D0%BE%D1%82). Начинающим следует выполнить [тестовое задание](https://github.com/qreal/qreal/wiki/%D0%97%D0%B0%D0%B4%D0%B0%D0%BD%D0%B8%D1%8F-%D0%B4%D0%BB%D1%8F-%D0%BD%D0%B0%D1%87%D0%B8%D0%BD%D0%B0%D1%8E%D1%89%D0%B8%D1%85) и связаться с одним из разработчиков.
+
+Для участия в проекте желательно подписаться на рассылки:
+* [QReal](https://groups.google.com/forum/#!forum/qreal)
+* [QReal:Robots](https://groups.google.com/forum/?fromgroups#!forum/qreal-robot)
+
+##Лицензии
+QReal распространяется под лицензией [GNU GPL v3](http://www.gnu.org/copyleft/gpl.html) [(перевод на русский)](http://citforum.ru/operating_systems/articles/gpl_rus.shtml)
+
+##Контакты руководителей
+**Тимофей Брыксин**
+timofey.bryksin at gmail.com
+
+**Юрий Литвинов**
+yurii.litvinov at gmail.com
@@ -73,7 +73,7 @@ void WaitForSonarDistanceBlock::timerTimeout()
{
// Without the next two lines it fails with segfault with some great probability
inputPort::InputPortEnum const port = static_cast<inputPort::InputPortEnum>(intProperty("Port") - 1);
- robotParts::SonarSensor *sonarSensor = mRobotModel->sonarSensor(port);
+ robotParts::SonarSensor * const sonarSensor = mRobotModel->sonarSensor(port);
if (sonarSensor) {
sonarSensor->read();
@@ -63,6 +63,7 @@ void StartDialog::openExistingProject()
void StartDialog::createProjectWithDiagram(const QString &idString)
{
+ mProjectManager->clearAutosaveFile();
mProjectManager->openEmptyWithSuggestToSaveChanges();
mMainWindow->createDiagram(idString);
forceClose();
@@ -152,7 +152,7 @@ void MainWindow::connectActions()
connect(mUi->actionMakeSvg, SIGNAL(triggered()), this, SLOT(makeSvg()));
connect(mUi->actionNew_Diagram, SIGNAL(triggered()), mProjectManager, SLOT(suggestToCreateDiagram()));
- connect(mUi->actionNewProject, SIGNAL(triggered()), mProjectManager, SLOT(openNewWithDiagram()));
+ connect(mUi->actionNewProject, SIGNAL(triggered()), mStartDialog, SLOT(exec()));
connect(mUi->actionImport, SIGNAL(triggered()), mProjectManager, SLOT(suggestToImport()));
connect(mUi->actionDeleteFromDiagram, SIGNAL(triggered()), this, SLOT(deleteFromDiagram()));
@@ -39,12 +39,13 @@ uint Autosaver::interval() const
void Autosaver::save()
{
- mProjectManager->save();
+ mProjectManager->saveTemp();
}
QString Autosaver::filePath() const
{
QString result;
+
if (SettingsManager::value("AutosaveFileName").toString().isEmpty()) {
return QApplication::applicationFilePath() + ".qrs";
}
@@ -34,6 +34,8 @@ public slots:
/// Save the project in the user file, if it specified. Otherwise save to autosave file
virtual void save() = 0;
+ /// Save the project to the temporary file in set time period
+ virtual void saveTemp() = 0;
/// Save the project in the file with the name fileName, if it not empty (fileName). Otherwise return false only.
virtual bool saveAs(const QString &fileName) = 0;
/// Similarly @see saveAs(const QString &fileName), but offers the user specified file location (by a dialog)
@@ -105,6 +105,7 @@ bool ProjectManager::open(QString const &fileName)
close();
mMainWindow->models()->repoControlApi().open(fileName);
mMainWindow->models()->reinit();
+ saveTemp();
if (!pluginsEnough()) {
// restoring the session
@@ -211,6 +212,7 @@ void ProjectManager::refreshTitleModifiedSuffix()
bool ProjectManager::openNewWithDiagram()
{
+ clearAutosaveFile();
if(!openEmptyWithSuggestToSaveChanges()) {
return false;
}
@@ -256,6 +258,12 @@ void ProjectManager::save()
refreshApplicationStateAfterSave();
}
+void ProjectManager::saveTemp()
+{
+ mSaveFilePathTemp=SettingsManager::value("AutosaveTempFile").toString();
+ mMainWindow->models()->repoControlApi().saveTo(mSaveFilePathTemp);
+}
+
void ProjectManager::saveGenCode(QString const &text)
{
utils::OutFile out("nxt-tools/example0/example0.c");
@@ -264,7 +272,7 @@ void ProjectManager::saveGenCode(QString const &text)
bool ProjectManager::saveOrSuggestToSaveAs()
{
- if (mSaveFilePath == mAutosaver->filePath()) {
+ if (mSaveFilePath == SettingsManager::value("AutosaveFileName").toString()) {
return suggestToSaveAs();
}
save();
@@ -319,3 +327,11 @@ void ProjectManager::setUnsavedIndicator(bool isUnsaved)
mUnsavedIndicator = isUnsaved;
refreshTitleModifiedSuffix();
}
+
+void ProjectManager::clearAutosaveFile()
+{
+ QFile tempFile(SettingsManager::value("AutosaveFileName").toString());
+ if (tempFile.open(QIODevice::WriteOnly | QIODevice::Truncate)) {
+ tempFile.close();
+ }
+}
@@ -24,6 +24,7 @@ public slots:
void close();
void save();
+ void saveTemp();
bool saveAs(const QString &fileName);
bool suggestToSaveAs();
bool saveOrSuggestToSaveAs();
@@ -37,6 +38,7 @@ public slots:
QString saveFilePath() const;
void setSaveFilePath(QString const &filePath = "");
void saveGenCode(QString const &text);
+ void clearAutosaveFile();
private:
bool import(const QString &fileName);
@@ -56,6 +58,7 @@ public slots:
Autosaver *mAutosaver;
bool mUnsavedIndicator;
QString mSaveFilePath;
+ QString mSaveFilePathTemp;
};
}
@@ -51,6 +51,7 @@ oldLineColor=magenta
PaintOldEdgeMode=true
fantomDownloadLink=http://mindstorms.lego.com/en-us/support/files/Driver.aspx
pathToImages=./images/iconset1
+AutosaveTempFile=tempFile
robotModel=2
2dFollowingRobot=false
2dCursorType=1

0 comments on commit 2f633bb

Please sign in to comment.