Beispiel #1
0
        private void ValidateTruck()
        {
            try
            {
                SplashScreenHelper.SetState(Resources.StringResources.StateValidateTruck);

                var mgrClient  = IoC.Instance.Resolve <IBaseManager <Client> >();
                var clientcode = GetClientCode();
                var client     = mgrClient.Get(clientcode, GetModeEnum.Partial);
                if (client == null)
                {
                    throw new DeveloperException("Can't find Client by key '{0}'.", clientcode);
                }

                if (string.IsNullOrEmpty(client.TruckCode_R))
                {
                    HasCriticalErrors = true;
                    _criticalErrorMessages.Add(string.Format(Resources.StringResources.TruckNotValidated,
                                                             GetClientCode()));
                }
                else
                {
                    WMSEnvironment.Instance.TruckCode = client.TruckCode_R;
                }
            }
            catch (Exception ex)
            {
                HasCriticalErrors = true;
                var msg = Resources.StringResources.TruckValidatedError;
                _criticalErrorMessages.Add(msg);
                ExceptionPolicy.Instance.HandleException(new OperationException(msg, ex), "RclBackgroundProcess");
            }
        }
Beispiel #2
0
        private void Application_Startup(object sender, StartupEventArgs e)
        {
            // TODO: Don't display splash screen during startup if chosen by user
            _retryInterval = RETRY_INTERVAL;

            ManualResetEvent mre = new ManualResetEvent(false);
            // start splash screen thread
            Thread thread = new Thread(
                new ThreadStart(
                    delegate()
            {
                SplashScreenHelper.SplashScreen = new Splash();


                SplashScreenHelper.Show();

                mre.Set();

                System.Windows.Threading.Dispatcher.Run();
            }
                    ));


            thread.SetApartmentState(ApartmentState.STA);
            thread.IsBackground = true;
            thread.Start();

            // wait until thread initializes everything and then check
            mre.WaitOne();

            check();
        }
Beispiel #3
0
 void ActivateWindowCore()
 {
     if (Window != null && !Window.IsActive && Window.IsVisible && !SplashScreenHelper.ApplicationHasActiveWindow())
     {
         Window.Activate();
     }
 }
Beispiel #4
0
        /// <summary>
        /// 处理分页
        /// </summary>
        private void GetSource()
        {
            SplashScreenHelper.ShowLoadingScreen();
            //获得当前页
            int cur = pagerControl.CurrentPage;
            //获得每页显示的记录数
            int rows       = pagerControl.RowsPerPage;
            int totalCount = 10;

            Goods = goodsDel.PageQuery(cur, rows, ref totalCount);
            pagerControl.RecordCount = totalCount;
            pagerControl.TotalPage   = totalCount / pagerControl.RowsPerPage + 1;
            try
            {
                product_grid.Rows.Clear();
                foreach (var item in Goods)
                {
                    Image image = Image.FromFile(@"Images\1.png");
                    product_grid.RowTemplate.Height = image.Height;
                    product_grid.Rows.Add(item.status == 0 ? true : false, image, item.weizhi,
                                          item.bianhao, item.codigo, item.namecn, item.baozhuangshu, item.zhuangxiangshu, item.maijia, item.kucun, item.beizhu);
                }
            }
            catch (Exception ex)
            {
                Logger.Error(ex);
            }
            finally
            {
                SplashScreenHelper.CloseForm();
            }
        }
