private void ContentBrowserNewScene_ItemAfterChoose(ContentBrowser sender, ContentBrowser.Item item, ref bool handled) { if (item != null) { CreateScene(item); } }
private void ObjectSettingsWindow_Load(object sender, EventArgs e) { //!!!!!так? if (WinFormsUtility.IsDesignerHosted(this)) { return; } var items = objectsBrowser1.GetAllItems(); if (items.Length != 0) { ContentBrowser.Item itemToSelect = null; if (Document != null && Document.SpecialMode == "ProjectSettingsUserMode" && projectSettingsUserModeLastSelectedTab != "") { itemToSelect = items.FirstOrDefault(i => i.Text == projectSettingsUserModeLastSelectedTab); } if (itemToSelect == null) { itemToSelect = items[0]; } objectsBrowser1.SelectItems(new ContentBrowser.Item[] { itemToSelect }); } timer1.Start(); UpdateControlsLocation(); }
void CreateScene(ContentBrowser.Item item) { try { var prefix = VirtualDirectory.Exists("Scenes") ? @"Scenes\" : ""; string fileName = null; for (int n = 1; ; n++) { string f = prefix + string.Format(@"New{0}.scene", n > 1 ? n.ToString() : ""); if (!VirtualFile.Exists(f)) { fileName = f; break; } } if (!string.IsNullOrEmpty(fileName)) { var realFileName = VirtualPathUtility.GetRealPathByVirtual(fileName); var template = (Component_Scene.NewObjectSettingsScene.TemplateClass)item.Tag; string name = template.Name + ".scene"; var sourceFile = VirtualPathUtility.GetRealPathByVirtual(@"Base\Tools\NewResourceTemplates\" + name); //copy scene file var text = File.ReadAllText(sourceFile); var directoryName = Path.GetDirectoryName(realFileName); if (!Directory.Exists(directoryName)) { Directory.CreateDirectory(directoryName); } File.WriteAllText(realFileName, text); //copy additional folder if exist var sourceFolderPath = sourceFile + "_Files"; if (Directory.Exists(sourceFolderPath)) { var destFolderPath = realFileName + "_Files"; IOUtility.CopyDirectory(sourceFolderPath, destFolderPath); } EditorAPI.SelectFilesOrDirectoriesInMainResourcesWindow(new string[] { realFileName }); EditorAPI.OpenFileAsDocument(realFileName, true, true); } } catch (Exception e) { EditorMessageBox.ShowWarning(e.Message); //Log.Warning( e.Message ); return; } }
private void contentBrowser1_ItemAfterChoose(ContentBrowser sender, ContentBrowser.Item item, ref bool handled) { if (WinFormsUtility.IsDesignerHosted(this)) { return; } if (!IsReadyToCreate(out string dummy)) { return; } ButtonCreateAndClose_Click(null, null); }
private void contentBrowser1_ItemAfterChoose(ContentBrowser sender, ContentBrowser.Item item, ref bool handled) { if (WinFormsUtility.IsDesignerHosted(this)) { return; } handled = true; if (IsReadyToImport(out _)) { ButtonImport_Click(null, null); } }
private void contentBrowser1_ItemAfterChoose(ContentBrowser sender, ContentBrowser.Item item, ref bool handled) { if (WinFormsUtility.IsDesignerHosted(this)) { return; } if (!IsReadyToSelect()) { return; } ButtonSelect_Click(null, null); }
void CreateResource(ContentBrowser.Item item) { if (item.Tag as Component_Scene.NewObjectSettingsScene.TemplateClass != null) { CreateScene(item); } else if (item.Tag as string != null && item.Tag as string == "UIControl") { CreateUIControl(); } else { SelectCreateResource(); } }
void UpdateSelectedType() { Metadata.TypeInfo newType = null; bool newTypeCanSelect = false; ContentBrowser.Item item = null; if (contentBrowser1.SelectedItems.Length != 0) { item = contentBrowser1.SelectedItems[0]; } if (item != null) { item.CalculateReferenceValue(null, MetadataManager.GetTypeOfNetType(typeof(Metadata.TypeInfo)), out string referenceValue, out bool canSet); if (canSet) { if (!string.IsNullOrEmpty(referenceValue)) { newType = (Metadata.TypeInfo)MetadataManager.GetValueByReference( contentBrowser1.SetReferenceModeData.demandedType.GetNetType(), null, referenceValue); newTypeCanSelect = true; } else { newTypeCanSelect = true; } } //check can be selected if (newType != null && !creationData.initDemandedType.IsAssignableFrom(newType)) { newType = null; newTypeCanSelect = false; } } //change if (selectedType != newType || selectedTypeCanSelect != newTypeCanSelect) { selectedType = newType; selectedTypeCanSelect = newTypeCanSelect; SelectedTypeChanged(); } }
void UpdateSelectedType() { Metadata.TypeInfo newType = null; ContentBrowser.Item item = null; if (contentBrowser1.SelectedItems.Length != 0) { item = contentBrowser1.SelectedItems[0]; } if (item != null) { item.CalculateReferenceValue(null, MetadataManager.GetTypeOfNetType(typeof(Metadata.TypeInfo)), out string referenceValue, out bool canSet); if (!string.IsNullOrEmpty(referenceValue) && canSet) { newType = (Metadata.TypeInfo)MetadataManager.GetValueByReference( contentBrowser1.SetReferenceModeData.demandedType.GetNetType(), null, referenceValue); } //check can be selected if (newType != null) { if (!MetadataManager.GetTypeOfNetType(typeof(Component)).IsAssignableFrom(newType) && !MetadataManager.GetTypeOfNetType(typeof(NewResourceType)).IsAssignableFrom(newType)) { newType = null; } } } //change if (selectedType != newType) { selectedType = newType; SelectedTypeChanged(); } }
public override bool AddItem(ContentBrowser.Item item) { //members with ShaderGenerationFunctionAttribute var memberItem = item as ContentBrowserItem_Member; if (memberItem != null) { if (memberItem.Member.GetCustomAttributes(typeof(ShaderGenerationFunctionAttribute)).Length != 0) { return(true); } else { return(false); } } //Component_ShaderTextureSample, Component_ShaderParameter var typeItem = item as ContentBrowserItem_Type; if (typeItem != null) { var netType = typeItem.Type.GetNetType(); if (typeof(Component_ShaderTextureSample).IsAssignableFrom(netType) || typeof(Component_ShaderParameter).IsAssignableFrom(netType) || typeof(Component_ShaderScript).IsAssignableFrom(netType)) { return(true); } else { return(false); } } return(false); }
private void ComponentsBrowser_ItemAfterChoose(ContentBrowser sender, ContentBrowser.Item item, ref bool handled) { }
public virtual bool AddItem( ContentBrowser.Item item ) { return true; }
// public ContentBrowserItem_CSharpProjectReferences(ContentBrowser owner, ContentBrowser.Item parent, string text) : base(owner, parent) { this.text = text; }
// public ContentBrowserItem_Solution(ContentBrowser owner, ContentBrowser.Item parent) : base(owner, parent) { }
void UpdateSelectedReference() { //!!!!не только компоненты? //!!!!multiselection ContentBrowser.Item item = null; if (contentBrowser1.SelectedItems.Length != 0) { item = contentBrowser1.SelectedItems[0]; } string newSelection = null; bool canSet = false; if (item != null) { //!!!!multiselection? item.CalculateReferenceValue(setReferenceModeData.selectedComponents[0], setReferenceModeData.property.TypeUnreferenced, out newSelection, out canSet); //make relative file path if (kryptonCheckBoxCanMakeRelativeFilePath.Checked && !string.IsNullOrEmpty(newSelection)) { if (!newSelection.Contains(':')) //ignore references { var fromResource = ComponentUtility.GetOwnedFileNameOfComponent(setReferenceModeData.selectedComponents[0]); var fromResourceFolder = ""; if (!string.IsNullOrEmpty(fromResource)) { fromResourceFolder = Path.GetDirectoryName(fromResource); } int commonChars = GetEqualPart(new string[] { fromResourceFolder, newSelection }); var path = ""; //go up (dots) { var c = fromResourceFolder.Substring(commonChars).Split(new char[] { '\\', '/' }, StringSplitOptions.RemoveEmptyEntries).Length; for (int n = 0; n < c; n++) { path = Path.Combine(path, ".."); } } //go down { var s = newSelection.Substring(commonChars); if (s.Length != 0 && (s[0] == '\\' || s[0] == '/')) { s = s.Substring(1); } //can't use Path.Combine, invalid character exception if (path.Length != 0 && path[path.Length - 1] != '\\' && path[path.Length - 1] != '/') { path += "\\"; } path += s; //path = Path.Combine( path, s ); } newSelection = "relative:" + path; } } } //update selectedReference = newSelection; selectedReferenceCanSet = canSet; UpdateSetButtons(); UpdateTextBox(); TextBoxSetError(false); ////change //if( string.Compare( selectedReference, newSelection ) != 0 ) //{ // selectedReference = newSelection; // selectedReferenceCanSet = canSet; // SelectedReferenceChanged(); //} }
public ContentBrowserItem(ContentBrowser owner, ContentBrowser.Item parent, string text) : base(owner, parent, text) { }
public static void CalculateReferenceValueForComponentItem(Component from, ContentBrowserItem_Component item, out string referenceValue, out char addSeparator) { Component to = item.Component; //different hierarchy if (from == null || from.ParentRoot != to.ParentRoot) { //if( canMakeRelativeFilePath && from != null ) // ReferenceUtility.CalculateCurrentFolderReference( from, to, "", out referenceValue, out addSeparator ); //else ReferenceUtility.CalculateResourceReference(to, "", out referenceValue, out addSeparator); return; } //root:, this: { var referenceSelectionMode = GetReferenceSelectionModeInHierarchy(item); if (referenceSelectionMode == ContentBrowserItem_Component.ReferenceSelectionModeEnum.This) { ReferenceUtility.CalculateThisReference(from, to, "", out referenceValue, out addSeparator); return; } else if (referenceSelectionMode == ContentBrowserItem_Component.ReferenceSelectionModeEnum.Root) { ReferenceUtility.CalculateRootReference(to, "", out referenceValue, out addSeparator); return; } } //default { //_File //_Type //_Component var componentItemsStack = new List <ContentBrowserItem_Component>(); ContentBrowser.Item firstTypeOrFileItem = null; { ContentBrowser.Item current = item; do { if (current is ContentBrowserItem_Component) { if (current.Parent != null) { componentItemsStack.Add((ContentBrowserItem_Component)current); } } else if (current is ContentBrowserItem_Type || current is ContentBrowserItem_File) { firstTypeOrFileItem = current; break; } else { Log.Fatal("ContentBrowserUtils: CalculateReferenceValueForComponentItem: Internal error."); } current = current.Parent; } while(current != null); componentItemsStack.Reverse(); } var result = new StringBuilder(); //start item if (firstTypeOrFileItem != null) { //_File, _Type var fileItem = firstTypeOrFileItem as ContentBrowserItem_File; if (fileItem != null) { result.Append(VirtualPathUtility.GetVirtualPathByReal(fileItem.FullPath)); } var typeItem = firstTypeOrFileItem as ContentBrowserItem_Type; if (typeItem != null) { result.Append(typeItem.Type.Name); } addSeparator = '|'; } else { //_Component result.Append("root:"); addSeparator = '\0'; } //add path of components foreach (var componentItem in componentItemsStack) { if (addSeparator != '\0') { result.Append(addSeparator); } result.Append(componentItem.Component.GetPathFromParent()); addSeparator = '\\'; } referenceValue = result.ToString(); } }
public static void CalculateReferenceValueForMemberItem(Component from, Metadata.TypeInfo expectedType, ContentBrowserItem_Member item, out string referenceValue, out char addSeparator) { var memberItemsStack = new List <ContentBrowserItem_Member>(); ContentBrowser.Item firstTypeOrFileOrComponentItem = null; { ContentBrowser.Item current = item; do { if (current is ContentBrowserItem_Member) { memberItemsStack.Add((ContentBrowserItem_Member)current); } else if (current is ContentBrowserItem_Type || current is ContentBrowserItem_File || current is ContentBrowserItem_Component) { firstTypeOrFileOrComponentItem = current; break; } else { Log.Fatal("ContentBrowserUtils: CalculateReferenceValueForMemberItem: Internal error."); } current = current.Parent; } while(current != null); memberItemsStack.Reverse(); } var result = new StringBuilder(); //char addSeparator; if (firstTypeOrFileOrComponentItem is ContentBrowserItem_Component) { //_Component var componentItem = (ContentBrowserItem_Component)firstTypeOrFileOrComponentItem; CalculateReferenceValueForComponentItem(from, componentItem, out string referenceValue2, out addSeparator); result.Append(referenceValue2); } else { //_File, _Type var fileItem = firstTypeOrFileOrComponentItem as ContentBrowserItem_File; if (fileItem != null) { result.Append(VirtualPathUtility.GetVirtualPathByReal(fileItem.FullPath)); } var typeItem = firstTypeOrFileOrComponentItem as ContentBrowserItem_Type; if (typeItem != null) { result.Append(typeItem.Type.Name); } addSeparator = '|'; } //add members path foreach (var memberItem in memberItemsStack) { if (addSeparator != '\0') { result.Append(addSeparator); } var member = memberItem.Member; if (expectedType != null && MetadataManager.GetTypeOfNetType(typeof(ReferenceValueType_Member)).IsAssignableFrom(expectedType)) { result.Append(member.Signature); } else { result.Append(member.Name); } addSeparator = '\\'; } referenceValue = result.ToString(); //return result.ToString(); }
void RibbonButtonsUpdateProperties() { //update tabs visibility { Metadata.TypeInfo selectedType = null; { var obj = workspaceController.SelectedDocumentWindow?.ObjectOfWindow; if (obj != null) { selectedType = MetadataManager.MetadataGetType(obj); } } foreach (var ribbonTab in kryptonRibbon.RibbonTabs) { var tab = ribbonTab.Tag as EditorRibbonDefaultConfiguration.Tab; if (tab != null) { bool visible = true; if (tab.VisibleOnlyForType != null && visible) { visible = selectedType != null && tab.VisibleOnlyForType.IsAssignableFrom(selectedType); } if (tab.VisibleCondition != null && visible) { visible = tab.VisibleCondition(); } if (visible && !EditorUtility.PerformRibbonTabVisibleFilter(tab)) { visible = false; } if (ribbonTab.Visible != visible) { ribbonLastSelectedTabTypeByUser_DisableUpdate = true; ribbonTab.Visible = visible; ribbonLastSelectedTabTypeByUser_DisableUpdate = false; } if (ribbonTab.Visible && ribbonLastSelectedTabTypeByUser != "" && ribbonLastSelectedTabTypeByUser == tab.Type) { ribbonLastSelectedTabTypeByUser_DisableUpdate = true; kryptonRibbon.SelectedTab = ribbonTab; ribbonLastSelectedTabTypeByUser_DisableUpdate = false; } } } } //update controls foreach (var ribbonTab in kryptonRibbon.RibbonTabs) { foreach (var ribbonGroup in ribbonTab.Groups) { foreach (var groupItem in ribbonGroup.Items) { var tripple = groupItem as KryptonRibbonGroupTriple; if (tripple != null) { foreach (var trippleItem in tripple.Items) { //Button, DropDown var button = trippleItem as KryptonRibbonGroupButton; if (button != null) { //sub group if (button.Tag as string == "SubGroup" && button.KryptonContextMenu != null) { RibbonSubGroupUpdateItemsRecursive(button.KryptonContextMenu.Items, out var existsEnabled); //disable group when all items are disabled button.Enabled = existsEnabled; } //action var action = button.Tag as EditorAction; if (action != null) { var state = EditorAPI.EditorActionGetState(EditorAction.HolderEnum.RibbonQAT, action); button.Enabled = state.Enabled; //кнопка меняет тип, т.к. в действиях не указывается может ли она быть Checked. //сделано так, что меняет при первом изменении isChecked. if (state.Checked && action.ActionType == EditorAction.ActionTypeEnum.Button) { button.ButtonType = GroupButtonType.Check; } button.Checked = state.Checked; if (!EditorUtility.PerformEditorActionVisibleFilter(action)) { button.Visible = false; } } } //Slider var slider = trippleItem as KryptonRibbonGroupSlider; if (slider != null) { var action = slider.Tag as EditorAction; if (action != null) { var lastValue = action.Slider.Value; var state = EditorAPI.EditorActionGetState(EditorAction.HolderEnum.RibbonQAT, action); slider.Enabled = state.Enabled; if (lastValue != action.Slider.Value) { slider.Control.SetValue(action.Slider.Value); //trackBar.Value = action.Slider.Value; } if (!EditorUtility.PerformEditorActionVisibleFilter(action)) { slider.Visible = false; } } } ////ComboBox //var comboBox = trippleItem as KryptonRibbonGroupComboBox; //if( comboBox != null ) //{ // var action = comboBox.Tag as EditorAction; // if( action != null ) // { // var lastItems = action.ComboBox.Items; // var lastSelectedIndex = action.ComboBox.SelectedIndex; // var state = EditorAPI.GetEditorActionState( EditorAction.HolderEnum.RibbonQAT, action ); // comboBox.Enabled = state.Enabled; // if( !action.ComboBox.Items.SequenceEqual( lastItems ) ) // { // var oldSelectedIndex = comboBox.SelectedIndex; // comboBox.Items.Clear(); // foreach( var item in action.ComboBox.Items ) // comboBox.Items.Add( item ); // if( oldSelectedIndex >= 0 && oldSelectedIndex < comboBox.Items.Count ) // comboBox.SelectedIndex = oldSelectedIndex; // else if( comboBox.Items.Count != 0 ) // comboBox.SelectedIndex = 0; // } // if( lastSelectedIndex != action.ComboBox.SelectedIndex ) // comboBox.SelectedIndex = action.ComboBox.SelectedIndex; // } //} //ListBox var listBox = trippleItem as KryptonRibbonGroupListBox; if (listBox != null) { var action = listBox.Tag as EditorAction; if (action != null) { var lastItems = action.ListBox.Items; var lastSelectedIndex = action.ListBox.SelectedIndex; var state = EditorAPI.EditorActionGetState(EditorAction.HolderEnum.RibbonQAT, action); //!!!!не listBox2? listBox.Enabled = state.Enabled; var browser = listBox.Control.contentBrowser1; //update items if (!action.ListBox.Items.SequenceEqual(lastItems)) { listBox.SetItems(action.ListBox.Items); } //update selected item if (action.ListBox.SelectIndex != null) { int selectIndex = action.ListBox.SelectIndex.Value; var itemToSelect = browser.Items.FirstOrDefault(i => (int)i.Tag == selectIndex); if (itemToSelect != null) { var toSelect = new ContentBrowser.Item[] { itemToSelect }; if (!toSelect.SequenceEqual(browser.SelectedItems)) { browser.SelectItems(toSelect); } } else { if (browser.SelectedItems.Length != 0) { browser.SelectItems(null); } } action.ListBox.SelectIndex = null; } if (!EditorUtility.PerformEditorActionVisibleFilter(action)) { listBox.Visible = false; } //{ // int selectIndex = action.ListBox.SelectedIndex; // int currentSelectedIndex = -1; // if( browser.SelectedItems.Length == 1 ) // currentSelectedIndex = (int)browser.SelectedItems[ 0 ].Tag; // //if( browser.SelectedItems.Length == 1 ) // // currentSelectedIndex = browser.RootItems.IndexOf( browser.SelectedItems[ 0 ] ); // if( selectIndex != currentSelectedIndex ) // { // var itemToSelect = browser.Items.FirstOrDefault( i => (int)i.Tag == selectIndex ); // if( itemToSelect != null ) // browser.SelectItems( new ContentBrowser.Item[] { itemToSelect } ); // else // browser.SelectItems( null ); // } //} //!!!!? //if( lastSelectedIndex != action.ListBox.SelectedIndex ) //{ // if(browser.Items // browser.SelectItems( new ContentBrowser.Item[] { items[ 0 ] } ); // //browser.SelectedIndex = action.ListBox.SelectedIndex; //} } } } } } } } }
//!!!!new public static (Metadata.TypeInfo objectType, string referenceToObject) GetObjectToCreateByContentBrowserItem(ContentBrowser.Item item) { Metadata.TypeInfo objectType = null; string referenceToObject = ""; //string memberFullSignature = ""; //Component createNodeWithComponent = null; //!!!!не все итемы можно создать. //_Type var typeItem = item as ContentBrowserItem_Type; if (typeItem != null) { var type = typeItem.Type; //!!!!генериковому нужно указать типы if (MetadataManager.GetTypeOfNetType(typeof(Component)).IsAssignableFrom(type) && !type.Abstract) { objectType = type; //referenceToObject = objectType.Name; } } //!!!! //var memberItem = item as ContentBrowserItem_Member; //if( memberItem != null ) //{ // var member = memberItem.Member; // var type = member.Creator as Metadata.TypeInfo; // if( type != null ) // memberFullSignature = string.Format( "{0}|{1}", type.Name, member.Signature ); //} //_File var fileItem = item as ContentBrowserItem_File; if (fileItem != null && !fileItem.IsDirectory) { //!!!!не делать предпросмотр для сцены, т.к. долго. что еще? var ext = Path.GetExtension(fileItem.FullPath); if (ResourceManager.GetTypeByFileExtension(ext) != null) { var res = ResourceManager.GetByName(VirtualPathUtility.GetVirtualPathByReal(fileItem.FullPath)); var type = res?.PrimaryInstance?.ResultComponent?.GetProvidedType(); if (type != null) { objectType = type; referenceToObject = res.Name; } } } //_Component var componentItem = item as ContentBrowserItem_Component; if (componentItem != null) { var component = componentItem.Component; if (component.ParentRoot.HierarchyController != null && component.ParentRoot.HierarchyController.CreatedByResource.InstanceType == Resource.InstanceType.Resource) { objectType = component.GetProvidedType(); if (objectType != null) { referenceToObject = objectType.Name; } } //else //{ //if( Scene.ParentRoot == component.ParentRoot ) //{ //!!!! ////add node with component //createNodeWithComponent = component; //} //} } return(objectType, referenceToObject); }
private void ObjectsBrowser1_OverrideItemText(ContentBrowser sender, ContentBrowser.Item item, ref string text) { text = EditorLocalization.Translate("ProjectSettings.Page", text); }
private void objectsBrowser1_ItemAfterChoose(ContentBrowser sender, ContentBrowser.Item item, ref bool handled) { }