Пример #1
0
        private void UpdateAddText(AppBarTargetType targetType)
        {
            var text = "";

            switch (targetType)
            {
            case AppBarTargetType.Object:
                text = AppResourcesHelper.Get("Editor_ButtonAddObject");
                break;

            case AppBarTargetType.Action:
                text = AppResourcesHelper.Get("Editor_ButtonAddScript");
                break;

            case AppBarTargetType.Look:
                text = AppResourcesHelper.Get("Editor_ButtonAddLook");
                break;

            case AppBarTargetType.Sound:
                text = AppResourcesHelper.Get("Editor_ButtonAddSound");
                break;
            }

            _newButton.Label = text;
        }
Пример #2
0
        private void SendEvaluation(LocalVariable localVariable = null, GlobalVariable globalVariable = null)
        {
            FormulaEvaluationResult result;

            if (ParsingError != null)
            {
                // FormulaEditorKey key as parameter for this function
                //if (key != FormulaEditorKey.Delete)
                //{
                //    SelectionStart = ParsingError.Index;
                //    SelectionLength = ParsingError.Length;
                //}
                result = new FormulaEvaluationResult
                {
                    Error = AppResourcesHelper.Get("FormulaInterpreter_Error")
                };
            }
            else
            {
                var value       = FormulaEvaluator.Evaluate(Formula);
                var stringValue = value == null ? string.Empty : value.ToString();

                result = new FormulaEvaluationResult
                {
                    Value = stringValue,
                };
            }
            Messenger.Default.Send(result, ViewModelMessagingToken.FormulaEvaluated);
        }
        private async void ShareStorageItemsHandler(DataTransferManager sender,
                                                    DataRequestedEventArgs e)
        {
            var request = e.Request;

            request.Data.Properties.Title       = AppResourcesHelper.Get("Export_FileTitle");
            request.Data.Properties.Description = ApplicationResourcesHelper.Get("CATROBAT_URL");
            var deferral = request.GetDeferral();

            try
            {
                var rootFolder  = ApplicationData.Current.LocalFolder;
                var fileToShare = await rootFolder.GetFileAsync(_pathToShareFile);

                var storageItems = new List <IStorageItem> {
                    fileToShare
                };
                request.Data.SetStorageItems(storageItems);
            }
            catch
            {
                if (Debugger.IsAttached)
                {
                    Debugger.Break();
                }
            }
            finally
            {
                deferral.Complete();
            }
        }
Пример #4
0
        private async void ReportAction()
        {
            IsSending = true;
            if (string.IsNullOrEmpty(_reason))
            {
                ServiceLocator.NotifictionService.ShowMessageBox(AppResourcesHelper.Get("Main_ReportErrorCaption"),
                                                                 AppResourcesHelper.Get("Main_ReportMissingData"), MissingReportDataCallback, MessageBoxOptions.Ok);
            }
            else
            {
                JSONStatusResponse statusResponse = await ServiceLocator.WebCommunicationService.ReportAsInappropriateAsync(_selectedOnlineProgram.ProjectId, _reason, ServiceLocator.CultureService.GetCulture().TwoLetterISOLanguageName);

                switch (statusResponse.statusCode)
                {
                case StatusCodes.ServerResponseOk:
                    ServiceLocator.NotifictionService.ShowMessageBox(AppResourcesHelper.Get("Main_ReportProgram"),
                                                                     AppResourcesHelper.Get("Main_ReportContribution"), ReportSuccessfullCallback, MessageBoxOptions.Ok);
                    GoBackAction();
                    break;

                case StatusCodes.HTTPRequestFailed:
                    ServiceLocator.NotifictionService.ShowMessageBox(AppResourcesHelper.Get("Main_ReportErrorCaption"),
                                                                     AppResourcesHelper.Get("Main_NoInternetConnection"), MissingReportDataCallback, MessageBoxOptions.Ok);
                    break;

                default:
                    string messageString = string.IsNullOrEmpty(statusResponse.answer) ? string.Format(AppResourcesHelper.Get("Main_UploadProgramUndefinedError"), statusResponse.statusCode.ToString()) :
                                           string.Format(AppResourcesHelper.Get("Main_ReportError"), statusResponse.answer);
                    ServiceLocator.NotifictionService.ShowMessageBox(AppResourcesHelper.Get("Main_ReportErrorCaption"),
                                                                     messageString, MissingReportDataCallback, MessageBoxOptions.Ok);
                    break;
                }
            }
            IsSending = false;
        }
        private void ShowMessagesAction()
        {
            string notificationString = "";
            int    length             = 15;

            if (_showDownloadMessage)
            {
                //var portbleImage = new PortableImage();
                //await portbleImage.LoadFromResources(ResourceScope.Ide,
                //    "Content/Images/ApplicationBar/dark/appbar.download.rest.png");
                if (_lastImportedProgram.Length > length)
                {
                    _lastImportedProgram = _lastImportedProgram.Substring(0, length) + "...";
                }
                notificationString = String.Format(AppResourcesHelper.Get("Main_DownloadQueueMessage"), _lastImportedProgram);

                ServiceLocator.NotifictionService.ShowToastNotification("",
                                                                        notificationString, ToastDisplayDuration.Short, ToastTag.Default);
                _showDownloadMessage = false;
            }
            if (_showUploadMessage)
            {
                //var portbleImage = new PortableImage();
                //await portbleImage.LoadFromResources(ResourceScope.Ide,
                //    "Content/Images/ApplicationBar/dark/appbar.upload.rest.png");
                if (_lastUploadedProgram.Length > length)
                {
                    _lastUploadedProgram = _lastUploadedProgram.Substring(0, length) + "...";
                }
                notificationString = String.Format(AppResourcesHelper.Get("Main_UploadQueueMessage"), _lastUploadedProgram);
                ServiceLocator.NotifictionService.ShowToastNotification("",
                                                                        notificationString, ToastDisplayDuration.Short, ToastTag.Default);
                _showUploadMessage = false;
            }
        }
        private void CopyLocalProgramAction(string programName)
        {
            _copyProgramName = programName;

            ServiceLocator.NotifictionService.ShowMessageBox(AppResourcesHelper.Get("Main_MainCopyProgramDialogTitle"),
                                                             String.Format(AppResourcesHelper.Get("Main_MainCopyProgramDialogMessage"), programName),
                                                             CopyProgramMessageCallback, MessageBoxOptions.OkCancel);
        }
