Example #1
0
        public void InitProcedure(DBItem owner, StageProcedure param)
        {
            if (!(param.Procedure is DBProcedure proc) || param.ProcedureType != StageParamProcudureType.Manual)
            {
                return;
            }

            string name = "procedure" + proc.Name;

            if (proc.ProcedureType == ProcedureTypes.Query)
            {
                DockPage page = dock.GetPage(name);
                if (page == null)
                {
                    page = dock.Put(new PQueryView
                    {
                        Name      = name,
                        Text      = param.Name == null || param.Name.Length == 0 ? proc.ToString() : param.Name,
                        Document  = document,
                        Procedure = proc
                    }, DockType.Content);
                }
                page.Tag = owner;
            }
            Type t = proc.ProcedureType == ProcedureTypes.Assembly || proc.ProcedureType == ProcedureTypes.Source ? proc.GetObjectType() : null;

            if (t != null && !TypeHelper.IsBaseType(t, typeof(Window)) && TypeHelper.IsBaseType(t, typeof(Widget)))
            {
                DockPage page = dock.GetPage(name);
                if (page == null)
                {
                    var control = (Widget)EmitInvoker.CreateObject(t, true);
                    control.Name = name;
                    if (control is IText)
                    {
                        ((IText)control).Text = param.Name == null || param.Name.Length == 0 ? proc.ToString() : param.Name;
                    }
                    page = dock.Put(control, DockType.Content);
                }
                page.Tag = owner;
            }
            else
            {
                if (!(toolProcedures.DropDown?.Items[name] is MenuItemProcedure item))
                {
                    item = new MenuItemProcedure(proc)
                    {
                        Name = name
                    };
                    item.Click += ProcedureItemClick;
                    toolProcedures.DropDown.Items.Add(item);
                }
                item.Tag = owner;
            }
        }
Example #2
0
        private async void LoadPage(DockPage page)
        {
            if (page == null || document == null)
            {
                return;
            }
            if (page.Widget is IReadOnly)
            {
                ((IReadOnly)page.Widget).ReadOnly = state == DocumentEditorState.Readonly || !document.Access.GetFlag(AccessType.Update, GuiEnvironment.User);
            }
            else
            {
                page.Widget.Sensitive = state == DocumentEditorState.Edit && document.Access.GetFlag(AccessType.Update, GuiEnvironment.User);
            }
            if (page.Widget is IDocument)
            {
                ((IDocument)page.Widget).Document = document;
            }

            if (page.Widget is IExecutable)
            {
                await((IExecutable)page.Widget).Execute(new ExecuteArgs(document));
            }

            if (page.Widget is TableEditor)
            {
                ((TableEditor)page.Widget).OwnerRow = document;
            }

            if (document.Attached)
            {
                if (page.Widget is ILoader)
                {
                    ((ILoader)page.Widget).Loader.LoadAsync();
                }
                else if (page.Widget is ISync)
                {
                    await((ISync)page.Widget).SyncAsync();
                }
            }
        }
        public Result OnStartup(UIControlledApplication application)
        {
            var container = CommandContainer.Instance();

            if (container.Valid)
            {
                container.BuildRibbon(application);
            }

            var dPid = new DockablePaneId(DockConstants.Id);

            if (!DockablePane.PaneIsRegistered(dPid))
            {
                var state = new DockablePaneState {
                    DockPosition = DockPosition.Right
                };
                var element = new DockPage();
                application.RegisterDockablePane(DockConstants.Id, DockConstants.Name, element, state);
            }


            return(Result.Succeeded);
        }