Skip to content

Commit

Permalink
Added Ardunino Selection Dialog (first start only)
Browse files Browse the repository at this point in the history
Fixed some issues when no Arduino installation is setup
Fixed location of teensyduino libraries
  • Loading branch information
luni64 committed Aug 17, 2019
1 parent eb24329 commit e8224a4
Show file tree
Hide file tree
Showing 31 changed files with 529 additions and 195 deletions.
35 changes: 19 additions & 16 deletions VisualTeensy/App.config
Original file line number Diff line number Diff line change
Expand Up @@ -47,59 +47,62 @@
<value>100,100,1000,800</value>
</setting>
<setting name="defaultProjectBase" serializeAs="String">
<value/>
<value />
</setting>
<setting name="lastProject" serializeAs="String">
<value/>
<value />
</setting>
<setting name="arduinoBase" serializeAs="String">
<value/>
<value />
</setting>
<setting name="uplPjrcBase" serializeAs="String">
<value/>
<value />
</setting>
<setting name="uplTyBase" serializeAs="String">
<value/>
<value />
</setting>
<setting name="makeExePath" serializeAs="String">
<value/>
<value />
</setting>
<setting name="projectBaseDefault" serializeAs="String">
<value/>
<value />
</setting>
<setting name="libBase" serializeAs="String">
<value/>
<value />
</setting>
<setting name="uplCLIBase" serializeAs="String">
<value/>
<value />
</setting>
<setting name="uplJLinkBase" serializeAs="String">
<value/>
<value />
</setting>
<setting name="debugSupport" serializeAs="String">
<value>False</value>
</setting>
<setting name="ColCore" serializeAs="String">
<value/>
<value />
</setting>
<setting name="ColLib" serializeAs="String">
<value/>
<value />
</setting>
<setting name="ColSrc" serializeAs="String">
<value/>
<value />
</setting>
<setting name="ColLink" serializeAs="String">
<value/>
<value />
</setting>
<setting name="ColErr" serializeAs="String">
<value/>
<value />
</setting>
<setting name="ColOk" serializeAs="String">
<value/>
<value />
</setting>
<setting name="ColorEnabled" serializeAs="String">
<value>True</value>
</setting>
<setting name="FirstStart" serializeAs="String">
<value>True</value>
</setting>
</VisualTeensy.Properties.Settings>
</userSettings>
</configuration>
92 changes: 59 additions & 33 deletions VisualTeensy/App.xaml.cs
Original file line number Diff line number Diff line change
Expand Up @@ -34,33 +34,54 @@ SetupData loadSetup()
Settings.Default.Reload();
}

var setupData = new SetupData();
SetupData setupData = new SetupData();

//var setupData = SetupData.getDefault();


setupData.arduinoBase = String.IsNullOrWhiteSpace(Settings.Default.arduinoBase) ? Helpers.findArduinoFolder()?.Trim() : Settings.Default.arduinoBase;
Helpers.arduinoPath = setupData.arduinoBase;

setupData.projectBaseDefault = String.IsNullOrWhiteSpace(Settings.Default.projectBaseDefault) ? Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.UserProfile), "source") : Settings.Default.projectBaseDefault;
// setupData.uplPjrcBase.path = String.IsNullOrWhiteSpace(Settings.Default.uplPjrcBase) ? setupData.arduinoTools : Settings.Default.uplPjrcBase;
setupData.uplTyBase.path = String.IsNullOrWhiteSpace(Settings.Default.uplTyBase) ? Helpers.findTyToolsFolder() : Settings.Default.uplTyBase;
setupData.uplCLIBase.path = String.IsNullOrWhiteSpace(Settings.Default.uplCLIBase) ? Helpers.findCLIFolder() : Settings.Default.uplCLIBase;
setupData.uplJLinkBase.path = String.IsNullOrWhiteSpace(Settings.Default.uplJLinkBase) ? Helpers.findJLinkFolder() : Settings.Default.uplJLinkBase;
setupData.makeExeBase.path = String.IsNullOrWhiteSpace(Settings.Default.makeExePath) ? Directory.GetCurrentDirectory() : Settings.Default.makeExePath;
setupData.tdLibBase = String.IsNullOrWhiteSpace(Settings.Default.libBase) ? Path.Combine(Helpers.getSketchbookFolder() ?? "", "libraries") : Settings.Default.libBase;
setupData.debugSupportDefault = Settings.Default.debugSupport;



