1
0
Fork 0
mirror of https://github.com/beefytech/Beef.git synced 2025-06-09 20:12:21 +02:00

Added an open in terminal dialogue

This commit is contained in:
Booklordofthedings 2024-07-16 12:49:15 +02:00
parent efb1a9c350
commit 8f7287b3dc
5 changed files with 69 additions and 0 deletions

View file

@ -6514,6 +6514,20 @@ namespace IDE
procInfo.UseShellExecute = true; procInfo.UseShellExecute = true;
procInfo.SetFileName(directory); procInfo.SetFileName(directory);
let process = scope SpawnedProcess();
process.Start(procInfo).IgnoreError();
});
item = menu.AddItem("Open in Terminal");
item.mOnMenuItemSelected.Add(new (menu) =>
{
let directory = scope String();
Path.GetDirectoryPath(sourceViewPanel.mFilePath, directory);
ProcessStartInfo procInfo = scope ProcessStartInfo();
procInfo.UseShellExecute = true;
procInfo.SetFileName(gApp.mSettings.mEditorSettings.mDefaultConsole);
procInfo.SetWorkingDirectory(directory);
let process = scope SpawnedProcess(); let process = scope SpawnedProcess();
process.Start(procInfo).IgnoreError(); process.Start(procInfo).IgnoreError();
}); });

View file

@ -657,6 +657,7 @@ namespace IDE
public List<String> mFonts = new .() ~ DeleteContainerAndItems!(_); public List<String> mFonts = new .() ~ DeleteContainerAndItems!(_);
public float mFontSize = 12; public float mFontSize = 12;
public String mDefaultConsole = new .("powershell") ~ delete _;
public AutoCompleteShowKind mAutoCompleteShowKind = .PanelIfVisible; public AutoCompleteShowKind mAutoCompleteShowKind = .PanelIfVisible;
public bool mAutoCompleteRequireControl = true; public bool mAutoCompleteRequireControl = true;
public bool mAutoCompleteRequireTab = false; public bool mAutoCompleteRequireTab = false;
@ -691,6 +692,7 @@ namespace IDE
sd.Add(str); sd.Add(str);
} }
sd.Add("FontSize", mFontSize); sd.Add("FontSize", mFontSize);
sd.Add("DefaultConsole", mDefaultConsole);
sd.Add("AutoCompleteShowKind", mAutoCompleteShowKind); sd.Add("AutoCompleteShowKind", mAutoCompleteShowKind);
sd.Add("AutoCompleteRequireControl", mAutoCompleteRequireControl); sd.Add("AutoCompleteRequireControl", mAutoCompleteRequireControl);
sd.Add("AutoCompleteRequireTab", mAutoCompleteRequireTab); sd.Add("AutoCompleteRequireTab", mAutoCompleteRequireTab);
@ -728,6 +730,7 @@ namespace IDE
} }
sd.Get("UIScale", ref gApp.mSettings.mUISettings.mScale); // Legacy sd.Get("UIScale", ref gApp.mSettings.mUISettings.mScale); // Legacy
sd.Get("FontSize", ref mFontSize); sd.Get("FontSize", ref mFontSize);
sd.Get("DefaultConsole", mDefaultConsole);
sd.Get("AutoCompleteShowKind", ref mAutoCompleteShowKind); sd.Get("AutoCompleteShowKind", ref mAutoCompleteShowKind);
sd.Get("AutoCompleteRequireControl", ref mAutoCompleteRequireControl); sd.Get("AutoCompleteRequireControl", ref mAutoCompleteRequireControl);
sd.Get("AutoCompleteRequireTab", ref mAutoCompleteRequireTab); sd.Get("AutoCompleteRequireTab", ref mAutoCompleteRequireTab);

View file