Пример #7
0
 private static async Task TryAddProgram(Stream programStream)
 {
     ServiceLocator.NotifictionService.ShowToastNotification(
         AppResourcesHelper.Get("Import_started"),
         AppResourcesHelper.Get("Import_started"),
         ToastDisplayDuration.Long);
     ServiceLocator.ProgramImportService.SetProgramStream(programStream);
     await ServiceLocator.ProgramImportService.TryImportWithStatusNotifications();
 }
        private async void RegisterAction()
        {
            IsSending = true;
            if (string.IsNullOrEmpty(_username) || string.IsNullOrEmpty(_password) || string.IsNullOrEmpty(_email))
            {
                ServiceLocator.NotifictionService.ShowMessageBox(AppResourcesHelper.Get("Main_UploadProgramLoginErrorCaption"),
                                                                 AppResourcesHelper.Get("Main_UploadProgramMissingLoginData"), MissingLoginDataCallback, MessageBoxOptions.Ok);
            }
            else
            {
                JSONStatusResponse statusResponse = await ServiceLocator.WebCommunicationService.LoginOrRegisterAsync(_username, _password, _email,
                                                                                                                      ServiceLocator.CultureService.GetCulture().TwoLetterISOLanguageName,
                                                                                                                      RegionInfo.CurrentRegion.TwoLetterISORegionName);

                Context.CurrentToken     = statusResponse.token;
                Context.CurrentUserName  = _username;
                Context.CurrentUserEmail = _email;

                switch (statusResponse.statusCode)
                {
                case StatusCodes.ServerResponseOk:
                    if (NavigationCallback != null)
                    {
                        NavigationCallback();
                    }
                    else
                    {
                        //TODO: Throw error because of navigation callback shouldn't be null
                        throw new Exception("This error shouldn't be thrown. The navigation callback must not be null.");
                    }
                    break;

                case StatusCodes.ServerResponseRegisterOk:
                    ServiceLocator.NotifictionService.ShowMessageBox(AppResourcesHelper.Get("Main_UploadProgramRegistrationSucessful"),
                                                                     string.Format(AppResourcesHelper.Get("Main_UploadProgramWelcome"), _username), RegistrationSuccessfulCallback, MessageBoxOptions.Ok);
                    break;

                case StatusCodes.ServerResponseLoginFailed:
                    ServiceLocator.NotifictionService.ShowMessageBox(AppResourcesHelper.Get("Main_UploadProgramLoginErrorCaption"),
                                                                     AppResourcesHelper.Get("Main_UploadProgramRegisterExistingUser"), WrongLoginDataCallback, MessageBoxOptions.Ok);
                    break;

                case StatusCodes.HTTPRequestFailed:
                    ServiceLocator.NotifictionService.ShowMessageBox(AppResourcesHelper.Get("Main_UploadProgramLoginErrorCaption"),
                                                                     AppResourcesHelper.Get("Main_NoInternetConnection"), WrongLoginDataCallback, MessageBoxOptions.Ok);
                    break;

                default:
                    string messageString = string.IsNullOrEmpty(statusResponse.answer) ? string.Format(AppResourcesHelper.Get("Main_UploadProgramUndefinedError"), statusResponse.statusCode.ToString()) :
                                           string.Format(AppResourcesHelper.Get("Main_UploadProgramLoginError"), statusResponse.answer);
                    ServiceLocator.NotifictionService.ShowMessageBox(AppResourcesHelper.Get("Main_UploadProgramLoginErrorCaption"),
                                                                     messageString, WrongLoginDataCallback, MessageBoxOptions.Ok);
                    break;
                }
            }
            IsSending = false;
        }
        public override void NavigateTo()
        {
            UploadedLabelText       = String.Format(CultureInfo.InvariantCulture, AppResourcesHelper.Get("Main_OnlineProgramUploadedBy"), ServiceLocator.WebCommunicationService.ConvertUnixTimeStamp(Convert.ToDouble(_selectedOnlineProgram.Uploaded.Split('.')[0])));
            VersionLabelText        = String.Format(CultureInfo.InvariantCulture, AppResourcesHelper.Get("Main_OnlineProgramVersion"), SelectedOnlineProgram.Version);
            ViewsLabelText          = String.Format(CultureInfo.InvariantCulture, AppResourcesHelper.Get("Main_OnlineProgramViews"), SelectedOnlineProgram.Views);
            DownloadsLabelText      = String.Format(CultureInfo.InvariantCulture, AppResourcesHelper.Get("Main_OnlineProgramDownloads"), SelectedOnlineProgram.Downloads);
            ButtonDownloadIsEnabled = true;

            base.NavigateTo();
        }
Пример #10
0
        public object Convert(object value, Type targetType, object parameter, string language)
        {
            if (value != null)
            {
                return(value);
            }

            return(new GlobalVariable {
                Name = AppResourcesHelper.Get("Editor_NoVariableSelected")
            });
        }
 private async Task CleanUpImport()
 {
     ServiceLocator.NotifictionService.ShowToastNotification(
         AppResourcesHelper.Get("Import_CanceledText"),
         AppResourcesHelper.Get("Import_CanceledText"),
         ToastDisplayDuration.Long);
     using (var storage = StorageSystem.GetStorage())
     {
         await storage.DeleteDirectoryAsync(StorageConstants.TempProgramImportPath);
     }
 }
