Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
'warn':logging.WARN,
'error':logging.ERROR
}
tts.logger().setLevel(logmap[args.loglevel])
else:
tts.logger().setLevel(logging.WARN)
# load filesystem values
if args.directory:
self.filesystem = tts.filesystem.FileSystem(os.path.abspath(args.directory))
else:
self.filesystem = tts.get_default_fs()
if (args.parser=='list' or args.parser=='export') and not args.save_type:
# set default
args.save_type = tts.SaveType.workshop
if (args.parser=='config' and args.parser_config=='set' and not args.mod_location and not args.tts_location):
#parser_config.print_usage()
parser_config_set.error("At least one of -m or -t is required.")
rc,message = args.func(args)
if message:
print(message)
sys.exit(rc)
def get_dir_by_type(self,save_type):
st={
tts.SaveType.workshop:self._workshop,
tts.SaveType.save:self._saves,
tts.SaveType.chest:self._chest
}
return st[save_type]
def download_all(self):
successful=True
save_type={1:tts.SaveType.workshop,
2:tts.SaveType.save,
3:tts.SaveType.chest}[self.download_sb.save_type.get()]
for ident in self.download_sb.file_store.values():
successful = tts.download_file(self.filesystem,ident,save_type)
if not successful:
break
if successful:
messagebox.showinfo("TTS Manager","All files downloaded successfully.")
else:
messagebox.showinfo("TTS Manager","Some downloads failed (see log).")
def get_filenames_by_type(self,save_type):
if save_type==tts.SaveType.workshop:
return self.get_workshop_filenames()
if save_type==tts.SaveType.save:
return self.get_save_filenames()
if save_type==tts.SaveType.chest:
return self.get_chest_filenames()
# TODO: error handling here
return None
def __init__(self,master,filesystem):
self.filesystem = filesystem
self.master=master
srcFrame=ttk.Frame(master)
srcFrame.pack()
ttk.Label(srcFrame,text="Select list source:").pack()
self.save_type=Tk.IntVar()
self.save_type.set(int(tts.SaveType.workshop))
ttk.Radiobutton(srcFrame,
text="Workshop",
variable=self.save_type,
value=int(tts.SaveType.workshop),
command=self.list_command).pack(side=Tk.LEFT)
ttk.Radiobutton(srcFrame,
text="Save",
variable=self.save_type,
value=int(tts.SaveType.save),
command=self.list_command).pack(side=Tk.LEFT)
ttk.Radiobutton(srcFrame,
text="Chest",
variable=self.save_type,
value=int(tts.SaveType.chest),
command=self.list_command).pack(side=Tk.LEFT)
scrollFrame=ttk.Frame(master)
List installed mods.
If no id is provided, then this will return a list of all installed modules.
If an id is provided, then this will list the contents of that modules.
''')
group_list=parser_list.add_mutually_exclusive_group()
group_list.add_argument("-w","--workshop",action="store_const",metavar='save_type',dest='save_type',const=tts.SaveType.workshop,help="List workshop files (the default).")
group_list.add_argument("-s","--save",action="store_const",metavar='save_type',dest='save_type',const=tts.SaveType.save,help="List saves.")
group_list.add_argument("-c","--chest",action="store_const",metavar='save_type',dest='save_type',const=tts.SaveType.chest,help="List chest files.")
parser_list.add_argument("id",nargs='?',help="ID of specific mod to list details of.")
parser_list.set_defaults(func=self.do_list)
# export command
parser_export = subparsers.add_parser('export',help="Export a mod.",description='Export a mod in a format suitible for later import.')
group_export=parser_export.add_mutually_exclusive_group()
group_export.add_argument("-w","--workshop",action="store_const",dest='save_type',metavar='save_type',const=tts.SaveType.workshop,help="ID is of workshop file (the default).")
group_export.add_argument("-s","--save",action="store_const",dest='save_type',metavar='save_type',const=tts.SaveType.save,help="ID is of savegame file.")
group_export.add_argument("-c","--chest",action="store_const",dest='save_type',metavar='save_type',const=tts.SaveType.chest,help="ID is of chest file.")
parser_export.add_argument("id",help="ID of mod/name of savegame to export.")
parser_export.add_argument("-o","--output",help="Location/file to export to.")
parser_export.add_argument("-f","--force",action="store_true",help="Force creation of export file.")
parser_export.add_argument("-d","--download",action="store_true",help="Attempt to download missing cache files. (EXPERIMENTAL)")
parser_export.set_defaults(func=self.do_export)
# import command
parser_import = subparsers.add_parser('import',help="Import a mod.",description="Import an previously exported mod.")
parser_import.add_argument("file",help="Mod pak file to import.")
parser_import.set_defaults(func=self.do_import)
# download command
parser_download = subparsers.add_parser('download',help='Download mod files.',description='Attempt to download any missing files for an installed mod.')
group_download=parser_download.add_mutually_exclusive_group()
def populate_manage_frame(self,frame):
ttk.Label(frame,text="Select list source:").grid(row=0,sticky=Tk.W)
self.save_type=Tk.IntVar()
self.save_type.set(int(tts.SaveType.workshop))
ttk.Radiobutton(frame,
text="Workshop",
variable=self.save_type,
value=int(tts.SaveType.workshop),
command=self.list_command).grid(row=0,column=1)
ttk.Radiobutton(frame,
text="Save",
variable=self.save_type,
value=int(tts.SaveType.save),
command=self.list_command).grid(row=0,column=2)
ttk.Radiobutton(frame,
text="Chest",
variable=self.save_type,
value=int(tts.SaveType.chest),
command=self.list_command).grid(row=0,column=3)
fl_frame=ttk.Frame(frame)
self.preferences=tts.preferences.Preferences()
parser = argparse.ArgumentParser(description="Manipulate Tabletop Simulator files")
parser.add_argument("-d","--directory",help="Override TTS cache directory")
parser.add_argument("-l","--loglevel",help="Set logging level",choices=['debug','info','warn','error'])
subparsers = parser.add_subparsers(dest='parser',title='command',description='Valid commands.')
subparsers.required=True
# add list command
parser_list = subparsers.add_parser('list',help="List installed mods.",description='''
List installed mods.
If no id is provided, then this will return a list of all installed modules.
If an id is provided, then this will list the contents of that modules.
''')
group_list=parser_list.add_mutually_exclusive_group()
group_list.add_argument("-w","--workshop",action="store_const",metavar='save_type',dest='save_type',const=tts.SaveType.workshop,help="List workshop files (the default).")
group_list.add_argument("-s","--save",action="store_const",metavar='save_type',dest='save_type',const=tts.SaveType.save,help="List saves.")
group_list.add_argument("-c","--chest",action="store_const",metavar='save_type',dest='save_type',const=tts.SaveType.chest,help="List chest files.")
parser_list.add_argument("id",nargs='?',help="ID of specific mod to list details of.")
parser_list.set_defaults(func=self.do_list)
# export command
parser_export = subparsers.add_parser('export',help="Export a mod.",description='Export a mod in a format suitible for later import.')
group_export=parser_export.add_mutually_exclusive_group()
group_export.add_argument("-w","--workshop",action="store_const",dest='save_type',metavar='save_type',const=tts.SaveType.workshop,help="ID is of workshop file (the default).")
group_export.add_argument("-s","--save",action="store_const",dest='save_type',metavar='save_type',const=tts.SaveType.save,help="ID is of savegame file.")
group_export.add_argument("-c","--chest",action="store_const",dest='save_type',metavar='save_type',const=tts.SaveType.chest,help="ID is of chest file.")
parser_export.add_argument("id",help="ID of mod/name of savegame to export.")
parser_export.add_argument("-o","--output",help="Location/file to export to.")
parser_export.add_argument("-f","--force",action="store_true",help="Force creation of export file.")
parser_export.add_argument("-d","--download",action="store_true",help="Attempt to download missing cache files. (EXPERIMENTAL)")
def populate_manage_frame(self,frame):
ttk.Label(frame,text="Select list source:").grid(row=0,sticky=Tk.W)
self.save_type=Tk.IntVar()
self.save_type.set(int(tts.SaveType.workshop))
ttk.Radiobutton(frame,
text="Workshop",
variable=self.save_type,
value=int(tts.SaveType.workshop),
command=self.list_command).grid(row=0,column=1)
ttk.Radiobutton(frame,
text="Save",
variable=self.save_type,
value=int(tts.SaveType.save),
command=self.list_command).grid(row=0,column=2)
ttk.Radiobutton(frame,
text="Chest",
variable=self.save_type,
value=int(tts.SaveType.chest),
command=self.list_command).grid(row=0,column=3)
fl_frame=ttk.Frame(frame)
fl_frame.grid(row=1,columnspan=4,sticky=Tk.N+Tk.S+Tk.E+Tk.W)
ttk.Label(fl_frame,text="Files found:").pack()
foundBar=ttk.Scrollbar(fl_frame,orient=Tk.VERTICAL)
self.file_list_box=Tk.Listbox(fl_frame,yscrollcommand=foundBar.set)