William Riker
New Member
Hi, a few days ago i made a tool for quick access to Custom Shaders Patch extension ini files for live editing. I managed to code something that fills some of my expectations at least, so i wanted to share the code in case anyone else wants to take it and make something better out of it. .
Here's what it does:
Firstly, the app recognizes if there's *.ini files in existence both in loaded folders (extension/config/cars/loaded and extension/config/tracks/loaded) and particular car and track folders (content/cars/'car name'/extension and content/tracks/'track name'/extension). There's 4 buttons that open these 4 files in notepad in the case the files actually exist. In the case of loaded folder, when the *.ini file does not exist, the button creates a new blank file and immediately after it allows to open it. For some reason, i could not set this same action for the particular folder buttons, so they just open the file in case it exists and don't do anything in case it doesn't.
My initial plan was to make it possible in some way to open and edit the text of these *.ini files in the app itself, but i guess my limited programming skills made it impossible to find a way. At least i am content with the possibility of opening these files in notepad with one click from within the game.
Here's the code, cheers!
Here's what it does:
Firstly, the app recognizes if there's *.ini files in existence both in loaded folders (extension/config/cars/loaded and extension/config/tracks/loaded) and particular car and track folders (content/cars/'car name'/extension and content/tracks/'track name'/extension). There's 4 buttons that open these 4 files in notepad in the case the files actually exist. In the case of loaded folder, when the *.ini file does not exist, the button creates a new blank file and immediately after it allows to open it. For some reason, i could not set this same action for the particular folder buttons, so they just open the file in case it exists and don't do anything in case it doesn't.