Пример #12
0
 void ToggleSensorButtonLabel()
 {
     if (_sensorsAreActive)
     {
         SensorButtonLabel = AppResourcesHelper.Get("Editor_StopSensors");
     }
     else
     {
         SensorButtonLabel = AppResourcesHelper.Get("Editor_StartSensors");
     }
 }
        /// <summary>
        /// Ensures all parameters are separated by exactly one <see cref="FormulaTokenParameterSeparator"/> and suppresses all occurences of <see cref="FormulaTokenParameterSeparator"/>.
        /// </summary>
        private IEnumerable <IFormulaToken> InterpretParameters(IEnumerable <IFormulaToken> tokens)
        {
            var expectSeparator = false;

            foreach (var context in tokens.WithContext())
            {
                if (IsCancellationRequested)
                {
                    yield break;
                }
                var previousToken = context[0];
                var token         = context[1];

                // parameter separator
                if (token is FormulaTokenParameterSeparator)
                {
                    if (!expectSeparator)
                    {
                        SetParsingError(
                            source: Range.Empty(GetOrigin(token).Start),
                            message: AppResourcesHelper.Get("FormulaInterpreter_Brackets_EmptyArgument"));
                        yield break;
                    }
                    expectSeparator = false;
                    continue;
                }

                //  any argument
                if (token != null)
                {
                    if (expectSeparator)
                    {
                        SetParsingError(
                            source: Range.Empty(GetOrigin(token).Start),
                            message: AppResourcesHelper.Get("FormulaInterpreter_Brackets_ArgumentDoubleValue"));
                        yield break;
                    }
                    yield return(token);

                    expectSeparator = true;
                    continue;
                }

                // last token
                if (token == null && !expectSeparator)
                {
                    SetParsingError(
                        source: Range.Empty(GetOrigin(previousToken).End),
                        message: AppResourcesHelper.Get("FormulaInterpreter_Brackets_EmptyArgument"));
                    yield break;
                }
            }
        }
 /// <summary>
 /// Ensures there are no occurences of <see cref="FormulaTokenParameterSeparator"/>.
 /// </summary>
 private IEnumerable <IFormulaToken> InterpretNonParameter(IEnumerable <IFormulaToken> tokens)
 {
     foreach (var token in tokens)
     {
         if (token is FormulaTokenParameterSeparator)
         {
             SetParsingError(token, AppResourcesHelper.Get("FormulaInterpreter_Brackets_NonArgumentParameterSeparator"));
             yield break;
         }
         yield return(token);
     }
 }
        /// <summary>
        /// Attaches the children of <see cref="FormulaNodeUnaryFunction"/> and <see cref="FormulaNodeBinaryFunction"/>.
        /// </summary>
        private IEnumerable <IFormulaToken> InterpretFunctions(IEnumerable <IFormulaToken> tokens)
        {
            foreach (var context in tokens.WithContext())
            {
                if (IsCancellationRequested)
                {
                    yield break;
                }
                var previousToken = context[0];
                var token         = context[1];

                // attach argument to function
                if (previousToken  is IFormulaFunction)
                {
                    if (!(token is FormulaTokenParameter))
                    {
                        SetParsingError(
                            source: Range.Empty(GetOrigin(previousToken).End),
                            message: AppResourcesHelper.Get("FormulaInterpreter_Function_Empty"));
                        yield break;
                    }

                    var unaryFunctionToken = previousToken as FormulaNodeUnaryFunction;
                    if (unaryFunctionToken != null)
                    {
                        var unaryParameterToken = (FormulaTokenUnaryParameter)token;
                        unaryFunctionToken.Child = unaryParameterToken.Parameter;
                    }
                    var binaryFunctionToken = previousToken as FormulaNodeBinaryFunction;
                    if (binaryFunctionToken != null)
                    {
                        var binaryParameterToken = (FormulaTokenBinaryParameter)token;
                        binaryFunctionToken.FirstChild  = binaryParameterToken.FirstParameter;
                        binaryFunctionToken.SecondChild = binaryParameterToken.SecondParameter;
                    }

                    SetOrigin(previousToken, new[] { previousToken, token });
                    yield return(previousToken);

                    continue;
                }

                // yield any other token
                if (token != null && !(token is IFormulaFunction))
                {
                    yield return(token);
                }
            }
        }
Пример #16
0
        private async void RecoverAction()
        {
            IsSending = true;
            if (string.IsNullOrEmpty(_passwordRecoveryData))
            {
                ServiceLocator.NotifictionService.ShowMessageBox(AppResourcesHelper.Get("Main_UploadProgramPasswordRecoveryErrorCaption"),
                                                                 AppResourcesHelper.Get("Main_UploadProgramMissingRecoveryData"), MissingRecoveryDataCallback, MessageBoxOptions.Ok);
            }
            else
            {
                JSONStatusResponse statusResponse = await ServiceLocator.WebCommunicationService.RecoverPasswordAsync(_passwordRecoveryData, ServiceLocator.CultureService.GetCulture().TwoLetterISOLanguageName);

                if (statusResponse.statusCode == StatusCodes.ServerResponseOk)
                {
                    // since 08-2014 this only works on the test-server (https://catroid-test.catrob.at/)
                    //string recoveryLink = statusResponse.answer;
                    //string hashMarker = "?c=";
                    //int position = recoveryLink.LastIndexOf(hashMarker) + hashMarker.Length;
                    //string recoveryHash = recoveryLink.Substring(position, recoveryLink.Length - position);
                    //ServiceLocator.WebCommunicationService.SetRecoveryHash(recoveryHash);
                    //ResetViewModel();
                    //ServiceLocator.NavigationService.NavigateTo<UploadProgramNewPasswordViewModel>();
                    //ServiceLocator.NavigationService.RemoveBackEntry();

                    // since 08-2014 pocketcode-server sends an email with the recovery hash in it
                    ServiceLocator.NotifictionService.ShowMessageBox(AppResourcesHelper.Get("Main_UploadProgramRecoverPassword"),
                                                                     statusResponse.answer, MissingRecoveryDataCallback, MessageBoxOptions.Ok);
                    this.GoBackAction();
                }
                else
                {
                    switch (statusResponse.statusCode)
                    {
                    case StatusCodes.HTTPRequestFailed:
                        ServiceLocator.NotifictionService.ShowMessageBox(AppResourcesHelper.Get("Main_UploadProgramPasswordRecoveryErrorCaption"),
                                                                         AppResourcesHelper.Get("Main_NoInternetConnection"), MissingRecoveryDataCallback, MessageBoxOptions.Ok);
                        break;

                    default:
                        string messageString = string.IsNullOrEmpty(statusResponse.answer) ? string.Format(AppResourcesHelper.Get("Main_UploadProgramUndefinedError"), statusResponse.statusCode.ToString()) :
                                               string.Format(AppResourcesHelper.Get("Main_UploadProgramLoginError"), statusResponse.answer);
                        ServiceLocator.NotifictionService.ShowMessageBox(AppResourcesHelper.Get("Main_UploadProgramPasswordRecoveryErrorCaption"),
                                                                         messageString, MissingRecoveryDataCallback, MessageBoxOptions.Ok);
                        break;
                    }
                }
            }
            IsSending = false;
        }
