Example #1
0
class SwitchNode:
    def __init__(self, x, y, len, wd, num, port, btn, text):
        self.links = [False, False, False, False]
        self.window = SwWin(self)
        self.switch = Switch(num, 0, self.window)
        self.width = wd
        self.len = len
        self.setpos(x, y, port)
        self.btn = btn
        self.text = text
        self.btn.setGeometry(self.x, self.y, 80, 80)
        self.text.setGeometry(self.x + 5, self.y + 80, 100, 25)
        font = QFont()
        font.setBold(True)
        font.setPointSize(9)
        self.text.setFont(font)
        _translate = QCoreApplication.translate
        self.text.setText(_translate("MainWindow", "交换机" + str(num)))
        self.text.setStyleSheet("border:none;")
        self.btn.setStyleSheet(
            'QPushButton{background-image:url(pictures/switch.png)}')
        self.btn.setStyleSheet(
            'QPushButton{border-image:url(pictures/switch.png)}')
        self.btn.clicked.connect(self.goto)

    def goto(self):
        self.window.show()

    def getport(self, n):
        return self.switch.ports[n - 1]

    def setpos(self, x, y, direc):
        if direc == 1:
            self.x, self.y = x - self.len / 2, y - self.width
        elif direc == 2:
            self.x, self.y = x - self.len, y - self.width / 2
        elif direc == 3:
            self.x, self.y = x - self.len / 2, y
        elif direc == 4:
            self.x, self.y = x, y - self.width / 2
        else:
            self.x, self.y = x, y

    #def setLink(self,my_port,dest_sw,dest_port):
    #self.links[my_port]=(dest_sw,dest_port)

    def show(self):

        self.btn.show()
        self.text.show()

    def port1_pos(self):
        return (self.x + self.len / 2 - 10, self.y, self.x + self.len / 2 - 10,
                self.y - 90)

    def port2_pos(self):
        return (self.x, self.y + self.width / 2 + 5, self.x - 70,
                self.y + self.width / 2 + 5)

    def port3_pos(self):
        return (self.x + self.len / 2 - 10, self.y + self.width / 2,
                self.x + self.len / 2 - 10, self.y + self.width / 2 + 110)

    def port4_pos(self):
        return (self.x + self.len - 20, self.y + self.width / 2 + 5,
                self.x + self.len + 70 - 20, self.y + self.width / 2 + 5)

    def port_pos(self, i):
        if i == 1: return self.port1_pos()
        if i == 2: return self.port2_pos()
        if i == 3: return self.port3_pos()
        if i == 4: return self.port4_pos()

    def add_activePort(self, i):
        self.switch.add_active_port(i)