Kiln » TortoiseHg » TortoiseHg
Clone URL:  
Pushed to one repository · View In Graph Contained in 1.9, 1.9.1, and 1.9.2

qtlib, etc: remove ui arguments from getfont() and get*_lexer

Fonts and colors are not, cannot be, repository specific

Changeset 80029362c3d4

Parent 7bc379cf4015

by Steve Borho

Changes to 16 files · Browse files at 80029362c3d4 Showing diff from parent 7bc379cf4015 Diff from another changeset...

 
44
45
46
47
 
48
49
50
 
201
202
203
204
205
 
206
207
208
 
44
45
46
 
47
48
49
50
 
201
202
203
 
 
204
205
206
207
@@ -44,7 +44,7 @@
  self.setMarginLineNumbers(1, True)   self.setMarginType(2, QsciScintilla.TextMarginRightJustified)   self.setMouseTracking(True) - self.setFont(qtlib.getfont(ui.ui(), 'fontlog').font()) + self.setFont(qtlib.getfont('fontlog').font())   self.setContextMenuPolicy(Qt.CustomContextMenu)   self.customContextMenuRequested.connect(self.menuRequest)   self._revs = [] # by line @@ -201,8 +201,7 @@
    def _updatelexer(self, fctx):   """Update the lexer according to the given file""" - lex = lexers.get_lexer(fctx.path(), hglib.tounicode(fctx.data()), - ui=self.repo.ui) + lex = lexers.get_lexer(fctx.path(), hglib.tounicode(fctx.data()))   if lex:   self.setLexer(lex)  
 
254
255
256
257
258
 
259
260
261
 
254
255
256
 
 
257
258
259
260
@@ -254,8 +254,7 @@
  self._initmarkers()     def _initfont(self): - from mercurial import ui # XXX workaround to pass fake ui obj - tf = qtlib.getfont(ui.ui(), 'fontlog') + tf = qtlib.getfont('fontlog')   tf.changed.connect(lambda f: self.setFont(f))   self.setFont(tf.font())  
 
95
96
97
98
 
99
100
101
 
95
96
97
 
98
99
100
101
@@ -95,7 +95,7 @@
    msgte = QPlainTextEdit()   msgte.setLineWrapMode(QPlainTextEdit.NoWrap) - msgfont = qtlib.getfont(self.repo.ui, 'fontcomment') + msgfont = qtlib.getfont('fontcomment')   msgte.setFont(msgfont.font())   msgfont.changed.connect(lambda fnt: msgte.setFont(fnt))   msgte.textChanged.connect(self.msgChanged)
 
36
37
38
39
 
40
41
42
 
36
37
38
 
39
40
41
42
@@ -36,7 +36,7 @@
    def load_config(self, ui):   # TODO: connect to font changed signal - self._font = qtlib.getfont(ui, 'fontlog').font() + self._font = qtlib.getfont('fontlog').font()   self.rowheight = 8   self.users, self.aliases = [], []  
 
75
76
77
78
 
79
80
81
 
75
76
77
 
78
79
80
81
@@ -75,7 +75,7 @@
  data = f.read(head)   else:   data = '' # too big - lexer = get_lexer(self.filename, data, self.repo.ui) + lexer = get_lexer(self.filename, data)   if lexer:   lexer.setDefaultFont(self._font)   lexer.setFont(self._font)
 
334
335
336
337
 
338
339
340
341
342
 
343
344
345
 
334
335
336
 
337
338
339
340
341
 
342
343
344
345
@@ -334,12 +334,12 @@
  return     if self._mode == 'diff' and fd.diff: - lexer = get_diff_lexer(repo.ui) + lexer = get_diff_lexer()   self._cur_lexer = lexer # SJB - holding refcount?   self.sci.setLexer(lexer)   self.sci.setText(fd.diff)   else: - lexer = get_lexer(filename, fd.contents, repo.ui) + lexer = get_lexer(filename, fd.contents)   self._cur_lexer = lexer # SJB - holding refcount?   self.sci.setLexer(lexer)   nlines = fd.contents.count('\n')
 
255
256
257
258
259
 
 
260
261
262
 