Beispiel #5
0
 private void HideProductCommandExec()
 {
     if (WPFMessageBox.Show(Resources.PageConfigurationProductsProductConfirmHide, Resources.PageConfigurationProductsProductConfirmHideTitle, MessageBoxButton.YesNo, MessageBoxImage.Question, MessageBoxResult.Cancel) == MessageBoxResult.No)
     {
         return;
     }
     try
     {
         this.SelectedProduct.IsHidden = true;
         this.UnitOfWork.ProductRepository.Update(this.SelectedProduct);
         this.UnitOfWork.Save();
         if (NavigatorHelper.NavigationService == null)
         {
             return;
         }
         NavigatorHelper.NavigationService.Refresh();
     }
     catch (SqlException ex)
     {
         SplashScreenHelper.CloseInstant();
         int num = (int)WPFMessageBox.Show(Resources.ExceptionDbWarning + ex.Message, Resources.ExceptionDbWarningTitle, MessageBoxButton.OK, MessageBoxImage.Hand);
         ConfigurationViewModel.logger.Error("Database error: {0}", ex.Message);
     }
     catch (DataException ex)
     {
         SplashScreenHelper.CloseInstant();
         int num = (int)WPFMessageBox.Show(Resources.ExceptionDbWarning + ex.Message, Resources.ExceptionDbWarningTitle, MessageBoxButton.OK, MessageBoxImage.Hand);
         ConfigurationViewModel.logger.Error("Database error: {0}", ex.Message);
     }
 }
Beispiel #6
0
        static Window CreateSplashScreenWindow(object parameter)
        {
            Type             windowType    = SplashScreenHelper.FindParameter <Type>(parameter);
            Style            windowStyle   = SplashScreenHelper.FindParameter <Style>(parameter);
            IList <TimeSpan> fadeDurations = SplashScreenHelper.FindParameters <TimeSpan>(parameter);
            Window           res;

            if (windowType != null)
            {
                res = (Window)Activator.CreateInstance(windowType);
            }
            else if (windowStyle != null)
            {
                res = new DXSplashScreen.SplashScreenWindow();
            }
            else
            {
                res = DXSplashScreen.DefaultSplashScreenWindowCreator(parameter);
            }

            res.WindowStartupLocation = SplashScreenHelper.FindParameter <WindowStartupLocation>(parameter, WindowStartupLocation.CenterScreen);
            if (windowStyle != null)
            {
                res.Style = windowStyle;
            }
            if (fadeDurations.Any(x => x.TotalMilliseconds > 0) && !Interaction.GetBehaviors(res).Any(x => x is WindowFadeAnimationBehavior))
            {
                Interaction.GetBehaviors(res).Add(new WindowFadeAnimationBehavior()
                {
                    FadeInDuration = fadeDurations[0], FadeOutDuration = fadeDurations[1]
                });
            }

            return(res);
        }
Beispiel #7
0
 private void AddMemberCard(MemberCard memberCard)
 {
     try
     {
         if (AuthenticationService.Instance.AuthenticatedMember == null)
         {
             return;
         }
         Member byId = this.UnitOfWork.MemberRepository.GetById(AuthenticationService.Instance.AuthenticatedMember.Id);
         if (byId != null)
         {
             this.NewMemberCard.CreatedBy = byId;
         }
         this.UnitOfWork.MemberCardRepository.Add(memberCard);
         this.UnitOfWork.Save();
         int num = (int)WPFMessageBox.Show(Resources.PageNewMembercardUpdateSuccess, Resources.PageNewMembercardUpdateSuccessTitle, MessageBoxButton.OK, MessageBoxImage.Asterisk);
         NewMembercardViewModel.logger.Info("MemberCard added successfully to existing member, card id: " + (object)memberCard.Id + ", member: " + (object)memberCard.Member.Id);
         NavigatorHelper.NavigationService.Refresh();
     }
     catch (SqlException ex)
     {
         SplashScreenHelper.CloseInstant();
         int num = (int)WPFMessageBox.Show(Resources.ExceptionDbWarning + ex.Message, Resources.ExceptionDbWarningTitle, MessageBoxButton.OK, MessageBoxImage.Hand);
         NewMembercardViewModel.logger.Error("Database error: {0}", ex.Message);
         if (NavigatorHelper.NavigationService == null)
         {
             return;
         }
         NavigatorHelper.NavigationService.Refresh();
     }
 }
        void OnLoadingChildChanged(bool loadChild = true)
        {
            if (ViewModelBase.IsInDesignMode)
            {
                LoadChildInDesignTime();
                return;
            }
            Child = null;
            if ((LoadingChild == null && LoadingChildTemplate == null) || !IsInitialized)
            {
                return;
            }
            if (CanAutoShow())
            {
                if (!IsVisible && IsLoadedEx)
                {
                    CloseSplashScreen();
                }
                else
                {
                    ShowSplashScreen();
                }
            }

            if (loadChild)
            {
                SplashScreenHelper.InvokeAsync(this, LoadChild);
            }
        }
