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.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();
process.Start(procInfo).IgnoreError();
});

View file

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

View file

@ -2989,6 +2989,39 @@ namespace IDE.ui
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)

View file

@ -96,6 +96,7 @@ namespace IDE.ui
category.mTextColor = Color.Mult(DarkTheme.COLOR_TEXT, cHeaderColor);
AddPropertiesItem(category, "Font", "mFonts");
AddPropertiesItem(category, "Font Size", "mFontSize");
AddPropertiesItem(category, "Default Console", "mDefaultConsole");
AddPropertiesItem(category, "Autocomplete", "mAutoCompleteShowKind");
AddPropertiesItem(category, "Autocomplete Require Control", "mAutoCompleteRequireControl");
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();
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) => {
gApp.SetClipboardData("text", mPath.CStr(), (int32)mPath.Length + 1, true);
});
@ -174,6 +175,23 @@ namespace IDE.ui
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()
{
const String WORKSPACE_FILENAME = "BeefSpace.toml";