From 311bbe27717f23fa6ac320e9424b8aa9ddd3bd22 Mon Sep 17 00:00:00 2001 From: "Robin \"Rogo\" Goltermann" Date: Fri, 6 Sep 2019 10:24:15 +0200 Subject: [PATCH 01/12] added changelog and bumped version number --- CHANGELOG | 17 ++++++----------- version | 2 +- 2 files changed, 7 insertions(+), 12 deletions(-) diff --git a/CHANGELOG b/CHANGELOG index 66ccf8c39..25c162c3d 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -1,13 +1,8 @@ -Version 0.12.5 -=================== +Version 0.12.6 +======================== ## General -- fixed search status update when having no results -- added raise to result view to pop up over help -- fixed crash when jumping to a result after invalidating cache -- Read and use InitialSort key in GLB files -- Enhanced icon size in Help on Mac OS -- Allow to adjust the numerical precision in the GDX Viewer -- make model library explorer aware of initial sort column -- Better tooltip for GDX Viewer precision spin box -- Model Library Explorer feels slow on macOS fixed +- fixed bookmarks sometimes not being able to be set +- improved add new/existing file dialog: now opens dialog in group folder if available +- fixed crash when GLB file does not contain any models, added proper warning/error instead + diff --git a/version b/version index e747945b2..6b84a5ed5 100644 --- a/version +++ b/version @@ -21,7 +21,7 @@ # Current GAMS Studio version. STUDIO_MAJOR_VERSION=0 STUDIO_MINOR_VERSION=12 -STUDIO_PATCH_LEVEL=5 +STUDIO_PATCH_LEVEL=6 VERSION='$$STUDIO_MAJOR_VERSION'.'$$STUDIO_MINOR_VERSION'.'$$STUDIO_PATCH_LEVEL' # Minimum required GAMS Distribution version, which From 5a2d14e5a3e98f55b9694854ece96b80f7e8e6f8 Mon Sep 17 00:00:00 2001 From: "Robin \"Rogo\" Goltermann" Date: Fri, 6 Sep 2019 14:42:36 +0200 Subject: [PATCH 02/12] disabled top area for dockwidgets to not interfere with extended option editor --- src/mainwindow.ui | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/src/mainwindow.ui b/src/mainwindow.ui index abdf9eb37..17adf5c1f 100644 --- a/src/mainwindow.ui +++ b/src/mainwindow.ui @@ -267,6 +267,9 @@ Project Explorer + + Qt::BottomDockWidgetArea|Qt::LeftDockWidgetArea|Qt::RightDockWidgetArea + Project Explorer @@ -346,6 +349,9 @@ false + + Qt::BottomDockWidgetArea|Qt::LeftDockWidgetArea|Qt::RightDockWidgetArea + Output @@ -398,6 +404,9 @@ + + Qt::BottomDockWidgetArea|Qt::LeftDockWidgetArea|Qt::RightDockWidgetArea + Help From 74f58d4a54a18bb84ea3bc714cab31d4a6ffb3c1 Mon Sep 17 00:00:00 2001 From: Jazzco Date: Thu, 12 Sep 2019 11:05:38 +0200 Subject: [PATCH 03/12] uitest commented out (temporarily to speed up builds) --- gams-studio.pro | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/gams-studio.pro b/gams-studio.pro index c485c5d36..01432ba50 100644 --- a/gams-studio.pro +++ b/gams-studio.pro @@ -21,8 +21,8 @@ TEMPLATE = subdirs SUBDIRS += src \ - tests \ - uitests +# uitests \ + tests src.file = src/studio.pro tests.depends = src From 7260dbef873765a5f8116cb4b0acc8370f606404 Mon Sep 17 00:00:00 2001 From: Jazzco Date: Thu, 12 Sep 2019 11:39:10 +0200 Subject: [PATCH 04/12] added attribute Qt::AA_UseOpenGLES again --- src/main.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/src/main.cpp b/src/main.cpp index a8ef96830..71e4cb72a 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -29,6 +29,7 @@ int main(int argc, char *argv[]) { QApplication::setAttribute(Qt::AA_EnableHighDpiScaling); QApplication::setApplicationVersion(STUDIO_VERSION); + QCoreApplication::setAttribute(Qt::AA_UseOpenGLES); // to temporarily add additional information enable the following line // qSetMessagePattern("[%{function}:%{line}] %{message}"); From e8f4b2f7d12a76dc4bc4d0b4bb79f9111d386887 Mon Sep 17 00:00:00 2001 From: Jazzco Date: Thu, 12 Sep 2019 13:24:37 +0200 Subject: [PATCH 05/12] Fixed. Now jumps always to the right of the match. On selection uses inner/outer selection depending on the cursor AFTER the jump --- src/editors/codeedit.cpp | 12 +++++------- src/editors/codeedit.h | 5 ++--- 2 files changed, 7 insertions(+), 10 deletions(-) diff --git a/src/editors/codeedit.cpp b/src/editors/codeedit.cpp index e1acdf3da..1bf8778f2 100644 --- a/src/editors/codeedit.cpp +++ b/src/editors/codeedit.cpp @@ -302,9 +302,10 @@ void CodeEdit::keyPressEvent(QKeyEvent* e) if (e == Hotkey::MatchParentheses || e == Hotkey::SelectParentheses) { ParenthesesMatch pm = matchParentheses(); QTextCursor::MoveMode mm = (e == Hotkey::SelectParentheses) ? QTextCursor::KeepAnchor : QTextCursor::MoveAnchor; - if (pm.inOutMatch >= 0) { + if (pm.match >= 0) { QTextCursor cur = textCursor(); - cur.setPosition(pm.inOutMatch, mm); + cur.movePosition(QTextCursor::Left); + cur.setPosition(pm.match+1, mm); setTextCursor(cur); } } else if (e == Hotkey::MoveCharGroupRight || e == Hotkey::SelectCharGroupRight) { @@ -1100,8 +1101,8 @@ ParenthesesMatch CodeEdit::matchParentheses() int start = -1; for (int i = parList.count()-1; i >= 0; --i) { if (parList.at(i).relPos == pos || parList.at(i).relPos == pos-1) { - start = i; - break; +// if (start < 0 || i < start) // prefer left-side parenthesis + start = i; } } if (start < 0) return ParenthesesMatch(); @@ -1109,7 +1110,6 @@ ParenthesesMatch CodeEdit::matchParentheses() int ci = parentheses.indexOf(parList.at(start).character); bool back = ci >= pSplit; ci = ci % pSplit; - bool inPar = back ^ (parList.at(start).relPos != pos); ParenthesesMatch result(block.position() + parList.at(start).relPos); QStringRef parEnter = parentheses.midRef(back ? pSplit : 0, pSplit); QStringRef parLeave = parentheses.midRef(back ? 0 : pSplit, pSplit); @@ -1141,14 +1141,12 @@ ParenthesesMatch CodeEdit::matchParentheses() if (parentheses.at(ci) == 'E') return ParenthesesMatch(); // only mark embedded on mismatch result.valid = true; result.match = block.position() + parList.at(pi).relPos; - result.inOutMatch = result.match + (inPar^back ? 0 : 1); return result; } } else { // Mark bad parentheses parStack.clear(); result.match = block.position() + parList.at(pi).relPos; - result.inOutMatch = result.match + (inPar^back ? 0 : 1); return result; } } else { diff --git a/src/editors/codeedit.h b/src/editors/codeedit.h index 57632eab7..dccac173a 100644 --- a/src/editors/codeedit.h +++ b/src/editors/codeedit.h @@ -40,12 +40,11 @@ class LineNumberArea; class SearchWidget; struct ParenthesesMatch { - ParenthesesMatch(int _pos = -1, int _match = -1, int _inOutMatch = -1, bool _valid = false) - : pos(_pos), match(_match), inOutMatch(_inOutMatch), valid(_valid) {} + ParenthesesMatch(int _pos = -1, int _match = -1, bool _valid = false) + : pos(_pos), match(_match), valid(_valid) {} bool isValid() {return pos>=0;} int pos; int match; - int inOutMatch; bool valid; }; From ce6de8ac204574b41bcb556bda63e7a50f0c93a5 Mon Sep 17 00:00:00 2001 From: Jazzco Date: Thu, 12 Sep 2019 13:52:04 +0200 Subject: [PATCH 06/12] fixed selection with Shift+F8 (now switching between inner/outer selection on repeat) --- src/editors/codeedit.cpp | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/src/editors/codeedit.cpp b/src/editors/codeedit.cpp index 1bf8778f2..0bc26d819 100644 --- a/src/editors/codeedit.cpp +++ b/src/editors/codeedit.cpp @@ -301,10 +301,12 @@ void CodeEdit::keyPressEvent(QKeyEvent* e) } else { if (e == Hotkey::MatchParentheses || e == Hotkey::SelectParentheses) { ParenthesesMatch pm = matchParentheses(); - QTextCursor::MoveMode mm = (e == Hotkey::SelectParentheses) ? QTextCursor::KeepAnchor : QTextCursor::MoveAnchor; + bool sel = (e == Hotkey::SelectParentheses); + QTextCursor::MoveMode mm = sel ? QTextCursor::KeepAnchor : QTextCursor::MoveAnchor; if (pm.match >= 0) { QTextCursor cur = textCursor(); - cur.movePosition(QTextCursor::Left); + if (sel) cur.clearSelection(); + if (cur.position() != pm.pos) cur.movePosition(QTextCursor::Left); cur.setPosition(pm.match+1, mm); setTextCursor(cur); } @@ -1101,8 +1103,7 @@ ParenthesesMatch CodeEdit::matchParentheses() int start = -1; for (int i = parList.count()-1; i >= 0; --i) { if (parList.at(i).relPos == pos || parList.at(i).relPos == pos-1) { -// if (start < 0 || i < start) // prefer left-side parenthesis - start = i; + start = i; } } if (start < 0) return ParenthesesMatch(); From 7d0f6ede27f1807655e0fa0d2c711f360905fe57 Mon Sep 17 00:00:00 2001 From: Jazzco Date: Thu, 12 Sep 2019 17:56:02 +0200 Subject: [PATCH 07/12] fixed missing syntax type for parentheses (converted from whitelist to blacklist) --- src/syntax/syntaxhighlighter.cpp | 35 +++++++++++++++++--------------- 1 file changed, 19 insertions(+), 16 deletions(-) diff --git a/src/syntax/syntaxhighlighter.cpp b/src/syntax/syntaxhighlighter.cpp index 988f030d0..2234d2d43 100644 --- a/src/syntax/syntaxhighlighter.cpp +++ b/src/syntax/syntaxhighlighter.cpp @@ -269,21 +269,24 @@ int SyntaxHighlighter::getKindIdx(SyntaxKind kind) const return -1; } -const QVector validParenthesesSyntax = { - SyntaxKind::Standard, - SyntaxKind::Identifier, - SyntaxKind::IdentifierTable, - SyntaxKind::IdentifierAssignment, - SyntaxKind::IdentifierAssignmentEnd, - SyntaxKind::IdentifierTableAssignmentHead, - SyntaxKind::IdentifierTableAssignmentRow, - SyntaxKind::Reserved, - SyntaxKind::Formula, - SyntaxKind::Solve, - SyntaxKind::SolveBody, - SyntaxKind::Option, - SyntaxKind::OptionBody, - SyntaxKind::EmbeddedBody, +const QVector invalidParenthesesSyntax = { + SyntaxKind::Directive, + SyntaxKind::DirectiveBody, + SyntaxKind::DirectiveComment, + SyntaxKind::Title, + SyntaxKind::String, + SyntaxKind::Assignment, + SyntaxKind::CommentLine, + SyntaxKind::CommentBlock, + SyntaxKind::CommentEndline, + SyntaxKind::CommentInline, + SyntaxKind::DeclarationSetType, + SyntaxKind::DeclarationVariableType, + SyntaxKind::Declaration, + SyntaxKind::DeclarationTable, + SyntaxKind::IdentifierDescription, + SyntaxKind::Embedded, + SyntaxKind::EmbeddedEnd, }; const QString validParentheses("{[(}])/"); @@ -299,7 +302,7 @@ void SyntaxHighlighter::scanParentheses(const QString &text, int start, int len, parentheses << ParenthesesPos('e', start); return; } - if (!validParenthesesSyntax.contains(kind)) return; + if (invalidParenthesesSyntax.contains(kind)) return; for (int i = start; i < start+len; ++i) { int iPara = validParentheses.indexOf(text.at(i)); if (iPara == 6) { From f1fcc87a3138b4b27926cb82e34d1936a099bf58 Mon Sep 17 00:00:00 2001 From: afust Date: Fri, 13 Sep 2019 17:13:13 +0200 Subject: [PATCH 08/12] warnings --- src/help/helppage.h | 2 +- src/support/checkforupdatewrapper.cpp | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/help/helppage.h b/src/help/helppage.h index 401c1a201..08040860f 100644 --- a/src/help/helppage.h +++ b/src/help/helppage.h @@ -31,7 +31,7 @@ class HelpPage : public QWebEnginePage Q_OBJECT public: - HelpPage(QWidget *parent = 0); + HelpPage(QWidget *parent = nullptr); protected: bool acceptNavigationRequest(const QUrl& url, QWebEnginePage::NavigationType type, bool isMainFrame); diff --git a/src/support/checkforupdatewrapper.cpp b/src/support/checkforupdatewrapper.cpp index 6b8edb930..3a6660831 100644 --- a/src/support/checkforupdatewrapper.cpp +++ b/src/support/checkforupdatewrapper.cpp @@ -171,7 +171,7 @@ void CheckForUpdateWrapper::getMessages(int &messageIndex, char *buffer) int CheckForUpdateWrapper::errorCallback(int count, const char *message) { - Q_UNUSED(count); + Q_UNUSED(count) auto logger = SysLogLocator::systemLog(); logger->append(InvalidGAMS, LogMsgType::Error); logger->append(message, LogMsgType::Error); From 8e19aa926461a1a379be2554d4435a444ec9484c Mon Sep 17 00:00:00 2001 From: Jarungjit Parnjai Date: Thu, 12 Sep 2019 18:49:57 +0200 Subject: [PATCH 09/12] check version from checkforupdatewrapper only when necessary --- jenkinsfile | 5 +++- src/help/helpdata.h | 12 +++++++++ src/help/helpwidget.cpp | 55 ++++++++++++++++++++++++----------------- src/help/helpwidget.h | 1 + 4 files changed, 50 insertions(+), 23 deletions(-) diff --git a/jenkinsfile b/jenkinsfile index 7aa33c090..d143ede7a 100644 --- a/jenkinsfile +++ b/jenkinsfile @@ -185,7 +185,10 @@ pipeline { STUDIO_PATCH_LEVEL=$(grep ^STUDIO_PATCH_LEVEL version | cut -f2 -d"=") export VERSION=$STUDIO_MAJOR_VERSION.$STUDIO_MINOR_VERSION.$STUDIO_PATCH_LEVEL - linuxdeployqt-6-x86_64.AppImage appdir/usr/share/studio.desktop -bundle-non-qt-libs -no-translations -extra-plugins=iconengines -exclude-libs=libnss3,libnssutil3 + linuxdeployqt-6-x86_64.AppImage appdir/usr/share/studio.desktop -bundle-non-qt-libs -no-translations -extra-plugins=iconengines + + # Chromium crash workaround + cp /usr/lib/x86_64-linux-gnu/nss/* ./appdir/usr/lib # Workaround to increase compatibility with older systems; # see https://github.com/darealshinji/AppImageKit-checkrt amd diff --git a/src/help/helpdata.h b/src/help/helpdata.h index 09fb737b3..e1189a75e 100644 --- a/src/help/helpdata.h +++ b/src/help/helpdata.h @@ -177,6 +177,18 @@ class HelpData } return getChapterLocation(DocumentType::Solvers); } + + inline static int getURLIndexFrom(const QString &urlStr) { + int index = -1; + QStringList pathList; + pathList << "/docs" << "/modlib_ml" << "/testlib_ml" << "/datalib_ml" << "/emplib_ml" << "/apilib_ml" << "/finlib_ml" << "/noalib_ml" << "/psoptlib_ml"; + for(QString path : pathList) { + index = urlStr.indexOf(path); + if (index > -1) + return index; + } + return -1; + } }; } diff --git a/src/help/helpwidget.cpp b/src/help/helpwidget.cpp index edd305787..7f724dfaa 100644 --- a/src/help/helpwidget.cpp +++ b/src/help/helpwidget.cpp @@ -70,9 +70,8 @@ HelpWidget::HelpWidget(QWidget *parent) : bookmarkToolButton->setMenu(mBookmarkMenu); QMenu* helpMenu = new QMenu; - QString onlineStartPageUrl = getOnlineStartPageUrl().toString(); - ui->actionOnlineHelp->setText("View This Page from "+onlineStartPageUrl); - ui->actionOnlineHelp->setStatusTip("View This Page from "+onlineStartPageUrl); + ui->actionOnlineHelp->setText("View This Page Online"); + ui->actionOnlineHelp->setStatusTip("View This Page Online"); ui->actionOnlineHelp->setCheckable(true); helpMenu->addAction(ui->actionOnlineHelp); helpMenu->addSeparator(); @@ -304,13 +303,16 @@ void HelpWidget::on_loadFinished(bool ok) ui->actionOnlineHelp->setChecked( false ); if (ok) { if (ui->webEngineView->url().host().compare("www.gams.com", Qt::CaseInsensitive) == 0 ) { - if (ui->webEngineView->url().path().contains( getCurrentReleaseVersion()) ) - ui->actionOnlineHelp->setChecked( true ); - else if (ui->webEngineView->url().path().contains("latest") && isCurrentReleaseTheLatestVersion()) - ui->actionOnlineHelp->setChecked( true ); - else + if (onlineStartPageUrl.isValid()) { + if (ui->webEngineView->url().path().contains( onlineStartPageUrl.path())) + ui->actionOnlineHelp->setChecked( true ); + else if (ui->webEngineView->url().path().contains("latest")) + ui->actionOnlineHelp->setChecked( true ); + else + ui->actionOnlineHelp->setEnabled( false ); + } else { ui->actionOnlineHelp->setEnabled( false ); - + } } else { if (ui->webEngineView->url().scheme().compare("file", Qt::CaseSensitive) !=0 ) ui->actionOnlineHelp->setEnabled( false ); @@ -366,7 +368,7 @@ void HelpWidget::on_actionOnlineHelp_triggered(bool checked) { QUrl url = ui->webEngineView->url(); QString baseLocation = QDir(CommonPaths::systemDir()).absolutePath(); - QUrl onlineStartPageUrl = getOnlineStartPageUrl(); + onlineStartPageUrl = getOnlineStartPageUrl(); if (checked) { QString urlStr = url.toDisplayString(); urlStr.replace( urlStr.indexOf("file://"), 7, ""); @@ -375,18 +377,27 @@ void HelpWidget::on_actionOnlineHelp_triggered(bool checked) onlineStartPageUrl.toDisplayString() ); url = QUrl(urlStr); } else { - if (isDocumentAvailable(CommonPaths::systemDir(), HelpData::getChapterLocation(DocumentType::Main))) { - QString urlStr = url.toDisplayString(); - urlStr.replace( urlStr.indexOf( onlineStartPageUrl.toDisplayString() ), - onlineStartPageUrl.toDisplayString().size(), - baseLocation); - url.setUrl(urlStr); - url.setScheme("file"); - } else { - QString htmlText; - getErrorHTMLText( htmlText, getStartPageUrl() ); - ui->webEngineView->setHtml( htmlText ); - } + if (url.host().compare("www.gams.com", Qt::CaseInsensitive) == 0 ) { + if (isDocumentAvailable(CommonPaths::systemDir(), HelpData::getChapterLocation(DocumentType::Main))) { + QString urlStr = url.toDisplayString(); + int docsidx = HelpData::getURLIndexFrom(urlStr); + if (docsidx > -1) { + urlStr.replace( 0, docsidx, baseLocation ); + url.setUrl(urlStr); + url.setScheme("file"); + qDebug() << url.toString(); + } else { + ui->webEngineView->load( getStartPageUrl() ); + } + } else { + QString htmlText; + getErrorHTMLText( htmlText, getStartPageUrl() ); + ui->webEngineView->setHtml( htmlText ); + } + + } else { + ui->webEngineView->load( getStartPageUrl() ); + } } ui->actionOnlineHelp->setChecked( checked ); ui->webEngineView->load( url ); diff --git a/src/help/helpwidget.h b/src/help/helpwidget.h index 35558a9ad..d181b615a 100644 --- a/src/help/helpwidget.h +++ b/src/help/helpwidget.h @@ -106,6 +106,7 @@ public slots: QMultiMap mBookmarkMap; QMenu* mBookmarkMenu; QLabel mStatusBarLabel; + QUrl onlineStartPageUrl; QUrl getStartPageUrl(); QUrl getOnlineStartPageUrl(); From 1d51917bbc0d9d1fefec2187c551c6981228de1c Mon Sep 17 00:00:00 2001 From: afust Date: Tue, 17 Sep 2019 13:46:20 +0200 Subject: [PATCH 10/12] create license file via about dialog --- src/support/aboutgamsdialog.cpp | 68 ++++++++++++++++++++++++++++++++- src/support/aboutgamsdialog.h | 2 + 2 files changed, 69 insertions(+), 1 deletion(-) diff --git a/src/support/aboutgamsdialog.cpp b/src/support/aboutgamsdialog.cpp index 3d1e8790a..f32876ff5 100644 --- a/src/support/aboutgamsdialog.cpp +++ b/src/support/aboutgamsdialog.cpp @@ -22,8 +22,11 @@ #include "gamsprocess.h" #include "checkforupdatewrapper.h" #include "solvertablemodel.h" +#include "commonpaths.h" #include +#include +#include #include namespace gams { @@ -36,6 +39,8 @@ AboutGAMSDialog::AboutGAMSDialog(const QString &title, QWidget *parent) : { ui->setupUi(this); + createLicenseFile(parent); + setWindowFlags(windowFlags() & ~Qt::WindowContextHelpButtonHint); this->setWindowTitle(title); ui->label->setText(gamsLicense()); @@ -94,6 +99,67 @@ QString AboutGAMSDialog::gamsLicense() return about.join(""); } +void AboutGAMSDialog::createLicenseFile(QWidget *parent) +{ + auto clipboard = QGuiApplication::clipboard(); + auto licenseLines = clipboard->text().split('\n', QString::SkipEmptyParts); + if (!isValidLicense(licenseLines)) + return; + + QFile licenseFile(CommonPaths::systemDir() + "/gamslice.txt"); + if (licenseFile.exists()) { + auto result = QMessageBox::question(parent, + "Overwrite current GAMS license file?", + "It looks like there is a GAMS license on the clipboard. " + "Do you want to overwrite your current license file from this text? " + "Your current license location is: " + licenseFile.fileName()); + if (result == QMessageBox::No) + return; + } else { + auto result = QMessageBox::question(parent, + "Create GAMS license file?", + "It looks like there is a GAMS license on the clipboard. " + "Do you want to create a license file from this text? " + "Your GAMS license location will be: " + licenseFile.fileName()); + if (result == QMessageBox::No) + return; + } + + if (licenseFile.open(QFile::WriteOnly)) { + QTextStream stream(&licenseFile); + stream << licenseLines.join("\n"); + licenseFile.close(); + } +} + +bool AboutGAMSDialog::isValidLicense(QStringList &license) +{ + if (license.count() < 5) + return false; + + for (int i=0; iGAMS Studio " + QApplication::applicationVersion() + "";//