Beispiel #9
0
            void ReleaseResources(SplashScreenInfo container)
            {
                lock (instanceLocker) {
                    instances.Remove(this);
                    if (instances.Count == 0 && hasUnhandledExceptionSubscriver)
                    {
                        SplashScreenHelper.InvokeAsync(Application.Current, UnsubscribeUnhandledException, DispatcherPriority.Send, AsyncInvokeMode.AsyncOnly);
                    }
                }
                var dispatcher = Dispatcher.FromThread(container.InternalThread);

                container.RelationInfo.Do(x => x.ParentClosed -= OnSplashScreenOwnerClosed);
                container.ReleaseResources();
                if (Closed != null)
                {
                    Closed.Invoke(this, EventArgs.Empty);
                }
                lock (internalLocker) {
                    infosForRelease.Remove(container);
                }
                try {
                    if (dispatcher != null)
                    {
                        dispatcher.BeginInvokeShutdown(DispatcherPriority.Normal);
                        Dispatcher.Run();
                    }
                } catch { }
            }
Beispiel #10
0
 void Initialize()
 {
     if (Container != null)
     {
         SplashScreenHelper.InvokeAsync(Container, () => LockContainer(Container, lockMode), DispatcherPriority.Send, AsyncInvokeMode.AllowSyncInvoke);
     }
 }
Beispiel #11
0
 internal void InitializeOwner(object parameter)
 {
     RelationInfo = SplashScreenHelper.FindParameter <WindowContainer>(parameter, null).Return(x => x.CreateOwnerContainer(), null)
                    ?? SplashScreenHelper.FindParameter <WindowRelationInfo>(parameter, null);
     Owner = RelationInfo.With(x => x.Parent);
     RelationInfo.Do(x => x.AttachChild(SplashScreen, false));
 }
 private void LoadCategories()
 {
     try
     {
         foreach (Category category in this.UnitOfWork.CategoryRepository.GetAll())
         {
             this.Categories.Add(category);
         }
         if (this.Categories.Count <= 0)
         {
             return;
         }
         int min = this.Categories.Min <Category>((Func <Category, int>)(o => o.Order));
         this.SelectedCategory = this.Categories.FirstOrDefault <Category>((Func <Category, bool>)(c => c.Order == min));
     }
     catch (SqlException ex)
     {
         SplashScreenHelper.CloseInstant();
         int num = (int)WPFMessageBox.Show(Resources.ExceptionDbWarning + ex.Message, Resources.ExceptionDbWarningTitle, MessageBoxButton.OK, MessageBoxImage.Hand);
         NewTicketViewModel.logger.Error("Database error: {0}", ex.Message);
     }
     catch (DataException ex)
     {
         SplashScreenHelper.CloseInstant();
         int num = (int)WPFMessageBox.Show(Resources.ExceptionDbWarning + ex.Message, Resources.ExceptionDbWarningTitle, MessageBoxButton.OK, MessageBoxImage.Hand);
         NewTicketViewModel.logger.Error("Database error: {0}", ex.Message);
     }
 }
