mirror of https://github.com/KLayout/klayout.git
Re-run feature for DRC too.
This commit is contained in:
parent
441f946f43
commit
db9ea27324
|
|
@ -763,10 +763,17 @@ module DRC
|
||||||
name = filename && File::basename(filename)
|
name = filename && File::basename(filename)
|
||||||
name ||= "DRC"
|
name ||= "DRC"
|
||||||
|
|
||||||
lv = RBA::LayoutView::current
|
@output_rdb_index = nil
|
||||||
if lv
|
|
||||||
@output_rdb_index = lv.create_rdb(name)
|
view = RBA::LayoutView::current
|
||||||
@output_rdb = lv.rdb(@output_rdb_index)
|
if view
|
||||||
|
if self._rdb_index
|
||||||
|
@output_rdb = RBA::ReportDatabase::new("") # reuse existing name
|
||||||
|
@output_rdb_index = view.replace_rdb(self._rdb_index, @output_rdb)
|
||||||
|
else
|
||||||
|
@output_rdb = RBA::ReportDatabase::new(name)
|
||||||
|
@output_rdb_index = view.add_rdb(@output_rdb)
|
||||||
|
end
|
||||||
else
|
else
|
||||||
@output_rdb = RBA::ReportDatabase::new(name)
|
@output_rdb = RBA::ReportDatabase::new(name)
|
||||||
end
|
end
|
||||||
|
|
|
||||||
|
|
@ -407,6 +407,7 @@ module DRC
|
||||||
@l2n = RBA::LayoutToNetlist::new(layout.top_cell.name, layout.dbu)
|
@l2n = RBA::LayoutToNetlist::new(layout.top_cell.name, layout.dbu)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
@l2n.name = "DRC"
|
||||||
@l2n.generator = @engine._generator
|
@l2n.generator = @engine._generator
|
||||||
|
|
||||||
end
|
end
|
||||||
|
|
|
||||||
|
|
@ -17,37 +17,39 @@
|
||||||
<text>
|
<text>
|
||||||
module DRC
|
module DRC
|
||||||
|
|
||||||
def DRC.execute_drc(_macro)
|
def DRC.execute_drc(macro, generator, rdb_index = nil)
|
||||||
|
|
||||||
_timer = RBA::Timer::new
|
timer = RBA::Timer::new
|
||||||
_timer.start
|
timer.start
|
||||||
_drc = DRCEngine::new
|
drc = DRCEngine::new
|
||||||
|
drc._rdb_index = rdb_index
|
||||||
|
drc._generator = generator
|
||||||
|
|
||||||
begin
|
begin
|
||||||
|
|
||||||
# Set a debugger scope so that our errors end up with the debugger set to the DRC's line
|
# Set a debugger scope so that our errors end up with the debugger set to the DRC's line
|
||||||
RBA::MacroExecutionContext::set_debugger_scope(_macro.path)
|
RBA::MacroExecutionContext::set_debugger_scope(macro.path)
|
||||||
# No verbosity set in drc engine - we cannot use the engine's logger
|
# No verbosity set in drc engine - we cannot use the engine's logger
|
||||||
RBA::Logger::verbosity >= 10 && RBA::Logger::info("Running #{_macro.path}")
|
RBA::Logger::verbosity >= 10 && RBA::Logger::info("Running #{macro.path}")
|
||||||
_drc.instance_eval(_macro.text, _macro.path)
|
drc.instance_eval(macro.text, macro.path)
|
||||||
# Remove the debugger scope
|
# Remove the debugger scope
|
||||||
RBA::MacroExecutionContext::remove_debugger_scope
|
RBA::MacroExecutionContext::remove_debugger_scope
|
||||||
|
|
||||||
rescue => ex
|
rescue => ex
|
||||||
|
|
||||||
_drc.error("In #{_macro.path}: #{ex.to_s}")
|
drc.error("In #{macro.path}: #{ex.to_s}")
|
||||||
RBA::MacroExecutionContext::ignore_next_exception
|
RBA::MacroExecutionContext::ignore_next_exception
|
||||||
raise ex
|
raise ex
|
||||||
|
|
||||||
ensure
|
ensure
|
||||||
|
|
||||||
# cleans up and creates layout and report views
|
# cleans up and creates layout and report views
|
||||||
_drc._finish
|
drc._finish
|
||||||
|
|
||||||
end
|
end
|
||||||
|
|
||||||
_timer.stop
|
timer.stop
|
||||||
_drc.info("Total run time: #{'%.3f'%(_timer.sys+_timer.user)}s")
|
drc.info("Total run time: #{'%.3f'%(timer.sys+timer.user)}s")
|
||||||
|
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
@ -55,7 +57,9 @@ module DRC
|
||||||
class DRCInterpreter < RBA::MacroInterpreter
|
class DRCInterpreter < RBA::MacroInterpreter
|
||||||
|
|
||||||
# Constructor
|
# Constructor
|
||||||
def initialize
|
def initialize(recipe)
|
||||||
|
|
||||||
|
@recipe = recipe
|
||||||
|
|
||||||
# Make the DSL use ruby syntax highlighting
|
# Make the DSL use ruby syntax highlighting
|
||||||
self.syntax_scheme = "ruby"
|
self.syntax_scheme = "ruby"
|
||||||
|
|
@ -74,8 +78,7 @@ module DRC
|
||||||
|
|
||||||
# Implements the execute method
|
# Implements the execute method
|
||||||
def execute(macro)
|
def execute(macro)
|
||||||
$0 = macro.path
|
DRC::execute_drc(macro, @recipe.generator("script" => macro.path))
|
||||||
DRC::execute_drc(macro)
|
|
||||||
end
|
end
|
||||||
|
|
||||||
end
|
end
|
||||||
|
|
@ -84,7 +87,9 @@ module DRC
|
||||||
class DRCPlainTextInterpreter < RBA::MacroInterpreter
|
class DRCPlainTextInterpreter < RBA::MacroInterpreter
|
||||||
|
|
||||||
# Constructor
|
# Constructor
|
||||||
def initialize
|
def initialize(recipe)
|
||||||
|
|
||||||
|
@recipe = recipe
|
||||||
|
|
||||||
# Make the DSL use ruby syntax highlighting
|
# Make the DSL use ruby syntax highlighting
|
||||||
self.syntax_scheme = "ruby"
|
self.syntax_scheme = "ruby"
|
||||||
|
|
@ -100,14 +105,40 @@ module DRC
|
||||||
|
|
||||||
# Implements the execute method
|
# Implements the execute method
|
||||||
def execute(macro)
|
def execute(macro)
|
||||||
DRC::execute_drc(macro)
|
DRC::execute_drc(macro, @recipe.generator("script" => macro.path))
|
||||||
end
|
end
|
||||||
|
|
||||||
end
|
end
|
||||||
|
|
||||||
|
# A recipe implementation allowing the LVS run to be redone
|
||||||
|
class DRCRecipe < RBA::Recipe
|
||||||
|
|
||||||
|
def initialize
|
||||||
|
super("drc", "DRC recipe")
|
||||||
|
end
|
||||||
|
|
||||||
|
def execute(params)
|
||||||
|
|
||||||
|
script = params["script"]
|
||||||
|
if ! script
|
||||||
|
return
|
||||||
|
end
|
||||||
|
|
||||||
|
macro = RBA::Macro::macro_by_path(script)
|
||||||
|
macro || raise("Can't find DRC script #{script} - unable to re-run")
|
||||||
|
|
||||||
|
DRC::execute_drc(macro, self.generator("script" => script), params["rdb_index"])
|
||||||
|
|
||||||
|
end
|
||||||
|
|
||||||
|
end
|
||||||
|
|
||||||
|
# Register the recipe
|
||||||
|
drc_recipe = DRCRecipe::new
|
||||||
|
|
||||||
# Register the new interpreters
|
# Register the new interpreters
|
||||||
DRCInterpreter::new
|
DRCInterpreter::new(drc_recipe)
|
||||||
DRCPlainTextInterpreter::new
|
DRCPlainTextInterpreter::new(drc_recipe)
|
||||||
|
|
||||||
end
|
end
|
||||||
</text>
|
</text>
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,8 @@
|
||||||
<ui version="4.0" >
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<ui version="4.0">
|
||||||
<class>MarkerBrowserDialog</class>
|
<class>MarkerBrowserDialog</class>
|
||||||
<widget class="QDialog" name="MarkerBrowserDialog" >
|
<widget class="QDialog" name="MarkerBrowserDialog">
|
||||||
<property name="geometry" >
|
<property name="geometry">
|
||||||
<rect>
|
<rect>
|
||||||
<x>0</x>
|
<x>0</x>
|
||||||
<y>0</y>
|
<y>0</y>
|
||||||
|
|
@ -9,40 +10,75 @@
|
||||||
<height>553</height>
|
<height>553</height>
|
||||||
</rect>
|
</rect>
|
||||||
</property>
|
</property>
|
||||||
<property name="windowTitle" >
|
<property name="windowTitle">
|
||||||
<string>Marker Database Browser</string>
|
<string>Marker Database Browser</string>
|
||||||
</property>
|
</property>
|
||||||
<layout class="QVBoxLayout" >
|
<layout class="QVBoxLayout">
|
||||||
<property name="margin" >
|
<property name="spacing">
|
||||||
<number>9</number>
|
|
||||||
</property>
|
|
||||||
<property name="spacing" >
|
|
||||||
<number>6</number>
|
<number>6</number>
|
||||||
</property>
|
</property>
|
||||||
|
<property name="leftMargin">
|
||||||
|
<number>9</number>
|
||||||
|
</property>
|
||||||
|
<property name="topMargin">
|
||||||
|
<number>9</number>
|
||||||
|
</property>
|
||||||
|
<property name="rightMargin">
|
||||||
|
<number>9</number>
|
||||||
|
</property>
|
||||||
|
<property name="bottomMargin">
|
||||||
|
<number>9</number>
|
||||||
|
</property>
|
||||||
<item>
|
<item>
|
||||||
<widget class="QFrame" name="frame_3" >
|
<widget class="QFrame" name="frame_3">
|
||||||
<property name="frameShape" >
|
<property name="frameShape">
|
||||||
<enum>QFrame::NoFrame</enum>
|
<enum>QFrame::NoFrame</enum>
|
||||||
</property>
|
</property>
|
||||||
<property name="frameShadow" >
|
<property name="frameShadow">
|
||||||
<enum>QFrame::Raised</enum>
|
<enum>QFrame::Raised</enum>
|
||||||
</property>
|
</property>
|
||||||
<layout class="QGridLayout" >
|
<layout class="QGridLayout">
|
||||||
<property name="margin" >
|
<property name="leftMargin">
|
||||||
<number>0</number>
|
<number>0</number>
|
||||||
</property>
|
</property>
|
||||||
<property name="spacing" >
|
<property name="topMargin">
|
||||||
|
<number>0</number>
|
||||||
|
</property>
|
||||||
|
<property name="rightMargin">
|
||||||
|
<number>0</number>
|
||||||
|
</property>
|
||||||
|
<property name="bottomMargin">
|
||||||
|
<number>0</number>
|
||||||
|
</property>
|
||||||
|
<property name="spacing">
|
||||||
<number>6</number>
|
<number>6</number>
|
||||||
</property>
|
</property>
|
||||||
<item row="0" column="2" >
|
<item row="0" column="3">
|
||||||
|
<widget class="QToolButton" name="file_menu">
|
||||||
|
<property name="text">
|
||||||
|
<string>File ... </string>
|
||||||
|
</property>
|
||||||
|
<property name="popupMode">
|
||||||
|
<enum>QToolButton::InstantPopup</enum>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item row="1" column="0">
|
||||||
|
<widget class="QLabel" name="label">
|
||||||
|
<property name="text">
|
||||||
|
<string> ... on layout </string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item row="0" column="2">
|
||||||
<spacer>
|
<spacer>
|
||||||
<property name="orientation" >
|
<property name="orientation">
|
||||||
<enum>Qt::Horizontal</enum>
|
<enum>Qt::Horizontal</enum>
|
||||||
</property>
|
</property>
|
||||||
<property name="sizeType" >
|
<property name="sizeType">
|
||||||
<enum>QSizePolicy::Fixed</enum>
|
<enum>QSizePolicy::Fixed</enum>
|
||||||
</property>
|
</property>
|
||||||
<property name="sizeHint" >
|
<property name="sizeHint" stdset="0">
|
||||||
<size>
|
<size>
|
||||||
<width>20</width>
|
<width>20</width>
|
||||||
<height>20</height>
|
<height>20</height>
|
||||||
|
|
@ -50,152 +86,133 @@
|
||||||
</property>
|
</property>
|
||||||
</spacer>
|
</spacer>
|
||||||
</item>
|
</item>
|
||||||
<item row="0" column="1" >
|
<item row="0" column="1">
|
||||||
<widget class="QComboBox" name="rdb_cb" >
|
<widget class="QComboBox" name="rdb_cb">
|
||||||
<property name="sizePolicy" >
|
<property name="sizePolicy">
|
||||||
<sizepolicy>
|
<sizepolicy hsizetype="Expanding" vsizetype="Fixed">
|
||||||
<hsizetype>7</hsizetype>
|
|
||||||
<vsizetype>0</vsizetype>
|
|
||||||
<horstretch>1</horstretch>
|
<horstretch>1</horstretch>
|
||||||
<verstretch>0</verstretch>
|
<verstretch>0</verstretch>
|
||||||
</sizepolicy>
|
</sizepolicy>
|
||||||
</property>
|
</property>
|
||||||
<property name="sizeAdjustPolicy" >
|
<property name="sizeAdjustPolicy">
|
||||||
<enum>QComboBox::AdjustToContentsOnFirstShow</enum>
|
<enum>QComboBox::AdjustToContentsOnFirstShow</enum>
|
||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
<item row="0" column="0" >
|
<item row="0" column="0">
|
||||||
<widget class="QLabel" name="label_3" >
|
<widget class="QLabel" name="label_3">
|
||||||
<property name="text" >
|
<property name="text">
|
||||||
<string>Database </string>
|
<string>Database </string>
|
||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
<item row="1" column="0" >
|
<item row="1" column="1">
|
||||||
<widget class="QLabel" name="label" >
|
<widget class="QComboBox" name="layout_cb">
|
||||||
<property name="text" >
|
<property name="sizePolicy">
|
||||||
<string> ... on layout </string>
|
<sizepolicy hsizetype="Expanding" vsizetype="Fixed">
|
||||||
</property>
|
|
||||||
</widget>
|
|
||||||
</item>
|
|
||||||
<item row="1" column="1" >
|
|
||||||
<widget class="QComboBox" name="layout_cb" >
|
|
||||||
<property name="sizePolicy" >
|
|
||||||
<sizepolicy>
|
|
||||||
<hsizetype>7</hsizetype>
|
|
||||||
<vsizetype>0</vsizetype>
|
|
||||||
<horstretch>1</horstretch>
|
<horstretch>1</horstretch>
|
||||||
<verstretch>0</verstretch>
|
<verstretch>0</verstretch>
|
||||||
</sizepolicy>
|
</sizepolicy>
|
||||||
</property>
|
</property>
|
||||||
<property name="sizeAdjustPolicy" >
|
<property name="sizeAdjustPolicy">
|
||||||
<enum>QComboBox::AdjustToContentsOnFirstShow</enum>
|
<enum>QComboBox::AdjustToContentsOnFirstShow</enum>
|
||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
<item row="0" column="3" >
|
|
||||||
<widget class="QToolButton" name="file_menu" >
|
|
||||||
<property name="text" >
|
|
||||||
<string>File ... </string>
|
|
||||||
</property>
|
|
||||||
<property name="popupMode" >
|
|
||||||
<enum>QToolButton::InstantPopup</enum>
|
|
||||||
</property>
|
|
||||||
</widget>
|
|
||||||
</item>
|
|
||||||
<item row="2" column="0" colspan="4" >
|
|
||||||
<spacer>
|
|
||||||
<property name="orientation" >
|
|
||||||
<enum>Qt::Vertical</enum>
|
|
||||||
</property>
|
|
||||||
<property name="sizeType" >
|
|
||||||
<enum>QSizePolicy::Fixed</enum>
|
|
||||||
</property>
|
|
||||||
<property name="sizeHint" >
|
|
||||||
<size>
|
|
||||||
<width>20</width>
|
|
||||||
<height>10</height>
|
|
||||||
</size>
|
|
||||||
</property>
|
|
||||||
</spacer>
|
|
||||||
</item>
|
|
||||||
</layout>
|
</layout>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
<item>
|
<item>
|
||||||
<widget class="Line" name="line" >
|
<widget class="QFrame" name="frame_4">
|
||||||
<property name="orientation" >
|
<property name="frameShape">
|
||||||
<enum>Qt::Horizontal</enum>
|
|
||||||
</property>
|
|
||||||
</widget>
|
|
||||||
</item>
|
|
||||||
<item>
|
|
||||||
<widget class="QFrame" name="frame_4" >
|
|
||||||
<property name="frameShape" >
|
|
||||||
<enum>QFrame::NoFrame</enum>
|
<enum>QFrame::NoFrame</enum>
|
||||||
</property>
|
</property>
|
||||||
<property name="frameShadow" >
|
<property name="frameShadow">
|
||||||
<enum>QFrame::Raised</enum>
|
<enum>QFrame::Raised</enum>
|
||||||
</property>
|
</property>
|
||||||
<layout class="QHBoxLayout" >
|
<layout class="QHBoxLayout">
|
||||||
<property name="margin" >
|
<property name="spacing">
|
||||||
<number>0</number>
|
|
||||||
</property>
|
|
||||||
<property name="spacing" >
|
|
||||||
<number>6</number>
|
<number>6</number>
|
||||||
</property>
|
</property>
|
||||||
|
<property name="leftMargin">
|
||||||
|
<number>0</number>
|
||||||
|
</property>
|
||||||
|
<property name="topMargin">
|
||||||
|
<number>0</number>
|
||||||
|
</property>
|
||||||
|
<property name="rightMargin">
|
||||||
|
<number>0</number>
|
||||||
|
</property>
|
||||||
|
<property name="bottomMargin">
|
||||||
|
<number>0</number>
|
||||||
|
</property>
|
||||||
<item>
|
<item>
|
||||||
<widget class="QStackedWidget" name="central_stack" >
|
<widget class="QStackedWidget" name="central_stack">
|
||||||
<property name="currentIndex" >
|
<property name="currentIndex">
|
||||||
<number>1</number>
|
<number>1</number>
|
||||||
</property>
|
</property>
|
||||||
<widget class="QWidget" name="page" >
|
<widget class="QWidget" name="page">
|
||||||
<layout class="QVBoxLayout" >
|
<layout class="QVBoxLayout">
|
||||||
<property name="margin" >
|
<property name="spacing">
|
||||||
<number>0</number>
|
|
||||||
</property>
|
|
||||||
<property name="spacing" >
|
|
||||||
<number>6</number>
|
<number>6</number>
|
||||||
</property>
|
</property>
|
||||||
|
<property name="leftMargin">
|
||||||
|
<number>0</number>
|
||||||
|
</property>
|
||||||
|
<property name="topMargin">
|
||||||
|
<number>0</number>
|
||||||
|
</property>
|
||||||
|
<property name="rightMargin">
|
||||||
|
<number>0</number>
|
||||||
|
</property>
|
||||||
|
<property name="bottomMargin">
|
||||||
|
<number>0</number>
|
||||||
|
</property>
|
||||||
<item>
|
<item>
|
||||||
<widget class="rdb::MarkerBrowserPage" name="browser_frame" >
|
<widget class="rdb::MarkerBrowserPage" name="browser_frame">
|
||||||
<property name="sizePolicy" >
|
<property name="sizePolicy">
|
||||||
<sizepolicy>
|
<sizepolicy hsizetype="Ignored" vsizetype="Ignored">
|
||||||
<hsizetype>13</hsizetype>
|
|
||||||
<vsizetype>13</vsizetype>
|
|
||||||
<horstretch>0</horstretch>
|
<horstretch>0</horstretch>
|
||||||
<verstretch>0</verstretch>
|
<verstretch>0</verstretch>
|
||||||
</sizepolicy>
|
</sizepolicy>
|
||||||
</property>
|
</property>
|
||||||
<property name="frameShape" >
|
<property name="frameShape">
|
||||||
<enum>QFrame::NoFrame</enum>
|
<enum>QFrame::NoFrame</enum>
|
||||||
</property>
|
</property>
|
||||||
<property name="frameShadow" >
|
<property name="frameShadow">
|
||||||
<enum>QFrame::Raised</enum>
|
<enum>QFrame::Raised</enum>
|
||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
</layout>
|
</layout>
|
||||||
</widget>
|
</widget>
|
||||||
<widget class="QWidget" name="page_2" >
|
<widget class="QWidget" name="page_2">
|
||||||
<layout class="QVBoxLayout" >
|
<layout class="QVBoxLayout">
|
||||||
<property name="margin" >
|
<property name="spacing">
|
||||||
<number>0</number>
|
|
||||||
</property>
|
|
||||||
<property name="spacing" >
|
|
||||||
<number>6</number>
|
<number>6</number>
|
||||||
</property>
|
</property>
|
||||||
|
<property name="leftMargin">
|
||||||
|
<number>0</number>
|
||||||
|
</property>
|
||||||
|
<property name="topMargin">
|
||||||
|
<number>0</number>
|
||||||
|
</property>
|
||||||
|
<property name="rightMargin">
|
||||||
|
<number>0</number>
|
||||||
|
</property>
|
||||||
|
<property name="bottomMargin">
|
||||||
|
<number>0</number>
|
||||||
|
</property>
|
||||||
<item>
|
<item>
|
||||||
<widget class="QLabel" name="label_2" >
|
<widget class="QLabel" name="label_2">
|
||||||
<property name="text" >
|
<property name="text">
|
||||||
<string>Choose "Open" from the "File ..." menu
|
<string>Choose "Open" from the "File ..." menu
|
||||||
to load a marker database</string>
|
to load a marker database</string>
|
||||||
</property>
|
</property>
|
||||||
<property name="alignment" >
|
<property name="alignment">
|
||||||
<set>Qt::AlignCenter</set>
|
<set>Qt::AlignCenter</set>
|
||||||
</property>
|
</property>
|
||||||
<property name="wordWrap" >
|
<property name="wordWrap">
|
||||||
<bool>true</bool>
|
<bool>true</bool>
|
||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
|
|
@ -208,40 +225,49 @@ to load a marker database</string>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
<item>
|
<item>
|
||||||
<widget class="Line" name="line_2" >
|
<widget class="Line" name="line_2">
|
||||||
<property name="orientation" >
|
<property name="orientation">
|
||||||
<enum>Qt::Horizontal</enum>
|
<enum>Qt::Horizontal</enum>
|
||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
<item>
|
<item>
|
||||||
<widget class="QFrame" name="frame_2" >
|
<widget class="QFrame" name="frame_2">
|
||||||
<property name="frameShape" >
|
<property name="frameShape">
|
||||||
<enum>QFrame::NoFrame</enum>
|
<enum>QFrame::NoFrame</enum>
|
||||||
</property>
|
</property>
|
||||||
<property name="frameShadow" >
|
<property name="frameShadow">
|
||||||
<enum>QFrame::Raised</enum>
|
<enum>QFrame::Raised</enum>
|
||||||
</property>
|
</property>
|
||||||
<layout class="QHBoxLayout" >
|
<layout class="QHBoxLayout">
|
||||||
<property name="margin" >
|
<property name="spacing">
|
||||||
<number>0</number>
|
|
||||||
</property>
|
|
||||||
<property name="spacing" >
|
|
||||||
<number>6</number>
|
<number>6</number>
|
||||||
</property>
|
</property>
|
||||||
|
<property name="leftMargin">
|
||||||
|
<number>0</number>
|
||||||
|
</property>
|
||||||
|
<property name="topMargin">
|
||||||
|
<number>0</number>
|
||||||
|
</property>
|
||||||
|
<property name="rightMargin">
|
||||||
|
<number>0</number>
|
||||||
|
</property>
|
||||||
|
<property name="bottomMargin">
|
||||||
|
<number>0</number>
|
||||||
|
</property>
|
||||||
<item>
|
<item>
|
||||||
<widget class="QPushButton" name="configure_pb" >
|
<widget class="QPushButton" name="configure_pb">
|
||||||
<property name="text" >
|
<property name="text">
|
||||||
<string>Configure</string>
|
<string>Configure</string>
|
||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
<item>
|
<item>
|
||||||
<spacer>
|
<spacer>
|
||||||
<property name="orientation" >
|
<property name="orientation">
|
||||||
<enum>Qt::Horizontal</enum>
|
<enum>Qt::Horizontal</enum>
|
||||||
</property>
|
</property>
|
||||||
<property name="sizeHint" >
|
<property name="sizeHint" stdset="0">
|
||||||
<size>
|
<size>
|
||||||
<width>40</width>
|
<width>40</width>
|
||||||
<height>20</height>
|
<height>20</height>
|
||||||
|
|
@ -250,8 +276,8 @@ to load a marker database</string>
|
||||||
</spacer>
|
</spacer>
|
||||||
</item>
|
</item>
|
||||||
<item>
|
<item>
|
||||||
<widget class="QPushButton" name="pushButton_2" >
|
<widget class="QPushButton" name="pushButton_2">
|
||||||
<property name="text" >
|
<property name="text">
|
||||||
<string>Close</string>
|
<string>Close</string>
|
||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
|
|
@ -266,6 +292,7 @@ to load a marker database</string>
|
||||||
<class>rdb::MarkerBrowserPage</class>
|
<class>rdb::MarkerBrowserPage</class>
|
||||||
<extends>QFrame</extends>
|
<extends>QFrame</extends>
|
||||||
<header>rdbMarkerBrowserPage.h</header>
|
<header>rdbMarkerBrowserPage.h</header>
|
||||||
|
<container>1</container>
|
||||||
</customwidget>
|
</customwidget>
|
||||||
</customwidgets>
|
</customwidgets>
|
||||||
<tabstops>
|
<tabstops>
|
||||||
|
|
@ -282,11 +309,11 @@ to load a marker database</string>
|
||||||
<receiver>MarkerBrowserDialog</receiver>
|
<receiver>MarkerBrowserDialog</receiver>
|
||||||
<slot>accept()</slot>
|
<slot>accept()</slot>
|
||||||
<hints>
|
<hints>
|
||||||
<hint type="sourcelabel" >
|
<hint type="sourcelabel">
|
||||||
<x>837</x>
|
<x>837</x>
|
||||||
<y>441</y>
|
<y>441</y>
|
||||||
</hint>
|
</hint>
|
||||||
<hint type="destinationlabel" >
|
<hint type="destinationlabel">
|
||||||
<x>881</x>
|
<x>881</x>
|
||||||
<y>387</y>
|
<y>387</y>
|
||||||
</hint>
|
</hint>
|
||||||
|
|
|
||||||
|
|
@ -13,7 +13,7 @@
|
||||||
<property name="windowTitle">
|
<property name="windowTitle">
|
||||||
<string>Form</string>
|
<string>Form</string>
|
||||||
</property>
|
</property>
|
||||||
<layout class="QHBoxLayout">
|
<layout class="QVBoxLayout" name="verticalLayout">
|
||||||
<property name="spacing">
|
<property name="spacing">
|
||||||
<number>6</number>
|
<number>6</number>
|
||||||
</property>
|
</property>
|
||||||
|
|
@ -29,6 +29,73 @@
|
||||||
<property name="bottomMargin">
|
<property name="bottomMargin">
|
||||||
<number>0</number>
|
<number>0</number>
|
||||||
</property>
|
</property>
|
||||||
|
<item>
|
||||||
|
<widget class="QFrame" name="frame_5">
|
||||||
|
<property name="sizePolicy">
|
||||||
|
<sizepolicy hsizetype="Preferred" vsizetype="Fixed">
|
||||||
|
<horstretch>0</horstretch>
|
||||||
|
<verstretch>0</verstretch>
|
||||||
|
</sizepolicy>
|
||||||
|
</property>
|
||||||
|
<property name="frameShape">
|
||||||
|
<enum>QFrame::NoFrame</enum>
|
||||||
|
</property>
|
||||||
|
<property name="frameShadow">
|
||||||
|
<enum>QFrame::Raised</enum>
|
||||||
|
</property>
|
||||||
|
<layout class="QGridLayout" name="gridLayout">
|
||||||
|
<property name="leftMargin">
|
||||||
|
<number>0</number>
|
||||||
|
</property>
|
||||||
|
<property name="topMargin">
|
||||||
|
<number>0</number>
|
||||||
|
</property>
|
||||||
|
<property name="rightMargin">
|
||||||
|
<number>0</number>
|
||||||
|
</property>
|
||||||
|
<property name="bottomMargin">
|
||||||
|
<number>0</number>
|
||||||
|
</property>
|
||||||
|
<item row="0" column="0" rowspan="3">
|
||||||
|
<widget class="QToolButton" name="rerun_button">
|
||||||
|
<property name="text">
|
||||||
|
<string>...</string>
|
||||||
|
</property>
|
||||||
|
<property name="icon">
|
||||||
|
<iconset resource="../../lay/lay/layResources.qrc">
|
||||||
|
<normaloff>:/run.png</normaloff>:/run.png</iconset>
|
||||||
|
</property>
|
||||||
|
<property name="shortcut">
|
||||||
|
<string>F5</string>
|
||||||
|
</property>
|
||||||
|
<property name="autoRaise">
|
||||||
|
<bool>true</bool>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item row="1" column="1">
|
||||||
|
<spacer name="verticalSpacer">
|
||||||
|
<property name="orientation">
|
||||||
|
<enum>Qt::Vertical</enum>
|
||||||
|
</property>
|
||||||
|
<property name="sizeHint" stdset="0">
|
||||||
|
<size>
|
||||||
|
<width>20</width>
|
||||||
|
<height>11</height>
|
||||||
|
</size>
|
||||||
|
</property>
|
||||||
|
</spacer>
|
||||||
|
</item>
|
||||||
|
<item row="0" column="1">
|
||||||
|
<widget class="Line" name="line_2">
|
||||||
|
<property name="orientation">
|
||||||
|
<enum>Qt::Horizontal</enum>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
</layout>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
<item>
|
<item>
|
||||||
<widget class="QSplitter" name="splitter_2">
|
<widget class="QSplitter" name="splitter_2">
|
||||||
<property name="orientation">
|
<property name="orientation">
|
||||||
|
|
@ -63,69 +130,6 @@
|
||||||
<property name="spacing">
|
<property name="spacing">
|
||||||
<number>6</number>
|
<number>6</number>
|
||||||
</property>
|
</property>
|
||||||
<item row="2" column="1">
|
|
||||||
<widget class="QToolButton" name="dir_down_pb">
|
|
||||||
<property name="text">
|
|
||||||
<string>...</string>
|
|
||||||
</property>
|
|
||||||
<property name="icon">
|
|
||||||
<iconset resource="../../lay/lay/layResources.qrc">
|
|
||||||
<normaloff>:/down.png</normaloff>:/down.png</iconset>
|
|
||||||
</property>
|
|
||||||
</widget>
|
|
||||||
</item>
|
|
||||||
<item row="2" column="0">
|
|
||||||
<widget class="QToolButton" name="dir_up_pb">
|
|
||||||
<property name="text">
|
|
||||||
<string>...</string>
|
|
||||||
</property>
|
|
||||||
<property name="icon">
|
|
||||||
<iconset resource="../../lay/lay/layResources.qrc">
|
|
||||||
<normaloff>:/up.png</normaloff>:/up.png</iconset>
|
|
||||||
</property>
|
|
||||||
</widget>
|
|
||||||
</item>
|
|
||||||
<item row="1" column="0" colspan="4">
|
|
||||||
<widget class="QTreeView" name="directory_tree">
|
|
||||||
<property name="sizePolicy">
|
|
||||||
<sizepolicy hsizetype="Expanding" vsizetype="Expanding">
|
|
||||||
<horstretch>0</horstretch>
|
|
||||||
<verstretch>0</verstretch>
|
|
||||||
</sizepolicy>
|
|
||||||
</property>
|
|
||||||
<property name="baseSize">
|
|
||||||
<size>
|
|
||||||
<width>0</width>
|
|
||||||
<height>4</height>
|
|
||||||
</size>
|
|
||||||
</property>
|
|
||||||
<property name="contextMenuPolicy">
|
|
||||||
<enum>Qt::ActionsContextMenu</enum>
|
|
||||||
</property>
|
|
||||||
<property name="selectionMode">
|
|
||||||
<enum>QAbstractItemView::ExtendedSelection</enum>
|
|
||||||
</property>
|
|
||||||
<property name="selectionBehavior">
|
|
||||||
<enum>QAbstractItemView::SelectRows</enum>
|
|
||||||
</property>
|
|
||||||
<property name="uniformRowHeights">
|
|
||||||
<bool>true</bool>
|
|
||||||
</property>
|
|
||||||
<property name="sortingEnabled">
|
|
||||||
<bool>true</bool>
|
|
||||||
</property>
|
|
||||||
<property name="allColumnsShowFocus">
|
|
||||||
<bool>true</bool>
|
|
||||||
</property>
|
|
||||||
</widget>
|
|
||||||
</item>
|
|
||||||
<item row="0" column="0" colspan="4">
|
|
||||||
<widget class="QLabel" name="label">
|
|
||||||
<property name="text">
|
|
||||||
<string>Directory</string>
|
|
||||||
</property>
|
|
||||||
</widget>
|
|
||||||
</item>
|
|
||||||
<item row="2" column="2" colspan="2">
|
<item row="2" column="2" colspan="2">
|
||||||
<widget class="QFrame" name="frame_2">
|
<widget class="QFrame" name="frame_2">
|
||||||
<property name="sizePolicy">
|
<property name="sizePolicy">
|
||||||
|
|
@ -237,6 +241,69 @@
|
||||||
</layout>
|
</layout>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
|
<item row="2" column="1">
|
||||||
|
<widget class="QToolButton" name="dir_down_pb">
|
||||||
|
<property name="text">
|
||||||
|
<string>...</string>
|
||||||
|
</property>
|
||||||
|
<property name="icon">
|
||||||
|
<iconset resource="../../lay/lay/layResources.qrc">
|
||||||
|
<normaloff>:/down.png</normaloff>:/down.png</iconset>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item row="2" column="0">
|
||||||
|
<widget class="QToolButton" name="dir_up_pb">
|
||||||
|
<property name="text">
|
||||||
|
<string>...</string>
|
||||||
|
</property>
|
||||||
|
<property name="icon">
|
||||||
|
<iconset resource="../../lay/lay/layResources.qrc">
|
||||||
|
<normaloff>:/up.png</normaloff>:/up.png</iconset>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item row="1" column="0" colspan="4">
|
||||||
|
<widget class="QTreeView" name="directory_tree">
|
||||||
|
<property name="sizePolicy">
|
||||||
|
<sizepolicy hsizetype="Expanding" vsizetype="Expanding">
|
||||||
|
<horstretch>0</horstretch>
|
||||||
|
<verstretch>0</verstretch>
|
||||||
|
</sizepolicy>
|
||||||
|
</property>
|
||||||
|
<property name="baseSize">
|
||||||
|
<size>
|
||||||
|
<width>0</width>
|
||||||
|
<height>4</height>
|
||||||
|
</size>
|
||||||
|
</property>
|
||||||
|
<property name="contextMenuPolicy">
|
||||||
|
<enum>Qt::ActionsContextMenu</enum>
|
||||||
|
</property>
|
||||||
|
<property name="selectionMode">
|
||||||
|
<enum>QAbstractItemView::ExtendedSelection</enum>
|
||||||
|
</property>
|
||||||
|
<property name="selectionBehavior">
|
||||||
|
<enum>QAbstractItemView::SelectRows</enum>
|
||||||
|
</property>
|
||||||
|
<property name="uniformRowHeights">
|
||||||
|
<bool>true</bool>
|
||||||
|
</property>
|
||||||
|
<property name="sortingEnabled">
|
||||||
|
<bool>true</bool>
|
||||||
|
</property>
|
||||||
|
<property name="allColumnsShowFocus">
|
||||||
|
<bool>true</bool>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item row="0" column="0" colspan="4">
|
||||||
|
<widget class="QLabel" name="label">
|
||||||
|
<property name="text">
|
||||||
|
<string>Directory</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
</layout>
|
</layout>
|
||||||
</widget>
|
</widget>
|
||||||
<widget class="QSplitter" name="splitter">
|
<widget class="QSplitter" name="splitter">
|
||||||
|
|
|
||||||
|
|
@ -1448,7 +1448,7 @@ Class<lay::LayoutView> decl_LayoutView (QT_EXTERNAL_BASE (QWidget) "lay", "Layou
|
||||||
"@return The \\ReportDatabase object or nil if the index is not valid"
|
"@return The \\ReportDatabase object or nil if the index is not valid"
|
||||||
) +
|
) +
|
||||||
gsi::method ("add_rdb", &lay::LayoutView::add_rdb, gsi::arg ("db"),
|
gsi::method ("add_rdb", &lay::LayoutView::add_rdb, gsi::arg ("db"),
|
||||||
"@brief Adds the given database to the view\n"
|
"@brief Adds the given report database to the view\n"
|
||||||
"\n"
|
"\n"
|
||||||
"This method will add an existing database to the view. It will then appear in the marker database browser.\n"
|
"This method will add an existing database to the view. It will then appear in the marker database browser.\n"
|
||||||
"A similar method is \\create_rdb which will create a new database within the view.\n"
|
"A similar method is \\create_rdb which will create a new database within the view.\n"
|
||||||
|
|
@ -1457,6 +1457,15 @@ Class<lay::LayoutView> decl_LayoutView (QT_EXTERNAL_BASE (QWidget) "lay", "Layou
|
||||||
"\n"
|
"\n"
|
||||||
"This method has been added in version 0.26."
|
"This method has been added in version 0.26."
|
||||||
) +
|
) +
|
||||||
|
gsi::method ("replace_rdb", &lay::LayoutView::replace_rdb, gsi::arg ("db_index"), gsi::arg ("db"),
|
||||||
|
"@brief Replaces the report database with the given index\n"
|
||||||
|
"\n"
|
||||||
|
"If the index is not valid, the database will be added to the view (see \\add_rdb).\n"
|
||||||
|
"\n"
|
||||||
|
"@return The index of the database within the view (see \\rdb)\n"
|
||||||
|
"\n"
|
||||||
|
"This method has been added in version 0.26."
|
||||||
|
) +
|
||||||
gsi::method_ext ("create_rdb", &create_rdb, gsi::arg ("name"),
|
gsi::method_ext ("create_rdb", &create_rdb, gsi::arg ("name"),
|
||||||
"@brief Creates a new report database and returns the index of the new database\n"
|
"@brief Creates a new report database and returns the index of the new database\n"
|
||||||
"@param name The name of the new report database\n"
|
"@param name The name of the new report database\n"
|
||||||
|
|
@ -1496,7 +1505,7 @@ Class<lay::LayoutView> decl_LayoutView (QT_EXTERNAL_BASE (QWidget) "lay", "Layou
|
||||||
"This method has been added in version 0.26."
|
"This method has been added in version 0.26."
|
||||||
) +
|
) +
|
||||||
gsi::method ("add_l2ndb", &lay::LayoutView::add_l2ndb, gsi::arg ("db"),
|
gsi::method ("add_l2ndb", &lay::LayoutView::add_l2ndb, gsi::arg ("db"),
|
||||||
"@brief Adds the given database to the view\n"
|
"@brief Adds the given netlist database to the view\n"
|
||||||
"\n"
|
"\n"
|
||||||
"This method will add an existing database to the view. It will then appear in the netlist database browser.\n"
|
"This method will add an existing database to the view. It will then appear in the netlist database browser.\n"
|
||||||
"A similar method is \\create_l2ndb which will create a new database within the view.\n"
|
"A similar method is \\create_l2ndb which will create a new database within the view.\n"
|
||||||
|
|
@ -1506,7 +1515,7 @@ Class<lay::LayoutView> decl_LayoutView (QT_EXTERNAL_BASE (QWidget) "lay", "Layou
|
||||||
"This method has been added in version 0.26."
|
"This method has been added in version 0.26."
|
||||||
) +
|
) +
|
||||||
gsi::method ("replace_l2ndb", &lay::LayoutView::replace_l2ndb, gsi::arg ("db_index"), gsi::arg ("db"),
|
gsi::method ("replace_l2ndb", &lay::LayoutView::replace_l2ndb, gsi::arg ("db_index"), gsi::arg ("db"),
|
||||||
"@brief Replaces the database with the given index\n"
|
"@brief Replaces the netlist database with the given index\n"
|
||||||
"\n"
|
"\n"
|
||||||
"If the index is not valid, the database will be added to the view (see \\add_lvsdb).\n"
|
"If the index is not valid, the database will be added to the view (see \\add_lvsdb).\n"
|
||||||
"\n"
|
"\n"
|
||||||
|
|
|
||||||
|
|
@ -7210,21 +7210,16 @@ LayoutView::add_l2ndb (db::LayoutToNetlist *l2ndb)
|
||||||
unsigned int
|
unsigned int
|
||||||
LayoutView::replace_l2ndb (unsigned int db_index, db::LayoutToNetlist *l2ndb)
|
LayoutView::replace_l2ndb (unsigned int db_index, db::LayoutToNetlist *l2ndb)
|
||||||
{
|
{
|
||||||
|
tl_assert (l2ndb != 0);
|
||||||
|
|
||||||
if (db_index < m_l2ndbs.size ()) {
|
if (db_index < m_l2ndbs.size ()) {
|
||||||
|
|
||||||
|
// keep the name as it is used for reference in the browser for example
|
||||||
std::string n = m_l2ndbs [db_index]->name ();
|
std::string n = m_l2ndbs [db_index]->name ();
|
||||||
|
l2ndb->set_name (n);
|
||||||
|
|
||||||
delete m_l2ndbs [db_index];
|
delete m_l2ndbs [db_index];
|
||||||
m_l2ndbs.erase (m_l2ndbs.begin () + db_index);
|
m_l2ndbs [db_index] = l2ndb;
|
||||||
|
|
||||||
// keep old name if possible
|
|
||||||
if (l2ndb->name ().empty ()) {
|
|
||||||
l2ndb->set_name (n);
|
|
||||||
} else {
|
|
||||||
make_unique_name (l2ndb, m_l2ndbs.begin (), m_l2ndbs.end ());
|
|
||||||
}
|
|
||||||
|
|
||||||
m_l2ndbs.insert (m_l2ndbs.begin () + db_index, l2ndb);
|
|
||||||
|
|
||||||
// Mark this object as owned by us (for GSI)
|
// Mark this object as owned by us (for GSI)
|
||||||
l2ndb->keep ();
|
l2ndb->keep ();
|
||||||
|
|
@ -7280,7 +7275,7 @@ LayoutView::remove_l2ndb (unsigned int index)
|
||||||
unsigned int
|
unsigned int
|
||||||
LayoutView::add_rdb (rdb::Database *rdb)
|
LayoutView::add_rdb (rdb::Database *rdb)
|
||||||
{
|
{
|
||||||
make_unique_name (rdb, m_l2ndbs.begin (), m_l2ndbs.end ());
|
make_unique_name (rdb, m_rdbs.begin (), m_rdbs.end ());
|
||||||
m_rdbs.push_back (rdb);
|
m_rdbs.push_back (rdb);
|
||||||
|
|
||||||
// Mark this object as owned by us (for GSI)
|
// Mark this object as owned by us (for GSI)
|
||||||
|
|
@ -7291,6 +7286,32 @@ LayoutView::add_rdb (rdb::Database *rdb)
|
||||||
return (unsigned int)(m_rdbs.size () - 1);
|
return (unsigned int)(m_rdbs.size () - 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
unsigned int
|
||||||
|
LayoutView::replace_rdb (unsigned int db_index, rdb::Database *rdb)
|
||||||
|
{
|
||||||
|
tl_assert (rdb != 0);
|
||||||
|
|
||||||
|
if (db_index < m_rdbs.size ()) {
|
||||||
|
|
||||||
|
// keep name because it's used for reference in the browser for example
|
||||||
|
std::string n = m_rdbs [db_index]->name ();
|
||||||
|
rdb->set_name (n);
|
||||||
|
|
||||||
|
delete m_rdbs [db_index];
|
||||||
|
m_rdbs [db_index] = rdb;
|
||||||
|
|
||||||
|
// Mark this object as owned by us (for GSI)
|
||||||
|
rdb->keep ();
|
||||||
|
|
||||||
|
rdb_list_changed_event ();
|
||||||
|
|
||||||
|
return db_index;
|
||||||
|
|
||||||
|
} else {
|
||||||
|
return add_rdb (rdb);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
rdb::Database *
|
rdb::Database *
|
||||||
LayoutView::get_rdb (int index)
|
LayoutView::get_rdb (int index)
|
||||||
{
|
{
|
||||||
|
|
|
||||||
|
|
@ -2285,6 +2285,17 @@ public:
|
||||||
*/
|
*/
|
||||||
unsigned int add_rdb (rdb::Database *rdb);
|
unsigned int add_rdb (rdb::Database *rdb);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Replaces a marker database
|
||||||
|
*
|
||||||
|
* The layout view will become owner of the database.
|
||||||
|
* If the index is not valid, the database will be added and the new index will be returned.
|
||||||
|
*
|
||||||
|
* @param db_index The index of the database to replace
|
||||||
|
* @param rdb The database to add
|
||||||
|
*/
|
||||||
|
unsigned int replace_rdb (unsigned int db_index, rdb::Database *rdb);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief Get the marker database by index
|
* @brief Get the marker database by index
|
||||||
*
|
*
|
||||||
|
|
|
||||||
|
|
@ -613,6 +613,7 @@ NetlistBrowserPage::rerun_macro ()
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
NetlistBrowserPage::info_button_pressed ()
|
NetlistBrowserPage::info_button_pressed ()
|
||||||
{
|
{
|
||||||
|
|
|
||||||
|
|
@ -671,6 +671,7 @@ MarkerBrowserDialog::update_content ()
|
||||||
m_reload_action->setEnabled (rdb != 0);
|
m_reload_action->setEnabled (rdb != 0);
|
||||||
|
|
||||||
browser_frame->enable_updates (false); // Avoid building the internal lists several times ...
|
browser_frame->enable_updates (false); // Avoid building the internal lists several times ...
|
||||||
|
browser_frame->set_rdb (0); // force update
|
||||||
browser_frame->set_rdb (rdb);
|
browser_frame->set_rdb (rdb);
|
||||||
browser_frame->set_max_marker_count (m_max_marker_count);
|
browser_frame->set_max_marker_count (m_max_marker_count);
|
||||||
browser_frame->set_marker_style (m_marker_color, m_marker_line_width, m_marker_vertex_size, m_marker_halo, m_marker_dither_pattern);
|
browser_frame->set_marker_style (m_marker_color, m_marker_line_width, m_marker_vertex_size, m_marker_halo, m_marker_dither_pattern);
|
||||||
|
|
|
||||||
|
|
@ -26,6 +26,7 @@
|
||||||
|
|
||||||
#include "dbLayoutUtils.h"
|
#include "dbLayoutUtils.h"
|
||||||
|
|
||||||
|
#include "tlRecipe.h"
|
||||||
#include "layLayoutView.h"
|
#include "layLayoutView.h"
|
||||||
#include "layMarker.h"
|
#include "layMarker.h"
|
||||||
|
|
||||||
|
|
@ -1463,7 +1464,8 @@ MarkerBrowserPage::MarkerBrowserPage (QWidget * /*parent*/)
|
||||||
m_marker_list_sort_order (Qt::DescendingOrder),
|
m_marker_list_sort_order (Qt::DescendingOrder),
|
||||||
m_directory_tree_sorted_section (-1),
|
m_directory_tree_sorted_section (-1),
|
||||||
m_directory_tree_sort_order (Qt::DescendingOrder),
|
m_directory_tree_sort_order (Qt::DescendingOrder),
|
||||||
mp_plugin_root (0)
|
mp_plugin_root (0),
|
||||||
|
dm_rerun_macro (this, &MarkerBrowserPage::rerun_macro)
|
||||||
{
|
{
|
||||||
Ui::MarkerBrowserPage::setupUi (this);
|
Ui::MarkerBrowserPage::setupUi (this);
|
||||||
|
|
||||||
|
|
@ -1514,6 +1516,7 @@ MarkerBrowserPage::MarkerBrowserPage (QWidget * /*parent*/)
|
||||||
connect (info_text, SIGNAL (anchorClicked (const QUrl &)), this, SLOT (info_anchor_clicked (const QUrl &)));
|
connect (info_text, SIGNAL (anchorClicked (const QUrl &)), this, SLOT (info_anchor_clicked (const QUrl &)));
|
||||||
connect (cat_filter, SIGNAL (textEdited (const QString &)), this, SLOT (filter_changed ()));
|
connect (cat_filter, SIGNAL (textEdited (const QString &)), this, SLOT (filter_changed ()));
|
||||||
connect (cell_filter, SIGNAL (textEdited (const QString &)), this, SLOT (filter_changed ()));
|
connect (cell_filter, SIGNAL (textEdited (const QString &)), this, SLOT (filter_changed ()));
|
||||||
|
connect (rerun_button, SIGNAL (pressed ()), this, SLOT (rerun_button_pressed ()));
|
||||||
|
|
||||||
m_show_all_action = new QAction (QObject::tr ("Show All"), this);
|
m_show_all_action = new QAction (QObject::tr ("Show All"), this);
|
||||||
m_show_all_action->setCheckable (true);
|
m_show_all_action->setCheckable (true);
|
||||||
|
|
@ -1678,6 +1681,17 @@ MarkerBrowserPage::set_rdb (rdb::Database *database)
|
||||||
|
|
||||||
mp_database = database;
|
mp_database = database;
|
||||||
|
|
||||||
|
rerun_button->setEnabled (mp_database && ! mp_database->generator ().empty ());
|
||||||
|
if (rerun_button->isEnabled ()) {
|
||||||
|
QString shortcut;
|
||||||
|
if (! rerun_button->shortcut ().isEmpty ()) {
|
||||||
|
shortcut = QString::fromUtf8 (" (%1)").arg (rerun_button->shortcut ().toString ());
|
||||||
|
}
|
||||||
|
rerun_button->setToolTip (tl::to_qstring (tl::to_string (tr ("Run ")) + mp_database->generator ()) + shortcut);
|
||||||
|
} else {
|
||||||
|
rerun_button->setToolTip (QString ());
|
||||||
|
}
|
||||||
|
|
||||||
QAbstractItemModel *tree_model = directory_tree->model ();
|
QAbstractItemModel *tree_model = directory_tree->model ();
|
||||||
|
|
||||||
MarkerBrowserTreeViewModel *new_model = new MarkerBrowserTreeViewModel ();
|
MarkerBrowserTreeViewModel *new_model = new MarkerBrowserTreeViewModel ();
|
||||||
|
|
@ -2643,6 +2657,32 @@ MarkerBrowserPage::flag_button_clicked ()
|
||||||
list_model->mark_data_changed ();
|
list_model->mark_data_changed ();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
MarkerBrowserPage::rerun_button_pressed ()
|
||||||
|
{
|
||||||
|
// NOTE: we use deferred execution, because otherwise the button won't get repainted properly
|
||||||
|
dm_rerun_macro ();
|
||||||
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
MarkerBrowserPage::rerun_macro ()
|
||||||
|
{
|
||||||
|
if (! mp_database->generator ().empty ()) {
|
||||||
|
|
||||||
|
std::map<std::string, tl::Variant> add_pars;
|
||||||
|
|
||||||
|
for (unsigned int i = 0; i < mp_view->num_rdbs (); ++i) {
|
||||||
|
if (mp_view->get_rdb (i) == mp_database) {
|
||||||
|
add_pars["rdb_index"] = tl::Variant (int (i));
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
tl::Recipe::make (mp_database->generator (), add_pars);
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
MarkerBrowserPage::flag_menu_selected ()
|
MarkerBrowserPage::flag_menu_selected ()
|
||||||
{
|
{
|
||||||
|
|
|
||||||
|
|
@ -26,6 +26,7 @@
|
||||||
|
|
||||||
#include "ui_MarkerBrowserPage.h"
|
#include "ui_MarkerBrowserPage.h"
|
||||||
#include "rdbMarkerBrowser.h"
|
#include "rdbMarkerBrowser.h"
|
||||||
|
#include "tlDeferredExecution.h"
|
||||||
#include "dbBox.h"
|
#include "dbBox.h"
|
||||||
|
|
||||||
#include <QFrame>
|
#include <QFrame>
|
||||||
|
|
@ -155,6 +156,7 @@ public slots:
|
||||||
void dir_down_clicked ();
|
void dir_down_clicked ();
|
||||||
void list_up_clicked ();
|
void list_up_clicked ();
|
||||||
void list_down_clicked ();
|
void list_down_clicked ();
|
||||||
|
void rerun_button_pressed ();
|
||||||
void flag_button_clicked ();
|
void flag_button_clicked ();
|
||||||
void flag_menu_selected ();
|
void flag_menu_selected ();
|
||||||
void important_button_clicked ();
|
void important_button_clicked ();
|
||||||
|
|
@ -205,6 +207,7 @@ private:
|
||||||
int m_directory_tree_sorted_section;
|
int m_directory_tree_sorted_section;
|
||||||
Qt::SortOrder m_directory_tree_sort_order;
|
Qt::SortOrder m_directory_tree_sort_order;
|
||||||
lay::PluginRoot *mp_plugin_root;
|
lay::PluginRoot *mp_plugin_root;
|
||||||
|
tl::DeferredMethod<MarkerBrowserPage> dm_rerun_macro;
|
||||||
|
|
||||||
void release_markers ();
|
void release_markers ();
|
||||||
void update_marker_list (int selection_mode);
|
void update_marker_list (int selection_mode);
|
||||||
|
|
@ -214,6 +217,7 @@ private:
|
||||||
void mark_visited (bool visited);
|
void mark_visited (bool visited);
|
||||||
void do_update_markers ();
|
void do_update_markers ();
|
||||||
void update_info_text ();
|
void update_info_text ();
|
||||||
|
void rerun_macro ();
|
||||||
};
|
};
|
||||||
|
|
||||||
} // namespace rdb
|
} // namespace rdb
|
||||||
|
|
|
||||||
|
|
@ -61,6 +61,7 @@ module LVS
|
||||||
@lvs = RBA::LayoutVsSchematic::new(cell.name, layout.dbu)
|
@lvs = RBA::LayoutVsSchematic::new(cell.name, layout.dbu)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
@lvs.name = "LVS"
|
||||||
@lvs.generator = @engine._generator
|
@lvs.generator = @engine._generator
|
||||||
|
|
||||||
@l2n = @lvs
|
@l2n = @lvs
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue