class BtnFrame(QtGui.QFrame): def __init__(self, parent): self.tor_process = None self.torrc_path = None self.tor_start = False self.log_viewer = LogViewer(self) self.comms = Communicate() super(BtnFrame, self).__init__() self.init() def init(self): # button to start/stop Tor main_btn = QtGui.QPushButton('Start Tor', self) main_btn.clicked.connect(self.main_btn_clicked) main_btn.resize(main_btn.sizeHint()) # show logs log_btn = QtGui.QPushButton('Show Logs', self) log_btn.clicked.connect(self.show_logs) log_btn.resize(log_btn.sizeHint()) # show torrc torrc_btn = QtGui.QPushButton('Show Torrc', self) torrc_btn.clicked.connect(self.show_torrc) torrc_btn.resize(torrc_btn.sizeHint()) # button to kill cipollini quit_btn = QtGui.QPushButton('Quit', self) quit_btn.clicked.connect(QtCore.QCoreApplication.instance().quit) quit_btn.resize(quit_btn.sizeHint()) # initialise a horizontal box layout hbox = QtGui.QHBoxLayout() hbox.addWidget(main_btn) hbox.addWidget(log_btn) hbox.addWidget(torrc_btn) hbox.addWidget(quit_btn) self.setLayout(hbox) self.setFrameStyle(QtGui.QFrame.StyledPanel) def read_tor_msg(self): msg = str(self.tor_process.readAll()) self.comms.bootstrap_msg.emit(msg.strip()) if "100%" in msg: self.comms.status_msg.emit("Started Tor") def start_tor(self, main_btn): self.tor_start = True self.tor_process, self.torrc_path = tools.launch_tor() self.tor_process.readyReadStandardOutput.connect(self.read_tor_msg) main_btn.setText("Stop Tor") self.comms.status_msg.emit("Bootstrapping Tor") def stop_tor(self, main_btn): # stop Tor self.tor_process.kill() self.tor_start = False self.comms.status_msg.emit("Stopped Tor") self.comms.bootstrap_msg.emit("Stopped Tor") main_btn.setText("Start Tor") def main_btn_clicked(self): main_btn = self.sender() if not self.tor_start: self.start_tor(main_btn) else: self.stop_tor(main_btn) def show_logs(self): #XXX: maybe create log_viewer only # after log_btn is clicked? # memory wastage? if self.log_viewer: self.log_viewer.show() else: # raise Exception pass def show_torrc(self): self.torrc_viewer = TorrcViewer(self.torrc_path) self.torrc_viewer.show()
def show_torrc(self): self.torrc_viewer = TorrcViewer(self.torrc_path) self.torrc_viewer.show()