Beispiel #13
0
 void PatchSplashScreenWindowStyle(Window splashScreen, bool hasOwner)
 {
     if (!SplashScreenHelper.PatchWindowStyle(splashScreen, hasOwner))
     {
         splashScreen.SourceInitialized += OnSplashScreenSourceInitialized;
     }
 }
 public NewTicketViewModel()
 {
     NewTicketViewModel.logger.Debug("VIEWMODEL LOADING: NewTicketViewModel");
     AuthenticationService.Instance.SuspendService = false;
     this.OpenTickets = new ObservableCollection <TicketViewModel>();
     this.Categories  = new ObservableCollection <Category>();
     this.UnitOfWork  = new UnitOfWork();
     this.LoadCategories();
     SplashScreenHelper.ShowText(Resources.SplashScreenLoadingProducts);
     SplashScreenHelper.Close();
     if (AuthenticationService.Instance.AuthenticatedMember == null)
     {
         LockScreenHelper.Show();
     }
     this.CurrentTicket = new TicketViewModel()
     {
         Ticket              = new Ticket(),
         Visibility          = Visibility.Collapsed,
         NewTicket           = true,
         ItemSelectedCommand = (ICommand) new RelayCommand(new Action(this.SelectedItemChanged))
     };
     this.OpenTickets.Add(this.CurrentTicket);
     this.OpenCheckoutSheet = this.UnitOfWork.CheckoutSheetRepository.GetLastOpenSheet();
     if (this.OpenCheckoutSheet == null)
     {
         if (NavigatorHelper.NavigationService == null)
         {
             return;
         }
         NavigatorHelper.NavigationService.Navigate(new Uri("Views/NewTicket/NewCheckoutSheetPageView.xaml", UriKind.Relative));
         NavigatorHelper.NavigationService.RemoveBackEntry();
     }
     else
     {
         try
         {
             foreach (Ticket ticket in this.UnitOfWork.TicketRepository.GetOpenTicketsNoTracking())
             {
                 this.OpenTickets.Add(new TicketViewModel()
                 {
                     Ticket = ticket,
                     TicketControlClicked = (ICommand) new RelayCommand <TicketViewModel>(new Action <TicketViewModel>(this.TicketSelected))
                 });
             }
         }
         catch (SqlException ex)
         {
             SplashScreenHelper.CloseInstant();
             int num = (int)WPFMessageBox.Show(Resources.ExceptionDbWarning + ex.Message, Resources.ExceptionDbWarningTitle, MessageBoxButton.OK, MessageBoxImage.Hand);
             NewTicketViewModel.logger.Error("Database error: {0}", ex.Message);
         }
         catch (DataException ex)
         {
             SplashScreenHelper.CloseInstant();
             int num = (int)WPFMessageBox.Show(Resources.ExceptionDbWarning + ex.Message, Resources.ExceptionDbWarningTitle, MessageBoxButton.OK, MessageBoxImage.Hand);
             NewTicketViewModel.logger.Error("Database error: {0}", ex.Message);
         }
         NewTicketViewModel.logger.Debug("VIEWMODEL LOADED: NewTicketViewModel");
     }
 }
 private void ConfirmTicketCommandExec()
 {
     if (this.CurrentTicket == null || this.CurrentTicket.Ticket == null || this.CurrentTicket.Ticket.TicketLines.Count < 1)
     {
         int num1 = (int)WPFMessageBox.Show(Resources.MessageEmptyTicket, Resources.MessageEmptyTicketTitle, MessageBoxButton.OK, MessageBoxImage.Exclamation);
     }
     else
     {
         this.CurrentTicket.Ticket.CreationTime = DateTime.Now;
         this.OpenCheckoutSheet = this.UnitOfWork.CheckoutSheetRepository.GetLastOpenSheet();
         if (this.OpenCheckoutSheet == null)
         {
             if (NavigatorHelper.NavigationService == null)
             {
                 return;
             }
             NavigatorHelper.NavigationService.Navigate(new Uri("Views/NewTicket/NewCheckoutSheetPageView.xaml", UriKind.Relative));
             NavigatorHelper.NavigationService.RemoveBackEntry();
         }
         else
         {
             this.CurrentTicket.Ticket.CheckoutSheet = this.OpenCheckoutSheet;
             try
             {
                 this.UnitOfWork.TicketRepository.Add(this.CurrentTicket.Ticket);
                 this.UnitOfWork.Save();
                 NewTicketViewModel.logger.Info("New order created: " + (object)this.currentTicket.Ticket.Id);
                 if (NavigatorHelper.NavigationService == null)
                 {
                     return;
                 }
                 NavigatorHelper.NavigationService.Refresh();
                 NavigatorHelper.NavigationService.RemoveBackEntry();
             }
             catch (SqlException ex)
             {
                 int num2 = (int)WPFMessageBox.Show(Resources.ExceptionDbWarning + ex.Message, Resources.ExceptionDbWarningTitle, MessageBoxButton.OK, MessageBoxImage.Hand);
                 NewTicketViewModel.logger.Error("Database error: {0}", ex.Message);
                 if (NavigatorHelper.NavigationService == null)
                 {
                     return;
                 }
                 NavigatorHelper.NavigationService.Refresh();
                 NavigatorHelper.NavigationService.RemoveBackEntry();
             }
             catch (DataException ex)
             {
                 SplashScreenHelper.CloseInstant();
                 int num2 = (int)WPFMessageBox.Show(Resources.ExceptionDbWarning + ex.Message, Resources.ExceptionDbWarningTitle, MessageBoxButton.OK, MessageBoxImage.Hand);
                 NewTicketViewModel.logger.Error("Database error: {0}", ex.Message);
                 if (NavigatorHelper.NavigationService == null)
                 {
                     return;
                 }
                 NavigatorHelper.NavigationService.Refresh();
                 NavigatorHelper.NavigationService.RemoveBackEntry();
             }
         }
     }
 }
        public void Release(bool activateWindowIfNeeded)
        {
            if (Container == null)
            {
                return;
            }

            Container.Initialized -= OnOwnerInitialized;
            var container = Container;

            Container = null;
            if (container.Window == null || lockMode == SplashScreenLock.None)
            {
                return;
            }

            SplashScreenHelper.InvokeAsync(container.Window, () => {
                if (activateWindowIfNeeded && !SplashScreenHelper.ApplicationHasActiveWindow())
                {
                    container.ActivateWindow();
                }

                SplashScreenHelper.UnlockWindow(container);
            }, DispatcherPriority.Render);
        }
        static Window CreateSplashScreenWindow(object parameter)
        {
            object[] parameters                   = (object[])parameter;
            bool     useFadeEffect                = (bool)parameters[0];
            WindowArrangerContainer owner         = (WindowArrangerContainer)parameters[1];
            SplashScreenLock        lockMode      = (SplashScreenLock)parameters[2];
            IList <TimeSpan>        durations     = SplashScreenHelper.FindParameters <TimeSpan>(parameter);
            FlowDirection           flowDirection = SplashScreenHelper.FindParameter <FlowDirection>(parameter);
            Style windowStyle = SplashScreenHelper.FindParameter <Style>(parameter);
            var   window      = new LoadingDecoratorWindowFree(owner, lockMode);

            if (windowStyle != null)
            {
                window.Style = windowStyle;
            }
            else
            {
                window.ApplyDefaultSettings();
            }
            window.SetCurrentValue(FlowDirectionProperty, flowDirection);
            if (useFadeEffect && durations.Any(x => x.TotalMilliseconds > 0))
            {
                Interaction.GetBehaviors(window).Add(new WindowFadeAnimationBehavior()
                {
                    FadeInDuration = durations[0], FadeOutDuration = durations[1]
                });
            }

            return(window);
        }
