using Flowframes.Data; using Flowframes.IO; using Flowframes.Main; using Flowframes.OS; using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Reflection.Emit; using System.Text; using System.Text.RegularExpressions; using System.Threading.Tasks; 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, AI ai) { combox.Items.Clear(); try { ModelCollection modelCollection = AiModels.GetModels(ai); 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.aiName}! {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]).ToUpper().Contains("NCNN")) combox.SelectedIndex = i; } } } } }