"; + return "GAMS Studio " + QApplication::applicationVersion() + ""; } QString AboutGAMSDialog:: aboutStudio() diff --git a/src/support/aboutgamsdialog.h b/src/support/aboutgamsdialog.h index 8371ed421..b84592d0d 100644 --- a/src/support/aboutgamsdialog.h +++ b/src/support/aboutgamsdialog.h @@ -44,6 +44,8 @@ class AboutGAMSDialog : public QDialog private: QString gamsLicense(); + void createLicenseFile(QWidget *parent); + bool isValidLicense(QStringList &license); private slots: void on_copylicense_clicked(); From 6459472f0855eab722f5b858bfe8c2d8269c55de Mon Sep 17 00:00:00 2001 From: Alexander Fust Date: Thu, 19 Sep 2019 15:26:10 +0000 Subject: [PATCH 11/12] version bump 0.12.7 --- version | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/version b/version index 6b84a5ed5..8c0bb6467 100644 --- a/version +++ b/version @@ -21,7 +21,7 @@ # Current GAMS Studio version. STUDIO_MAJOR_VERSION=0 STUDIO_MINOR_VERSION=12 -STUDIO_PATCH_LEVEL=6 +STUDIO_PATCH_LEVEL=7 VERSION='$$STUDIO_MAJOR_VERSION'.'$$STUDIO_MINOR_VERSION'.'$$STUDIO_PATCH_LEVEL' # Minimum required GAMS Distribution version, which From b27e712d1923fa66558a3d2dabf3bfa400c73018 Mon Sep 17 00:00:00 2001 From: "Robin \"Rogo\" Goltermann" Date: Fri, 20 Sep 2019 13:28:39 +0200 Subject: [PATCH 12/12] updated changelog --- CHANGELOG | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/CHANGELOG b/CHANGELOG index 25c162c3d..ebff93645 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -1,8 +1,9 @@ -Version 0.12.6 +Version 0.12.7 ======================== - -## General -- fixed bookmarks sometimes not being able to be set -- improved add new/existing file dialog: now opens dialog in group folder if available -- fixed crash when GLB file does not contain any models, added proper warning/error instead +- added dialog to create license file (pops up when a license is in the user's clipboard and the "About GAMS" is opened) +- disabled top dockwidget area for all widgets as it should be used solely by the extended parameter editor +- fixed behavior of jumping to matching parenthesis ([Shift+]F8) +- fixed missing parenthesis highlighting for variables +- reduced flickering when minimizing/maximizing Studio +- removed online version check on Studio startup