@ -2989,6 +2989,39 @@ namespace IDE.ui
process.Start(psi).IgnoreError(); process.Start(psi).IgnoreError();
} }
}); });
item = menu.AddItem("Open in Terminal");
item.mOnMenuItemSelected.Add(new (menu) =>
{
let projectItem = GetSelectedProjectItem();
String path = scope String();
if (projectItem == null)
{
path.Set(gApp.mWorkspace.mDir);
}
else if (let projectFolder = projectItem as ProjectFolder)
{
if (projectFolder.mParentFolder == null)
{
path.Set(projectFolder.mProject.mProjectDir);
}
else
projectFolder.GetFullImportPath(path);
}
else
projectItem.mParentFolder.GetFullImportPath(path);
if (!path.IsWhiteSpace)
{
ProcessStartInfo psi = scope ProcessStartInfo();
psi.SetFileName(gApp.mSettings.mEditorSettings.mDefaultConsole);
psi.SetWorkingDirectory(path);
psi.UseShellExecute = true;
var process = scope SpawnedProcess();
process.Start(psi).IgnoreError();
}
});
} }
if (projectItem == null) if (projectItem == null)

View file

@ -96,6 +96,7 @@ namespace IDE.ui
category.mTextColor = Color.Mult(DarkTheme.COLOR_TEXT, cHeaderColor); category.mTextColor = Color.Mult(DarkTheme.COLOR_TEXT, cHeaderColor);
AddPropertiesItem(category, "Font", "mFonts"); AddPropertiesItem(category, "Font", "mFonts");
AddPropertiesItem(category, "Font Size", "mFontSize"); AddPropertiesItem(category, "Font Size", "mFontSize");
AddPropertiesItem(category, "Default Console", "mDefaultConsole");
AddPropertiesItem(category, "Autocomplete", "mAutoCompleteShowKind"); AddPropertiesItem(category, "Autocomplete", "mAutoCompleteShowKind");
AddPropertiesItem(category, "Autocomplete Require Control", "mAutoCompleteRequireControl"); AddPropertiesItem(category, "Autocomplete Require Control", "mAutoCompleteRequireControl");
AddPropertiesItem(category, "Autocomplete Require Tab", "mAutoCompleteRequireTab"); AddPropertiesItem(category, "Autocomplete Require Tab", "mAutoCompleteRequireTab");

View file

@ -132,6 +132,7 @@ namespace IDE.ui
menu.AddItem("Open").mOnMenuItemSelected.Add(new (menu) => { TryOpenWorkspace(); }); menu.AddItem("Open").mOnMenuItemSelected.Add(new (menu) => { TryOpenWorkspace(); });
menu.AddItem(); menu.AddItem();
menu.AddItem("Open Containing Folder").mOnMenuItemSelected.Add(new (menu) => { OpenContainingFolder(); }); menu.AddItem("Open Containing Folder").mOnMenuItemSelected.Add(new (menu) => { OpenContainingFolder(); });
menu.AddItem("Open in Terminal").mOnMenuItemSelected.Add(new (menu) => { OpenInTerminal(); });
menu.AddItem("Copy Path").mOnMenuItemSelected.Add(new (menu) => { menu.AddItem("Copy Path").mOnMenuItemSelected.Add(new (menu) => {
gApp.SetClipboardData("text", mPath.CStr(), (int32)mPath.Length + 1, true); gApp.SetClipboardData("text", mPath.CStr(), (int32)mPath.Length + 1, true);
}); });
@ -174,6 +175,23 @@ namespace IDE.ui
process.Start(psi).IgnoreError(); process.Start(psi).IgnoreError();
} }
void OpenInTerminal()
{
if (!Directory.Exists(mPath))
{
ShowNotFoundDialog();
return;
}
ProcessStartInfo psi = scope ProcessStartInfo();
psi.SetFileName(gApp.mSettings.mEditorSettings.mDefaultConsole);
psi.UseShellExecute = true;
psi.SetWorkingDirectory(mPath);
var process = scope SpawnedProcess();
process.Start(psi).IgnoreError();
}
void TryOpenWorkspace() void TryOpenWorkspace()
{ {
const String WORKSPACE_FILENAME = "BeefSpace.toml"; const String WORKSPACE_FILENAME = "BeefSpace.toml";