255
256
257
 
 
258
259
260
261
262
@@ -255,8 +255,8 @@
  w.setUtf8(True)   w.setReadOnly(True)   w.setMarginWidth(1, 0) # hide area for line numbers - lex = lexers.get_diff_lexer(self._ui) - fh = qtlib.getfont(self._ui, 'fontdiff') + lex = lexers.get_diff_lexer() + fh = qtlib.getfont('fontdiff')   fh.changed.connect(lambda f: lex.setFont(f))   # TODO: why cannot we connect directly, without lambda?   lex.setFont(fh.font())
 
17
18
19
20
 
21
22
23
24
 
25
26
27
 
 
28
29
30
 
128
129
130
131
 
132
133
134
 
138
139
140
141
 
142
143
144
 
151
152
153
154
155
 
 
156
157
 
158
159
160
 
161
 
17
18
19
 
20
21
22
23
 
24
25
 
 
26
27
28
29
30
 
128
129
130
 
131
132
133
134
 
138
139
140
 
141
142
143
144
 
151
152
153
 
 
154
155
156
 
157
158
159
 
160
161
@@ -17,14 +17,14 @@
  def match(self, filename, filedata):   return False   - def lexer(self, ui): + def lexer(self):   """   Return a configured instance of the lexer   """ - return self.cfg_lexer(self._lexer(), ui) + return self.cfg_lexer(self._lexer())   - def cfg_lexer(self, lexer, ui): - font = qtlib.getfont(ui, 'fontlog').font() + def cfg_lexer(self, lexer): + font = qtlib.getfont('fontlog').font()   lexer.setFont(font, -1)   return lexer   @@ -128,7 +128,7 @@
  extensions = ()   _lexer = Qsci.QsciLexerDiff   regex = re.compile(r'^@@ [-]\d+,\d+ [+]\d+,\d+ @@$') - def cfg_lexer(self, lexer, ui): + def cfg_lexer(self, lexer):   #lexer.setDefaultPaper(QtGui.QColor(cfg.getDiffBGColor()))   #lexer.setColor(QtGui.QColor(cfg.getDiffFGColor()), -1)   for label, i in (('diff.inserted', 6), @@ -138,7 +138,7 @@
  for e in effect.split(';'):   if e.startswith('color:'):   lexer.setColor(QColor(e[7:]), i) - font = qtlib.getfont(ui, 'fontdiff').font() + font = qtlib.getfont('fontdiff').font()   lexer.setFont(font, -1)   return lexer   @@ -151,11 +151,11 @@
  #print clsname   lexers.append(cls())   -def get_diff_lexer(ui=None): - return DiffLexerSelector().lexer(ui) +def get_diff_lexer(): + return DiffLexerSelector().lexer()   -def get_lexer(filename, filedata, ui=None): +def get_lexer(filename, filedata):   for lselector in lexers:   if lselector.match(filename, filedata): - return lselector.lexer(ui) + return lselector.lexer()   return None
 
81
82
83
84
 
85
86
87
 
105
106
107
108
 
109
110
111
 
81
82
83
 
84
85
86
87
 
105
106
107
 
108
109
110
111
@@ -81,7 +81,7 @@
  self.setMarginLineNumbers(1, True)   self.setMarginWidth(1, '000')   self.setReadOnly(True) - self.setFont(qtlib.getfont(self._ui, 'fontlog').font()) + self.setFont(qtlib.getfont('fontlog').font())   self.setUtf8(True)   self.SendScintilla(QsciScintilla.SCI_SETSELEOLFILLED, True)   @@ -105,7 +105,7 @@
  data = _("binary file")   else:   data = tounicode(data) - lexer = get_lexer(path, data, ui=self._ui) + lexer = get_lexer(path, data)   if lexer:   self.setLexer(lexer)   nlines = data.count('\n')
 
202
203
204
205
206
207
 
 
 
208
209
 
 
 
210
211
212
 
202
203
204
 
 
 