setupData.isColoredOutput = Settings.Default.ColorEnabled;
setupData.colorCore = Settings.Default.ColCore.IsEmpty ? Color.FromArgb(255, 187, 206, 251) : Settings.Default.ColCore;
setupData.colorUserLib = Settings.Default.ColLib.IsEmpty ? Color.FromArgb(255, 206, 244, 253) : Settings.Default.ColLib;
setupData.colorUserSrc = Settings.Default.ColSrc.IsEmpty ? Color.FromArgb(255, 100, 149, 237) : Settings.Default.ColSrc;
setupData.colorOk = Settings.Default.ColOk.IsEmpty ? Color.FromArgb(255, 179, 255, 179) : Settings.Default.ColOk;
setupData.colorLink = Settings.Default.ColLink.IsEmpty ? Color.FromArgb(255, 255, 255, 202) : Settings.Default.ColLink;
setupData.colorErr = Settings.Default.ColErr.IsEmpty ? Color.FromArgb(255, 255, 159, 159) : Settings.Default.ColErr;

if (Settings.Default.FirstStart)
{
var vm = new StartupSettingsView(new StartupSettingsVM(setupData)).ShowDialog();

setupData.projectBaseDefault = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.UserProfile), "source");
setupData.uplPjrcBase.path = Helpers.findTyToolsFolder();
setupData.uplTyBase.path = setupData.arduinoTools;
setupData.uplCLIBase.path = Helpers.findCLIFolder();
setupData.uplJLinkBase.path = Helpers.findJLinkFolder();
setupData.makeExeBase.path = Directory.GetCurrentDirectory();
//setupData.tdLibBase = Path.Combine(Helpers.getSketchbookFolder() ?? "", "libraries");
setupData.tdLibBase = Path.Combine(setupData.arduinoCoreBase??"","libraries");


setupData.isColoredOutput = true;
setupData.colorCore = Color.FromArgb(255, 187, 206, 251);
setupData.colorUserLib = Color.FromArgb(255, 206, 244, 253);
setupData.colorUserSrc = Color.FromArgb(255, 100, 149, 237);
setupData.colorOk = Color.FromArgb(255, 179, 255, 179);
setupData.colorLink = Color.FromArgb(255, 255, 255, 202);
setupData.colorErr = Color.FromArgb(255, 255, 159, 159);

Settings.Default.FirstStart = false;
}
else
{
setupData.arduinoBase = Settings.Default.arduinoBase;

setupData.projectBaseDefault = Settings.Default.projectBaseDefault;
setupData.uplPjrcBase.path = Settings.Default.uplPjrcBase;
setupData.uplTyBase.path = Settings.Default.uplTyBase;
setupData.uplCLIBase.path = Settings.Default.uplCLIBase;
setupData.uplJLinkBase.path = Settings.Default.uplJLinkBase;
setupData.makeExeBase.path = Settings.Default.makeExePath;
setupData.tdLibBase = Path.Combine(setupData.arduinoCoreBase??"", "libraries");

setupData.isColoredOutput = Settings.Default.ColorEnabled;
setupData.colorCore = Settings.Default.ColCore;
setupData.colorUserLib = Settings.Default.ColLib;
setupData.colorUserSrc = Settings.Default.ColSrc;
setupData.colorOk = Settings.Default.ColOk;
setupData.colorLink = Settings.Default.ColLink;
setupData.colorErr = Settings.Default.ColErr;
}
Helpers.arduinoPath = setupData.arduinoBase;

using (var reader = new StreamReader(Assembly.GetExecutingAssembly().GetManifestResourceStream("VisualTeensy.Embedded.makefile_make")))
{
Expand All @@ -70,7 +91,6 @@ SetupData loadSetup()
{
setupData.makefile_builder = reader.ReadToEnd();
}
// Helpers.arduinoPath = setupData.arduinoBase;

return setupData;
}
Expand All @@ -93,13 +113,20 @@ void saveSetup(SetupData setupData)
Settings.Default.ColOk = setupData.colorOk;
Settings.Default.ColLink = setupData.colorLink;
Settings.Default.ColErr = setupData.colorErr;

