Files
flowframes/CodeLegacy/Ui/UiUtils.cs

153 lines
4.7 KiB
C#

using Flowframes.Data;
using Flowframes.Forms;
using Flowframes.IO;
using Flowframes.Main;
using Flowframes.Os;
using System;
using System.Windows.Forms;
namespace Flowframes.Ui
{
class UiUtils
{
public static void InitCombox(ComboBox box, int index)
{
if (box.Items.Count >= 1)
{
box.SelectedIndex = index;
box.Text = box.Items[index].ToString();
}
}
public static bool AssignComboxIndexFromText(ComboBox box, string text) // Set index to corresponding text
{
int index = box.Items.IndexOf(text);
if (index == -1) // custom value, index not found
return false;
box.SelectedIndex = index;
return true;
}
public static ComboBox LoadAiModelsIntoGui(ComboBox combox, AiInfo ai)
{
combox.Items.Clear();
try
{
ModelCollection modelCollection = AiModels.GetModels(ai);
if (modelCollection.Models == null || modelCollection.Models.Count < 1)
return combox;
for (int i = 0; i < modelCollection.Models.Count; i++)
{
ModelCollection.ModelInfo modelInfo = modelCollection.Models[i];
if (string.IsNullOrWhiteSpace(modelInfo.Name))
continue;
combox.Items.Add(modelInfo.GetUiString());
if (modelInfo.IsDefault)
combox.SelectedIndex = i;
}
if (combox.SelectedIndex < 0)
combox.SelectedIndex = 0;
SelectNcnnIfNoCudaAvail(combox);
}
catch (Exception e)
{
Logger.Log($"Failed to load available AI models for {ai.NameInternal}! {e.Message}");
Logger.Log($"Stack Trace: {e.StackTrace}", true);
}
return combox;
}
static void SelectNcnnIfNoCudaAvail(ComboBox combox)
{
if (NvApi.gpuList.Count < 1)
{
for (int i = 0; i < combox.Items.Count; i++)
{
if (((string)combox.Items[i]).Upper().Contains("NCNN"))
combox.SelectedIndex = i;
}
}
}
public enum MessageType { Message, Warning, Error };
public static DialogResult ShowMessageBox(string text, MessageType type = MessageType.Message)
{
Logger.Log($"MessageBox: {text} ({type}){(BatchProcessing.busy ? "[Batch Mode - Will not display messagebox]" : "")}", true);
if(Cli.ShowConsole)
return DialogResult.OK;
if (BatchProcessing.busy)
{
Logger.Log(text);
return new DialogResult();
}
MessageBoxIcon icon = MessageBoxIcon.Information;
if (type == MessageType.Warning) icon = MessageBoxIcon.Warning;
else if (type == MessageType.Error) icon = MessageBoxIcon.Error;
MessageForm form = new MessageForm(text, type.ToString());
form.ShowDialog();
return DialogResult.OK;
}
public static DialogResult ShowMessageBox(string text, string title, MessageBoxButtons btns)
{
MessageForm form = new MessageForm(text, title, btns);
return form.ShowDialog();
}
public enum MoveDirection { Up = -1, Down = 1 };
public static void MoveListViewItem(ListView listView, MoveDirection direction)
{
if (listView.SelectedItems.Count != 1)
return;
ListViewItem selected = listView.SelectedItems[0];
int index = selected.Index;
int count = listView.Items.Count;
if (direction == MoveDirection.Up)
{
if (index == 0)
{
listView.Items.Remove(selected);
listView.Items.Insert(count - 1, selected);
}
else
{
listView.Items.Remove(selected);
listView.Items.Insert(index - 1, selected);
}
}
else
{
if (index == count - 1)
{
listView.Items.Remove(selected);
listView.Items.Insert(0, selected);
}
else
{
listView.Items.Remove(selected);
listView.Items.Insert(index + 1, selected);
}
}
}
}
}