205
206
207
208
209
210
211
212
213
214
215
@@ -202,11 +202,14 @@
  'fontlog': 'monospace,10'  }  _fontcache = {} -def getfont(ui, name): - assert name in _fontdefaults - if name not in _fontcache: + +def initfontcache(ui): + for name in _fontdefaults:   fname = ui.config('tortoisehg', name, _fontdefaults[name])   _fontcache[name] = ThgFont(fname) + +def getfont(name): + assert name in _fontdefaults   return _fontcache[name]    def CommonMsgBox(icon, title, main, text='', buttons=QMessageBox.Close,
 
193
194
195
196
 
197
198
199
 
193
194
195
 
196
197
198
199
@@ -193,7 +193,7 @@
  return gw     def load_config(self): - self._font = getfont(self.repo.ui, 'fontlog') + self._font = getfont('fontlog').font()   self.rowheight = 8   self.users, self.aliases = [], []   self.hidefinddelay = False
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
 
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
 
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
 # -*- coding: iso-8859-1 -*-  #!/usr/bin/env python  # repowidget.py - TortoiseHg repository widget  #  # Copyright (C) 2007-2010 Logilab. All rights reserved.  # Copyright (C) 2010 Adrian Buehlmann <adrian@cadifra.com>  #  # This software may be used and distributed according to the terms  # of the GNU General Public License, incorporated herein by reference.    from tortoisehg.hgqt.qtlib import getfont, geticon  from tortoisehg.hgqt.i18n import _  from tortoisehg.hgqt.filelistmodel import HgFileListModel  from tortoisehg.hgqt.filelistview import HgFileListView  from tortoisehg.hgqt.fileview import HgFileView  from tortoisehg.hgqt.revpanel import RevPanelWidget  from tortoisehg.hgqt.revmessage import RevMessage  from tortoisehg.hgqt import thgrepo    from PyQt4.QtCore import *  from PyQt4.QtGui import *    class RevDetailsWidget(QWidget):     showMessageSignal = pyqtSignal(str)   revisionLinkClicked = pyqtSignal(str)     def __init__(self, repo, repoview):   QWidget.__init__(self)     self.repo = repo   self.repoview = repoview   self.currentMessage = ''   self.splitternames = []     # these are used to know where to go after a reload   self._last_rev = None   self._reload_file = None     self.load_config()   self.setupUi()   self.createActions()     self.fileview.setFont(self._font)   self.fileview.showMessage.connect(self.showMessage)   self.restoreSettings()     def setupUi(self):   SP = QSizePolicy     self.hbox = QHBoxLayout(self)   self.hbox.setSpacing(0)   self.hbox.setContentsMargins(2, 2, 2, 2)     self.setupRevisionDetailsWidget()     self.hbox.addWidget(self.revisionDetailsWidget)     def setupRevisionDetailsWidget(self):   SP = QSizePolicy     self.revisionDetailsWidget = QFrame()   sp = SP(SP.Preferred, SP.Expanding)   sp.setHorizontalStretch(0)   sp.setVerticalStretch(0)   sp.setHeightForWidth(self.revisionDetailsWidget.sizePolicy().hasHeightForWidth())   self.revisionDetailsWidget.setSizePolicy(sp)   self.revisionDetailsWidget.setFrameShape(QFrame.NoFrame)   self.revisionDetailsWidget.setFrameShadow(QFrame.Plain)     revisiondetails_layout = QVBoxLayout(self.revisionDetailsWidget)   revisiondetails_layout.setSpacing(0)   revisiondetails_layout.setMargin(0)     self.filelist_splitter = QSplitter(self.revisionDetailsWidget)   self.splitternames.append('filelist_splitter')     sp = SP(SP.Expanding, SP.Expanding)   sp.setHorizontalStretch(0)   sp.setVerticalStretch(0)   sp.setHeightForWidth(self.filelist_splitter.sizePolicy().hasHeightForWidth())   self.filelist_splitter.setSizePolicy(sp)   self.filelist_splitter.setOrientation(Qt.Horizontal)   self.filelist_splitter.setChildrenCollapsible(False)     self.diffToolbar = QToolBar(_('Diff Toolbar'))   self.diffToolbar.setIconSize(QSize(16,16))   self.filelist = HgFileListView()     self.tbarFileListFrame = QFrame(self.filelist_splitter)   sp = SP(SP.Preferred, SP.Preferred)   sp.setHorizontalStretch(1)   sp.setVerticalStretch(0)   sp.setHeightForWidth(   self.tbarFileListFrame.sizePolicy().hasHeightForWidth())   self.tbarFileListFrame.setSizePolicy(sp)   self.tbarFileListFrame.setFrameShape(QFrame.NoFrame)   vbox = QVBoxLayout()   vbox.setSpacing(0)   vbox.setMargin(0)   vbox.addWidget(self.diffToolbar)   vbox.addWidget(self.filelist)   self.tbarFileListFrame.setLayout(vbox)     self.cset_and_file_details_frame = QFrame(self.filelist_splitter)   sp = SP(SP.Preferred, SP.Preferred)   sp.setHorizontalStretch(1)   sp.setVerticalStretch(0)   sp.setHeightForWidth(   self.cset_and_file_details_frame.sizePolicy().hasHeightForWidth())   self.cset_and_file_details_frame.setSizePolicy(sp)   self.cset_and_file_details_frame.setFrameShape(QFrame.NoFrame)     vbox = QVBoxLayout(self.cset_and_file_details_frame)   vbox.setSpacing(0)   vbox.setSizeConstraint(QLayout.SetDefaultConstraint)   vbox.setMargin(0)   cset_and_file_details_layout = vbox     self.message_splitter = QSplitter(self.cset_and_file_details_frame)   self.splitternames.append('message_splitter')   sp = SP(SP.Preferred, SP.Expanding)   sp.setHorizontalStretch(0)   sp.setVerticalStretch(0)   sp.setHeightForWidth(self.message_splitter.sizePolicy().hasHeightForWidth())   self.message_splitter.setSizePolicy(sp)   self.message_splitter.setMinimumSize(QSize(50, 50))   self.message_splitter.setFrameShape(QFrame.NoFrame)   self.message_splitter.setLineWidth(0)   self.message_splitter.setMidLineWidth(0)   self.message_splitter.setOrientation(Qt.Vertical)   self.message_splitter.setOpaqueResize(True)   self.message = RevMessage(self.repo.ui, self.message_splitter)   self.message.revisionLinkClicked.connect(self.revisionLinkClicked_)     sp = SP(SP.Expanding, SP.Expanding)   sp.setHorizontalStretch(0)   sp.setVerticalStretch(0)   sp.setHeightForWidth(self.message.sizePolicy().hasHeightForWidth())   self.message.setSizePolicy(sp)   self.message.setMinimumSize(QSize(0, 0))   font = QFont()   font.setFamily("Courier")   font.setPointSize(9)   self.message.setFont(font)     self.fileview = HgFileView(self.message_splitter)   sp = SP(SP.Expanding, SP.Expanding)   sp.setHorizontalStretch(0)   sp.setVerticalStretch(1)   sp.setHeightForWidth(self.fileview.sizePolicy().hasHeightForWidth())   self.fileview.setSizePolicy(sp)   self.fileview.setMinimumSize(QSize(0, 0))     self.revpanel = RevPanelWidget(self.repo, self.repoview)     cset_and_file_details_layout.addWidget(self.revpanel)   cset_and_file_details_layout.addWidget(self.message_splitter)     revisiondetails_layout.addWidget(self.filelist_splitter)     def load_config(self): - self._font = getfont(self.repo.ui, 'fontlog').font() + self._font = getfont('fontlog').font()   self.rowheight = 8   self.users, self.aliases = [], []     def revisionLinkClicked_(self, rev):   self.revisionLinkClicked.emit(rev)     def showMessage(self, msg):   self.currentMessage = msg   if self.isVisible():   self.showMessageSignal.emit(msg)     def showEvent(self, event):   QWidget.showEvent(self, event)   self.showMessageSignal.emit(self.currentMessage)     def createActions(self):   self.actionDiffMode = QAction('Diff mode', self)   self.actionDiffMode.setCheckable(True)   self.actionDiffMode.toggled.connect(self.setMode)     self.actionAnnMode = QAction('Annotate', self)   self.actionAnnMode.setCheckable(True)   self.actionAnnMode.toggled.connect(self.setAnnotate)     # Next/Prev diff (in full file mode)   self.actionNextDiff = QAction(geticon('down'), 'Next diff', self)   self.actionNextDiff.setShortcut('Alt+Down')   self.actionNextDiff.triggered.connect(self.nextDiff)   def filled():   self.actionNextDiff.setEnabled(   self.fileview.fileMode() and self.fileview.nDiffs())   self.fileview.filled.connect(filled)     self.actionPrevDiff = QAction(geticon('up'), 'Previous diff', self)   self.actionPrevDiff.setShortcut('Alt+Up')   self.actionPrevDiff.triggered.connect(self.prevDiff)   self.actionDiffMode.setChecked(True)     # Next/Prev file   self.actionNextFile = QAction('Next file', self)   self.actionNextFile.setShortcut('Right')   self.actionNextFile.triggered.connect(self.filelist.nextFile)   self.actionPrevFile = QAction('Prev file', self)   self.actionPrevFile.setShortcut('Left')   self.actionPrevFile.triggered.connect(self.filelist.prevFile)   self.addAction(self.actionNextFile)   self.addAction(self.actionPrevFile)     # navigate in file viewer   self.actionNextLine = QAction('Next line', self)   self.actionNextLine.setShortcut(Qt.SHIFT + Qt.Key_Down)   self.actionNextLine.triggered.connect(self.fileview.nextLine)   self.addAction(self.actionNextLine)   self.actionPrevLine = QAction('Prev line', self)   self.actionPrevLine.setShortcut(Qt.SHIFT + Qt.Key_Up)   self.actionPrevLine.triggered.connect(self.fileview.prevLine)   self.addAction(self.actionPrevLine)   self.actionNextCol = QAction('Next column', self)   self.actionNextCol.setShortcut(Qt.SHIFT + Qt.Key_Right)   self.actionNextCol.triggered.connect(self.fileview.nextCol)   self.addAction(self.actionNextCol)   self.actionPrevCol = QAction('Prev column', self)   self.actionPrevCol.setShortcut(Qt.SHIFT + Qt.Key_Left)   self.actionPrevCol.triggered.connect(self.fileview.prevCol)   self.addAction(self.actionPrevCol)     # Activate file (file diff navigator)   self.actionActivateFile = QAction('Activate file', self)   self.actionActivateFileAlt = QAction('Activate alt. file', self)   self.actionActivateFileAlt.setShortcuts([Qt.ALT+Qt.Key_Return,   Qt.ALT+Qt.Key_Enter])   self.actionActivateFileAlt.triggered.connect(   lambda self=self:   self.filelist.fileActivated(self.filelist.currentIndex(),   alternate=True))   # toolbar   tb = self.diffToolbar   tb.addAction(self.actionDiffMode)   tb.addAction(self.actionNextDiff)   tb.addAction(self.actionPrevDiff)   tb.addSeparator()   tb.addAction(self.actionAnnMode)     def setMode(self, mode):   self.fileview.setMode(mode)   if mode:   self.actionAnnMode.setEnabled(False)   self.actionAnnMode.setChecked(False)   self.actionNextDiff.setEnabled(False)   self.actionPrevDiff.setEnabled(False)   else:   self.actionAnnMode.setEnabled(True)   # next/prev actions are enabled via signals     def getMode(self):   return self.fileview.getMode()     def setAnnotate(self, ann):   self.fileview.setAnnotate(ann)     def getAnnotate(self):   return self.fileview.getAnnotate()     def nextDiff(self):   notlast = self.fileview.nextDiff()   filemode = self.fileview.fileMode()   nDiffs = self.fileview.nDiffs()   self.actionNextDiff.setEnabled(filemode and notlast and nDiffs)   self.actionPrevDiff.setEnabled(filemode and nDiffs)     def prevDiff(self):   notfirst = self.fileview.prevDiff()   filemode = self.fileview.fileMode()   nDiffs = self.fileview.nDiffs()   self.actionPrevDiff.setEnabled(filemode and notfirst and nDiffs)   self.actionNextDiff.setEnabled(filemode and nDiffs)     def create_models(self):   self.filelistmodel = HgFileListModel(self.repo)     def setupModels(self, repomodel):   'Called directly from repowidget to establish repomodel'   self.repomodel = repomodel   self.create_models()   self.filelist.setModel(self.filelistmodel)   self.fileview.setModel(repomodel)   self.filelist.fileRevSelected.connect(self.fileview.displayFile)   self.filelist.clearDisplay.connect(self.fileview.clearDisplay)     def revision_selected(self, rev):   self._last_rev = rev   ctx = thgrepo.getcontext(self.repo, rev)   self.revpanel.set_revision(rev)   self.revpanel.update()   self.message.displayRevision(ctx)   if type(ctx.rev()) == str:   self.actionDiffMode.setChecked(True)   self.actionDiffMode.setEnabled(False)   else:   self.actionDiffMode.setEnabled(True)   self.fileview.setContext(ctx)   self.filelistmodel.setSelectedRev(ctx)   if len(self.filelistmodel):   self.filelist.selectRow(0)   mode = self.getMode()   self.actionAnnMode.setEnabled(mode != 'diff')   self.actionNextDiff.setEnabled(mode != 'diff')   self.actionPrevDiff.setEnabled(mode != 'diff')     def record(self):   'Repo widget is reloading, record current file'   self._reload_file = self.filelist.currentFile()     def finishReload(self):   'Finish reload by re-selecting previous file'   self.filelist.selectFile(self._reload_file)     def reload(self):   'Task tab is reloaded, or repowidget is refreshed'   if len(self.repo) <= self._last_rev:   self._last_rev = '.'   f = self.filelist.currentFile()   self.revision_selected(self._last_rev)   self.filelist.selectFile(f)     def storeSettings(self):   s = QSettings()   wb = "RevDetailsWidget/"   for n in self.splitternames:   s.setValue(wb + n, getattr(self, n).saveState())   s.setValue(wb + 'revpanel.expanded', self.revpanel.is_expanded())     def restoreSettings(self):   s = QSettings()   wb = "RevDetailsWidget/"   for n in self.splitternames:   getattr(self, n).restoreState(s.value(wb + n).toByteArray())   expanded = s.value(wb + 'revpanel.expanded', True).toBool()   self.revpanel.set_expanded(expanded)
 
46
47
48
49
 
50
51
52
 
46
47
48
 
49
50
51
52
@@ -46,7 +46,7 @@
  self._message = w = QTextBrowser()   w.setLineWrapMode(QTextEdit.NoWrap)   #w.setHorizontalScrollBarPolicy(Qt.ScrollBarAlwaysOff) - f = qtlib.getfont(ui, 'fontcomment') + f = qtlib.getfont('fontcomment')   f.changed.connect(lambda newfont: w.setFont(newfont))   w.setFont(f.font())   w.setOpenLinks(False)
 
407
408
409
 
410
411
412
 
407
408
409
410
411
412
413
@@ -407,6 +407,7 @@
  self._mainapp.setApplicationVersion(thgversion.version())   qtlib.setup_font_substitutions()   qtlib.configstyles(ui) + qtlib.initfontcache(ui)   self._mainapp.setStyleSheet(qtlib.appstylesheet)   self._mainapp.setWindowIcon(qtlib.geticon('thg_logo'))   dlg = dlgfunc(ui, *args, **opts)
 
156
157
158
159
 
160
161
162
 
156
157
158
 
159
160
161
162
@@ -156,7 +156,7 @@
  QPushButton.focusInEvent(self, e)     def on_clicked(self, checked): - thgf = qtlib.getfont(ui.ui(), self.fname) + thgf = qtlib.getfont(self.fname)   dlg = QFontDialog(self)   dlg.setCurrentFont(self.currentFont() or thgf.font())   if dlg.exec_() == QDialog.Accepted:
 
86
87
88
89
90
 
91
92
93
 
86
87
88
 
 
89
90
91
92
@@ -86,8 +86,7 @@
    def load_config(self, ui):   # TODO: connect to font changed signal - font = getfont(ui, 'fontlog').font() - self._font = font + self._font = getfont('fontlog').font()   self.rowheight = 8   self.users, self.aliases = [], []