Hi, Bastien, I've been studying your addon and the way you set the prefs. Thanks, that's exactly what I was looking for. =)
*Well, actually, not exactly - setting preferences was more clever than what I had in mind, so thumbs up! 2013/10/15 flavio soares <[email protected]> > Alright! Thanks, that's probably it! =) > > > 2013/10/15 Bastien Montagne <[email protected]> > >> Eh, it’s like any file, right? Just have a look around in other addons, >> many of them handle files… >> >> I would point you to official ui_translate addon, for example, but it has >> some extra complexity you do not need… Just note that simply adding >> "subtype='FILE_PATH'" parameter to a string prop definition will turn it >> into a file-selector one in the UI… ;) >> >> >> On 15/10/2013 19:38, flavio soares wrote: >> >> Hi, Bastien, >> >> Thanks for the link. I'll try to mess with it, but I think the addon >> part is ok. The problem is really calling a window to choose the executable >> and storing it in a variable. >> >> >> 2013/10/15 Bastien Montagne <[email protected]> >> >>> Hi Flavio, >>> >>> Think you are looking for AddonPreferences ? >>> >>> http://www.blender.org/documentation/blender_python_api_2_69_1/bpy.types.AddonPreferences.html >>> >>> Bastien >>> >>> >>> On 15/10/2013 19:03, flavio soares wrote: >>> >>> Hi, >>> >>> I'm doing an exporter to ardour and it runs an external ffmpeg. I'm >>> wondering if there is a way of letting user point to a local ffmpeg >>> executable in case it is not recognized by "which". The idea is to replace >>> the RuntimeError with something like: >>> >>> with open(self.filepath) as file: >>> ffCommand = self.filepath >>> >>> but this only works inside classes. >>> >>> >>> >>> Relevant code is below: >>> >>> this is the main class: >>> >>> class ExportArdour(bpy.types.Operator, ExportHelper): >>> """Export audio timeline (including audios from videos) to Ardour""" >>> bl_idname = "export.ardour" >>> bl_label = "Export to Ardour" >>> filename_ext = ".ardour" >>> filter_glob = StringProperty(default="*.ardour", options={'HIDDEN'}) >>> >>> @classmethod >>> def poll(cls, context): >>> if bpy.context.sequences: >>> return context.sequences is not None >>> >>> def execute(self, context): >>> scene = bpy.context.scene >>> startFrame = scene.frame_start >>> endFrame = scene.frame_end >>> fps, timecode = checkFPS() >>> >>> system = bpy.context.user_preferences.system >>> audioRate = int(system.audio_sample_rate.split("_")[1]) >>> >>> audiosFolderPath, ardourFile = os.path.split(self.filepath) >>> ardourBasename = os.path.splitext(ardourFile)[0] >>> audiosFolder = audiosFolderPath + os.sep + "Audios_for_" + >>> ardourBasename >>> >>> Session = createXML(startFrame, endFrame, fps, timecode, >>> audioRate, >>> ardourBasename, audiosFolder) >>> >>> runFFMPEG(sources, audioRate, audiosFolder) >>> writeXML(self.filepath, Session) >>> >>> return {'FINISHED'} >>> >>> >>> ..........that calls this function (notice the RunTime error): >>> >>> def runFFMPEG(sources, audioRate, outputFolder): >>> if which('ffmpeg') is not None: >>> if (os.name == "nt"): >>> ffCommand = ffmpegPath + os.sep + "ffmpeg.exe" >>> else: >>> ffCommand = "ffmpeg" >>> else: >>> raise RuntimeError("You don\'t seem to have FFMPEG installed on >>> your system. \ >>> Please install it and re-run the Ardour >>> exporter.") >>> >>> if (os.path.exists(outputFolder) is False): >>> os.mkdir(outputFolder) >>> >>> for source in sources: >>> basename, ext = os.path.splitext(source['name']) >>> >>> input = source['origin'] >>> if (input.startswith("//")): >>> input = input.replace("//", "") >>> >>> output = outputFolder + os.sep + basename + ".wav" >>> >>> # Due to spaces, the command entries (ffCommand, input and >>> output) have >>> # to be read as strings by the call command, thus the escapings >>> below >>> callFFMPEG = "\"%s\" -i \"%s\" -y -vn -ar %i -ac 1 \"%s\"" \ >>> % (ffCommand, input, audioRate, output) >>> call(callFFMPEG, shell=True) >>> >>> return {'FINISHED'} >>> >>> >>> >>> thanks. >>> >>> flavio >>> >>> >>> _______________________________________________ >>> Bf-python mailing >>> [email protected]http://lists.blender.org/mailman/listinfo/bf-python >>> >>> >>> _______________________________________________ >>> Bf-python mailing list >>> [email protected] >>> http://lists.blender.org/mailman/listinfo/bf-python >>> >>> >> >> >> _______________________________________________ >> Bf-python mailing >> [email protected]http://lists.blender.org/mailman/listinfo/bf-python >> >> >> _______________________________________________ >> Bf-python mailing list >> [email protected] >> http://lists.blender.org/mailman/listinfo/bf-python >> >> >
_______________________________________________ Bf-python mailing list [email protected] http://lists.blender.org/mailman/listinfo/bf-python
