From a7dd683d59528f08a13c1e57e51cc6abfb9a22a1 Mon Sep 17 00:00:00 2001 From: Matthias Koefferlein Date: Sat, 21 Nov 2020 23:38:50 +0100 Subject: [PATCH 01/18] Fixed display bug happening when child cells are instantiated with a small magnification factor. --- src/laybasic/laybasic/layRedrawThreadWorker.cc | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) diff --git a/src/laybasic/laybasic/layRedrawThreadWorker.cc b/src/laybasic/laybasic/layRedrawThreadWorker.cc index 0aae08e5a..e4fcb0c0f 100644 --- a/src/laybasic/laybasic/layRedrawThreadWorker.cc +++ b/src/laybasic/laybasic/layRedrawThreadWorker.cc @@ -30,6 +30,15 @@ namespace lay // time delay until the first snapshot is taken const int first_snapshot_delay = 20; +// ------------------------------------------------------------- + +static inline db::Box safe_transformed_box (const db::Box &box, const db::ICplxTrans &t) +{ + db::DBox db = db::CplxTrans (t) * box; + db &= db::DBox (db::Box::world ()); + return db::Box (db); +} + // ------------------------------------------------------------- // RedrawThreadWorker implementation @@ -816,7 +825,7 @@ RedrawThreadWorker::draw_boxes (bool drawing_context, db::cell_index_type ci, co test_snapshot (0); db::ICplxTrans t (cell_inst.complex_trans (*p)); - db::Box new_vp = db::Box (t.inverted () * *v); + db::Box new_vp = safe_transformed_box (*v, t.inverted ()); draw_boxes (drawing_context, new_ci, trans * t, new_vp, level + 1); if (p.quad_id () > 0 && p.quad_id () != qid) { @@ -990,7 +999,7 @@ RedrawThreadWorker::draw_box_properties (bool drawing_context, db::cell_index_ty test_snapshot (0); db::ICplxTrans t (cell_inst.complex_trans (*p)); - db::Box new_vp = db::Box (t.inverted () * *v); + db::Box new_vp = safe_transformed_box (*v, t.inverted ()); draw_box_properties (drawing_context, new_ci, trans * t, new_vp, level + 1, cell_inst_prop); } @@ -1474,7 +1483,7 @@ RedrawThreadWorker::draw_text_layer (bool drawing_context, db::cell_index_type c p.index_a () <= 0 || (unsigned long)p.index_a () == amax - 1 || p.index_b () <= 0 || (unsigned long)p.index_b () == bmax - 1) { db::ICplxTrans t (cell_inst.complex_trans (*p)); - db::Box new_vp = db::Box (t.inverted () * *v); + db::Box new_vp = safe_transformed_box (*v, t.inverted ()); draw_text_layer (drawing_context, new_ci, trans * t, new_vp, level + 1, fill, frame, vertex, text, opt_bitmap); } @@ -1779,7 +1788,7 @@ RedrawThreadWorker::draw_layer_wo_cache (int from_level, int to_level, db::cell_ p.index_a () <= 0 || (unsigned long)p.index_a () == amax - 1 || p.index_b () <= 0 || (unsigned long)p.index_b () == bmax - 1) { db::ICplxTrans t (cell_inst.complex_trans (*p)); - db::Box new_vp = db::Box (t.inverted () * *v); + db::Box new_vp = safe_transformed_box (*v, t.inverted ()); draw_layer (from_level, to_level, new_ci, trans * t, new_vp, level + 1, fill, frame, vertex, text, update_snapshot); if (p.quad_id () > 0 && p.quad_id () != qid) { From be5fd1cd0ed7e2edc5f1ecb6dc3af72bb204d9af Mon Sep 17 00:00:00 2001 From: Matthias Koefferlein Date: Sun, 22 Nov 2020 15:34:22 +0100 Subject: [PATCH 02/18] Fixed Windows build. --- src/laybasic/laybasic/layLayerTreeModel.cc | 1 - 1 file changed, 1 deletion(-) diff --git a/src/laybasic/laybasic/layLayerTreeModel.cc b/src/laybasic/laybasic/layLayerTreeModel.cc index c622bf5e4..4ee8b9bb6 100644 --- a/src/laybasic/laybasic/layLayerTreeModel.cc +++ b/src/laybasic/laybasic/layLayerTreeModel.cc @@ -559,7 +559,6 @@ LayerTreeModel::empty_within_view_predicate (const QModelIndex &index) const } } -LAYBASIC_PUBLIC QIcon LayerTreeModel::icon_for_layer (const lay::LayerPropertiesConstIterator &iter, lay::LayoutView *view, unsigned int w, unsigned int h, unsigned int di_off, bool no_state) { From fd95dc66373b0d2c13224601a1d955b8b879c728 Mon Sep 17 00:00:00 2001 From: Matthias Koefferlein Date: Sun, 22 Nov 2020 16:20:18 +0100 Subject: [PATCH 03/18] Windows build fix, Qt4 build fix. --- src/edt/edt/EditorOptionsInst.ui | 3 --- src/laybasic/laybasic/BrowserPanel.ui | 9 +-------- src/laybasic/laybasic/layBrowserPanel.cc | 7 +++++++ src/laybasic/laybasic/layLayerTreeModel.cc | 1 + src/laybasic/laybasic/layLayerTreeModel.h | 3 ++- 5 files changed, 11 insertions(+), 12 deletions(-) diff --git a/src/edt/edt/EditorOptionsInst.ui b/src/edt/edt/EditorOptionsInst.ui index 53002f9de..d7529a797 100644 --- a/src/edt/edt/EditorOptionsInst.ui +++ b/src/edt/edt/EditorOptionsInst.ui @@ -174,9 +174,6 @@ 0 - - false - diff --git a/src/laybasic/laybasic/BrowserPanel.ui b/src/laybasic/laybasic/BrowserPanel.ui index d77c6c45a..fd4afc7b0 100644 --- a/src/laybasic/laybasic/BrowserPanel.ui +++ b/src/laybasic/laybasic/BrowserPanel.ui @@ -232,11 +232,7 @@ - - - true - - + @@ -431,9 +427,6 @@ 0 - - true - diff --git a/src/laybasic/laybasic/layBrowserPanel.cc b/src/laybasic/laybasic/layBrowserPanel.cc index 3dd2393e2..98a39a445 100644 --- a/src/laybasic/laybasic/layBrowserPanel.cc +++ b/src/laybasic/laybasic/layBrowserPanel.cc @@ -110,6 +110,11 @@ BrowserPanel::init () mp_ui = new Ui::BrowserPanel (); mp_ui->setupUi (this); +#if QT_VERSION >= 0x050200 + mp_ui->on_page_search_edit->setClearButtonEnabled (true); + mp_ui->search_edit->setClearButtonEnabled (true); +#endif + mp_ui->browser->setReadOnly (true); mp_ui->browser->set_panel (this); mp_ui->browser->setWordWrapMode (QTextOption::WordWrap); @@ -147,7 +152,9 @@ BrowserPanel::init () connect (mp_ui->browser_bookmark_view, SIGNAL (itemDoubleClicked (QTreeWidgetItem *, int)), this, SLOT (bookmark_item_selected (QTreeWidgetItem *))); mp_completer = new QCompleter (this); +#if QT_VERSION >= 0x050200 mp_completer->setFilterMode (Qt::MatchStartsWith); +#endif mp_completer->setCaseSensitivity (Qt::CaseInsensitive); mp_completer->setCompletionMode (QCompleter::UnfilteredPopupCompletion); mp_completer_model = new QStringListModel (mp_completer); diff --git a/src/laybasic/laybasic/layLayerTreeModel.cc b/src/laybasic/laybasic/layLayerTreeModel.cc index 4ee8b9bb6..c622bf5e4 100644 --- a/src/laybasic/laybasic/layLayerTreeModel.cc +++ b/src/laybasic/laybasic/layLayerTreeModel.cc @@ -559,6 +559,7 @@ LayerTreeModel::empty_within_view_predicate (const QModelIndex &index) const } } +LAYBASIC_PUBLIC QIcon LayerTreeModel::icon_for_layer (const lay::LayerPropertiesConstIterator &iter, lay::LayoutView *view, unsigned int w, unsigned int h, unsigned int di_off, bool no_state) { diff --git a/src/laybasic/laybasic/layLayerTreeModel.h b/src/laybasic/laybasic/layLayerTreeModel.h index 852184ab1..b63377e40 100644 --- a/src/laybasic/laybasic/layLayerTreeModel.h +++ b/src/laybasic/laybasic/layLayerTreeModel.h @@ -25,6 +25,7 @@ #define HDR_layLayerTreeModel #include "dbBox.h" +#include "laybasicCommon.h" #include #include @@ -77,7 +78,7 @@ private: * representation or a hierarchical one. */ -class LayerTreeModel +class LAYBASIC_PUBLIC LayerTreeModel : public QAbstractItemModel { Q_OBJECT From 62d56e3507689b5a3d8132123e53104bc593bf1b Mon Sep 17 00:00:00 2001 From: root Date: Sun, 22 Nov 2020 19:52:58 +0000 Subject: [PATCH 04/18] Fixed an issue with initialization order (found on CentOS6) --- src/edt/edt/edtPlugin.cc | 70 ++++++++++++++++++++-------------------- 1 file changed, 35 insertions(+), 35 deletions(-) diff --git a/src/edt/edt/edtPlugin.cc b/src/edt/edt/edtPlugin.cc index 7caa8288b..1cf07b535 100644 --- a/src/edt/edt/edtPlugin.cc +++ b/src/edt/edt/edtPlugin.cc @@ -61,18 +61,18 @@ void get_text_options (std::vector < std::pair > &opti options.push_back (std::pair (cfg_edit_text_valign, "bottom")); } -edt::RecentConfigurationPage::ConfigurationDescriptor text_cfg_descriptors[] = -{ - edt::RecentConfigurationPage::ConfigurationDescriptor ("", tl::to_string (tr ("Layer")), edt::RecentConfigurationPage::Layer), - edt::RecentConfigurationPage::ConfigurationDescriptor (cfg_edit_text_string, tl::to_string (tr ("Text")), edt::RecentConfigurationPage::Text), - edt::RecentConfigurationPage::ConfigurationDescriptor (cfg_edit_text_size, tl::to_string (tr ("Size")), edt::RecentConfigurationPage::Double), - edt::RecentConfigurationPage::ConfigurationDescriptor (cfg_edit_text_halign, tl::to_string (tr ("Hor. align")), edt::RecentConfigurationPage::Text), - edt::RecentConfigurationPage::ConfigurationDescriptor (cfg_edit_text_valign, tl::to_string (tr ("Vert. align")), edt::RecentConfigurationPage::Text) -}; - static void get_text_editor_options_pages (std::vector &ret, lay::LayoutView *view, lay::Dispatcher *dispatcher) { + static edt::RecentConfigurationPage::ConfigurationDescriptor text_cfg_descriptors[] = + { + edt::RecentConfigurationPage::ConfigurationDescriptor ("", tl::to_string (tr ("Layer")), edt::RecentConfigurationPage::Layer), + edt::RecentConfigurationPage::ConfigurationDescriptor (cfg_edit_text_string, tl::to_string (tr ("Text")), edt::RecentConfigurationPage::Text), + edt::RecentConfigurationPage::ConfigurationDescriptor (cfg_edit_text_size, tl::to_string (tr ("Size")), edt::RecentConfigurationPage::Double), + edt::RecentConfigurationPage::ConfigurationDescriptor (cfg_edit_text_halign, tl::to_string (tr ("Hor. align")), edt::RecentConfigurationPage::Text), + edt::RecentConfigurationPage::ConfigurationDescriptor (cfg_edit_text_valign, tl::to_string (tr ("Vert. align")), edt::RecentConfigurationPage::Text) + }; + ret.push_back (new RecentConfigurationPage (view, dispatcher, "edit-recent-text-param", &text_cfg_descriptors[0], &text_cfg_descriptors[sizeof (text_cfg_descriptors) / sizeof (text_cfg_descriptors[0])])); ret.push_back (new edt::EditorOptionsText (dispatcher)); @@ -87,18 +87,18 @@ void get_path_options (std::vector < std::pair > &opti options.push_back (std::pair (cfg_edit_path_ext_var_end, "0.0")); } -edt::RecentConfigurationPage::ConfigurationDescriptor path_cfg_descriptors[] = -{ - edt::RecentConfigurationPage::ConfigurationDescriptor ("", tl::to_string (tr ("Layer")), edt::RecentConfigurationPage::Layer), - edt::RecentConfigurationPage::ConfigurationDescriptor (cfg_edit_path_width, tl::to_string (tr ("Width")), edt::RecentConfigurationPage::Double), - edt::RecentConfigurationPage::ConfigurationDescriptor (cfg_edit_path_ext_type, tl::to_string (tr ("Ends")), edt::RecentConfigurationPage::Int), - edt::RecentConfigurationPage::ConfigurationDescriptor (cfg_edit_path_ext_var_begin, tl::to_string (tr ("Begin ext.")), edt::RecentConfigurationPage::Double), - edt::RecentConfigurationPage::ConfigurationDescriptor (cfg_edit_path_ext_var_end, tl::to_string (tr ("End ext.")), edt::RecentConfigurationPage::Double) -}; - static void get_path_editor_options_pages (std::vector &ret, lay::LayoutView *view, lay::Dispatcher *dispatcher) { + static edt::RecentConfigurationPage::ConfigurationDescriptor path_cfg_descriptors[] = + { + edt::RecentConfigurationPage::ConfigurationDescriptor ("", tl::to_string (tr ("Layer")), edt::RecentConfigurationPage::Layer), + edt::RecentConfigurationPage::ConfigurationDescriptor (cfg_edit_path_width, tl::to_string (tr ("Width")), edt::RecentConfigurationPage::Double), + edt::RecentConfigurationPage::ConfigurationDescriptor (cfg_edit_path_ext_type, tl::to_string (tr ("Ends")), edt::RecentConfigurationPage::Int), + edt::RecentConfigurationPage::ConfigurationDescriptor (cfg_edit_path_ext_var_begin, tl::to_string (tr ("Begin ext.")), edt::RecentConfigurationPage::Double), + edt::RecentConfigurationPage::ConfigurationDescriptor (cfg_edit_path_ext_var_end, tl::to_string (tr ("End ext.")), edt::RecentConfigurationPage::Double) + }; + ret.push_back (new RecentConfigurationPage (view, dispatcher, "edit-recent-path-param", &path_cfg_descriptors[0], &path_cfg_descriptors[sizeof (path_cfg_descriptors) / sizeof (path_cfg_descriptors[0])])); ret.push_back (new EditorOptionsPath (dispatcher)); @@ -123,26 +123,26 @@ void get_inst_options (std::vector < std::pair > &opti options.push_back (std::pair (cfg_edit_show_shapes_of_instances, "true")); } -edt::RecentConfigurationPage::ConfigurationDescriptor inst_cfg_descriptors[] = -{ - edt::RecentConfigurationPage::ConfigurationDescriptor (cfg_edit_inst_lib_name, tl::to_string (tr ("Library")), edt::RecentConfigurationPage::CellLibraryName), - edt::RecentConfigurationPage::ConfigurationDescriptor (cfg_edit_inst_cell_name, tl::to_string (tr ("Cell")), edt::RecentConfigurationPage::CellDisplayName), - edt::RecentConfigurationPage::ConfigurationDescriptor (cfg_edit_inst_angle, tl::to_string (tr ("Angle")), edt::RecentConfigurationPage::Double), - edt::RecentConfigurationPage::ConfigurationDescriptor (cfg_edit_inst_mirror, tl::to_string (tr ("Mirror")), edt::RecentConfigurationPage::Bool), - edt::RecentConfigurationPage::ConfigurationDescriptor (cfg_edit_inst_scale, tl::to_string (tr ("Scale")), edt::RecentConfigurationPage::Double), - edt::RecentConfigurationPage::ConfigurationDescriptor (cfg_edit_inst_array, tl::to_string (tr ("Array")), edt::RecentConfigurationPage::ArrayFlag), - edt::RecentConfigurationPage::ConfigurationDescriptor (cfg_edit_inst_rows, tl::to_string (tr ("Rows")), edt::RecentConfigurationPage::IntIfArray), - edt::RecentConfigurationPage::ConfigurationDescriptor (cfg_edit_inst_row_x, tl::to_string (tr ("Row step (x)")), edt::RecentConfigurationPage::DoubleIfArray), - edt::RecentConfigurationPage::ConfigurationDescriptor (cfg_edit_inst_row_y, tl::to_string (tr ("Row step (y)")), edt::RecentConfigurationPage::DoubleIfArray), - edt::RecentConfigurationPage::ConfigurationDescriptor (cfg_edit_inst_columns, tl::to_string (tr ("Columns")), edt::RecentConfigurationPage::IntIfArray), - edt::RecentConfigurationPage::ConfigurationDescriptor (cfg_edit_inst_column_x, tl::to_string (tr ("Column step (x)")), edt::RecentConfigurationPage::DoubleIfArray), - edt::RecentConfigurationPage::ConfigurationDescriptor (cfg_edit_inst_column_y, tl::to_string (tr ("Column step (y)")), edt::RecentConfigurationPage::DoubleIfArray), - edt::RecentConfigurationPage::ConfigurationDescriptor (cfg_edit_inst_pcell_parameters, tl::to_string (tr ("PCell parameters")), edt::RecentConfigurationPage::PCellParameters) -}; - static void get_inst_editor_options_pages (std::vector &ret, lay::LayoutView *view, lay::Dispatcher *dispatcher) { + static edt::RecentConfigurationPage::ConfigurationDescriptor inst_cfg_descriptors[] = + { + edt::RecentConfigurationPage::ConfigurationDescriptor (cfg_edit_inst_lib_name, tl::to_string (tr ("Library")), edt::RecentConfigurationPage::CellLibraryName), + edt::RecentConfigurationPage::ConfigurationDescriptor (cfg_edit_inst_cell_name, tl::to_string (tr ("Cell")), edt::RecentConfigurationPage::CellDisplayName), + edt::RecentConfigurationPage::ConfigurationDescriptor (cfg_edit_inst_angle, tl::to_string (tr ("Angle")), edt::RecentConfigurationPage::Double), + edt::RecentConfigurationPage::ConfigurationDescriptor (cfg_edit_inst_mirror, tl::to_string (tr ("Mirror")), edt::RecentConfigurationPage::Bool), + edt::RecentConfigurationPage::ConfigurationDescriptor (cfg_edit_inst_scale, tl::to_string (tr ("Scale")), edt::RecentConfigurationPage::Double), + edt::RecentConfigurationPage::ConfigurationDescriptor (cfg_edit_inst_array, tl::to_string (tr ("Array")), edt::RecentConfigurationPage::ArrayFlag), + edt::RecentConfigurationPage::ConfigurationDescriptor (cfg_edit_inst_rows, tl::to_string (tr ("Rows")), edt::RecentConfigurationPage::IntIfArray), + edt::RecentConfigurationPage::ConfigurationDescriptor (cfg_edit_inst_row_x, tl::to_string (tr ("Row step (x)")), edt::RecentConfigurationPage::DoubleIfArray), + edt::RecentConfigurationPage::ConfigurationDescriptor (cfg_edit_inst_row_y, tl::to_string (tr ("Row step (y)")), edt::RecentConfigurationPage::DoubleIfArray), + edt::RecentConfigurationPage::ConfigurationDescriptor (cfg_edit_inst_columns, tl::to_string (tr ("Columns")), edt::RecentConfigurationPage::IntIfArray), + edt::RecentConfigurationPage::ConfigurationDescriptor (cfg_edit_inst_column_x, tl::to_string (tr ("Column step (x)")), edt::RecentConfigurationPage::DoubleIfArray), + edt::RecentConfigurationPage::ConfigurationDescriptor (cfg_edit_inst_column_y, tl::to_string (tr ("Column step (y)")), edt::RecentConfigurationPage::DoubleIfArray), + edt::RecentConfigurationPage::ConfigurationDescriptor (cfg_edit_inst_pcell_parameters, tl::to_string (tr ("PCell parameters")), edt::RecentConfigurationPage::PCellParameters) + }; + ret.push_back (new RecentConfigurationPage (view, dispatcher, "edit-recent-inst-param", &inst_cfg_descriptors[0], &inst_cfg_descriptors[sizeof (inst_cfg_descriptors) / sizeof (inst_cfg_descriptors[0])])); ret.push_back (new EditorOptionsInstPCellParam (dispatcher)); From d5f6b51092f96230c9a0d45c563fa07778c2cf64 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Matthias=20K=C3=B6fferlein?= Date: Sun, 22 Nov 2020 19:53:47 +0000 Subject: [PATCH 05/18] Compatibility with Qt 4.6.x on CentOS6 --- src/klayout.pri | 4 ++-- src/tl/tl/tlHttpStreamQt.cc | 8 ++++++++ 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/src/klayout.pri b/src/klayout.pri index 245b3f12d..e7b3807b7 100644 --- a/src/klayout.pri +++ b/src/klayout.pri @@ -160,10 +160,10 @@ equals(HAVE_QT, "0") { } else { DEFINES += HAVE_QT - QT += core network xml sql widgets + QT += core network xml sql equals(HAVE_QT5, "1") { - QT += designer printsupport + QT += designer printsupport widgets equals(HAVE_QTBINDINGS, "1") { QT += multimedia multimediawidgets xmlpatterns svg gui } diff --git a/src/tl/tl/tlHttpStreamQt.cc b/src/tl/tl/tlHttpStreamQt.cc index 48510c697..f022e92ca 100644 --- a/src/tl/tl/tlHttpStreamQt.cc +++ b/src/tl/tl/tlHttpStreamQt.cc @@ -71,7 +71,11 @@ AuthenticationHandler::authenticationRequired (QNetworkReply *reply, QAuthentica // expect UTF-8 today. So do them a favor and encode UTF8 into Latin1, so it gets valid UTF8 when turned into Latin1 ... // We do this for Digest and Basic as they apparently both use Latin 1 encoding. But it's unclear whether all servers // expect UTF-8 encoding. +#if QT_VERSION >= 0x040700 bool is_basic_or_digest = ! auth->option (QString::fromUtf8 ("realm")).isNull (); +#else + bool is_basic_or_digest = true; +#endif if (is_basic_or_digest) { auth->setPassword (QString::fromLatin1 (passwd.c_str ())); auth->setUser (QString::fromLatin1 (user.c_str ())); @@ -98,7 +102,11 @@ AuthenticationHandler::proxyAuthenticationRequired (const QNetworkProxy &proxy, // expect UTF-8 today. So do them a favor and encode UTF8 into Latin1, so it gets valid UTF8 when turned into Latin1 ... // We do this for Digest and Basic as they apparently both use Latin 1 encoding. But it's unclear whether all servers // expect UTF-8 encoding. +#if QT_VERSION >= 0x040700 bool is_basic_or_digest = ! auth->option (QString::fromUtf8 ("realm")).isNull (); +#else + bool is_basic_or_digest = true; +#endif if (is_basic_or_digest) { auth->setPassword (QString::fromLatin1 (passwd.c_str ())); auth->setUser (QString::fromLatin1 (user.c_str ())); From 517903dafabce0589c0b072a1aa6744b44d81f3c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Matthias=20K=C3=B6fferlein?= Date: Wed, 25 Nov 2020 21:29:40 +0100 Subject: [PATCH 06/18] Fixed #647 (text orientation not working on search & replace) (#684) * Fixed a compiler warning * Fixed #647 (search & replace not working for text rotation) --- src/edt/edt/edtInstPropertiesPage.cc | 2 +- src/lay/lay/laySearchReplacePropertiesWidgets.cc | 3 ++- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/src/edt/edt/edtInstPropertiesPage.cc b/src/edt/edt/edtInstPropertiesPage.cc index 5266ff485..08a4c27fa 100644 --- a/src/edt/edt/edtInstPropertiesPage.cc +++ b/src/edt/edt/edtInstPropertiesPage.cc @@ -439,7 +439,7 @@ InstPropertiesPage::create_applicator (db::Cell & /*cell*/, const db::Instance & appl->add (new ChangeTargetCellApplicator (inst_cell_index)); } - } catch (tl::Exception &ex) { + } catch (tl::Exception &) { has_pcell_error = true; } diff --git a/src/lay/lay/laySearchReplacePropertiesWidgets.cc b/src/lay/lay/laySearchReplacePropertiesWidgets.cc index c135d9307..42e7d8979 100644 --- a/src/lay/lay/laySearchReplacePropertiesWidgets.cc +++ b/src/lay/lay/laySearchReplacePropertiesWidgets.cc @@ -200,7 +200,7 @@ add_orientation_condition (std::string &expr, QComboBox *op, QComboBox *value, c expr += attribute; expr += " "; expr += tl::to_string (op->currentText ()); - expr += " Trans." + v; + expr += " Trans." + v + ".rot"; } } @@ -308,6 +308,7 @@ add_orientation_assignment (std::string &expr, QComboBox *value, const char *att expr += attribute; expr += " = Trans."; expr += v; + expr += ".rot"; } } From 22df10f4257ed89fab46ce49137ef4dd32344bbd Mon Sep 17 00:00:00 2001 From: Kazunari Sekigawa Date: Fri, 27 Nov 2020 07:00:12 +0900 Subject: [PATCH 07/18] Update of the build system for macOS for 0.26.9 (#686) * * Updated the build system for Mac * Catalina env. uses Python 3.8 in MacPorts, Homebrew, and Anaconda3. * Use Ruby 2.7 in MacPorts. * Test build for macOS "Big Sur" (11.0) on Intel Mac "Catalina" (10.15.7). * Updated the build system for macOS, including the future support for Big Sur (11.0) --- macbuild/ReadMe.md | 63 +- macbuild/Resources/KLayoutDMG-Back.logoist | Bin 199143 -> 201406 bytes macbuild/Resources/KLayoutDMG-Back.png | Bin 208552 -> 209759 bytes macbuild/Resources/script-bundle-P.zip | Bin 4396838 -> 4396838 bytes macbuild/build4mac.py | 519 ++++----- macbuild/build4mac_env.py | 127 ++- macbuild/macQAT.py | 358 +++--- macbuild/macQAT.sh | 66 +- macbuild/makeDMG4mac.py | 1185 ++++++++++---------- macbuild/nightyCatalina.py | 602 ++++++---- 10 files changed, 1594 insertions(+), 1326 deletions(-) diff --git a/macbuild/ReadMe.md b/macbuild/ReadMe.md index 09344755b..c23589f7b 100644 --- a/macbuild/ReadMe.md +++ b/macbuild/ReadMe.md @@ -1,27 +1,28 @@ -Relevant KLayout version: 0.26.7 +Relevant KLayout version: 0.26.9 # 1. Introduction -This directory **`macbuild`** contains different files required for building KLayout (http://www.klayout.de/) version 0.26.1 or later for different 64-bit Mac OSXs including: +This directory **`macbuild`** contains different files required for building KLayout (http://www.klayout.de/) version 0.26.1 or later for different 64-bit Mac OSXs, including: * El Capitan (10.11) * Sierra (10.12) * High Sierra (10.13) * Mojave (10.14) -* Catalina (10.15) +* Catalina (10.15) : the primary development environment +* Big Sur (11.0) : under development for the future support # 2. Qt5 Frameworks -By default, Qt frameworks are "Qt5" from MacPorts (https://www.macports.org/) which is usually located under: +By default, the Qt framework is "Qt5" from MacPorts (https://www.macports.org/), which is usually located under: ``` /opt/local/libexec/qt5/ ``` -Alternatively, you can use "Qt5" from Homebrew (https://brew.sh/) which is usually located under: +Alternatively, you can use "Qt5" from Homebrew (https://brew.sh/), which is usually located under: ``` /usr/local/opt/qt/ ``` OR -"Qt5" from Anaconda3 (https://www.anaconda.com/) which is usually located under: +"Qt5" from Anaconda3 (https://www.anaconda.com/), which is usually located under: ``` $HOME/opt/anaconda3/pkgs/qt-{version} ``` @@ -41,9 +42,9 @@ $ /usr/bin/ruby -v $ /usr/bin/python --version Python 2.7.16 ``` -Even in the latest OS as of today (December 2019), Python 3.x is not bundled with the OS, and this is the main reason why users want non-OS-standard script language support. +Even in the latest OS (11.0 Big Sur) as of today (November 2020), Python 3.x is not bundled with the OS, which is why users want non-OS-standard script language support. -To meet such a requirement, the build script **`build4mac.py`** provides several possible combinations of Qt5, Ruy and Python module.
+To meet such a requirement, the build script **`build4mac.py`** provides several possible combinations of Qt5, Ruy, and Python module.
Some typical use cases are described in Section 6. # 4. Prerequisites @@ -66,22 +67,24 @@ $ [python] ./build4mac.py : Qt5MacPorts: use Qt5 from MacPorts | : Qt5Brew: use Qt5 from Homebrew | : Qt5Ana3: use Qt5 from Anaconda3 | - [-r|--ruby ] : case-insensitive type=['nil', 'Sys', 'MP26', 'HB27', 'Ana3'] | sys + [-r|--ruby ] : case-insensitive type=['nil', 'Sys', 'MP27', 'HB27', 'Ana3'] | sys : nil: don't bind Ruby | : Sys: use OS-bundled Ruby [2.0 - 2.6] depending on OS | - : MP26: use Ruby 2.6 from MacPorts | + : MP27: use Ruby 2.7 from MacPorts | : HB27: use Ruby 2.7 from Homebrew | : Ana3: use Ruby 2.5 from Anaconda3 | - [-p|--python ] : case-insensitive type=['nil', 'Sys', 'MP38', 'HB38', 'Ana3'] | sys + [-p|--python ] : case-insensitive type=['nil', 'Sys', 'MP38', 'HB38', 'Ana3', | sys + : 'HBAuto'] | : nil: don't bind Python | - : Sys: use OS-bundled Python 2.7 [ElCapitan -- Catalina] | + : Sys: use OS-bundled Python 2.7 [ElCapitan -- BigSur] | : MP38: use Python 3.8 from MacPorts | : HB38: use Python 3.8 from Homebrew | - : Ana3: use Python 3.8 from Anaconda3 | + : Ana3: use Python 3.7 from Anaconda3 | + : HBAuto: use the latest Python 3.x auto-detected from Homebrew | [-n|--noqtbinding] : don't create Qt bindings for ruby scripts | disabled [-m|--make