My initial plan was to make it possible in some way to open and edit the text of these *.ini files in the app itself, but i guess my limited programming skills made it impossible to find a way. At least i am content with the possibility of opening these files in notepad with one click from within the game.
Here's the code, cheers!
Code:
import ac, acsys, platform, os, sys, webbrowser
if platform.architecture()[0] == "64bit":
sysdir = os.path.dirname(__file__)+'/stdlib64'
else:
sysdir = os.path.dirname(__file__)+'/stdlib'
import ctypes
appName = "Quick Extension Config"
trackName = ac.getTrackName (0)
carName = ac.getCarName (0)
carCommonExists = False
carPartExists = False
trackCommonExists = False
trackPartExists = False
trackConfigLoadedFilePath = "extension\\config\\tracks\\loaded\\"
tracksMainPath = "content\\tracks\\"
carConfigFilePath= "extension\\config\\cars\\"
carConfigLoadedFilePath = "extension\\config\\cars\\loaded\\"
carsMainPath = "content\\cars\\"
Content = "Track: " + trackName + "\n" + "Car: " + carName
def acMain(ac_version):
global appWindow, btnCarCommon, btnTrackCommon, btnCarPart, btnTrackPart, text, carCommonExists, carPartExists, trackCommonExists, trackPartExists, trackcommonpath, trackpartpath, carpartpath, carcommonpath, Content, carsMainPath, tracksMainPath, carName, trackName
appWindow = ac.newApp(appName)
ac.setTitle(appWindow, appName)
ac.setSize(appWindow, 320, 220)
btnCarCommon = ac.addButton(appWindow, "Open Car Loaded")
ac.setPosition(btnCarCommon, 5, 30)
ac.setSize(btnCarCommon, 150, 20)
ac.addOnClickedListener(btnCarCommon, CarCommonConfig)
btnTrackCommon = ac.addButton(appWindow, "Open Track Loaded")
ac.setPosition(btnTrackCommon, 165, 30)
ac.setSize(btnTrackCommon, 150, 20)
ac.addOnClickedListener(btnTrackCommon, TrackCommonConfig)
btnCarPart = ac.addButton(appWindow, "Open Car Particular")
ac.setPosition(btnCarPart, 5, 60)
ac.setSize(btnCarPart, 150, 20)
ac.addOnClickedListener(btnCarPart, CarPartConfig)
btnTrackPart = ac.addButton(appWindow, "Open Track Particular")
ac.setPosition(btnTrackPart, 165, 60)
ac.setSize(btnTrackPart, 150, 20)
ac.addOnClickedListener(btnTrackPart, TrackPartConfig)
text = ac.addTextBox(appWindow,"TEXT")
ac.setPosition(text, 5, 90)
ac.setSize(text, 310, 120)
trackcommonpath = str(trackConfigLoadedFilePath + trackName + ".ini")
trackpartpath = str(tracksMainPath + trackName + "\\extension\\ext_config.ini")
carcommonpath = str(carConfigLoadedFilePath + carName + ".ini")
carpartpath = str(carsMainPath + carName + "\\extension\\ext_config.ini")
trackextpath = str(tracksMainPath + trackName + "\\extension")
carextpath = str(carsMainPath + carName + "\\extension")
if os.path.isfile(trackcommonpath):
trackCommonExists = True
Content = Content + "\nTrack Config in Loaded folder: YES"
ac.log("Track Config in Loaded folder exists")
ac.setText(btnTrackCommon, "Open Track Loaded")
else:
Content = Content + "\nTrack Config in Loaded folder: NO"
ac.setText(btnTrackCommon, "Create Track Loaded")
if os.path.isfile(trackpartpath):
trackPartExists = True
Content = Content + "\nTrack Config in particular folder: YES"
ac.log("Track Config in particular folder exists")
ac.setText(btnTrackPart, "Open Track Particular")
else:
Content = Content + "\nTrack Config in particular folder: NO"
ac.setText(btnTrackPart, "Open Track Particular")
if os.path.isfile(carcommonpath):
carCommonExists = True
Content = Content + "\nCar Config in Loaded folder: YES"
ac.log("Car Config in Loaded folder exists")
ac.setText(btnCarCommon, "Open Car Loaded")
else:
Content = Content + "\nCar Config in Loaded folder: NO"
ac.setText(btnCarCommon, "Create Car Loaded")
if os.path.isfile(carpartpath):
carPartExists = True
Content = Content + "\nCar Config in particular folder: YES"
ac.log("Car Config in particular folder exists")
ac.setText(btnCarPart, "Open Car Particular")
else:
Content = Content + "\nCar Config in particular folder: NO"
ac.setText(btnCarPart, "Open Car Particular")
ac.setText(text, Content)
ac.setFontSize(text, 13)
return appName
def CarCommonConfig(dummy, variable):
global CarCommon, trackcommonpath, trackpartpath, carpartpath, carcommonpath, Content, carCommonExists
if os.path.isfile(carcommonpath):
webbrowser.open(carcommonpath)
ac.log("Car Common Config opened")
else:
carCommonExists = True
CarCommon = open((carcommonpath), 'w')
CarCommon.close()
ac.log("Car Common Config created")
Content = "Track: " + trackName + "\n" + "Car: " + carName
if os.path.isfile(trackcommonpath):
trackCommonExists = True
Content = Content + "\nTrack Config in Loaded folder: YES"
ac.log("Track Config in Loaded folder exists")
ac.setText(btnTrackCommon, "Open Track Loaded")
else:
Content = Content + "\nTrack Config in Loaded folder: NO"
ac.setText(btnTrackCommon, "Create Track Loaded")
if os.path.isfile(trackpartpath):
trackPartExists = True
Content = Content + "\nTrack Config in particular folder: YES"
ac.log("Track Config in particular folder exists")
ac.setText(btnTrackPart, "Open Track Particular")
else:
Content = Content + "\nTrack Config in particular folder: NO"
ac.setText(btnTrackPart, "Open Track Particular")
if os.path.isfile(carcommonpath):
carCommonExists = True
Content = Content + "\nCar Config in Loaded folder: YES"
ac.log("Car Config in Loaded folder exists")
ac.setText(btnCarCommon, "Open Car Loaded")
else:
Content = Content + "\nCar Config in Loaded folder: NO"
ac.setText(btnCarCommon, "Create Car Loaded")
if os.path.isfile(carpartpath):
carPartExists = True
Content = Content + "\nCar Config in particular folder: YES"
ac.log("Car Config in particular folder exists")
ac.setText(btnCarPart, "Open Car Particular")
else:
Content = Content + "\nCar Config in particular folder: NO"
ac.setText(btnCarPart, "Open Car Particular")
ac.setText(text, Content)
ac.setFontSize(text, 13)
def TrackCommonConfig(dummy, variable):
global TrackCommon, trackcommonpath, trackpartpath, carpartpath, carcommonpath, Content, TrackCommonExists
if os.path.isfile(trackcommonpath):
webbrowser.open(trackcommonpath)
ac.log("Track Common Config opened")
else:
trackCommonExists = True
TrackCommon = open((trackcommonpath), 'w')
TrackCommon.close()
ac.log("Track Common Config created")
Content = "Track: " + trackName + "\n" + "Car: " + carName
if os.path.isfile(trackcommonpath):
trackCommonExists = True
Content = Content + "\nTrack Config in Loaded folder: YES"
ac.log("Track Config in Loaded folder exists")
ac.setText(btnTrackCommon, "Open Track Loaded")
else:
Content = Content + "\nTrack Config in Loaded folder: NO"
ac.setText(btnTrackCommon, "Create Track Loaded")
if os.path.isfile(trackpartpath):
trackPartExists = True
Content = Content + "\nTrack Config in particular folder: YES"
ac.log("Track Config in particular folder exists")
ac.setText(btnTrackPart, "Open Track Particular")
else:
Content = Content + "\nTrack Config in particular folder: NO"
ac.setText(btnTrackPart, "Create Track Particular")
if os.path.isfile(carcommonpath):
carCommonExists = True
Content = Content + "\nCar Config in Loaded folder: YES"
ac.log("Car Config in Loaded folder exists")
ac.setText(btnCarCommon, "Car Loaded")
else:
Content = Content + "\nCar Config in Loaded folder: NO"
ac.setText(btnCarCommon, "Create Car Loaded")
if os.path.isfile(carpartpath):
carPartExists = True
Content = Content + "\nCar Config in particular folder: YES"
ac.log("Car Config in particular folder exists")
ac.setText(btnCarPart, "Car Particular")
else:
Content = Content + "\nCar Config in particular folder: NO"
ac.setText(btnCarPart, "Create Car Particular")
ac.setText(text, Content)
ac.setFontSize(text, 13)
def CarPartConfig(dummy, variable):
global CarPart, trackcommonpath, trackpartpath, carpartpath, carcommonpath, Content, TrackCommonExists, carextpath
if os.path.isfile(carpartpath):
webbrowser.open(carpartpath)
ac.log("Car Particular Config opened")
else:
carPartExists = True
os.makedirs(carextpath)
CarPart = open((carpartpath), 'w')
CarPart.close()
ac.log("Car Particular Config created")
Content = "Track: " + trackName + "\n" + "Car: " + carName
if os.path.isfile(trackcommonpath):
trackCommonExists = True
Content = Content + "\nTrack Config in Loaded folder: YES"
ac.log("Track Config in Loaded folder exists")
ac.setText(btnTrackCommon, "Open Track Loaded")
else:
Content = Content + "\nTrack Config in Loaded folder: NO"
ac.setText(btnTrackCommon, "Create Track Loaded")
if os.path.isfile(trackpartpath):
trackPartExists = True
Content = Content + "\nTrack Config in particular folder: YES"
ac.log("Track Config in particular folder exists")
ac.setText(btnTrackPart, "Open Track Particular")
else:
Content = Content + "\nTrack Config in particular folder: NO"
ac.setText(btnTrackPart, "Create Track Particular")
if os.path.isfile(carcommonpath):
carCommonExists = True
Content = Content + "\nCar Config in Loaded folder: YES"
ac.log("Car Config in Loaded folder exists")
ac.setText(btnCarCommon, "Car Loaded")
else:
Content = Content + "\nCar Config in Loaded folder: NO"
ac.setText(btnCarCommon, "Create Car Loaded")
if os.path.isfile(carpartpath):
carPartExists = True
Content = Content + "\nCar Config in particular folder: YES"
ac.log("Car Config in particular folder exists")
ac.setText(btnCarPart, "Car Particular")
else:
Content = Content + "\nCar Config in particular folder: NO"
ac.setText(btnCarPart, "Create Car Particular")
ac.setText(text, Content)
ac.setFontSize(text, 13)
def TrackPartConfig(dummy, variable):
global TrackPart, trackcommonpath, trackpartpath, carpartpath, carcommonpath, Content, TrackCommonExists
if os.path.isfile(trackpartpath):
webbrowser.open(trackpartpath)
ac.log("Track Particular Config opened")
else:
trackPartExists = True
TrackPart = open((trackpartpath), 'w')
TrackPart.close()
ac.log("Track Particular Config created")
Content = "Track: " + trackName + "\n" + "Car: " + carName
if os.path.isfile(trackcommonpath):
trackCommonExists = True
Content = Content + "\nTrack Config in Loaded folder: YES"
ac.log("Track Config in Loaded folder exists")
ac.setText(btnTrackCommon, "Open Track Loaded")
else:
Content = Content + "\nTrack Config in Loaded folder: NO"
ac.setText(btnTrackCommon, "Create Track Loaded")
if os.path.isfile(trackpartpath):
trackPartExists = True
Content = Content + "\nTrack Config in particular folder: YES"
ac.log("Track Config in particular folder exists")
ac.setText(btnTrackPart, "Open Track Particular")
else:
Content = Content + "\nTrack Config in particular folder: NO"
ac.setText(btnTrackPart, "Create Track Particular")
if os.path.isfile(carcommonpath):
carCommonExists = True
Content = Content + "\nCar Config in Loaded folder: YES"
ac.log("Car Config in Loaded folder exists")
ac.setText(btnCarCommon, "Car Loaded")
else:
Content = Content + "\nCar Config in Loaded folder: NO"
ac.setText(btnCarCommon, "Create Car Loaded")
if os.path.isfile(carpartpath):
carPartExists = True
Content = Content + "\nCar Config in particular folder: YES"
ac.log("Car Config in particular folder exists")
ac.setText(btnCarPart, "Car Particular")
else:
Content = Content + "\nCar Config in particular folder: NO"
ac.setText(btnCarPart, "Create Car Particular")
ac.setText(text, Content)
ac.setFontSize(text, 13)