Skip to content

Commit ebf52e6

Browse files
committed
🐛 quick panels are async
1 parent 2dc5856 commit ebf52e6

File tree

1 file changed

+25
-8
lines changed

1 file changed

+25
-8
lines changed

GDL.py

Lines changed: 25 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -56,8 +56,8 @@ class HsfBuildCommand(sublime_plugin.WindowCommand):
5656

5757
def run(self, *args, **kwargs):
5858
self.os = check_system()
59-
view = self.window.active_view()
60-
if view.settings().get("auto_save", True):
59+
self.view = self.window.active_view()
60+
if self.view.settings().get("auto_save", True):
6161
save_all_files()
6262

6363
settings = sublime.load_settings(PACKAGE_SETTINGS)
@@ -70,12 +70,18 @@ def run(self, *args, **kwargs):
7070
if len(folders) == 1:
7171
self.multipleFolders = False
7272
self.project_folder = folders[0]
73+
self.on_done_proj() # go on here
7374
else:
7475
self.multipleFolders = True
7576
self.pick_project_folder(folders)
76-
77+
78+
def on_done_proj(self):
79+
# this needs to be in its own function, because
80+
# the sublime text quick panel works asynchronous
7781
self.find_gsm()
78-
self.cmdargs = get_project_data(view, 'to-hsf')
82+
83+
def on_done_file(self):
84+
self.cmdargs = get_project_data(self.view, 'to-hsf')
7985
self.run_hsf()
8086

8187
def pick_project_folder(self, folders):
@@ -95,6 +101,7 @@ def select_project(self, select):
95101
if select < 0: # will be -1 if panel was cancelled
96102
return
97103
self.project_folder = folders[select]
104+
self.on_done_proj() # go on here
98105

99106
def find_gsm(self):
100107
self.files = []
@@ -108,14 +115,16 @@ def find_gsm(self):
108115
sublime.error_message("GDL build error: No GSM found.")
109116

110117
if len(self.files) > 1:
111-
self.show_quick_panel(self.files, self.select_project)
118+
self.show_quick_panel(self.files, self.select_gsm)
112119
else:
113120
self.file_to_convert = self.files[0]
121+
self.on_done_file() # go on here
114122

115123
def select_gsm(self, select):
116124
if select < 0:
117125
return
118126
self.file_to_convert = self.files[select]
127+
self.on_done_file() # go on here
119128

120129
# Sublime Text 3 requires a short timeout between quick panels
121130
def show_quick_panel(self, options, done):
@@ -133,8 +142,8 @@ class LibpartBuildCommand(sublime_plugin.WindowCommand):
133142

134143
def run(self, *args, **kwargs):
135144
self.os = check_system()
136-
view = self.window.active_view()
137-
if view.settings().get("auto_save", True):
145+
self.view = self.window.active_view()
146+
if self.view.settings().get("auto_save", True):
138147
save_all_files()
139148

140149
settings = sublime.load_settings(PACKAGE_SETTINGS)
@@ -147,13 +156,18 @@ def run(self, *args, **kwargs):
147156
if len(folders) == 1:
148157
self.multipleFolders = False
149158
self.project_folder = folders[0]
159+
self.on_done_proj() # go on here
150160
else:
151161
self.multipleFolders = True
152162
self.pick_project_folder(folders)
153163

164+
def on_done_proj(self):
165+
# own function because quick panel is async
154166
self.find_hsf()
167+
168+
def on_done_file(self):
155169
self.gsm_name = self.folder_to_convert + ".gsm"
156-
self.cmdargs = get_project_data(view, 'to-gsm')
170+
self.cmdargs = get_project_data(self.view, 'to-gsm')
157171
self.run_libpart()
158172

159173
def pick_project_folder(self, folders):
@@ -173,6 +187,7 @@ def select_project(self, select):
173187
if select < 0: # will be -1 if panel was cancelled
174188
return
175189
self.project_folder = folders[select]
190+
self.on_done_proj() # go on here
176191

177192
def find_hsf(self):
178193
# self.folders = []
@@ -189,12 +204,14 @@ def find_hsf(self):
189204
self.show_quick_panel(self.folders, self.select_hsf)
190205
else:
191206
self.folder_to_convert = self.project_folder + "\\" + self.folders[0]
207+
self.on_done_file() # go on here
192208

193209
def select_hsf(self, select):
194210
folders = self.folders
195211
if select < 0: # will be -1 if panel was cancelled
196212
return
197213
self.folder_to_convert = self.project_folder + "\\" + folders[select]
214+
self.on_done_file() # go on here
198215

199216
# Sublime Text 3 requires a short timeout between quick panels
200217
def show_quick_panel(self, options, done):

0 commit comments

Comments
 (0)