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 @@ + + + + + + + + + + + + image/svg+xml + + + + + + + + 48x48 + + 32x32 + + 24x24 + + 16x16 + + icon_device_res_48.png + + + + + + + + + + + + + + + + + + + + + + + + + + + + icon_device_res_32.png + icon_device_res_24.png + icon_device_res_16.png + + icon_device_cap_48.png + + + + + + + + + + + + + + + + + icon_device_cap_32.png + icon_device_cap_24.png + icon_device_cap_16.png + + + + + icon_device_mos_48.png + + + + + + + + + + + + + + + icon_device_mos_32.png + icon_device_mos_24.png + icon_device_mos_16.png + + + + + + + + + + + + + + + + icon_net_48.png + + + + + + + icon_net_32.png + icon_net_24.png + icon_net_16.png + + + + + + + + + + icon_pin_48.png + icon_pin_32.png + icon_pin_24.png + icon_pin_16.png + + + + + + + + + + + + + + icon_circuit_48.png + + + + icon_circuit_32.png + icon_circuit_24.png + icon_circuit_16.png + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 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 + +