Пример #17
0
 private void AxesAction()
 {
     if (_axesVisible)
     {
         ServiceLocator.PlayerLauncherService.AxesAction(false,
                                                         AppResourcesHelper.Get("Player_AppBarButton_AxesOn"));
         _axesVisible = false;
     }
     else
     {
         ServiceLocator.PlayerLauncherService.AxesAction(true,
                                                         AppResourcesHelper.Get("Player_AppBarButton_AxesOff"));
         _axesVisible = true;
     }
 }
Пример #18
0
        private async void NewPasswordAction()
        {
            IsSending = true;
            if (string.IsNullOrEmpty(_newPassword) || string.IsNullOrEmpty(_repeatedPassword))
            {
                ServiceLocator.NotifictionService.ShowMessageBox(AppResourcesHelper.Get("Main_UploadProgramPasswordRecoveryErrorCaption"),
                                                                 AppResourcesHelper.Get("Main_UploadProgramMissingPassword"), MissingPasswordDataCallback, MessageBoxOptions.Ok);
            }
            else
            {
                JSONStatusResponse statusResponse = await ServiceLocator.WebCommunicationService.ChangePasswordAsync(_newPassword, _repeatedPassword, ServiceLocator.CultureService.GetCulture().TwoLetterISOLanguageName);

                switch (statusResponse.statusCode)
                {
                case StatusCodes.ServerResponseOk:
                    this.GoBackAction();
                    ServiceLocator.NotifictionService.ShowMessageBox(AppResourcesHelper.Get("Main_UploadProgramNewPassword"),
                                                                     AppResourcesHelper.Get("Main_UploadProgramPasswordChangeSucess"), PasswordInvalidCallback, MessageBoxOptions.Ok);
                    break;

                // because of typing-error in server-message
                case StatusCodes.ServerResponseRecoveryHashNotFound:
                    ServiceLocator.NotifictionService.ShowMessageBox(AppResourcesHelper.Get("Main_UploadProgramPasswordRecoveryErrorCaption"),
                                                                     AppResourcesHelper.Get("Main_UploadProgramRecoveryHashError"), RecoveryHashNotFoundCallback, MessageBoxOptions.Ok);
                    break;

                // may be checked locally
                case StatusCodes.ServerResponsePasswordMatchFailed:
                    ServiceLocator.NotifictionService.ShowMessageBox(AppResourcesHelper.Get("Main_UploadProgramPasswordRecoveryErrorCaption"),
                                                                     AppResourcesHelper.Get("Main_UploadProgramRecoveryPasswordMatchError"), PasswordInvalidCallback, MessageBoxOptions.Ok);
                    break;

                case StatusCodes.HTTPRequestFailed:
                    ServiceLocator.NotifictionService.ShowMessageBox(AppResourcesHelper.Get("Main_UploadProgramPasswordRecoveryErrorCaption"),
                                                                     AppResourcesHelper.Get("Main_NoInternetConnection"), MissingPasswordDataCallback, MessageBoxOptions.Ok);
                    break;

                default:
                    string messageString = string.IsNullOrEmpty(statusResponse.answer) ? string.Format(AppResourcesHelper.Get("Main_UploadProgramUndefinedError"), statusResponse.statusCode.ToString()) : statusResponse.answer;
                    ServiceLocator.NotifictionService.ShowMessageBox(AppResourcesHelper.Get("Main_UploadProgramPasswordRecoveryErrorCaption"),
                                                                     messageString, MissingPasswordDataCallback, MessageBoxOptions.Ok);
                    break;
                }
            }
            IsSending = false;
        }
Пример #19
0
        private void UpdateTextProperties()
        {
            var recordButtonHeaderRecord = AppResourcesHelper.Get("Editor_RecorderRecord");
            var recordButtonHeaderStop   = AppResourcesHelper.Get("Editor_RecorderStop");
            var recordButtonTextRecord   = AppResourcesHelper.Get("Editor_RecorderStart");
            var recordButtonTextStop     = AppResourcesHelper.Get("Editor_RecorderStop");

            if (IsRecording)
            {
                RecordButtonHeader = recordButtonHeaderStop;
                RecordButtonText   = recordButtonTextStop;
            }
            else
            {
                RecordButtonHeader = recordButtonHeaderRecord;
                RecordButtonText   = recordButtonTextRecord;
            }
        }
