git-svn-id: svn://db.shs.com.ru/libs@167 a8b55f48-bf90-11e4-a774-851b48703e85
This commit is contained in:
@@ -192,8 +192,6 @@ void CDCore::K_Send() {
|
||||
piCoutObj << "K_Send";
|
||||
PIByteArray ba;
|
||||
PIIOByteArray iob(&ba, PIIODevice::ReadWrite);
|
||||
// PIIOByteArray iob;
|
||||
// iob.open(&ba, PIIODevice::ReadWrite);
|
||||
k_write(&iob);
|
||||
//piCoutObj << PIString(ba);
|
||||
if (sendt.isRunning()) {
|
||||
|
||||
@@ -25,7 +25,7 @@ public:
|
||||
const CDType operator [](const PIDeque<int> & path_) const {return (*this)[path_];}
|
||||
CDSection & section(int v);
|
||||
const CDSection section(int v) const;
|
||||
CDSection & section(const PIDeque<int> &path);
|
||||
CDSection & section(const PIDeque<int> & path);
|
||||
CDSection & root();
|
||||
const CDSection root() const;
|
||||
|
||||
|
||||
@@ -8,6 +8,7 @@ namespace CDUtils {
|
||||
enum CDPacketType {CD_Ping, CD_Pong, CD_KQuery, CD_KSend, CD_Command, CD_XData, CD_XQuery};
|
||||
|
||||
# pragma pack(push,1)
|
||||
|
||||
struct PacketHeader {
|
||||
int type; // CDPacketType
|
||||
int session_id;
|
||||
|
||||
@@ -441,12 +441,15 @@ bool BlockView::eventFilter(QObject * o, QEvent * e) {
|
||||
blockSignals(true);
|
||||
if (moved) {
|
||||
QList<BlockItem*> ci;
|
||||
QList<BlockBusItem*> bi;
|
||||
foreach (QGraphicsItem * b, sel_items)
|
||||
if (b->data(1006) == "item") {
|
||||
ci << qgraphicsitem_cast<BlockItem*>(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);
|
||||
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() {
|
||||
if (!scene()) return;
|
||||
QSizeF sr = sceneRect().size(), tr;
|
||||
|
||||
@@ -99,11 +99,13 @@ protected:
|
||||
void markPins(int bus_type);
|
||||
void unmarkPins(bool to_normal = false);
|
||||
void moveBuses(const QList<QGraphicsItem * > & items, QPointF dp);
|
||||
QList<BlockBusItem * > internalBuses(const QList<BlockItem * > & items);
|
||||
double _thumb() const {return _talpha;}
|
||||
void scrollFromThumb();
|
||||
|
||||
virtual void loadBus(BlockBusItem * bus) {}
|
||||
virtual void copyBlocks(QList<BlockItem * > items, QPointF offset) {}
|
||||
virtual void copyBuses(QList<BlockBusItem * > items, QPointF offset) {}
|
||||
virtual void newBusStarted(int bus_type) {}
|
||||
|
||||
QGraphicsScene * scene_;
|
||||
|
||||
Reference in New Issue
Block a user