def resize_columns(self): if not self.isVisible(): return f = QFontMetrics(self.font()) w = f.widthChar("0") + 2 for i in range(10): self.setColumnWidth(i, 3 * w) QApplication.instance().processEvents() for i in range(9, self.model().columnCount()): self.setColumnWidth(i, w * (len(str(i + 1)) + 1)) if i % 10 == 0: QApplication.instance().processEvents()
def setup_ui(self): """ Setup Ui """ main_wrap = QVBoxLayout() main_wrap.setContentsMargins(0, 0, 0, 0) # updatebar on top self.update_bar = UpdateBar(self) self.update_bar.onUpdateNowClicked.connect(self._update_dwarf) self.update_bar.setVisible(False) main_wrap.addWidget(self.update_bar) # main content h_box = QHBoxLayout() h_box.setContentsMargins(15, 15, 15, 15) wrapper = QVBoxLayout() head = QHBoxLayout() head.setContentsMargins(50, 10, 0, 10) # dwarf icon icon = QLabel() icon.setPixmap(QPixmap(utils.resource_path('assets/dwarf.svg'))) icon.setAlignment(Qt.AlignCenter) icon.setMinimumSize(QSize(125, 125)) icon.setMaximumSize(QSize(125, 125)) head.addWidget(icon) # main title v_box = QVBoxLayout() title = QLabel('Dwarf') title.setContentsMargins(0, 0, 0, 0) font = QFont('Anton', 100, QFont.Bold) font.setPixelSize(120) title.setFont(font) title.setMaximumHeight(125) title.setSizePolicy(QSizePolicy.Expanding, QSizePolicy.Minimum) title.setAlignment(Qt.AlignCenter) head.addWidget(title) sub_title_text = (self._pick_random_word(0) + ' ' + self._pick_random_word(1) + ' ' + self._pick_random_word(2) + ' ' + self._pick_random_word(3) + ' ' + self._pick_random_word(4)) sub_title_text = sub_title_text[:1].upper() + sub_title_text[1:] self._sub_title = QLabel(sub_title_text) font = QFont('OpenSans', 16, QFont.Bold) font.setPixelSize(24) self._sub_title.setFont(font) font_metric = QFontMetrics(self._sub_title.font()) self._char_width = font_metric.widthChar('#') self._sub_title.setAlignment(Qt.AlignCenter) self._sub_title.setContentsMargins(175, 0, 0, 20) self._sub_title.setSizePolicy(QSizePolicy.Expanding, QSizePolicy.Minimum) v_box.addLayout(head) v_box.addWidget(self._sub_title) wrapper.addLayout(v_box) recent = QLabel('Recent saved Sessions') font = recent.font() font.setPixelSize(14) font.setBold(True) # font.setPointSize(10) recent.setFont(font) wrapper.addWidget(recent) wrapper.addWidget(self._recent_list) h_box.addLayout(wrapper, stretch=False) buttonSpacer = QSpacerItem(15, 100, QSizePolicy.Fixed, QSizePolicy.Minimum) h_box.addItem(buttonSpacer) wrapper = QVBoxLayout() btn = QPushButton() ico = QIcon(QPixmap(utils.resource_path('assets/android.svg'))) btn.setIconSize(QSize(75, 75)) btn.setIcon(ico) btn.setToolTip('New Android Session') btn.clicked.connect(self._on_android_button) wrapper.addWidget(btn) btn = QPushButton() ico = QIcon(QPixmap(utils.resource_path('assets/apple.svg'))) btn.setIconSize(QSize(75, 75)) btn.setIcon(ico) btn.setToolTip('New iOS Session') btn.clicked.connect(self._on_ios_button) wrapper.addWidget(btn) btn = QPushButton() ico = QIcon(QPixmap(utils.resource_path('assets/local.svg'))) btn.setIconSize(QSize(75, 75)) btn.setIcon(ico) btn.setToolTip('New Local Session') btn.clicked.connect(self._on_local_button) wrapper.addWidget(btn) btn = QPushButton() ico = QIcon(QPixmap(utils.resource_path('assets/remote.svg'))) btn.setIconSize(QSize(75, 75)) btn.setIcon(ico) btn.setToolTip('New Remote Session') btn.clicked.connect(self._on_remote_button) wrapper.addWidget(btn) h_box.addLayout(wrapper, stretch=False) main_wrap.addLayout(h_box) self.setLayout(main_wrap)
def setup_ui(self): """ Setup Ui """ main_wrap = QVBoxLayout() main_wrap.setContentsMargins(0, 0, 0, 0) # updatebar on top self.update_bar = UpdateBar(self) self.update_bar.onUpdateNowClicked.connect(self._update_dwarf) self.update_bar.setVisible(False) main_wrap.addWidget(self.update_bar) # main content h_box = QHBoxLayout() h_box.setContentsMargins(15, 15, 15, 15) wrapper = QVBoxLayout() head = QHBoxLayout() head.setContentsMargins(50, 10, 0, 10) # dwarf icon icon = QLabel() icon.setPixmap(QPixmap(utils.resource_path('assets/dwarf.svg'))) icon.setAlignment(Qt.AlignCenter) icon.setMinimumSize(QSize(125, 125)) icon.setMaximumSize(QSize(125, 125)) head.addWidget(icon) # main title v_box = QVBoxLayout() title = QLabel('Dwarf') title.setContentsMargins(0, 0, 0, 0) title.setFont(QFont('Anton', 100, QFont.Bold)) title.setMaximumHeight(125) title.setSizePolicy(QSizePolicy.Expanding, QSizePolicy.Minimum) title.setAlignment(Qt.AlignCenter) head.addWidget(title) sub_title_text = (self._pick_random_word(0) + ' ' + self._pick_random_word(1) + ' ' + self._pick_random_word(2) + ' ' + self._pick_random_word(3) + ' ' + self._pick_random_word(4)) sub_title_text = sub_title_text[:1].upper() + sub_title_text[1:] self._sub_title = QLabel(sub_title_text) self._sub_title.setFont(QFont('OpenSans', 16, QFont.Bold)) font_metric = QFontMetrics(self._sub_title.font()) self._char_width = font_metric.widthChar('#') self._sub_title.setAlignment(Qt.AlignCenter) self._sub_title.setContentsMargins(175, 0, 0, 20) self._sub_title.setSizePolicy(QSizePolicy.Expanding, QSizePolicy.Minimum) v_box.addLayout(head) v_box.addWidget(self._sub_title) wrapper.addLayout(v_box) recent = QLabel('Last saved Sessions') font = recent.font() font.setPointSize(11) font.setBold(True) #font.setPointSize(10) recent.setFont(font) wrapper.addWidget(recent) wrapper.addWidget(self._recent_list) h_box.addLayout(wrapper, stretch=False) buttonSpacer = QSpacerItem(15, 100, QSizePolicy.Fixed, QSizePolicy.Minimum) h_box.addItem(buttonSpacer) wrapper = QVBoxLayout() btn = QPushButton() ico = QIcon(QPixmap(utils.resource_path('assets/android.svg'))) btn.setIconSize(QSize(75, 75)) btn.setIcon(ico) btn.setToolTip('New Android Session') btn.clicked.connect(self._on_android_button) wrapper.addWidget(btn) btn = QPushButton() ico = QIcon(QPixmap(utils.resource_path('assets/apple.svg'))) btn.setIconSize(QSize(75, 75)) btn.setIcon(ico) btn.setToolTip('New iOS Session') btn.clicked.connect(self._on_ios_button) wrapper.addWidget(btn) btn = QPushButton() ico = QIcon(QPixmap(utils.resource_path('assets/local.svg'))) btn.setIconSize(QSize(75, 75)) btn.setIcon(ico) btn.setToolTip('New Local Session') btn.clicked.connect(self._on_local_button) wrapper.addWidget(btn) btn = QPushButton() ico = QIcon(QPixmap(utils.resource_path('assets/remote.svg'))) btn.setIconSize(QSize(75, 75)) btn.setIcon(ico) btn.setToolTip('New Remote Session') btn.clicked.connect(self._on_remote_button) wrapper.addWidget(btn) session_history = self._prefs.get(prefs.RECENT_SESSIONS, default=[]) invalid_session_files = [] for recent_session_file in session_history: if os.path.exists(recent_session_file): with open(recent_session_file, 'r') as f: exported_session = json.load(f) hooks = '0' watchers = '0' on_loads = 0 bookmarks = '0' #have_user_script = False if 'hooks' in exported_session and exported_session[ 'hooks'] is not None: hooks = str(len(exported_session['hooks'])) if 'watchers' in exported_session and exported_session[ 'watchers'] is not None: watchers = str(len(exported_session['watchers'])) if 'nativeOnLoads' in exported_session and exported_session[ 'nativeOnLoads'] is not None: on_loads += len(exported_session['nativeOnLoads']) if 'javaOnLoads' in exported_session and exported_session[ 'javaOnLoads'] is not None: on_loads += len(exported_session['javaOnLoads']) if 'bookmarks' in exported_session and exported_session[ 'bookmarks'] is not None: bookmarks = str(len(exported_session['bookmarks'])) if 'user_script' in exported_session and exported_session[ 'user_script']: have_user_script = exported_session['user_script'] != '' #user_script_item = QStandardItem() #if have_user_script: #user_script_item.setIcon(self._dot_icon) on_loads = str(on_loads) recent_session_file_item = QStandardItem(recent_session_file) recent_session_file_item.setData(exported_session, Qt.UserRole + 2) item_1 = QStandardItem(exported_session['session']) item_1.setTextAlignment(Qt.AlignCenter) item_2 = QStandardItem(hooks) item_2.setTextAlignment(Qt.AlignCenter) item_3 = QStandardItem(watchers) item_3.setTextAlignment(Qt.AlignCenter) item_4 = QStandardItem(on_loads) item_4.setTextAlignment(Qt.AlignCenter) item_5 = QStandardItem(bookmarks) item_5.setTextAlignment(Qt.AlignCenter) #item_6 = QStandardItem(user_script_item) #item_6.setTextAlignment(Qt.AlignCenter) self._recent_list_model.insertRow( self._recent_list_model.rowCount(), [ recent_session_file_item, item_1, item_2, item_3, item_4, item_5 ]) else: invalid_session_files.append(recent_session_file) for invalid in invalid_session_files: session_history.pop(session_history.index(invalid)) self._prefs.put(prefs.RECENT_SESSIONS, session_history) h_box.addLayout(wrapper, stretch=False) main_wrap.addLayout(h_box) self.setLayout(main_wrap)