Пример #20
0
        public async Task ExportToPocketCodeOrgWithNotifications(string programName, string currentUserName, string currentToken)
        {
            _cancellationTokenSource = new CancellationTokenSource();
            JSONStatusResponse statusResponse = await Task.Run(() =>
                                                               ServiceLocator.WebCommunicationService.UploadProgramAsync(
                                                                   programName, currentUserName, currentToken, _cancellationTokenSource.Token,
                                                                   ServiceLocator.CultureService.GetCulture().TwoLetterISOLanguageName), _cancellationTokenSource.Token);

            if (_cancellationTokenSource.Token.IsCancellationRequested == true)
            {
                ServiceLocator.NotifictionService.ShowToastNotification(
                    AppResourcesHelper.Get("Export_CanceledText"),
                    AppResourcesHelper.Get("Export_CanceledText"),
                    ToastDisplayDuration.Long);
                return;
            }
            switch (statusResponse.statusCode)
            {
            case StatusCodes.ServerResponseOk:
                break;

            case StatusCodes.HTTPRequestFailed:
                ServiceLocator.NotifictionService.ShowMessageBox(AppResourcesHelper.Get("Main_UploadProgramErrorCaption"),
                                                                 AppResourcesHelper.Get("Main_NoInternetConnection"), UploadErrorCallback, MessageBoxOptions.Ok);
                break;

            default:
                string messageString = string.IsNullOrEmpty(statusResponse.answer) ? string.Format(AppResourcesHelper.Get("Main_UploadProgramUndefinedError"), statusResponse.statusCode.ToString()) :
                                       string.Format(AppResourcesHelper.Get("Main_UploadProgramError"), statusResponse.answer);
                ServiceLocator.NotifictionService.ShowMessageBox(AppResourcesHelper.Get("Main_UploadProgramErrorCaption"),
                                                                 messageString, UploadErrorCallback, MessageBoxOptions.Ok);
                break;
            }

            if (ServiceLocator.WebCommunicationService.NoUploadsPending())
            {
                ServiceLocator.NotifictionService.ShowToastNotification(null,
                                                                        AppResourcesHelper.Get("Main_NoUploadsPending"), ToastDisplayDuration.Short);
            }
        }
        public async Task <string> FindUniqueProgramName(string programName)
        {
            using (var storage = StorageSystem.GetStorage())
            {
                int counter = 0;
                while (true)
                {
                    string programPath = Path.Combine(StorageConstants.ProgramsPath,
                                                      programName);

                    if (counter != 0)
                    {
                        programPath = Path.Combine(StorageConstants.ProgramsPath,
                                                   programName + counter);
                    }

                    if (!await storage.DirectoryExistsAsync(programPath))
                    {
                        break;
                    }

                    counter++;
                }
                string programNameUnique = programName;

                if (counter != 0)
                {
                    programNameUnique = programName + counter;
                }

                if (programName != programNameUnique)
                {
                    ServiceLocator.NotifictionService.ShowToastNotification("",
                                                                            AppResourcesHelper.Get("Main_ProgramNameDuplicate"), ToastDisplayDuration.Short, ToastTag.Default);
                }

                return(programNameUnique.Trim());
            }
        }
Пример #22
0
        private async void UploadAction()
        {
            lock (_exportLock)
            {
                if (IsSending)
                {
                    ServiceLocator.NotifictionService.ShowMessageBox(
                        AppResourcesHelper.Get("Main_Sending"),
                        AppResourcesHelper.Get("Export_Busy"),
                        CancelExportCallback, MessageBoxOptions.Ok);
                    return;
                }
                IsSending = true;
            }

            try
            {
                //await CurrentProgram.SetProgramNameAndRenameDirectory(ProgramName);
                //CurrentProgram.Description = ProgramDescription;
                //await App.SaveContext(CurrentProgram);

                var message = new GenericMessage <string>(ProgramName);
                Messenger.Default.Send(message, ViewModelMessagingToken.UploadProgramStartedListener);

                Task uploadTask = ServiceLocator.ProgramExportService.ExportToPocketCodeOrgWithNotifications(
                    ProgramName, Context.CurrentUserName, Context.CurrentToken);

                this.GoBackAction();
                await Task.Run(() => uploadTask);
            }
            finally
            {
                ServiceLocator.DispatcherService.RunOnMainThread(() =>
                {
                    lock (_exportLock) { IsSending = false; }
                });
            }
        }
        private async void DownloadAction(OnlineProgramHeader programHeader)
        {
            lock (_importLock)
            {
                if (IsImporting)
                {
                    ServiceLocator.NotifictionService.ShowMessageBox(
                        AppResourcesHelper.Get("Main_OnlineProgramLoading"),
                        AppResourcesHelper.Get("Main_OnlineProgramDownloadBusy"),
                        CancelImportCallback, MessageBoxOptions.Ok);
                    return;
                }

                IsImporting = true;
            }

            var message = new GenericMessage <string>(programHeader.ProjectName);

            Messenger.Default.Send(message, ViewModelMessagingToken.DownloadProgramStartedListener);

            try
            {
                ServiceLocator.DispatcherService.RunOnMainThread(() =>
                                                                 ServiceLocator.NavigationService.NavigateBack <OnlineProgramViewModel>());

                ServiceLocator.ProgramImportService.SetDownloadHeader(programHeader);
                await Task.Run(() => ServiceLocator.ProgramImportService.TryImportWithStatusNotifications()).ConfigureAwait(false);
            }
            finally
            {
                ServiceLocator.DispatcherService.RunOnMainThread(() =>
                {
                    lock (_importLock) { IsImporting = false; }
                });
            }
        }
Пример #24
0
 public override string Serialize()
 {
     return(AppResourcesHelper.Get("Formula_Constant_False"));
 }
Пример #25
0
 public override string Serialize()
 {
     return(AppResourcesHelper.Get("Formula_Property_PositionX"));
 }
Пример #26
0
 public override string Serialize()
 {
     return(AppResourcesHelper.Get("Formula_Property_Transparency"));
 }
Пример #27
0
 public override string Serialize()
 {
     return(AppResourcesHelper.Get("Formula_Property_Brightness"));
 }