Settings.Default.mainWinBounds = new Rect(mainWin.Left, mainWin.Top, mainWin.Width, mainWin.Height);

Settings.Default.Save();

}

static public MainWindow mainWin { get; private set; }


protected override void OnStartup(StartupEventArgs e)
{
this.ShutdownMode = ShutdownMode.OnExplicitShutdown;

CultureInfo.DefaultThreadCurrentUICulture = CultureInfo.GetCultureInfo("en-US");

var appData = Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData);
Expand All @@ -119,6 +146,7 @@ protected override void OnStartup(StartupEventArgs e)

base.OnStartup(e);


// overwrite local lib index if older than 7 days
string libIndexTarget = appData + "/VisualTeensy/library_index.json";
bool overwrite = !File.Exists(libIndexTarget);
Expand All @@ -134,7 +162,8 @@ protected override void OnStartup(StartupEventArgs e)
try
{
var setup = loadSetup();
setup.tdLibBase = setup.arduinoBoardsTxt != null ? Path.Combine(Path.GetDirectoryName(setup.arduinoBoardsTxt), "libraries") : null;

// //setup.tdLibBase = setup.arduinoBoardsTxt != null ? Path.Combine(Path.GetDirectoryName(setup.arduinoBoardsTxt), "libraries") : null;

var libManager = Factory.makeLibManager(setup);
var project = Factory.makeProject(setup, libManager);
Expand All @@ -161,15 +190,12 @@ protected override void OnStartup(StartupEventArgs e)

mainWin.ShowDialog();



saveSetup(setup);

Settings.Default.mainWinBounds = new Rect(mainWin.Left, mainWin.Top, mainWin.Width, mainWin.Height);
Settings.Default.lastProject = project.path;
Settings.Default.Save();
saveSetup(setup);

log.Info("Closed");

Shutdown();
}
catch (Exception ex)
{
Expand Down
12 changes: 6 additions & 6 deletions VisualTeensy/Embedded/makefile_make
Original file line number Diff line number Diff line change
Expand Up @@ -17,12 +17,12 @@ TARGET_LST := $(BIN)/$(TARGET_NAME).lst
#******************************************************************************
# BINARIES
#******************************************************************************
CC := $(GCC_BASE)/bin/arm-none-eabi-gcc
CXX := $(GCC_BASE)/bin/arm-none-eabi-g++
AR := $(GCC_BASE)/bin/arm-none-eabi-gcc-ar
OBJCOPY := $(GCC_BASE)/bin/arm-none-eabi-objcopy
SIZE := $(GCC_BASE)/bin/arm-none-eabi-size
OBJDUMP := $(GCC_BASE)/bin/arm-none-eabi-objdump
CC := $(GCC_BASE)/arm-none-eabi-gcc
CXX := $(GCC_BASE)/arm-none-eabi-g++
AR := $(GCC_BASE)/arm-none-eabi-gcc-ar
OBJCOPY := $(GCC_BASE)/arm-none-eabi-objcopy
SIZE := $(GCC_BASE)/arm-none-eabi-size
OBJDUMP := $(GCC_BASE)/arm-none-eabi-objdump
UPL_PJRC := "$(UPL_PJRC_B)/teensy_post_compile" -test -file=$(TARGET_NAME) -path=$(BIN) -tools="$(UPL_PJRC_B)" -board=$(BOARD_ID) -reboot
UPL_TYCMD := $(UPL_TYCMD_B)/tyCommanderC upload $(TARGET_HEX) --autostart --wait --multi
UPL_CLICMD := $(UPL_CLICMD_B)/teensy_loader_cli -mmcu=$(MCU) -v $(TARGET_HEX)
Expand Down
2 changes: 1 addition & 1 deletion VisualTeensy/Properties/AssemblyInfo.cs
Original file line number Diff line number Diff line change
Expand Up @@ -50,7 +50,7 @@
// You can specify all the values or you can default the Build and Revision Numbers
// by using the '*' as shown below:
// [assembly: AssemblyVersion("1.0.*")]
[assembly: AssemblyVersion("0.9.7.0")]
[assembly: AssemblyVersion("0.9.7.1")]
[assembly: AssemblyFileVersion("0.0.0.0")]
[assembly: NeutralResourcesLanguage("en")]

14 changes: 13 additions & 1 deletion VisualTeensy/Properties/Settings.Designer.cs

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

3 changes: 3 additions & 0 deletions VisualTeensy/Properties/Settings.settings
Original file line number Diff line number Diff line change
Expand Up @@ -65,5 +65,8 @@
<Setting Name="ColorEnabled" Type="System.Boolean" Scope="User">
<Value Profile="(Default)">True</Value>
</Setting>
<Setting Name="FirstStart" Type="System.Boolean" Scope="User">
<Value Profile="(Default)">True</Value>
</Setting>
</Settings>
</SettingsFile>
2 changes: 1 addition & 1 deletion VisualTeensy/ViewModel/MainWin/MainVM.cs
Original file line number Diff line number Diff line change
Expand Up @@ -68,7 +68,7 @@ public MainVM(IProject project, LibManager libManager, SetupData setup)

setupTabVM.PropertyChanged += (s, e) =>
{
projecTabVM.updateFiles();
projecTabVM.updateAll();
projecTabVM.OnPropertyChanged("");
};
}
Expand Down
38 changes: 17 additions & 21 deletions VisualTeensy/ViewModel/ProjectTab/ProjectTabVM.cs
Original file line number Diff line number Diff line change
Expand Up @@ -26,29 +26,29 @@ public string this[string columnName]
// error = project.pathError;
// break;

