84 lines
2.5 KiB
Python
84 lines
2.5 KiB
Python
import os
|
|
|
|
from qtpy import QtWidgets as QW
|
|
|
|
from hydrus.core import HydrusGlobals as HG
|
|
|
|
from hydrus.client import ClientConstants as CC
|
|
from hydrus.client.gui import ClientGUITopLevelWindows
|
|
from hydrus.client.gui import QtPorting as QP
|
|
|
|
class ShowKeys( ClientGUITopLevelWindows.Frame ):
|
|
|
|
def __init__( self, key_type, keys ):
|
|
|
|
if key_type == 'registration': title = 'Registration Tokens'
|
|
elif key_type == 'access': title = 'Access Keys'
|
|
|
|
tlw = HG.client_controller.GetMainTLW()
|
|
|
|
ClientGUITopLevelWindows.Frame.__init__( self, tlw, HG.client_controller.PrepStringForDisplay( title ) )
|
|
|
|
self._key_type = key_type
|
|
self._keys = keys
|
|
|
|
#
|
|
|
|
self._text_ctrl = QW.QPlainTextEdit( self )
|
|
self._text_ctrl.setLineWrapMode( QW.QPlainTextEdit.NoWrap )
|
|
self._text_ctrl.setReadOnly( True )
|
|
|
|
self._save_to_file = QW.QPushButton( 'save to file', self )
|
|
self._save_to_file.clicked.connect( self.EventSaveToFile )
|
|
|
|
self._done = QW.QPushButton( 'done', self )
|
|
self._done.clicked.connect( self.close )
|
|
|
|
#
|
|
|
|
if key_type == 'registration': prepend = 'r'
|
|
else: prepend = ''
|
|
|
|
self._text = os.linesep.join( [ prepend + key.hex() for key in self._keys ] )
|
|
|
|
self._text_ctrl.setPlainText( self._text )
|
|
|
|
#
|
|
|
|
vbox = QP.VBoxLayout()
|
|
|
|
QP.AddToLayout( vbox, self._text_ctrl, CC.FLAGS_EXPAND_BOTH_WAYS )
|
|
QP.AddToLayout( vbox, self._save_to_file, CC.FLAGS_ON_RIGHT )
|
|
QP.AddToLayout( vbox, self._done, CC.FLAGS_ON_RIGHT )
|
|
|
|
self.setLayout( vbox )
|
|
|
|
size_hint = self.sizeHint()
|
|
|
|
size_hint.setWidth( max( size_hint.width(), 500 ) )
|
|
size_hint.setHeight( max( size_hint.height(), 200 ) )
|
|
|
|
QP.SetInitialSize( self, size_hint )
|
|
|
|
self.show()
|
|
|
|
|
|
def EventSaveToFile( self ):
|
|
|
|
filename = 'keys.txt'
|
|
|
|
with QP.FileDialog( self, acceptMode = QW.QFileDialog.AcceptSave, fileMode = QW.QFileDialog.AnyFile, default_filename = filename ) as dlg:
|
|
|
|
if dlg.exec() == QW.QDialog.Accepted:
|
|
|
|
path = dlg.GetPath()
|
|
|
|
with open( path, 'w', encoding = 'utf-8' ) as f:
|
|
|
|
f.write( self._text )
|
|
|
|
|
|
|
|
|
|
|