diff --git a/src/laybasic/laybasic/NetlistBrowserPage.ui b/src/laybasic/laybasic/NetlistBrowserPage.ui
index 6d4dff2ca..bf6f55420 100644
--- a/src/laybasic/laybasic/NetlistBrowserPage.ui
+++ b/src/laybasic/laybasic/NetlistBrowserPage.ui
@@ -117,6 +117,9 @@
true
+
+ true
+
-
diff --git a/src/laybasic/laybasic/images/icon_circuit_16.png b/src/laybasic/laybasic/images/icon_circuit_16.png
new file mode 100644
index 000000000..c4282c5e1
Binary files /dev/null and b/src/laybasic/laybasic/images/icon_circuit_16.png differ
diff --git a/src/laybasic/laybasic/images/icon_circuit_24.png b/src/laybasic/laybasic/images/icon_circuit_24.png
new file mode 100644
index 000000000..5248c05f2
Binary files /dev/null and b/src/laybasic/laybasic/images/icon_circuit_24.png differ
diff --git a/src/laybasic/laybasic/images/icon_circuit_32.png b/src/laybasic/laybasic/images/icon_circuit_32.png
new file mode 100644
index 000000000..b38db1df7
Binary files /dev/null and b/src/laybasic/laybasic/images/icon_circuit_32.png differ
diff --git a/src/laybasic/laybasic/images/icon_circuit_48.png b/src/laybasic/laybasic/images/icon_circuit_48.png
new file mode 100644
index 000000000..31222859a
Binary files /dev/null and b/src/laybasic/laybasic/images/icon_circuit_48.png differ
diff --git a/src/laybasic/laybasic/images/icon_device_cap_16.png b/src/laybasic/laybasic/images/icon_device_cap_16.png
new file mode 100644
index 000000000..9ef3f84d2
Binary files /dev/null and b/src/laybasic/laybasic/images/icon_device_cap_16.png differ
diff --git a/src/laybasic/laybasic/images/icon_device_cap_24.png b/src/laybasic/laybasic/images/icon_device_cap_24.png
new file mode 100644
index 000000000..e5583a952
Binary files /dev/null and b/src/laybasic/laybasic/images/icon_device_cap_24.png differ
diff --git a/src/laybasic/laybasic/images/icon_device_cap_32.png b/src/laybasic/laybasic/images/icon_device_cap_32.png
new file mode 100644
index 000000000..4b0de0e5b
Binary files /dev/null and b/src/laybasic/laybasic/images/icon_device_cap_32.png differ
diff --git a/src/laybasic/laybasic/images/icon_device_cap_48.png b/src/laybasic/laybasic/images/icon_device_cap_48.png
new file mode 100644
index 000000000..0ff93c201
Binary files /dev/null and b/src/laybasic/laybasic/images/icon_device_cap_48.png differ
diff --git a/src/laybasic/laybasic/images/icon_device_mos_16.png b/src/laybasic/laybasic/images/icon_device_mos_16.png
new file mode 100644
index 000000000..49fe0babb
Binary files /dev/null and b/src/laybasic/laybasic/images/icon_device_mos_16.png differ
diff --git a/src/laybasic/laybasic/images/icon_device_mos_24.png b/src/laybasic/laybasic/images/icon_device_mos_24.png
new file mode 100644
index 000000000..50e7f147b
Binary files /dev/null and b/src/laybasic/laybasic/images/icon_device_mos_24.png differ
diff --git a/src/laybasic/laybasic/images/icon_device_mos_32.png b/src/laybasic/laybasic/images/icon_device_mos_32.png
new file mode 100644
index 000000000..1eb1eb989
Binary files /dev/null and b/src/laybasic/laybasic/images/icon_device_mos_32.png differ
diff --git a/src/laybasic/laybasic/images/icon_device_mos_48.png b/src/laybasic/laybasic/images/icon_device_mos_48.png
new file mode 100644
index 000000000..e4755b95d
Binary files /dev/null and b/src/laybasic/laybasic/images/icon_device_mos_48.png differ
diff --git a/src/laybasic/laybasic/images/icon_device_res_16.png b/src/laybasic/laybasic/images/icon_device_res_16.png
new file mode 100644
index 000000000..712d54dcd
Binary files /dev/null and b/src/laybasic/laybasic/images/icon_device_res_16.png differ
diff --git a/src/laybasic/laybasic/images/icon_device_res_24.png b/src/laybasic/laybasic/images/icon_device_res_24.png
new file mode 100644
index 000000000..f919839df
Binary files /dev/null and b/src/laybasic/laybasic/images/icon_device_res_24.png differ
diff --git a/src/laybasic/laybasic/images/icon_device_res_32.png b/src/laybasic/laybasic/images/icon_device_res_32.png
new file mode 100644
index 000000000..8c561defd
Binary files /dev/null and b/src/laybasic/laybasic/images/icon_device_res_32.png differ
diff --git a/src/laybasic/laybasic/images/icon_device_res_48.png b/src/laybasic/laybasic/images/icon_device_res_48.png
new file mode 100644
index 000000000..3a9dd1700
Binary files /dev/null and b/src/laybasic/laybasic/images/icon_device_res_48.png differ
diff --git a/src/laybasic/laybasic/images/icon_net_16.png b/src/laybasic/laybasic/images/icon_net_16.png
new file mode 100644
index 000000000..0c395df79
Binary files /dev/null and b/src/laybasic/laybasic/images/icon_net_16.png differ
diff --git a/src/laybasic/laybasic/images/icon_net_24.png b/src/laybasic/laybasic/images/icon_net_24.png
new file mode 100644
index 000000000..18347cfde
Binary files /dev/null and b/src/laybasic/laybasic/images/icon_net_24.png differ
diff --git a/src/laybasic/laybasic/images/icon_net_32.png b/src/laybasic/laybasic/images/icon_net_32.png
new file mode 100644
index 000000000..a89683443
Binary files /dev/null and b/src/laybasic/laybasic/images/icon_net_32.png differ
diff --git a/src/laybasic/laybasic/images/icon_net_48.png b/src/laybasic/laybasic/images/icon_net_48.png
new file mode 100644
index 000000000..c8ead4e43
Binary files /dev/null and b/src/laybasic/laybasic/images/icon_net_48.png differ
diff --git a/src/laybasic/laybasic/images/icon_pin_16.png b/src/laybasic/laybasic/images/icon_pin_16.png
new file mode 100644
index 000000000..dc886e61d
Binary files /dev/null and b/src/laybasic/laybasic/images/icon_pin_16.png differ
diff --git a/src/laybasic/laybasic/images/icon_pin_24.png b/src/laybasic/laybasic/images/icon_pin_24.png
new file mode 100644
index 000000000..3a92bd666
Binary files /dev/null and b/src/laybasic/laybasic/images/icon_pin_24.png differ
diff --git a/src/laybasic/laybasic/images/icon_pin_32.png b/src/laybasic/laybasic/images/icon_pin_32.png
new file mode 100644
index 000000000..82e305b38
Binary files /dev/null and b/src/laybasic/laybasic/images/icon_pin_32.png differ
diff --git a/src/laybasic/laybasic/images/icon_pin_48.png b/src/laybasic/laybasic/images/icon_pin_48.png
new file mode 100644
index 000000000..35aca773a
Binary files /dev/null and b/src/laybasic/laybasic/images/icon_pin_48.png differ
diff --git a/src/laybasic/laybasic/images/icons.svg b/src/laybasic/laybasic/images/icons.svg
new file mode 100644
index 000000000..3f255edc9
--- /dev/null
+++ b/src/laybasic/laybasic/images/icons.svg
@@ -0,0 +1,1797 @@
+
+
+
+
diff --git a/src/laybasic/laybasic/layNetlistBrowserPage.cc b/src/laybasic/laybasic/layNetlistBrowserPage.cc
index e50db314d..bb10723c4 100644
--- a/src/laybasic/laybasic/layNetlistBrowserPage.cc
+++ b/src/laybasic/laybasic/layNetlistBrowserPage.cc
@@ -23,6 +23,7 @@
#include "layNetlistBrowserPage.h"
#include "dbLayoutToNetlist.h"
+#include "dbNetlistDeviceClasses.h"
namespace lay
{
@@ -415,10 +416,22 @@ NetlistBrowserModel::columnCount (const QModelIndex & /*parent*/) const
QVariant
NetlistBrowserModel::data (const QModelIndex &index, int role) const
{
- if (role != Qt::DisplayRole || ! index.isValid ()) {
+ if (! index.isValid ()) {
return QVariant ();
}
+ if (role == Qt::DecorationRole && index.column () == 0) {
+ return QVariant (icon (index));
+ } else if (role == Qt::DisplayRole) {
+ return QVariant (text (index));
+ } else {
+ return QVariant ();
+ }
+}
+
+QString
+NetlistBrowserModel::text (const QModelIndex &index) const
+{
void *id = index.internalPointer ();
if (is_id_circuit (id)) {
@@ -520,7 +533,102 @@ NetlistBrowserModel::data (const QModelIndex &index, int role) const
}
- return QVariant ();
+ return QString ();
+}
+
+static QIcon icon_for_net ()
+{
+ QIcon icon;
+ icon.addPixmap (QPixmap (QString::fromUtf8 (":/images/icon_net_48.png")));
+ icon.addPixmap (QPixmap (QString::fromUtf8 (":/images/icon_net_32.png")));
+ icon.addPixmap (QPixmap (QString::fromUtf8 (":/images/icon_net_24.png")));
+ icon.addPixmap (QPixmap (QString::fromUtf8 (":/images/icon_net_16.png")));
+ return icon;
+}
+
+static QIcon icon_for_pin ()
+{
+ QIcon icon;
+ icon.addPixmap (QPixmap (QString::fromUtf8 (":/images/icon_pin_48.png")));
+ icon.addPixmap (QPixmap (QString::fromUtf8 (":/images/icon_pin_32.png")));
+ icon.addPixmap (QPixmap (QString::fromUtf8 (":/images/icon_pin_24.png")));
+ icon.addPixmap (QPixmap (QString::fromUtf8 (":/images/icon_pin_16.png")));
+ return icon;
+}
+
+static QIcon icon_for_device (const db::DeviceClass *dc)
+{
+ QIcon icon;
+ // TODO: diode, inductor, generic device ...
+ if (dynamic_cast (dc)) {
+ icon.addPixmap (QPixmap (QString::fromUtf8 (":/images/icon_device_res_48.png")));
+ icon.addPixmap (QPixmap (QString::fromUtf8 (":/images/icon_device_res_32.png")));
+ icon.addPixmap (QPixmap (QString::fromUtf8 (":/images/icon_device_res_24.png")));
+ icon.addPixmap (QPixmap (QString::fromUtf8 (":/images/icon_device_res_16.png")));
+ } else if (dynamic_cast (dc)) {
+ icon.addPixmap (QPixmap (QString::fromUtf8 (":/images/icon_device_cap_48.png")));
+ icon.addPixmap (QPixmap (QString::fromUtf8 (":/images/icon_device_cap_32.png")));
+ icon.addPixmap (QPixmap (QString::fromUtf8 (":/images/icon_device_cap_24.png")));
+ icon.addPixmap (QPixmap (QString::fromUtf8 (":/images/icon_device_cap_16.png")));
+ } else {
+ icon.addPixmap (QPixmap (QString::fromUtf8 (":/images/icon_device_mos_48.png")));
+ icon.addPixmap (QPixmap (QString::fromUtf8 (":/images/icon_device_mos_32.png")));
+ icon.addPixmap (QPixmap (QString::fromUtf8 (":/images/icon_device_mos_24.png")));
+ icon.addPixmap (QPixmap (QString::fromUtf8 (":/images/icon_device_mos_16.png")));
+ }
+ return icon;
+}
+
+static QIcon icon_for_circuit ()
+{
+ QIcon icon;
+ icon.addPixmap (QPixmap (QString::fromUtf8 (":/images/icon_circuit_48.png")));
+ icon.addPixmap (QPixmap (QString::fromUtf8 (":/images/icon_circuit_32.png")));
+ icon.addPixmap (QPixmap (QString::fromUtf8 (":/images/icon_circuit_24.png")));
+ icon.addPixmap (QPixmap (QString::fromUtf8 (":/images/icon_circuit_16.png")));
+ return icon;
+}
+
+QIcon
+NetlistBrowserModel::icon (const QModelIndex &index) const
+{
+ void *id = index.internalPointer ();
+
+ if (is_id_circuit (id)) {
+ return icon_for_circuit ();
+ } else if (is_id_circuit_pin (id) || is_id_circuit_subcircuit_pin (id)) {
+ return icon_for_pin ();
+ } else if (is_id_circuit_pin_net (id)) {
+ return icon_for_net ();
+ } else if (is_id_circuit_device (id)) {
+
+ db::Device *device = device_from_id (id);
+ if (device) {
+ return icon_for_device (device->device_class ());
+ }
+
+ } else if (is_id_circuit_device_terminal (id)) {
+ return icon_for_net ();
+ } else if (is_id_circuit_subcircuit (id)) {
+ return icon_for_circuit ();
+ } else if (is_id_circuit_net (id)) {
+ return icon_for_net ();
+ } else if (is_id_circuit_net_pin (id) || is_id_circuit_net_subcircuit_pin_others (id)) {
+ return icon_for_pin ();
+ } else if (is_id_circuit_net_subcircuit_pin (id)) {
+ return icon_for_circuit ();
+ } else if (is_id_circuit_net_device_terminal (id)) {
+
+ const db::NetTerminalRef *ref = net_terminalref_from_id (id);
+ if (ref && ref->device ()) {
+ return icon_for_device (ref->device ()->device_class ());
+ }
+
+ } else if (is_id_circuit_net_device_terminal_others (id)) {
+ return icon_for_net ();
+ }
+
+ return QIcon ();
}
Qt::ItemFlags
@@ -664,7 +772,7 @@ NetlistBrowserModel::parent (const QModelIndex &index) const
} else {
void *id = index.internalPointer ();
- int column = index.column ();
+ int column = 0;
if (is_id_circuit (id)) {
diff --git a/src/laybasic/laybasic/layNetlistBrowserPage.h b/src/laybasic/laybasic/layNetlistBrowserPage.h
index 64e1d8dba..8baeb3a3c 100644
--- a/src/laybasic/laybasic/layNetlistBrowserPage.h
+++ b/src/laybasic/laybasic/layNetlistBrowserPage.h
@@ -126,6 +126,8 @@ private:
db::Device *device_from_id (void *id) const;
db::Pin *pin_from_id (void *id) const;
db::SubCircuit *subcircuit_from_id (void *id) const;
+ QString text (const QModelIndex &index) const;
+ QIcon icon (const QModelIndex &index) const;
db::Netlist *netlist () const
{
diff --git a/src/laybasic/laybasic/laybasic.pro b/src/laybasic/laybasic/laybasic.pro
index a76210d9a..190d7ff74 100644
--- a/src/laybasic/laybasic/laybasic.pro
+++ b/src/laybasic/laybasic/laybasic.pro
@@ -72,6 +72,7 @@ FORMS = \
NetlistBrowserDialog.ui
RESOURCES = \
+ laybasicResources.qrc
SOURCES = \
gtf.cc \
diff --git a/src/laybasic/laybasic/laybasicResources.qrc b/src/laybasic/laybasic/laybasicResources.qrc
new file mode 100644
index 000000000..23dfc02e8
--- /dev/null
+++ b/src/laybasic/laybasic/laybasicResources.qrc
@@ -0,0 +1,28 @@
+
+
+ images/icon_device_cap_16.png
+ images/icon_device_cap_24.png
+ images/icon_device_cap_32.png
+ images/icon_device_cap_48.png
+ images/icon_device_res_16.png
+ images/icon_device_res_24.png
+ images/icon_device_res_32.png
+ images/icon_device_res_48.png
+ images/icon_device_mos_16.png
+ images/icon_device_mos_24.png
+ images/icon_device_mos_32.png
+ images/icon_device_mos_48.png
+ images/icon_net_48.png
+ images/icon_net_16.png
+ images/icon_net_24.png
+ images/icon_net_32.png
+ images/icon_pin_16.png
+ images/icon_pin_24.png
+ images/icon_pin_32.png
+ images/icon_pin_48.png
+ images/icon_circuit_16.png
+ images/icon_circuit_24.png
+ images/icon_circuit_32.png
+ images/icon_circuit_48.png
+
+