Пример #28
0
 private void ResetViewModel()
 {
     UserVariableName = AppResourcesHelper.Get("Editor_DefaultGlobalVariableName");
 }
 public string GetProgramDefaultName()
 {
     return(AppResourcesHelper.Get("Main_WhackAMoleName"));
 }
        private static void FillSprites(Program program)
        {
            var objectBackground = new Sprite {
                Name = AppResourcesHelper.Get("DefaultProgram_Background")
            };
            var objectMole1 = new Sprite {
                Name = AppResourcesHelper.Get("WhackAMole_Mole") + " 1"
            };
            var objectMole2 = new Sprite {
                Name = AppResourcesHelper.Get("WhackAMole_Mole") + " 2"
            };
            var objectMole3 = new Sprite {
                Name = AppResourcesHelper.Get("WhackAMole_Mole") + " 3"
            };
            var objectMole4 = new Sprite {
                Name = AppResourcesHelper.Get("WhackAMole_Mole") + " 4"
            };

            #region Background

            objectBackground.Looks.Add(new Look {
                Name = AppResourcesHelper.Get("DefaultProgram_Background"), FileName = LookFileNameBackground
            });
            objectBackground.Looks.Add(new Look {
                Name = AppResourcesHelper.Get("DefaultProgram_Background") + "End", FileName = LookFileNameBackgroundFinished
            });

            StartScript startScriptBackground = new StartScript();
            {
                SetLookBrick look = new SetLookBrick();
                look.Value = objectBackground.Looks[0];
                startScriptBackground.Bricks.Add(look);
            }
            {
                SetSizeBrick sizeBack = new SetSizeBrick();
                sizeBack.Percentage = FormulaTreeFactory.CreateNumberNode(75);
                startScriptBackground.Bricks.Add(sizeBack);
            }
            objectBackground.Scripts.Add(startScriptBackground);

            #endregion

            #region mole1

            objectMole1.Looks.Add(new Look {
                Name = AppResourcesHelper.Get("WhackAMole_MovingMole"), FileName = LookFileNameMole1
            });
            objectMole1.Looks.Add(new Look {
                Name = AppResourcesHelper.Get("WhackAMole_DizzyMole"), FileName = LookFileNameMole2
            });
            objectMole1.Looks.Add(new Look {
                Name = AppResourcesHelper.Get("WhackAMole_Mole"), FileName = LookFileNameMole3
            });

            StartScript startScriptMole1 = new StartScript();
            {
                SetSizeBrick sizeBrick = new SetSizeBrick();
                sizeBrick.Percentage = FormulaTreeFactory.CreateNumberNode(20);
                startScriptMole1.Bricks.Add(sizeBrick);
            }
            ForeverBrick    startForeverBrick1 = new ForeverBrick();
            EndForeverBrick endForeverBrick1   = new EndForeverBrick();
            startForeverBrick1.End = endForeverBrick1;
            endForeverBrick1.Begin = startForeverBrick1;

            startScriptMole1.Bricks.Add(startForeverBrick1);
            {
                SetPositionBrick pos = new SetPositionBrick();
                pos.ValueX = FormulaTreeFactory.CreateNumberNode(-115);
                pos.ValueY = FormulaTreeFactory.CreateNumberNode(-80);
                startScriptMole1.Bricks.Add(pos);
            }
            {
                DelayBrick wait = new DelayBrick();
                wait.Duration = FormulaTreeFactory.CreateRandomNode(
                    firstChild: FormulaTreeFactory.CreateNumberNode(1),
                    secondChild: FormulaTreeFactory.CreateNumberNode(2));
                startScriptMole1.Bricks.Add(wait);
            }
            startScriptMole1.Bricks.Add(new ShowBrick());
            {
                SetLookBrick look = new SetLookBrick();
                look.Value = objectMole1.Looks[0];
                startScriptMole1.Bricks.Add(look);
            }
            {
                AnimatePositionBrick slide = new AnimatePositionBrick();
                slide.Duration = FormulaTreeFactory.CreateNumberNode(0.1);
                slide.ToX      = FormulaTreeFactory.CreateNumberNode(0);
                slide.ToY      = FormulaTreeFactory.CreateNumberNode(10);
                startScriptMole1.Bricks.Add(slide);
            }
            {
                SetLookBrick look = new SetLookBrick();
                look.Value = objectMole1.Looks[2];
                startScriptMole1.Bricks.Add(look);
            }
            {
                DelayBrick wait = new DelayBrick();
                wait.Duration = FormulaTreeFactory.CreateRandomNode(
                    firstChild: FormulaTreeFactory.CreateNumberNode(1),
                    secondChild: FormulaTreeFactory.CreateNumberNode(5));
                startScriptMole1.Bricks.Add(wait);
            }
            startScriptMole1.Bricks.Add(new HideBrick());
            {
                DelayBrick wait = new DelayBrick();
                wait.Duration = FormulaTreeFactory.CreateRandomNode(
                    firstChild: FormulaTreeFactory.CreateNumberNode(1),
                    secondChild: FormulaTreeFactory.CreateNumberNode(5));
                startScriptMole1.Bricks.Add(wait);
            }
            startScriptMole1.Bricks.Add(endForeverBrick1);
            objectMole1.Scripts.Add(startScriptMole1);

            TappedScript tappedScriptMole1 = new TappedScript();
            {
                SetLookBrick look = new SetLookBrick();
                look.Value = objectMole1.Looks[1];
                tappedScriptMole1.Bricks.Add(look);
            }
            {
                DelayBrick wait = new DelayBrick();
                wait.Duration = FormulaTreeFactory.CreateNumberNode(1.5);
                tappedScriptMole1.Bricks.Add(wait);
            }
            tappedScriptMole1.Bricks.Add(new HideBrick());
            objectMole1.Scripts.Add(tappedScriptMole1);

            #endregion

            #region mole2

            objectMole2.Looks.Add(new Look {
                Name = AppResourcesHelper.Get("WhackAMole_MovingMole"), FileName = LookFileNameMole1
            });
            objectMole2.Looks.Add(new Look {
                Name = AppResourcesHelper.Get("WhackAMole_DizzyMole"), FileName = LookFileNameMole2
            });
            objectMole2.Looks.Add(new Look {
                Name = AppResourcesHelper.Get("WhackAMole_Mole"), FileName = LookFileNameMole3
            });

            StartScript startScriptMole2 = new StartScript();
            {
                SetSizeBrick sizeBrick = new SetSizeBrick();
                sizeBrick.Percentage = FormulaTreeFactory.CreateNumberNode(20);
                startScriptMole2.Bricks.Add(sizeBrick);
            }
            ForeverBrick    startForeverBrick2 = new ForeverBrick();
            EndForeverBrick endForeverBrick2   = new EndForeverBrick();
            startForeverBrick2.End = endForeverBrick2;
            endForeverBrick2.Begin = startForeverBrick2;

            startScriptMole2.Bricks.Add(startForeverBrick2);
            {
                SetPositionBrick pos = new SetPositionBrick();
                pos.ValueX = FormulaTreeFactory.CreateNumberNode(115);
                pos.ValueY = FormulaTreeFactory.CreateNumberNode(-80);
                startScriptMole2.Bricks.Add(pos);
            }
            {
                DelayBrick wait = new DelayBrick();
                wait.Duration = FormulaTreeFactory.CreateRandomNode(
                    firstChild: FormulaTreeFactory.CreateNumberNode(1),
                    secondChild: FormulaTreeFactory.CreateNumberNode(2));
                startScriptMole2.Bricks.Add(wait);
            }
            startScriptMole2.Bricks.Add(new ShowBrick());
            {
                SetLookBrick look = new SetLookBrick();
                look.Value = objectMole2.Looks[0];
                startScriptMole2.Bricks.Add(look);
            }
            {
                AnimatePositionBrick slide = new AnimatePositionBrick();
                slide.Duration = FormulaTreeFactory.CreateNumberNode(0.1);
                slide.ToX      = FormulaTreeFactory.CreateNumberNode(0);
                slide.ToY      = FormulaTreeFactory.CreateNumberNode(10);
                startScriptMole2.Bricks.Add(slide);
            }
            {
                SetLookBrick look = new SetLookBrick();
                look.Value = objectMole2.Looks[2];
                startScriptMole2.Bricks.Add(look);
            }
            {
                DelayBrick wait = new DelayBrick();
                wait.Duration = FormulaTreeFactory.CreateRandomNode(
                    firstChild: FormulaTreeFactory.CreateNumberNode(1),
                    secondChild: FormulaTreeFactory.CreateNumberNode(5));
                startScriptMole2.Bricks.Add(wait);
            }
            startScriptMole2.Bricks.Add(new HideBrick());
            {
                DelayBrick wait = new DelayBrick();
                wait.Duration = FormulaTreeFactory.CreateRandomNode(
                    firstChild: FormulaTreeFactory.CreateNumberNode(1),
                    secondChild: FormulaTreeFactory.CreateNumberNode(5));
                startScriptMole2.Bricks.Add(wait);
            }
            startScriptMole2.Bricks.Add(endForeverBrick2);
            objectMole2.Scripts.Add(startScriptMole2);

            TappedScript tappedScriptMole2 = new TappedScript();
            {
                SetLookBrick look = new SetLookBrick();
                look.Value = objectMole2.Looks[1];
                tappedScriptMole2.Bricks.Add(look);
            }
            {
                DelayBrick wait = new DelayBrick();
                wait.Duration = FormulaTreeFactory.CreateNumberNode(1.5);
                tappedScriptMole2.Bricks.Add(wait);
            }
            tappedScriptMole2.Bricks.Add(new HideBrick());
            objectMole2.Scripts.Add(tappedScriptMole2);

            #endregion

            #region mole3

            objectMole3.Looks.Add(new Look {
                Name = AppResourcesHelper.Get("WhackAMole_MovingMole"), FileName = LookFileNameMole1
            });
            objectMole3.Looks.Add(new Look {
                Name = AppResourcesHelper.Get("WhackAMole_DizzyMole"), FileName = LookFileNameMole2
            });
            objectMole3.Looks.Add(new Look {
                Name = AppResourcesHelper.Get("WhackAMole_Mole"), FileName = LookFileNameMole3
            });

            StartScript startScriptMole3 = new StartScript();
            {
                SetSizeBrick sizeBrick = new SetSizeBrick();
                sizeBrick.Percentage = FormulaTreeFactory.CreateNumberNode(20);
                startScriptMole3.Bricks.Add(sizeBrick);
            }
            ForeverBrick    startForeverBrick3 = new ForeverBrick();
            EndForeverBrick endForeverBrick3   = new EndForeverBrick();
            startForeverBrick3.End = endForeverBrick3;
            endForeverBrick3.Begin = startForeverBrick3;

            startScriptMole3.Bricks.Add(startForeverBrick3);
            {
                SetPositionBrick pos = new SetPositionBrick();
                pos.ValueX = FormulaTreeFactory.CreateNumberNode(-115);
                pos.ValueY = FormulaTreeFactory.CreateNumberNode(-215);
                startScriptMole3.Bricks.Add(pos);
            }
            {
                DelayBrick wait = new DelayBrick();
                wait.Duration = FormulaTreeFactory.CreateRandomNode(
                    firstChild: FormulaTreeFactory.CreateNumberNode(1),
                    secondChild: FormulaTreeFactory.CreateNumberNode(2));
                startScriptMole3.Bricks.Add(wait);
            }
            startScriptMole3.Bricks.Add(new ShowBrick());
            {
                SetLookBrick look = new SetLookBrick();
                look.Value = objectMole3.Looks[0];
                startScriptMole3.Bricks.Add(look);
            }
            {
                AnimatePositionBrick slide = new AnimatePositionBrick();
                slide.Duration = FormulaTreeFactory.CreateNumberNode(0.1);
                slide.ToX      = FormulaTreeFactory.CreateNumberNode(0);
                slide.ToY      = FormulaTreeFactory.CreateNumberNode(10);
                startScriptMole3.Bricks.Add(slide);
            }
            {
                SetLookBrick look = new SetLookBrick();
                look.Value = objectMole3.Looks[2];
                startScriptMole3.Bricks.Add(look);
            }
            {
                DelayBrick wait = new DelayBrick();
                wait.Duration = FormulaTreeFactory.CreateRandomNode(
                    firstChild: FormulaTreeFactory.CreateNumberNode(1),
                    secondChild: FormulaTreeFactory.CreateNumberNode(5));
                startScriptMole3.Bricks.Add(wait);
            }
            startScriptMole3.Bricks.Add(new HideBrick());
            {
                DelayBrick wait = new DelayBrick();
                wait.Duration = FormulaTreeFactory.CreateRandomNode(
                    firstChild: FormulaTreeFactory.CreateNumberNode(1),
                    secondChild: FormulaTreeFactory.CreateNumberNode(5));
                startScriptMole3.Bricks.Add(wait);
            }
            startScriptMole3.Bricks.Add(endForeverBrick3);
            objectMole3.Scripts.Add(startScriptMole3);

            TappedScript tappedScriptMole3 = new TappedScript();
            {
                SetLookBrick look = new SetLookBrick();
                look.Value = objectMole3.Looks[1];
                tappedScriptMole3.Bricks.Add(look);
            }
            {
                DelayBrick wait = new DelayBrick();
                wait.Duration = FormulaTreeFactory.CreateNumberNode(1.5);
                tappedScriptMole3.Bricks.Add(wait);
            }
            tappedScriptMole3.Bricks.Add(new HideBrick());
            objectMole3.Scripts.Add(tappedScriptMole3);

            #endregion

            #region mole4

            objectMole4.Looks.Add(new Look {
                Name = AppResourcesHelper.Get("WhackAMole_MovingMole"), FileName = LookFileNameMole1
            });
            objectMole4.Looks.Add(new Look {
                Name = AppResourcesHelper.Get("WhackAMole_DizzyMole"), FileName = LookFileNameMole2
            });
            objectMole4.Looks.Add(new Look {
                Name = AppResourcesHelper.Get("WhackAMole_Mole"), FileName = LookFileNameMole3
            });

            StartScript startScriptMole4 = new StartScript();
            {
                SetSizeBrick sizeBrick = new SetSizeBrick();
                sizeBrick.Percentage = FormulaTreeFactory.CreateNumberNode(20);
                startScriptMole4.Bricks.Add(sizeBrick);
            }
            ForeverBrick    startForeverBrick4 = new ForeverBrick();
            EndForeverBrick endForeverBrick4   = new EndForeverBrick();
            startForeverBrick4.End = endForeverBrick4;
            endForeverBrick4.Begin = startForeverBrick4;

            startScriptMole4.Bricks.Add(startForeverBrick4);
            {
                SetPositionBrick pos = new SetPositionBrick();
                pos.ValueX = FormulaTreeFactory.CreateNumberNode(115);
                pos.ValueY = FormulaTreeFactory.CreateNumberNode(-215);
                startScriptMole4.Bricks.Add(pos);
            }
            {
                DelayBrick wait = new DelayBrick();
                wait.Duration = FormulaTreeFactory.CreateRandomNode(
                    firstChild: FormulaTreeFactory.CreateNumberNode(1),
                    secondChild: FormulaTreeFactory.CreateNumberNode(2));
                startScriptMole4.Bricks.Add(wait);
            }
            startScriptMole4.Bricks.Add(new ShowBrick());
            {
                SetLookBrick look = new SetLookBrick();
                look.Value = objectMole4.Looks[0];
                startScriptMole4.Bricks.Add(look);
            }
            {
                AnimatePositionBrick slide = new AnimatePositionBrick();
                slide.Duration = FormulaTreeFactory.CreateNumberNode(0.1);
                slide.ToX      = FormulaTreeFactory.CreateNumberNode(0);
                slide.ToY      = FormulaTreeFactory.CreateNumberNode(10);
                startScriptMole4.Bricks.Add(slide);
            }
            {
                SetLookBrick look = new SetLookBrick();
                look.Value = objectMole4.Looks[2];
                startScriptMole4.Bricks.Add(look);
            }
            {
                DelayBrick wait = new DelayBrick();
                wait.Duration = FormulaTreeFactory.CreateRandomNode(
                    firstChild: FormulaTreeFactory.CreateNumberNode(1),
                    secondChild: FormulaTreeFactory.CreateNumberNode(5));
                startScriptMole4.Bricks.Add(wait);
            }
            startScriptMole4.Bricks.Add(new HideBrick());
            {
                DelayBrick wait = new DelayBrick();
                wait.Duration = FormulaTreeFactory.CreateRandomNode(
                    firstChild: FormulaTreeFactory.CreateNumberNode(1),
                    secondChild: FormulaTreeFactory.CreateNumberNode(5));
                startScriptMole4.Bricks.Add(wait);
            }
            startScriptMole4.Bricks.Add(endForeverBrick4);
            objectMole4.Scripts.Add(startScriptMole4);

            TappedScript tappedScriptMole4 = new TappedScript();
            {
                SetLookBrick look = new SetLookBrick();
                look.Value = objectMole4.Looks[1];
                tappedScriptMole4.Bricks.Add(look);
            }
            {
                DelayBrick wait = new DelayBrick();
                wait.Duration = FormulaTreeFactory.CreateNumberNode(1.5);
                tappedScriptMole4.Bricks.Add(wait);
            }
            tappedScriptMole4.Bricks.Add(new HideBrick());
            objectMole4.Scripts.Add(tappedScriptMole4);

            #endregion

            program.Sprites.Add(objectBackground);
            program.Sprites.Add(objectMole1);
            program.Sprites.Add(objectMole2);
            program.Sprites.Add(objectMole3);
            program.Sprites.Add(objectMole4);
        }