Beispiel #18
0
        public static void Main()
        {
            Thread thread1 = new Thread((ThreadStart)(() =>
            {
                SplashScreenHelper.SplashScreen = new SplashScreenView();
                SplashScreenHelper.Show();
                Dispatcher.Run();
            }));

            thread1.SetApartmentState(ApartmentState.STA);
            thread1.IsBackground = true;
            thread1.Start();
            Thread thread2 = new Thread((ThreadStart)(() =>
            {
                LockScreenHelper.LockScreen = new LockScreenView();
                Dispatcher.Run();
            }));

            thread2.SetApartmentState(ApartmentState.STA);
            thread2.IsBackground = true;
            thread2.Start();
            if (!SingleInstance <App> .InitializeAsFirstInstance("POSInstance"))
            {
                return;
            }
            App app = new App();

            app.InitializeComponent();
            app.Run();
            SingleInstance <App> .Cleanup();
        }
 private void LoadUsers()
 {
     try
     {
         this.MemberFilterList.Add(new Member()
         {
             FirstName = "*"
         });
         foreach (Member member in this.UnitOfWork.MemberRepository.GetAll())
         {
             this.MemberFilterList.Add(member);
         }
     }
     catch (SqlException ex)
     {
         SplashScreenHelper.CloseInstant();
         int num = (int)WPFMessageBox.Show(Resources.ExceptionDbWarning + ex.Message, Resources.ExceptionDbWarningTitle, MessageBoxButton.OK, MessageBoxImage.Hand);
         ReportsViewModel.logger.Error("Database error: {0}", ex.Message);
     }
     catch (DataException ex)
     {
         SplashScreenHelper.CloseInstant();
         int num = (int)WPFMessageBox.Show(Resources.ExceptionDbWarning + ex.Message, Resources.ExceptionDbWarningTitle, MessageBoxButton.OK, MessageBoxImage.Hand);
         ReportsViewModel.logger.Error("Database error: {0}", ex.Message);
     }
 }
