public void Init(IQFrameworkContainer container) { Container = container; var localPackageVersionModel = this.GetModel <ILocalPackageVersionModel>(); // 左侧 mLeftLayout = EasyIMGUI.Vertical() .AddChild(EasyIMGUI.Area().WithRectGetter(() => mLeftRect) // 间距 20 .AddChild(EasyIMGUI.Vertical() .AddChild(EasyIMGUI.Space().Pixel(20))) // 搜索 .AddChild(EasyIMGUI.Horizontal() .AddChild(EasyIMGUI.Label().Text("搜索:") .FontBold() .FontSize(12) .Width(40) ).AddChild(EasyIMGUI.TextField() .Height(20) .Self(search => { search.Content .Bind(key => { this.SendCommand(new SearchCommand(key)); }) .AddToDisposeList(mDisposableList); }) ) ) // 权限 .AddChild(EasyIMGUI.Toolbar() .Menus(new List <string>() { "All", PackageAccessRight.Public.ToString(), PackageAccessRight.Private.ToString() }) .Self(self => { self.IndexProperty.Bind(value => { PackageManagerState.AccessRightIndex.Value = value; this.SendCommand(new SearchCommand(PackageManagerState.SearchKey.Value)); }).AddToDisposeList(mDisposableList); })) // 分类 .AddChild( EasyIMGUI.Horizontal() .AddChild(PopupView.Create() .ToolbarStyle() .Self(self => { self.IndexProperty.Bind(value => { PackageManagerState.CategoryIndex.Value = value; this.SendCommand(new SearchCommand(PackageManagerState.SearchKey.Value)); }).AddToDisposeList(mDisposableList); mCategoriesSelectorView = self; })) ) // 是否是官方 .AddChild( EasyIMGUI.Horizontal() .AddChild(EasyIMGUI.Toggle().IsOn(mIsOfficial) .Self(t => t.ValueProperty.Bind(v => mIsOfficial = v))) .AddChild(EasyIMGUI.Label().Text("官方")) .AddChild(EasyIMGUI.FlexibleSpace()) ) .AddChild(EasyIMGUI.Scroll() .AddChild(EasyIMGUI.Custom().OnGUI(() => { PackageManagerState.PackageRepositories.Value .Where(p => p.isOfficial == mIsOfficial) .OrderByDescending(p => { var installedVersion = localPackageVersionModel.GetByName(p.name); if (installedVersion == null) { return(-1); } else if (installedVersion.VersionNumber < p.VersionNumber) { return(2); } else if (installedVersion.VersionNumber == p.VersionNumber) { return(1); } else { return(0); } }) .ThenBy(p => p.name) .ForEach(p => { GUILayout.BeginVertical("box"); GUILayout.BeginHorizontal(); { GUILayout.Label(p.name); GUILayout.FlexibleSpace(); } GUILayout.EndHorizontal(); GUILayout.BeginHorizontal(); { EasyIMGUI.Box().Text(p.latestVersion) .Self(self => self.BackgroundColor = Color.green) .DrawGUI(); GUILayout.FlexibleSpace(); var installedVersion = localPackageVersionModel.GetByName(p.name); if (installedVersion == null) { if (GUILayout.Button(LocaleText.Import)) { RenderEndCommandExecutor.PushCommand(() => { this.SendCommand(new ImportPackageCommand(p)); }); } } else if (installedVersion.VersionNumber < p.VersionNumber) { if (GUILayout.Button(LocaleText.Update)) { RenderEndCommandExecutor.PushCommand(() => { this.SendCommand(new UpdatePackageCommand(p)); }); } } else if (installedVersion.VersionNumber == p.VersionNumber) { if (GUILayout.Button(LocaleText.Reimport)) { RenderEndCommandExecutor.PushCommand(() => { this.SendCommand(new ReimportPackageCommand(p)); }); } } } GUILayout.EndHorizontal(); GUILayout.EndVertical(); var rect = GUILayoutUtility.GetLastRect(); if (mSelectedPackageRepository == p) { GUI.Box(rect, "", mSelectionRect); } if (rect.Contains(Event.current.mousePosition) && Event.current.type == EventType.MouseUp) { mSelectedPackageRepository = p; Event.current.Use(); } }); })) ) ); // var skin = AssetDatabase.LoadAssetAtPath<GUISkin>( var skin = AssetDatabase.LoadAssetAtPath <GUISkin>( "Assets/QFramework/Framework/Toolkits/Core/Editor/Markdown/Skin/MarkdownSkinQS.guiskin"); mMarkdownViewer = new MarkdownViewer(skin, string.Empty, ""); // 右侧 mRightLayout = EasyIMGUI.Vertical() .AddChild(EasyIMGUI.Area().WithRectGetter(() => mRightRect) // 间距 20 .AddChild(EasyIMGUI.Vertical() .AddChild(EasyIMGUI.Space().Pixel(20)) ) // 详细信息 .AddChild(EasyIMGUI.Vertical() .WithVisibleCondition(() => mSelectedPackageRepository != null) // 名字 .AddChild(EasyIMGUI.Label() .TextGetter(() => mSelectedPackageRepository.name) .FontSize(30) .FontBold()) .AddChild(EasyIMGUI.Space()) // 服务器版本 .AddChild(EasyIMGUI.Label() .TextGetter(() => "服务器版本: " + mSelectedPackageRepository.latestVersion) .FontSize(15)) // 本地版本 .AddChild(EasyIMGUI.Label() .WithVisibleCondition(() => localPackageVersionModel.GetByName(mSelectedPackageRepository.name).IsNotNull()) .TextGetter(() => "本地版本:" + localPackageVersionModel.GetByName(mSelectedPackageRepository.name).Version) .FontSize(15)) // 作者 .AddChild(EasyIMGUI.Label() .TextGetter(() => "作者:" + mSelectedPackageRepository.author) .FontSize(15)) // 权限 .AddChild(EasyIMGUI.Label() .TextGetter(() => "权限:" + mSelectedPackageRepository.accessRight) .FontSize(15)) // 主页 .AddChild( EasyIMGUI.Horizontal() .AddChild(EasyIMGUI.Label() .FontSize(15) .Text("插件主页:")) .AddChild(EasyIMGUI.Button() .TextGetter(() => UrlHelper.PackageUrl(mSelectedPackageRepository)) .FontSize(15) .OnClick(() => { this.SendCommand(new OpenDetailCommand(mSelectedPackageRepository)); }) ) .AddChild(EasyIMGUI.FlexibleSpace()) ) // 描述 .AddChild(EasyIMGUI.Label() .TextGetter(() => "描述:") .FontSize(15) ) .AddChild(EasyIMGUI.Space()) // 描述内容 .AddChild(EasyIMGUI.Custom().OnGUI(() => { mMarkdownViewer.UpdateText(mSelectedPackageRepository.description); var lastRect = GUILayoutUtility.GetLastRect(); mMarkdownViewer.DrawWithRect(new Rect(lastRect.x, lastRect.y + lastRect.height, mRightRect.width - 210, mRightRect.height - lastRect.y - lastRect.height)); // mMarkdownViewer.Draw(); })) ) ); mPackageKitWindow = EditorWindow.GetWindow <PackageKitWindow>(); this.SendCommand <PackageManagerInitCommand>(); PackageManagerState.Categories.Bind(value => { mCategoriesSelectorView.Menus(value); mPackageKitWindow.Repaint(); }).AddToDisposeList(mDisposableList); // 创建双屏 mSplitView = mSplitView = new VerticalSplitView { Split = 240, fistPan = rect => { mLeftRect = rect; mLeftLayout.DrawGUI(); }, secondPan = rect => { mRightRect = rect; mRightLayout.DrawGUI(); } }; }
private void OnEnable() { mRootLayout = new VerticalLayout("box"); EasyIMGUI.Space() .Parent(mRootLayout); var markTypeLine = EasyIMGUI.Horizontal() .Parent(mRootLayout); EasyIMGUI.Label().Text(LocaleText.MarkType) .FontSize(12) .Width(60) .Parent(markTypeLine); var enumPopupView = new EnumPopupView(mBindScript.MarkType) .Parent(markTypeLine); enumPopupView.ValueProperty.Bind(newValue => { mBindScript.MarkType = (BindType)newValue; OnRefresh(); }); EasyIMGUI.Space() .Parent(mRootLayout); EasyIMGUI.Custom().OnGUI(() => { if (mBindScript.CustomComponentName == null || string.IsNullOrEmpty(mBindScript.CustomComponentName.Trim())) { mBindScript.CustomComponentName = mBindScript.name; } }).Parent(mRootLayout); mComponentLine = EasyIMGUI.Horizontal(); EasyIMGUI.Label().Text(LocaleText.Type) .Width(60) .FontSize(12) .Parent(mComponentLine); if (mBindScript.MarkType == BindType.DefaultUnityElement) { var components = mBindScript.GetComponents <Component>(); var componentNames = components.Where(c => !(c is AbstractBind)) .Select(c => c.GetType().FullName) .ToArray(); var componentNameIndex = 0; componentNameIndex = componentNames.ToList() .FindIndex((componentName) => componentName.Contains(mBindScript.ComponentName)); if (componentNameIndex == -1 || componentNameIndex >= componentNames.Length) { componentNameIndex = 0; } mBindScript.ComponentName = componentNames[componentNameIndex]; PopupView.Create() .WithIndexAndMenus(componentNameIndex, componentNames) .OnIndexChanged(index => { mBindScript.ComponentName = componentNames[index]; }) .Parent(mComponentLine); } mComponentLine.Parent(mRootLayout); EasyIMGUI.Space() .Parent(mRootLayout); var belongsTo = EasyIMGUI.Horizontal() .Parent(mRootLayout); EasyIMGUI.Label().Text(LocaleText.BelongsTo) .Width(60) .FontSize(12) .Parent(belongsTo); EasyIMGUI.Label().Text(CodeGenUtil.GetBindBelongs2(target as AbstractBind)) .Width(200) .FontSize(12) .Parent(belongsTo); EasyIMGUI.Button() .Text(LocaleText.Select) .OnClick(() => { Selection.objects = new Object[] { CodeGenUtil.GetBindBelongs2GameObject(target as AbstractBind) }; }) .Width(60) .Parent(belongsTo); mClassnameLine = new HorizontalLayout(); EasyIMGUI.Label().Text(LocaleText.ClassName) .Width(60) .FontSize(12) .Parent(mClassnameLine); EasyIMGUI.TextField().Text(mBindScript.CustomComponentName) .Parent(mClassnameLine) .Content.Bind(newValue => { mBindScript.CustomComponentName = newValue; }); mClassnameLine.Parent(mRootLayout); EasyIMGUI.Space() .Parent(mRootLayout); EasyIMGUI.Label().Text(LocaleText.Comment) .FontSize(12) .Parent(mRootLayout); EasyIMGUI.Space() .Parent(mRootLayout); EasyIMGUI.TextArea() .Text(mBindScript.Comment) .Height(100) .Parent(mRootLayout) .Content.Bind(newValue => mBindScript.CustomComment = newValue); var bind = target as AbstractBind; var rootGameObj = CodeGenUtil.GetBindBelongs2GameObject(bind); if (rootGameObj.transform.GetComponent("ILKitBehaviour")) { } else if (rootGameObj.transform.IsUIPanel()) { EasyIMGUI.Button() .Text(LocaleText.Generate + " " + CodeGenUtil.GetBindBelongs2(bind)) .OnClick(() => { var rootPrefabObj = PrefabUtility.GetPrefabParent(rootGameObj); UICodeGenerator.DoCreateCode(new[] { rootPrefabObj }); }) .Height(30) .Parent(mRootLayout); } else if (rootGameObj.transform.IsViewController()) { EasyIMGUI.Button() .Text(LocaleText.Generate + " " + CodeGenUtil.GetBindBelongs2(bind)) .OnClick(() => { CreateViewControllerCode.DoCreateCodeFromScene(bind.gameObject); }) .Height(30) .Parent(mRootLayout); } OnRefresh(); }