git-svn-id: svn://db.shs.com.ru/libs@167 a8b55f48-bf90-11e4-a774-851b48703e85

This commit is contained in:
2017-03-15 13:21:12 +00:00
parent 270bfffd5f
commit 67d8d3576d
5 changed files with 22 additions and 4 deletions

View File

@@ -192,8 +192,6 @@ void CDCore::K_Send() {
piCoutObj << "K_Send"; piCoutObj << "K_Send";
PIByteArray ba; PIByteArray ba;
PIIOByteArray iob(&ba, PIIODevice::ReadWrite); PIIOByteArray iob(&ba, PIIODevice::ReadWrite);
// PIIOByteArray iob;
// iob.open(&ba, PIIODevice::ReadWrite);
k_write(&iob); k_write(&iob);
//piCoutObj << PIString(ba); //piCoutObj << PIString(ba);
if (sendt.isRunning()) { if (sendt.isRunning()) {

View File

@@ -25,7 +25,7 @@ public:
const CDType operator [](const PIDeque<int> & path_) const {return (*this)[path_];} const CDType operator [](const PIDeque<int> & path_) const {return (*this)[path_];}
CDSection & section(int v); CDSection & section(int v);
const CDSection section(int v) const; const CDSection section(int v) const;
CDSection & section(const PIDeque<int> &path); CDSection & section(const PIDeque<int> & path);
CDSection & root(); CDSection & root();
const CDSection root() const; const CDSection root() const;

View File

@@ -8,6 +8,7 @@ namespace CDUtils {
enum CDPacketType {CD_Ping, CD_Pong, CD_KQuery, CD_KSend, CD_Command, CD_XData, CD_XQuery}; enum CDPacketType {CD_Ping, CD_Pong, CD_KQuery, CD_KSend, CD_Command, CD_XData, CD_XQuery};
# pragma pack(push,1) # pragma pack(push,1)
struct PacketHeader { struct PacketHeader {
int type; // CDPacketType int type; // CDPacketType
int session_id; int session_id;

View File

@@ -441,12 +441,15 @@ bool BlockView::eventFilter(QObject * o, QEvent * e) {
blockSignals(true); blockSignals(true);
if (moved) { if (moved) {
QList<BlockItem*> ci; QList<BlockItem*> ci;
QList<BlockBusItem*> bi;
foreach (QGraphicsItem * b, sel_items) foreach (QGraphicsItem * b, sel_items)
if (b->data(1006) == "item") { if (b->data(1006) == "item") {
ci << qgraphicsitem_cast<BlockItem*>(b); ci << qgraphicsitem_cast<BlockItem*>(b);
ai << qgraphicsitem_cast<QGraphicsItem*>(b); ai << qgraphicsitem_cast<QGraphicsItem*>(b);
} }
copyBlocks(ci, copy_dp); bi = internalBuses(ci);
if (!ci.isEmpty()) copyBlocks(ci, copy_dp);
if (!bi.isEmpty()) copyBuses(bi, copy_dp);
} }
qDeleteAll(copy_items); qDeleteAll(copy_items);
copy_items.clear(); copy_items.clear();
@@ -1186,6 +1189,20 @@ void BlockView::moveBuses(const QList<QGraphicsItem * > & items, QPointF dp) {
} }
QList<BlockBusItem * > BlockView::internalBuses(const QList<BlockItem * > & items) {
QList<BlockBusItem * > ret;
if (items.isEmpty()) return ret;
QList<BlockBusItem * > sbl = buses();
QSet<BlockItem * > sis = QSet<BlockItem * >::fromList(items);
foreach (BlockBusItem * bi, sbl) {
QSet<BlockItem * > bis = QSet<BlockItem * >::fromList(bi->connectedBlocks());
if ((bis - sis).isEmpty())
ret << bi;
}
return ret;
}
void BlockView::adjustThumb() { void BlockView::adjustThumb() {
if (!scene()) return; if (!scene()) return;
QSizeF sr = sceneRect().size(), tr; QSizeF sr = sceneRect().size(), tr;

View File

@@ -99,11 +99,13 @@ protected:
void markPins(int bus_type); void markPins(int bus_type);
void unmarkPins(bool to_normal = false); void unmarkPins(bool to_normal = false);
void moveBuses(const QList<QGraphicsItem * > & items, QPointF dp); void moveBuses(const QList<QGraphicsItem * > & items, QPointF dp);
QList<BlockBusItem * > internalBuses(const QList<BlockItem * > & items);
double _thumb() const {return _talpha;} double _thumb() const {return _talpha;}
void scrollFromThumb(); void scrollFromThumb();
virtual void loadBus(BlockBusItem * bus) {} virtual void loadBus(BlockBusItem * bus) {}
virtual void copyBlocks(QList<BlockItem * > items, QPointF offset) {} virtual void copyBlocks(QList<BlockItem * > items, QPointF offset) {}
virtual void copyBuses(QList<BlockBusItem * > items, QPointF offset) {}
virtual void newBusStarted(int bus_type) {} virtual void newBusStarted(int bus_type) {}
QGraphicsScene * scene_; QGraphicsScene * scene_;