Beispiel #20
0
        public void Release(bool activateWindowIfNeeded)
        {
            if (Container == null)
            {
                return;
            }

            Container.Initialized -= OnOwnerInitialized;
            var container = Container;

            Container = null;
            if (lockMode == SplashScreenLock.None)
            {
                return;
            }

            SplashScreenHelper.InvokeAsync(container, () => {
                bool activateWindow = activateWindowIfNeeded && !SplashScreenHelper.ApplicationHasActiveWindow();
                UnlockContainer(container);
                if (activateWindow)
                {
                    container.ActivateWindow();
                }
                else if (Keyboard.FocusedElement == null)
                {
                    SplashScreenHelper.GetApplicationActiveWindow(false).Do(x => x.Focus());
                }
            }, DispatcherPriority.Render);
        }
Beispiel #21
0
 /// <summary>
 /// 加载时查询数据
 /// </summary>
 /// <param name="sender"></param>
 /// <param name="e"></param>
 private void FrmHistotyOrder_Load(object sender, EventArgs e)
 {
     SplashScreenHelper.ShowLoadingScreen();
     orderList = _orderDel.GetHistoricalOrders();
     skinDataGridView.DataSource = orderList;
     SplashScreenHelper.CloseForm();
 }
Beispiel #22
0
        public override void Run()
        {
            base.Run();

            var viewService             = Container.Resolve <IViewService>();
            var guaranteeExistViewModel = typeof(BPWorkflowListViewModel);

            foreach (var item in BLHelper.Registered)
            {
                // пытаемся найти ViewModel в стандартном namespace
                var assumeListViewModelName   = string.Format("{0}.{1}ListViewModel", guaranteeExistViewModel.Namespace, item.ObjectType.Name);
                var assumeTreeViewModelName   = string.Format("{0}.{1}TreeViewModel", guaranteeExistViewModel.Namespace, item.ObjectType.Name);
                var assumeObjectViewModelName = string.Format("{0}.{1}ViewModel", guaranteeExistViewModel.Namespace, item.ObjectType.Name);

                // если нет - берем базовый тип
                var listViewModelType = Type.GetType(assumeListViewModelName) ?? typeof(ObjectListViewModelBase <>).MakeGenericType(item.ObjectType);

                // для TreeView если нет - не берем базовый тип
                //var treeViewModelType = Type.GetType(assumeTreeViewModelName) ?? typeof(ObjectTreeViewModelBase<>).MakeGenericType(item.ObjectType);
                var treeViewModelType = Type.GetType(assumeTreeViewModelName);

                // если нет - берем базовый тип
                var objectViewModelType = Type.GetType(assumeObjectViewModelName) ?? typeof(ObjectViewModelBase <>).MakeGenericType(item.ObjectType);

                // регистриуем во viewservice
                viewService.Register(item.ObjectType.Name + ViewServiceRegisterSuffixListShow, listViewModelType);
                if (treeViewModelType != null)
                {
                    viewService.Register(item.ObjectType.Name + ViewServiceRegisterSuffixTreeShow, treeViewModelType);
                }

                // регистрируем в IoC
                var interfaceType = typeof(IListViewModel <>).MakeGenericType(item.ObjectType);
                IoC.Instance.Register(interfaceType, listViewModelType);

                var interfaceObjectType = typeof(IObjectViewModel <>).MakeGenericType(item.ObjectType);
                IoC.Instance.Register(interfaceObjectType, objectViewModelType);
            }

            viewService.Register("ARTMASSINPUT", typeof(ArtMassInputViewModel));
            viewService.Register(StringResources.Packing, typeof(IPackingViewModel));
            //viewService.Register("OPENWCL", typeof(OpenWclViewCommand));
            viewService.Register(StringResources.Chat, typeof(IChatViewModel));
            viewService.Register(MainViewModel.ShowMainMenuAction, typeof(MainMenuTreeViewModel));

            //Включаем кеширование wf
            BPWorkflowManager.SetObjectCachable(BatchcodeWorkflowCodes.ExecuteWorkflowCode);
            foreach (var wf in BatchcodeWorkflowCodes.WorkflowCodes)
            {
                BPWorkflowManager.SetObjectCachable(wf);
            }

            LoadApplicationResource("/wmsMLC.DCL.Content;Component/Themes/Generic.xaml");

            SplashScreenHelper.SetState(StringResources.LoadCustomization);
            MainViewModel.LoadCustomization();
            MainViewModel.ShowTree();
            MainViewModel.LoadDxAssemblies();
        }
