44import sublime
55import sublime_plugin
66import sys
7- import logging as log
7+ import logging
8+
9+ log = logging .getLogger (__name__ )
810
911PACKAGE_SETTINGS = "GDL.sublime-settings"
1012DEFAULT_AC_PATH = "C:/Program Files/GRAPHISOFT/ARCHICAD 23"
1113
12-
1314def save_all_files ():
1415 """ Saves all files open in Sublime.
1516 Mimics the 'save on build' behavior of Sublime Text.
@@ -42,6 +43,20 @@ def get_project_data(view, invoke):
4243 sublime .error_message ("Something went wrong." )
4344 return
4445
46+ def get_project_newroot (view ):
47+ """ Gets the data of the .sublime-project file.
48+ Returns a relative path, if set.
49+ (Useful, if you have many subfolders.)
50+ """
51+ try :
52+ project_data = view .window ().project_data ()
53+ new_root_setting = project_data .get ('root' )
54+ except :
55+ new_root_setting = ""
56+
57+ return new_root_setting
58+
59+
4560# Future addition. Sadly not working as by now.
4661# class AutocompleteCaps(sublime_plugin.EventListener):
4762# def on_query_completions(self, view, prefix, locations):
@@ -60,17 +75,25 @@ def run(self, *args, **kwargs):
6075 if self .view .settings ().get ("auto_save" , True ):
6176 save_all_files ()
6277
63- folders = self .window .folders ()
64- if len (folders ) <= 0 :
78+ self .nr_path = get_project_newroot (self .view )
79+ log .debug (self .nr_path )
80+ # see if there is a relative path set in the project settings
81+ if self .nr_path != "" :
82+ nr_path_abs = os .path .join (self .window .folders ()[0 ], self .nr_path )
83+ self .folders = [directory for directory in os .listdir (nr_path_abs ) if os .path .isdir (os .path .join (nr_path_abs , directory ))]
84+ else :
85+ self .folders = self .window .folders ()
86+
87+ if len (self .folders ) <= 0 :
6588 sublime .error_message ("GDL build command error: You must have a project open." )
6689 else :
67- if len (folders ) == 1 :
90+ if len (self . folders ) == 1 :
6891 self .multipleFolders = False
69- self .project_folder = folders [0 ]
92+ self .project_folder = self . folders [0 ]
7093 self .on_done_proj () # go on here
7194 else :
7295 self .multipleFolders = True
73- self .pick_project_folder (folders )
96+ self .pick_project_folder (self . folders )
7497
7598 def check_system (self ):
7699 """ Returns the path to the LP_XML converter.
@@ -103,7 +126,8 @@ def pick_project_folder(self, folders):
103126 self .show_quick_panel (folderNames , self .select_project )
104127
105128 def select_project (self , select ):
106- folders = self .window .folders ()
129+ #folders = self.window.folders()
130+ folders = self .folders
107131 if select < 0 : # will be -1 if panel was cancelled
108132 return
109133 self .project_folder = folders [select ]
@@ -192,16 +216,19 @@ def on_done_proj(self):
192216 def find_hsf (self ):
193217 """ Finds all possible folders for converting to GSM.
194218 """
195- self .folders = [fldr for fldr in os .listdir (self .project_folder ) if os .path .isdir (os .path .join (self .project_folder , fldr ))]
219+ # self.folders = [fldr for fldr in os.listdir(self.project_folder) if os.path.isdir(os.path.join(self.project_folder, fldr))]
196220
197221 if len (self .folders ) <= 0 :
198222 sublime .error_message ("GDL build error: No HSF found." )
199223
200- if len (self .folders ) > 1 :
201- self .show_quick_panel (self .folders , self .select_hsf )
202- else :
203- self .folder_to_convert = os .path .join (self .project_folder ,self .folders [0 ])
204- self .on_done_file () # go on here
224+ # if len(self.folders) > 1:
225+ # self.show_quick_panel(self.folders, self.select_hsf)
226+ # else:
227+ # self.folder_to_convert = os.path.join(self.project_folder,self.folders[0])
228+ # self.on_done_file() # go on here
229+
230+ self .folder_to_convert = self .project_folder
231+ self .on_done_file () # go on here
205232
206233 def select_hsf (self , select ):
207234 """ Selects on of the possible of folders of the find_hsf() def.
0 commit comments