@@ -103,20 +103,14 @@ def kodi_dialog_OK(text, title = 'Advanced Emulator Launcher'):
103103 xbmcgui .Dialog ().ok (title , text )
104104
105105# Returns True is YES was pressed, returns False if NO was pressed or dialog canceled.
106- def kodi_dialog_yesno (text ):
107- title = 'Advanced Emulator Launcher'
108-
106+ def kodi_dialog_yesno (text , title = 'Advanced Emulator Launcher' ):
109107 return xbmcgui .Dialog ().yesno (title , text )
110108
111109# Returns True is YES was pressed, returns False if NO was pressed or dialog canceled.
112- def kodi_dialog_yesno_custom (text , yeslabel_str , nolabel_str ):
113- title = 'Advanced Emulator Launcher'
114-
110+ def kodi_dialog_yesno_custom (text , yeslabel_str , nolabel_str , title = 'Advanced Emulator Launcher' ):
115111 return xbmcgui .Dialog ().yesno (title , text , yeslabel = yeslabel_str , nolabel = nolabel_str )
116112
117- def kodi_dialog_yesno_timer (text , timer_ms = 30000 ):
118- title = 'Advanced Emulator Launcher'
119-
113+ def kodi_dialog_yesno_timer (text , timer_ms = 30000 , title = 'Advanced Emulator Launcher' ):
120114 return xbmcgui .Dialog ().yesno (title , text , autoclose = timer_ms )
121115
122116#
@@ -143,6 +137,7 @@ def kodi_refresh_container():
143137 xbmc .executebuiltin ('Container.Refresh' )
144138
145139# Progress dialog that can be closed and reopened.
140+ # Messages in the dialog are always remembered.
146141# If the dialog is canceled this class remembers it forever.
147142class KodiProgressDialog (object ):
148143 def __init__ (self ):
@@ -156,34 +151,48 @@ def startProgress(self, message, num_steps = 100):
156151 self .num_steps = num_steps
157152 self .progress = 0
158153 self .dialog_active = True
159- self .progressDialog .create (self .title , message )
154+ self .message1 = message
155+ self .message2 = None
156+ self .progressDialog .create (self .title , self .message1 )
160157 self .progressDialog .update (self .progress )
161158
162159 # Update progress and optionally update messages as well.
163- def updateProgress (self , step_index , message1 = ' ' , message2 = ' ' ):
160+ # If not messages specified then keep current message/s
161+ def updateProgress (self , step_index , message1 = None , message2 = None ):
164162 self .progress = (step_index * 100 ) / self .num_steps
165- self .message1 = message1
166- self .message2 = message2
167- if message2 and message2 != ' ' :
168- self .progressDialog .update (self .progress , message1 , message2 )
163+ # Update both messages
164+ if message1 and message2 :
165+ self .message1 = message1
166+ self .message2 = message2
167+ # Update only message1 and deletes message2. There could be no message2 without a message1.
168+ elif message1 :
169+ self .message1 = message1
170+ self .message2 = None
171+ self .progressDialog .update (self .progress , message1 , ' ' )
172+ return
173+ if self .message2 :
174+ self .progressDialog .update (self .progress , self .message1 , self .message2 )
169175 else :
170- self .progressDialog .update (self .progress , message1 )
171-
172- # Update dialog message but keep same progress.
173- def updateMessages (self , message1 , message2 ):
174- self .message1 = message1
175- self .message2 = message2
176- self .progressDialog .update (self .progress , message1 , message2 )
176+ # The ' ' is to avoid a bug in Kodi progress dialog that keeps old messages 2
177+ # if an empty string is passed.
178+ self .progressDialog .update (self .progress , self .message1 , ' ' )
177179
178180 # Update dialog message but keep same progress. message2 is removed if any.
179181 def updateMessage (self , message1 ):
180182 self .message1 = message1
181- self .progressDialog .update (self .progress , message1 )
183+ self .message2 = None
184+ self .progressDialog .update (self .progress , self .message1 , ' ' )
182185
183186 # Update message2 and keeps same progress and message1
184187 def updateMessage2 (self , message2 ):
185188 self .message2 = message2
186- self .progressDialog .update (self .progress , self .message1 , message2 )
189+ self .progressDialog .update (self .progress , self .message1 , self .message2 )
190+
191+ # Update dialog message but keep same progress.
192+ def updateMessages (self , message1 , message2 ):
193+ self .message1 = message1
194+ self .message2 = message2
195+ self .progressDialog .update (self .progress , message1 , message2 )
187196
188197 def isCanceled (self ):
189198 # If the user pressed the cancel button before then return it now.
@@ -208,13 +217,17 @@ def endProgress(self):
208217 self .progressDialog .close ()
209218 self .dialog_active = False
210219
211- # Reopens a previously closed dialog, remembering the messages and the progress.
220+ # Reopens a previously closed dialog, remembering the messages and the progress it had
221+ # when it was closed.
212222 def reopen (self ):
213- if self .message2 and self . message2 != ' ' :
214- self .progressDialog .create (self .title , self .message1 , self .message2 )
223+ if self .message2 :
224+ self .progressDialog .create (self .progress , self .message1 , self .message2 )
215225 else :
216- self .progressDialog .create (self .title , self .message1 )
226+ # The ' ' is to avoid a bug in Kodi progress dialog that keeps old messages 2
227+ # if an empty string is passed.
228+ self .progressDialog .create (self .progress , self .message1 , ' ' )
217229 self .progressDialog .update (self .progress )
230+ self .dialog_active = True
218231
219232# To be used as a base class.
220233class KodiProgressDialog_Chrisism (object ):
0 commit comments