Beispiel #23
0
        /// <summary>
        /// Activates the extensions. This should be called only once.
        /// </summary>
        public virtual void LoadExtensions()
        {
            if (DesignMode)
            {
                return;
            }

            if (Extensions.Any())
            {
                throw new InvalidOperationException("LoadExtensions() should only be called once. Subsequent calls should be made to RefreshExtensions(). ");
            }

            // We need to uninstall any outstanding extensions before loading ...
            PackageManager.RemovePendingPackagesAndExtensions();

            splashScreen = SplashScreenHelper.GetSplashScreenManager();

            UpdateSplashScreen("Discovering Extensions...");

            AppDomain.CurrentDomain.AssemblyResolve += CurrentDomain_AssemblyResolve;
            _catalog = GetCatalog();

            CompositionContainer = new CompositionContainer(_catalog);

            try
            {
                IDataManager dataManager = DataManager.DefaultDataManager;
                CompositionContainer.ComposeParts(this, dataManager, this.SerializationManager);
            }
            catch (CompositionException compositionException)
            {
                Trace.WriteLine(compositionException.Message);
                throw;
            }

            UpdateSplashScreen("Loading Extensions...");

            OnExtensionsActivating(EventArgs.Empty);

            ActivateAllExtensions();

            OnExtensionsActivated(EventArgs.Empty);

            if (splashScreen != null)
            {
                splashScreen.Deactivate();
                splashScreen = null;
            }

            // Set the DefaultDataManager progress handler.
            // It doesn’t seem like the solution is as simple as adding the
            //        [Import(typeof(IProgressHandler), AllowDefault = true)]
            // Attribute to the ProgressHandler property on DataManager, because the ProgressHandler we are typically
            // using only export IStatusControl and we would require each IStatusControl to
            //    [Export(typeof(DotSpatial.Data.IProgressHandler))]
            // To get that working.
            DataManager.DefaultDataManager.ProgressHandler = this.ProgressHandler;
        }
Beispiel #24
0
        void SetChildParent()
        {
            if (IsReleased)
            {
                return;
            }

            SplashScreenHelper.SetParent(Child.Window, Parent.Handle);
        }
            void SubscribeParentEvents(object parameter)
            {
                SplashScreenClosingMode closingMode = SplashScreenHelper.FindParameter <SplashScreenClosingMode>(parameter, SplashScreenClosingMode.OnParentClosed);

                if (closingMode == SplashScreenClosingMode.Default || closingMode == SplashScreenClosingMode.OnParentClosed)
                {
                    ActiveInfo.RelationInfo.Do(x => x.ParentClosed += OnSplashScreenOwnerClosed);
                }
            }
