diff --git a/README.md b/README.md index 0ec483c2..e2065c2f 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,4 @@ -latCAM: 2D Computer-Aided PCB Manufacturing +FlatCAM: 2D Computer-Aided PCB Manufacturing ================================================= (c) 2014-2019 Juan Pablo Caram diff --git a/tests/titlebar_custom.py b/tests/titlebar_custom.py new file mode 100644 index 00000000..949f55b5 --- /dev/null +++ b/tests/titlebar_custom.py @@ -0,0 +1,158 @@ +######################################################### +## customize Title bar +## dotpy.ir +## iraj.jelo@gmail.com +######################################################### +import sys +from PyQt5 import QtWidgets, QtGui +from PyQt5 import QtCore +from PyQt5.QtCore import Qt + + +class TitleBar(QtWidgets.QDialog): + def __init__(self, parent=None): + QtWidgets.QWidget.__init__(self, parent) + self.setWindowFlags(Qt.FramelessWindowHint) + css = """ + QWidget{ + Background: #0000FF; + color:white; + font:12px bold; + font-weight:bold; + border-radius: 1px; + height: 11px; + } + QDialog{ + Background-image:url('img/titlebar bg.png'); + font-size:12px; + color: black; + + } + QToolButton{ + Background:#AA00AA; + font-size:11px; + } + QToolButton:hover{ + Background: #FF00FF; + font-size:11px; + } + """ + self.setAutoFillBackground(True) + self.setBackgroundRole(QtGui.QPalette.Highlight) + self.setStyleSheet(css) + self.minimize=QtWidgets.QToolButton(self) + self.minimize.setIcon(QtGui.QIcon('img/min.png')) + self.maximize=QtWidgets.QToolButton(self) + self.maximize.setIcon(QtGui.QIcon('img/max.png')) + close=QtWidgets.QToolButton(self) + close.setIcon(QtGui.QIcon('img/close.png')) + self.minimize.setMinimumHeight(10) + close.setMinimumHeight(10) + self.maximize.setMinimumHeight(10) + label=QtWidgets.QLabel(self) + label.setText("Window Title") + self.setWindowTitle("Window Title") + hbox=QtWidgets.QHBoxLayout(self) + hbox.addWidget(label) + hbox.addWidget(self.minimize) + hbox.addWidget(self.maximize) + hbox.addWidget(close) + hbox.insertStretch(1,500) + hbox.setSpacing(0) + self.setSizePolicy(QtWidgets.QSizePolicy.Expanding,QtWidgets.QSizePolicy.Fixed) + self.maxNormal=False + close.clicked.connect(self.close) + self.minimize.clicked.connect(self.showSmall) + self.maximize.clicked.connect(self.showMaxRestore) + + def showSmall(self): + box.showMinimized() + + def showMaxRestore(self): + if(self.maxNormal): + box.showNormal() + self.maxNormal= False + self.maximize.setIcon(QtGui.QIcon('img/max.png')) + else: + box.showMaximized() + self.maxNormal = True + self.maximize.setIcon(QtGui.QIcon('img/max2.png')) + + def close(self): + box.close() + + def mousePressEvent(self,event): + if event.button() == Qt.LeftButton: + box.moving = True + box.offset = event.pos() + if event.type() == QtCore.QEvent.MouseButtonDblClick: + self.showMaxRestore() + + def mouseMoveEvent(self,event): + if box.isMaximized(): + self.showMaxRestore() + box.move(event.globalPos() - box.offset) + else: + if box.moving: + box.move(event.globalPos()-box.offset) + + +class Frame(QtWidgets.QFrame): + def __init__(self, parent=None): + QtWidgets.QFrame.__init__(self, parent) + self.m_mouse_down= False + self.setFrameShape(QtWidgets.QFrame.StyledPanel) + css = """ + QFrame{ + Background: #FFFFF0; + color:white; + font:13px ; + font-weight:bold; + } + """ + self.setStyleSheet(css) + self.setWindowFlags(Qt.FramelessWindowHint) + self.setMouseTracking(True) + self.m_titleBar= TitleBar(self) + self.m_content= QtWidgets.QWidget(self) + vbox=QtWidgets.QVBoxLayout(self) + vbox.addWidget(self.m_titleBar) + vbox.setContentsMargins(0, 0, 0, 0) + vbox.setSpacing(0) + layout=QtWidgets.QVBoxLayout() + layout.addWidget(self.m_content) + layout.setContentsMargins(5, 5, 5, 5) + layout.setSpacing(0) + vbox.addLayout(layout) + # Allows you to access the content area of the frame + # where widgets and layouts can be added + + def contentWidget(self): + return self.m_content + + def titleBar(self): + return self.m_titleBar + + def mousePressEvent(self,event): + self.m_old_pos = event.pos() + self.m_mouse_down = event.button()== Qt.LeftButton + + def mouseMoveEvent(self,event): + x=event.x() + y=event.y() + + def mouseReleaseEvent(self,event): + m_mouse_down=False + +if __name__ == '__main__': + app = QtWidgets.QApplication(sys.argv) + box = Frame() + box.move(60,60) + l=QtWidgets.QVBoxLayout(box.contentWidget()) + l.setContentsMargins(0, 0, 0, 0) + edit=QtWidgets.QLabel("""I would've did anything for you to show you how much I adored you +But it's over now, it's too late to save our loveJust promise me you'll think of me +Every time you look up in the sky and see a star 'cuz I'm your star.""") + l.addWidget(edit) + box.show() + app.exec_() \ No newline at end of file