//case "arduinoBase":
// error = project.setup.arduinoBaseError;
// break;
case "arduinoBase":
error = setup.arduinoBaseError;
break;

//case "boardTxtPath":
// error = project.selectedConfiguration.boardTxtPathError;
// break;

//case "corePath":
// error = project.selectedConfiguration.setupType == SetupTypes.expert ? project.selectedConfiguration.corePathError : null;
// break;
case "corePath":
error = project.selectedConfiguration.setupType == SetupTypes.expert ? project.selectedConfiguration.coreBase.error : null;
break;

//case "compilerPath":
// error = project.selectedConfiguration.compilerPathError;
// break;
case "compilerPath":
error = project.selectedConfiguration.compilerBase.error;
break;

//case "makePath":
// error = project.setup.makeExePathError;
// break;

//case "boardVMs":
// error = null;
// break;
case "boardVMs":
error = project.selectedConfiguration.selectedBoard == null ? "No board selected" : null;
break;

default:
error = null;
Expand Down Expand Up @@ -182,10 +182,6 @@ public String settFile
}
string _settFile;

// public String propFile => project.props_json;
//public String taskFile => project.tasks_json;
// public String settFile => project.vsSetup_json;

public String arduinoBase
{
get => setup.arduinoBase;
Expand Down Expand Up @@ -254,8 +250,8 @@ public String corePath
if (value != project.selectedConfiguration.coreBase.path)
{
project.selectedConfiguration.coreBase.path = value.Trim();
OnPropertyChanged();
updateFiles();
updateAll();
OnPropertyChanged("");
}
}
}
Expand Down Expand Up @@ -307,15 +303,15 @@ public ProjectTabVM(IProject project, LibManager libManager, SetupData setup)
updateBoards();
}

private void updateAll()
internal void updateAll()
{
project.selectedConfiguration.parseBoardsTxt(null); //ERRORR!!!!! fix
updateBoards();
updateFiles();
}
public void updateFiles()
internal void updateFiles()
{
// project.generateFiles();


makefile = Makefile.generate(project, libManager, setup);
taskFile = TaskFile.generate(project, setup);
Expand Down
4 changes: 4 additions & 0 deletions VisualTeensy/ViewModel/SetupTab/SetupTabVM.cs
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,10 @@ public string this[string columnName]

switch (columnName)
{
case "arduinoBase":
error = project.selectedConfiguration.setupType == SetupTypes.quick ? setup.arduinoBaseError : null;
break;

case "projectPathDefault":
error = project.pathError;
break;
Expand Down
Loading

0 comments on commit e8224a4

Please sign in to comment.