Beispiel #26
0
            void PatchSplashScreenWindowStyle(Window splashScreen, bool hasOwner, bool checkDispatcherAccess)
            {
                bool isAccessDenied = checkDispatcherAccess && (splashScreen.Dispatcher == null || !splashScreen.Dispatcher.CheckAccess());

                if (isAccessDenied || !SplashScreenHelper.PatchWindowStyle(splashScreen, hasOwner))
                {
                    splashScreen.SourceInitialized += OnSplashScreenSourceInitialized;
                }
            }
        void CloseSplashScreenOnLoading()
        {
            if (IsSplashScreenShown != null || !IsActive)
            {
                return;
            }

            SplashScreenHelper.InvokeAsync(this, CloseSplashScreen, DispatcherPriority.Render);
        }
 protected override void CompleteInitializationOverride()
 {
     if (Child.Window.Dispatcher.CheckAccess())
     {
         nextParentPos = childLocation == SplashScreenLocation.CenterContainer ? Parent.ControlStartupPosition : Parent.WindowStartupPosition;
         UpdateChildPosition();
     }
     SplashScreenHelper.InvokeAsync(Parent.Window, () => UpdateNextParentRectAndChildPosition(true), DispatcherPriority.Normal, AsyncInvokeMode.AllowSyncInvoke);
 }
Beispiel #29
0
 protected override void InitializeShell()
 {
     base.InitializeShell();
     AppDomain.CurrentDomain.UnhandledException        += CurrentDomain_UnhandledException;
     Application.Current.Dispatcher.UnhandledException += Dispatcher_UnhandledException;
     Application.Current.MainWindow = (Window)Shell;
     ShowMainWindow();
     SplashScreenHelper.CloseSplash();
 }
Beispiel #30
0
        public void ValidateWorker()
        {
            SplashScreenHelper.SetState(Resources.StringResources.StateValidateWorker);
            if (WMSEnvironment.Instance.AuthenticatedUser == null)
            {
                HasCriticalErrors = true;
                _criticalErrorMessages.Add("User is null.");
                return;
            }

            // получим работника привязанного к пользователю
            WMSEnvironment.Instance.WorkerId = null;
            try
            {
                var currentUser = WMSEnvironment.Instance.AuthenticatedUser.GetSignature();
                using (var mgr = IoC.Instance.Resolve <IBaseManager <Worker> >())
                {
                    var filter  = string.Format("USERCODE_R = '{0}'", currentUser);
                    var workers = mgr.GetFiltered(filter).ToArray();
                    if (workers.Length == 1)
                    {
                        WMSEnvironment.Instance.WorkerId = workers[0].GetKey <decimal>();
                    }
                    else if (workers.Length > 1)
                    {
                        WMSEnvironment.Instance.WorkerId = SelectWorker(filter);
                    }

                    if (!WMSEnvironment.Instance.WorkerId.HasValue)
                    {
                        HasCriticalErrors = true;
                        _criticalErrorMessages.Add(string.Format(Resources.StringResources.WorkerNotValidated, currentUser));
                    }
                    else
                    {
                        // Запишем работника в сессию
                        if (!WMSEnvironment.Instance.SessionId.HasValue)
                        {
                            return;
                        }

                        using (var mgrSession = (IClientSessionManager)IoC.Instance.Resolve <IBaseManager <ClientSession> >())
                        {
                            mgrSession.UpdateWorker(WMSEnvironment.Instance.SessionId.Value, WMSEnvironment.Instance.WorkerId);
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                HasCriticalErrors = true;
                var msg = Resources.StringResources.WorkerValidatedError;
                _criticalErrorMessages.Add(msg);
                ExceptionPolicy.Instance.HandleException(new OperationException(msg, ex), "RclBackgroundProcess");
            }
        }