/* =============
         * = FUNCTIONS =
         * =============
         */



        public void LoadPage(string path, int id)
        {
            if (!isLoaded)
            {
                html_view = new WebView(WebViewExecutionMode.SeparateThread);
                html_view.NavigationStarting += Html_view_NavigationStarting;
                html_view.SetValue(ScrollViewer.HorizontalScrollBarVisibilityProperty, ScrollBarVisibility.Visible);
                MasterGrid.Children.Insert(0, html_view);

                isLoaded = true;
            }

            if (!string.IsNullOrEmpty(path))
            {
                current_id = id;

                InfosModule ModuleAccess = ModulesAccessManager.GetModuleViaID(id);

                if (ModuleAccess.ModuleSystem)
                {
                    html_view.Navigate(new Uri("ms-appx-web:///SerrisModulesServer/SystemModules/Addons/" + id + "/" + path));
                }
                else
                {
                    html_view.Navigate(new Uri("ms-appdata:///local/modules/" + id + "/" + path));
                    Debug.WriteLine("ms-appdata:///local/modules/" + id + "/" + path);
                }
            }
        }
예제 #2
0
        public ThemeReader(int ID)
        {
            id_module = ID;
            InfosModule ModuleAccess = ModulesAccessManager.GetModuleViaID(ID);

            system_module = ModuleAccess.ModuleSystem;
        }
예제 #3
0
        private async void LoadModules()
        {
            ListModules.Items.Clear();
            int IDThemeMonaco = await ModulesAccessManager.GetCurrentThemeMonacoID(), IDTheme = await ModulesAccessManager.GetCurrentThemeIDAsync();

            foreach (InfosModule module in await ModulesAccessManager.GetModulesAsync(true))
            {
                var module_infos = new ModuleInfosShow {
                    Module = module, StrokeThickness = 0
                };
                var reader = new AddonReader(module_infos.Module.ID);
                module_infos.Thumbnail = await reader.GetAddonIconViaIDAsync();

                switch (module.ModuleType)
                {
                case ModuleTypesList.Addon when currentSelectedButton == 0:
                    ListModules.Items.Add(module_infos);
                    break;

                case ModuleTypesList.Theme when currentSelectedButton == 1:
                    if (IDTheme == module_infos.Module.ID || IDThemeMonaco == module_infos.Module.ID)
                    {
                        module_infos.StrokeThickness = 2;
                    }

                    ListModules.Items.Add(module_infos);
                    break;
                }
            }
        }
예제 #4
0
        public ModuleInfo getModuleInfosViaID(string ID)
        {
            var module = ModulesAccessManager.GetModuleViaID(ID);

            return(new ModuleInfo {
                ID = module.ID, moduleSystem = module.ModuleSystem, moduleName = module.ModuleName, moduleAuthor = module.ModuleAuthor, moduleDescription = module.ModuleDescription, moduleWebsiteLink = module.ModuleWebsiteLink, containMonacoTheme = module.ContainMonacoTheme, isEnabled = module.IsEnabled, isPinnedToToolbar = module.CanBePinnedToToolBar, moduleVersion = new ModuleInfoVersion {
                    major = module.ModuleVersion.Major, minor = module.ModuleVersion.Minor, revision = module.ModuleVersion.Revision
                }
            });
        }
예제 #5
0
        public static List <string> GetLanguagesNames()
        {
            List <string> LanguagesAvailable = new List <string>();

            foreach (var Module in ModulesAccessManager.GetSpecificModules(true, ModuleTypesList.ProgrammingLanguage))
            {
                LanguagesAvailable.Add(Module.ModuleName);
            }

            return(LanguagesAvailable);
        }
예제 #6
0
        private async void SetMonacoTheme()
        {
            if (EditorIsLoaded)
            {
                var MonacoTheme = ModulesAccessManager.GetModuleViaID(ModulesAccessManager.GetCurrentThemeMonacoID());
                ContentViewer.SendAndExecuteJavaScript(await new ThemeReader(ModulesAccessManager.GetCurrentThemeMonacoID()).GetThemeJSContentAsync());
                ContentViewer.SendAndExecuteJavaScript("monaco.editor.setTheme('" + MonacoTheme.ModuleMonacoThemeName + "');");

                //Debug.WriteLine(MonacoTheme.ModuleMonacoThemeName);
            }
        }
예제 #7
0
 private async void ExecuteModulesFunction()
 {
     //onEditorViewReady
     foreach (InfosModule Module in ModulesAccessManager.GetModules(true))
     {
         if (Module.IsEnabled && Module.ModuleType == SerrisModulesServer.Type.ModuleTypesList.Addon)
         {
             SCEELibs.SCEELibs Libs = new SCEELibs.SCEELibs(Module.ID);
             await Task.Run(() => new AddonExecutor(Module.ID, Libs).ExecuteDefaultFunction(AddonExecutorFuncTypes.onEditorViewReady));
         }
     }
 }
예제 #8
0
        async Task IsSystemModuleOrNot(int _id)
        {
            InfosModule ModuleAccess = await ModulesAccessManager.GetModuleViaIDAsync(_id);

            if (ModuleAccess.ModuleSystem)
            {
                system_module = true;
            }
            else
            {
                system_module = false;
            }
        }
예제 #9
0
        private async void IntializeChakraAndExecute(string function_name)
        {
            /*
             * =============================
             * = ADDONS EXECUTOR VARIABLES =
             * =============================
             */


            host.Chakra.ProjectObjectToGlobal(_SCEELibs, "sceelibs");


            /*
             * ===========================
             * = ADDONS EXECUTOR CONTENT =
             * ===========================
             */


            InfosModule ModuleAccess = ModulesAccessManager.GetModuleViaID(_id);
            StorageFile MainFile     = AsyncHelpers.RunSync(async() => await StorageFile.GetFileFromApplicationUriAsync(new Uri(ModulesAccessManager.GetModuleFolderPath(ModuleAccess.ID, ModuleAccess.ModuleSystem) + "main.js")));

            foreach (string Path in ModuleAccess.JSFilesPathList)
            {
                try
                {
                    StorageFile FileFromPath = AsyncHelpers.RunSync(async() => await StorageFile.GetFileFromApplicationUriAsync(new Uri(ModulesAccessManager.GetModuleFolderPath(ModuleAccess.ID, ModuleAccess.ModuleSystem) + Path)));
                    host.Chakra.RunScript(AsyncHelpers.RunSync(async() => await FileIO.ReadTextAsync(FileFromPath)));
                }
                catch
                {
                    Debug.WriteLine("Erreur ! :(");
                }
            }

            try
            {
                string code = AsyncHelpers.RunSync(async() => await FileIO.ReadTextAsync(MainFile));
                host.Chakra.RunScript(code);
            }
            catch (Exception ex)
            {
                Debug.WriteLine(ex.Message);
            }

            try
            {
                host.Chakra.CallFunction(function_name);
            }
            catch { }
        }
예제 #10
0
        public static string GetLanguageTypeViaName(string LanguageName)
        {
            foreach (var Module in ModulesAccessManager.GetSpecificModules(true, ModuleTypesList.ProgrammingLanguage))
            {
                if (Module.ModuleName == LanguageName)
                {
                    return(Module.ProgrammingLanguageMonacoDefinitionName);
                }
                else
                {
                    continue;
                }
            }

            return("txt");
        }
        private async void TabTemplatesListView_Loaded(object sender, RoutedEventArgs e)
        {
            List <TemplatesFileInfos> Templates = new List <TemplatesFileInfos>();

            foreach (InfosModule Module in ModulesAccessManager.GetSpecificModules(true, SerrisModulesServer.Type.ModuleTypesList.Templates))
            {
                TemplatesReader Reader = new TemplatesReader(Module.ID);
                Templates.AddRange(await Reader.GetTemplatesFilesContentAsync());
            }

            var TemplatesGrouping = from c in Templates
                                    group c by c.Type;

            TabTemplatesList.Source            = TemplatesGrouping;
            TabTemplatesListView.SelectedIndex = -1;
        }
예제 #12
0
        public IList <ModuleInfo> getAddonsAvailable(bool system_addons)
        {
            IList <ModuleInfo> list_addons_final = new List <ModuleInfo>();
            List <InfosModule> list_addons       = ModulesAccessManager.GetModules(system_addons);

            foreach (InfosModule theme in list_addons.Where(n => n.ModuleType == SerrisModulesServer.Type.ModuleTypesList.Addon).ToList())
            {
                list_addons_final.Add(new ModuleInfo {
                    ID = theme.ID, moduleSystem = theme.ModuleSystem, moduleName = theme.ModuleName, moduleAuthor = theme.ModuleAuthor, moduleDescription = theme.ModuleDescription, moduleWebsiteLink = theme.ModuleWebsiteLink, containMonacoTheme = theme.ContainMonacoTheme, isEnabled = theme.IsEnabled, isPinnedToToolbar = theme.CanBePinnedToToolBar, moduleVersion = new ModuleInfoVersion {
                        major = theme.ModuleVersion.Major, minor = theme.ModuleVersion.Minor, revision = theme.ModuleVersion.Revision
                    }
                });
            }

            return(list_addons_final);
        }
예제 #13
0
        public static string GetModuleIDOfLangageType(string LangType)
        {
            string Type = LangType.ToLower();

            foreach (var Module in ModulesAccessManager.GetSpecificModules(true, ModuleTypesList.ProgrammingLanguage))
            {
                if (Module.ProgrammingLanguageMonacoDefinitionName == Type)
                {
                    return(Module.ID);
                }
                else
                {
                    continue;
                }
            }

            return(SMSInfos.DefaultLanguageID);
        }
예제 #14
0
        public static List <string> GetLanguageExtensions(string Filetype)
        {
            foreach (var Module in ModulesAccessManager.GetSpecificModules(true, ModuleTypesList.ProgrammingLanguage))
            {
                if (Module.ProgrammingLanguageMonacoDefinitionName == Filetype)
                {
                    return(Module.ProgrammingLanguageFilesExtensions);
                }
                else
                {
                    continue;
                }
            }

            return(new List <string> {
                ".txt"
            });
        }
예제 #15
0
        public static string GetLanguageType(string Filename)
        {
            string Extension = Path.GetExtension(Filename);

            foreach (var Module in ModulesAccessManager.GetSpecificModules(true, ModuleTypesList.ProgrammingLanguage))
            {
                if (Module.ProgrammingLanguageFilesExtensions.Contains(Extension))
                {
                    return(Module.ProgrammingLanguageMonacoDefinitionName);
                }
                else
                {
                    continue;
                }
            }

            return("txt");
        }
예제 #16
0
        public static bool IsFileLanguageIsCompatible(string Filename)
        {
            string Extension = Path.GetExtension(Filename);

            foreach (var Module in ModulesAccessManager.GetSpecificModules(true, ModuleTypesList.ProgrammingLanguage))
            {
                if (Module.ProgrammingLanguageFilesExtensions.Contains(Extension))
                {
                    return(true);
                }
                else
                {
                    continue;
                }
            }

            return(false);
        }
예제 #17
0
        private async void LoadModules()
        {
            ListModules.Items.Clear();
            int IDThemeMonaco = ModulesAccessManager.GetCurrentThemeMonacoID(), IDTheme = ModulesAccessManager.GetCurrentThemeID();

            switch (currentSelectedButton)
            {
            default:
                ListModules.SelectionMode = ListViewSelectionMode.Single;
                break;

            case 2:
            case 3:
                ListModules.SelectionMode = ListViewSelectionMode.None;
                break;
            }

            foreach (InfosModule module in ModulesAccessManager.GetModules(true))
            {
                ModuleInfosShow ModuleInfos = new ModuleInfosShow {
                    Module = module, StrokeThickness = 0
                };
                ModuleInfos.Thumbnail = await ModulesAccessManager.GetModuleDefaultLogoViaIDAsync(ModuleInfos.Module.ID, ModuleInfos.Module.ModuleSystem);

                switch (module.ModuleType)
                {
                case ModuleTypesList.Templates when currentSelectedButton == 3:
                case ModuleTypesList.ProgrammingLanguage when currentSelectedButton == 2:
                case ModuleTypesList.Addon when currentSelectedButton == 0:
                    ListModules.Items.Add(ModuleInfos);
                    break;

                case ModuleTypesList.Theme when currentSelectedButton == 1:
                    if (IDTheme == ModuleInfos.Module.ID || IDThemeMonaco == ModuleInfos.Module.ID)
                    {
                        ModuleInfos.StrokeThickness = 2;
                    }

                    ListModules.Items.Add(ModuleInfos);
                    break;
                }
            }
        }
예제 #18
0
        private async void Lists_Loaded(object sender, RoutedEventArgs e)
        {
            if (!isLoaded)
            {
                TabsViewerControls.Visibility = Visibility.Collapsed;

                foreach (int id in TabsAccessManager.GetTabsListID())
                {
                    var list = TabsAccessManager.GetTabsListViaID(id);
                    Lists.Items.Add(new ListItem {
                        ListID = list.ID, ListName = list.name, ListIcon = await ModulesAccessManager.GetModuleIconViaIDAsync(list.TabsListProjectTypeID, true)
                    });

                    if (AppSettings.Values.ContainsKey("Tabs_list-selected-index"))
                    {
                        if ((int)AppSettings.Values["Tabs_list-selected-index"] == id)
                        {
                            Lists.SelectedIndex = Lists.Items.Count - 1;
                        }
                    }
                }

                if (Lists.Items.Count == 0)
                {
                    await TabsWriteManager.CreateTabsListAsync("Default list");
                }
                else
                {
                    if (!AppSettings.Values.ContainsKey("Tabs_list-selected-index"))
                    {
                        Lists.SelectedIndex = 0;
                    }
                }


                isLoaded = true;
            }
        }
예제 #19
0
        private async void LoadModules()
        {
            ListModules.Items.Clear();

            foreach (InfosModule module in await ModulesAccessManager.GetModulesAsync(true))
            {
                var module_infos = new ModuleInfosShow {
                    Module = module
                };
                var reader = new AddonReader(module_infos.Module.ID);
                module_infos.Thumbnail = await reader.GetAddonIconViaIDAsync();

                switch (module.ModuleType)
                {
                case ModuleTypesList.Addon when currentSelectedButton == 0:
                    ListModules.Items.Add(module_infos);
                    break;

                case ModuleTypesList.Theme when currentSelectedButton == 1:
                    ListModules.Items.Add(module_infos);
                    break;
                }
            }
        }
예제 #20
0
        /*
         *       ========
         *       FUNCTION
         *       ========
         */

        private static async void LoadLanguageInTheEditor(string Name, WebView Editor)
        {
            if (!LanguagesAlreadyLoaded.Contains(Name))
            {
                foreach (InfosModule Module in ModulesAccessManager.GetSpecificModules(true, SerrisModulesServer.Type.ModuleTypesList.ProgrammingLanguage))
                {
                    if (Module.ProgrammingLanguageMonacoDefinitionName == Name)
                    {
                        await Editor.InvokeScriptAsync("eval", new[] { "monaco.languages.register({ id:'" + Module.ProgrammingLanguageMonacoDefinitionName + "'});" });

                        await Editor.InvokeScriptAsync("eval", new[] { await new ProgrammingLanguageReader(Module.ID).GetLanguageDefinitionContent() });

                        if (Module.ProgrammingLanguageMonacoCompletionAvailable)
                        {
                            await Editor.InvokeScriptAsync("eval", new[] { await new ProgrammingLanguageReader(Module.ID).GetLanguageCompletionContent() });
                        }

                        break;
                    }
                }

                LanguagesAlreadyLoaded.Add(Name.ToLower());
            }
        }
예제 #21
0
 public TemplatesReader(int ID) : base(ID)
 {
     ModuleContent = ModulesAccessManager.GetModuleViaID(ID);
 }
예제 #22
0
        private async void UpdateTabInformations()
        {
            //Set temp tab + tabs list ID
            try
            {
                current_tab = TabsAccessManager.GetTabViaID(new TabID {
                    ID_Tab = current_tab.ID, ID_TabsList = current_list
                });

                name_tab.Text = current_tab.TabName;

                switch (current_tab.TabContentType)
                {
                case ContentType.File:
                    int ModuleIDIcon = LanguagesHelper.GetModuleIDOfLangageType(current_tab.TabType);
                    TabIcon.Source = await ModulesAccessManager.GetModuleIconViaIDAsync(ModuleIDIcon, ModulesAccessManager.GetModuleViaID(ModuleIDIcon).ModuleSystem);

                    if (!string.IsNullOrEmpty(current_tab.PathContent))
                    {
                        path_tab.Text       = current_tab.PathContent;
                        encoding_file.Text  = Encoding.GetEncoding(current_tab.TabEncoding).EncodingName;
                        More_Tab.Visibility = Visibility.Visible;
                    }
                    else
                    {
                        More_Tab.Visibility = Visibility.Collapsed;
                    }

                    TabsListGrid.Visibility = Visibility.Collapsed;
                    TabIcon.Visibility      = Visibility.Visible;
                    FolderIcon.Visibility   = Visibility.Collapsed;
                    StackInfos.Visibility   = Visibility.Visible;
                    break;

                case ContentType.Folder:
                    More_Tab.Visibility     = Visibility.Visible;
                    TabsListGrid.Visibility = Visibility.Visible;
                    StackInfos.Visibility   = Visibility.Collapsed;

                    TabIcon.Visibility    = Visibility.Collapsed;
                    FolderIcon.Visibility = Visibility.Visible;

                    if (TempTabID != current_tab.ID && TabsList.ListID != current_list)
                    {
                        ShowInfos.Begin();

                        TabsList.ListTabs.Items.Clear();
                        TempTabID       = current_tab.ID;
                        TabsList.ListID = current_list;
                        foreach (int ID in current_tab.FolderContent)
                        {
                            try
                            {
                                if (TabsAccessManager.GetTabViaID(new TabID {
                                    ID_Tab = ID, ID_TabsList = current_list
                                }) != null)
                                {
                                    TabsList.ListTabs.Items.Add(new TabID {
                                        ID_Tab = ID, ID_TabsList = current_list
                                    });
                                    if ((int)AppSettings.Values["Tabs_tab-selected-index"] == ID && (int)AppSettings.Values["Tabs_list-selected-index"] == current_list)
                                    {
                                        TabsList.ListTabs.SelectedIndex = TabsList.ListTabs.Items.Count - 1;
                                    }
                                }
                            }
                            catch { }
                        }
                    }

                    break;
                }
            }
            catch { }
        }
        private void SetMessenger()
        {
            Messenger.Default.Register <EditorViewNotification>(this, async(notification_ui) =>
            {
                await DispatcherHelper.ExecuteOnUIThreadAsync(() =>
                {
                    try
                    {
                        SetTheme();
                    }
                    catch { }
                });
            });

            Messenger.Default.Register <SheetViewMode>(this, async(notification_sheetview) =>
            {
                await DispatcherHelper.ExecuteOnUIThreadAsync(() =>
                {
                    try
                    {
                        switch (notification_sheetview)
                        {
                        case SheetViewMode.Deployed:
                            TabsViewerControls.Visibility = Visibility.Visible;
                            break;

                        case SheetViewMode.Minimized:
                            TabsViewerControls.Visibility = Visibility.Collapsed;
                            ShowCreatorGrid(false);

                            if (!string.IsNullOrWhiteSpace(Box_Search.Text))
                            {
                                Tabs.Visibility = Visibility.Collapsed;
                            }
                            break;
                        }
                    }
                    catch { }
                });
            });

            Messenger.Default.Register <STSNotification>(this, async(notification) =>
            {
                await DispatcherHelper.ExecuteOnUIThreadAsync(async() =>
                {
                    try
                    {
                        if (CurrentSelectedIDs.ID_TabsList == notification.ID.ID_TabsList)
                        {
                            switch (notification.Type)
                            {
                            case TypeUpdateTab.RefreshCurrentList:
                                ChangeSelectedList(CurrentSelectedIDs.ID_TabsList);
                                break;

                            case TypeUpdateTab.NewTab:
                                if (!TabsAccessManager.GetTabViaID(notification.ID).TabInvisibleByDefault)
                                {
                                    Tabs.Items.Add(notification.ID);

                                    //Auto selection
                                    Tabs.SelectedIndex = Tabs.Items.Count - 1;
                                }
                                break;

                            case TypeUpdateTab.SelectTab:
                                int Position = 0;
                                foreach (TabID CurrId in Tabs.Items)
                                {
                                    if (CurrId.ID_Tab == notification.ID.ID_Tab && CurrId.ID_TabsList == notification.ID.ID_TabsList)
                                    {
                                        Tabs.SelectedIndex = Position;
                                        break;
                                    }

                                    Position++;
                                }
                                break;

                            case TypeUpdateTab.SelectTabViaNumber:
                                if (Tabs.Items.Count >= notification.TabNumber)
                                {
                                    Tabs.SelectedIndex = (notification.TabNumber - 1);
                                }
                                break;

                            case TypeUpdateTab.TabDeleted:
                                if (await TabsWriteManager.DeleteTabAsync(notification.ID))
                                {
                                    object FindItem = Tabs.Items.SingleOrDefault(o => o.Equals(notification.ID));

                                    if (FindItem != null)
                                    {
                                        Tabs.Items.Remove(FindItem);

                                        //Auto selection
                                        if (CurrentSelectedIDs.ID_Tab == notification.ID.ID_Tab && Tabs.Items.Count - 1 >= 0)
                                        {
                                            Tabs.SelectedIndex = Tabs.Items.Count - 1;
                                        }
                                    }

                                    if (Tabs.Items.Count == 0)
                                    {
                                        CreateDefaultTab();
                                    }
                                }

                                break;

                            case TypeUpdateTab.NewList:
                                var list = TabsAccessManager.GetTabsListViaID(notification.ID.ID_TabsList);
                                Lists.Items.Add(new ListItem {
                                    ListID = list.ID, ListName = list.name, ListIcon = await ModulesAccessManager.GetModuleIconViaIDAsync(list.TabsListProjectTypeID, true)
                                });
                                Lists.SelectedIndex = Lists.Items.Count - 1;
                                break;

                            case TypeUpdateTab.ListDeleted:
                                Lists.Items.RemoveAt(Lists.SelectedIndex);
                                break;

                            case TypeUpdateTab.OpenTabsCreator:
                                ShowCreatorGrid(true);
                                break;

                            case TypeUpdateTab.OpenNewFiles:
                                OpenFiles();
                                break;
                            }
                        }
                        else
                        {
                            switch (notification.Type)
                            {
                            case TypeUpdateTab.NewList:
                                var list = TabsAccessManager.GetTabsListViaID(notification.ID.ID_TabsList);
                                Lists.Items.Add(new ListItem {
                                    ListID = list.ID, ListName = list.name, ListIcon = await ModulesAccessManager.GetModuleIconViaIDAsync(list.TabsListProjectTypeID, true)
                                });
                                Lists.SelectedIndex = Lists.Items.Count - 1;
                                break;

                            case TypeUpdateTab.ListDeleted:
                                Lists.Items.RemoveAt(Lists.SelectedIndex);
                                break;

                            case TypeUpdateTab.OpenTabsCreator:
                                ShowCreatorGrid(true);
                                break;

                            case TypeUpdateTab.OpenNewFiles:
                                OpenFiles();
                                break;
                            }
                        }
                    }
                    catch { }
                });
            });
        }
예제 #24
0
        private async void SetInterface()
        {
            switch (GlobalVariables.CurrentDevice)
            {
            case CurrentDevice.WindowsMobile:
                //UI modification for mobile
                PrincipalUI.VerticalAlignment                  = VerticalAlignment.Bottom;
                ColorPrincipalUI.VerticalAlignment             = VerticalAlignment.Bottom;
                BackgroundPrincipalUIControl.VerticalAlignment = VerticalAlignment.Bottom;
                Console.Height = 30;
                SheetViewSplit.OpenPaneLength = MasterGrid.ActualWidth - 40;
                Grid.SetColumnSpan(Toolbar, 1);
                //Toolbar.HorizontalAlignment = HorizontalAlignment.Stretch;
                TextInfoTitlebar.Margin      = new Thickness(0);
                ContentViewerGrid.Margin     = new Thickness(0, 0, 0, 75);
                TextInfoTitlebar.Visibility  = Visibility.Collapsed;
                TopSheetViewSplit.Visibility = Visibility.Collapsed;

                StatusBar.GetForCurrentView().ProgressIndicator.Text = "Serris Code Editor MLV";
                UpdateUI(true);
                break;

            case CurrentDevice.Desktop:

                if (AppSettings.Values.ContainsKey("ui_extendedview"))
                {
                    if (!(bool)AppSettings.Values["ui_extendedview"])
                    {
                        ContentViewerGrid.Margin           = new Thickness(60, 73, 0, 0);
                        BackgroundPrincipalUIControl.Color = Colors.Transparent;
                    }
                    else
                    {
                        ContentViewerGrid.Margin           = new Thickness(60, 0, 0, 0);
                        DeployUIDetector.Visibility        = Visibility.Collapsed;
                        BackgroundPrincipalUIControl.Color = Colors.Black;
                    }
                }
                else
                {
                    ContentViewerGrid.Margin           = new Thickness(60, 73, 0, 0);
                    BackgroundPrincipalUIControl.Color = Colors.Transparent;
                }

                //CLOSE PANEL AUTOMATICALLY
                if (AppSettings.Values.ContainsKey("ui_closepanelauto"))
                {
                    ClosePanelAuto = (bool)AppSettings.Values["ui_closepanelauto"];
                }

                TextInfoTitlebar.Text = "Serris Code Editor - " + SCEELibs.SCEInfos.versionName;
                CoreApplicationViewTitleBar coreTitleBar = CoreApplication.GetCurrentView().TitleBar;
                CoreApplication.GetCurrentView().TitleBar.ExtendViewIntoTitleBar = true;

                Window.Current.SetTitleBar(focus_titlebar);
                UpdateUI(false);
                break;
            }


            //onEditorStart
            foreach (InfosModule Module in await ModulesAccessManager.GetModulesAsync(true))
            {
                if (Module.IsEnabled && Module.ModuleType == SerrisModulesServer.Type.ModuleTypesList.Addon)
                {
                    SCEELibs.SCEELibs Libs = new SCEELibs.SCEELibs(Module.ID);
                    await Task.Run(() => new AddonExecutor(Module.ID, Libs).ExecuteDefaultFunction(AddonExecutorFuncTypes.onEditorStart));
                }
            }
        }
예제 #25
0
        /// <summary>
        /// Invoqué lorsque l'application est lancée normalement par l'utilisateur final.  D'autres points d'entrée
        /// seront utilisés par exemple au moment du lancement de l'application pour l'ouverture d'un fichier spécifique.
        /// </summary>
        /// <param name="e">Détails concernant la requête et le processus de lancement.</param>
        protected override async void OnLaunched(LaunchActivatedEventArgs e)
        {
            var rootFrame = Window.Current.Content as Frame;

            //Serris Modules Server !
            GlobalVariables.GlobalizationRessources = new ResourceLoader();
            SMSInitialize.InitializeSMSJson();
            GlobalVariables.CurrentTheme = await new ThemeReader(ModulesAccessManager.GetCurrentThemeID()).GetThemeBrushesContent();

            Messenger.Default.Register <SMSNotification>(this, async(notification) =>
            {
                try
                {
                    switch (notification.Type)
                    {
                    case TypeUpdateModule.CurrentThemeUpdated:
                        GlobalVariables.CurrentTheme = await new ThemeReader(notification.ID).GetThemeBrushesContent();
                        Messenger.Default.Send(new EditorViewNotification {
                            ID = 0, type = EditorViewNotificationType.UpdateUI
                        });
                        break;
                    }
                }
                catch { }
            });

            Messenger.Default.Register <TempContentNotification>(this, (notification) =>
            {
                try
                {
                    switch (notification.type)
                    {
                    case TempContentType.currentIDs when !notification.answerNotification:
                        Messenger.Default.Send(new TempContentNotification {
                            answerNotification = true, type = TempContentType.currentIDs, content = GlobalVariables.CurrentIDs
                        });
                        break;

                    case TempContentType.currentDevice when !notification.answerNotification:
                        Messenger.Default.Send(new TempContentNotification {
                            answerNotification = true, type = TempContentType.currentDevice, content = GlobalVariables.CurrentDevice
                        });
                        break;

                    case TempContentType.currentTheme when !notification.answerNotification:
                        Messenger.Default.Send(new TempContentNotification {
                            answerNotification = true, type = TempContentType.currentTheme, content = GlobalVariables.CurrentTheme
                        });
                        break;
                    }
                }
                catch { }
            });

            // Ne répétez pas l'initialisation de l'application lorsque la fenêtre comporte déjà du contenu,
            // assurez-vous juste que la fenêtre est active
            if (rootFrame == null)
            {
                // Créez un Frame utilisable comme contexte de navigation et naviguez jusqu'à la première page
                rootFrame = new Frame();

                rootFrame.NavigationFailed += OnNavigationFailed;

                if (e.PreviousExecutionState == ApplicationExecutionState.Terminated)
                {
                    //TODO: chargez l'état de l'application précédemment suspendue
                }

                // Placez le frame dans la fenêtre active
                Window.Current.Content = rootFrame;
            }

            if (e.PrelaunchActivated == false)
            {
                if (rootFrame.Content == null)
                {
                    // Quand la pile de navigation n'est pas restaurée, accédez à la première page,
                    // puis configurez la nouvelle page en transmettant les informations requises en tant que
                    // paramètre
                    rootFrame.Navigate(typeof(EditorView), e.Arguments);
                }
                // Vérifiez que la fenêtre actuelle est active
                Window.Current.Activate();
            }
        }
예제 #26
0
        protected override async void OnFileActivated(FileActivatedEventArgs args)
        {
            var rootFrame = Window.Current.Content as Frame;

            if (rootFrame == null)
            {
                GlobalVariables.GlobalizationRessources = new ResourceLoader();
                SMSInitialize.InitializeSMSJson();
                GlobalVariables.CurrentTheme = await new ThemeReader(ModulesAccessManager.GetCurrentThemeID()).GetThemeBrushesContent();

                Messenger.Default.Register <SMSNotification>(this, async(notification) =>
                {
                    try
                    {
                        switch (notification.Type)
                        {
                        case TypeUpdateModule.CurrentThemeUpdated:
                            GlobalVariables.CurrentTheme = await new ThemeReader(notification.ID).GetThemeBrushesContent();
                            Messenger.Default.Send(new EditorViewNotification {
                                ID = 0, type = EditorViewNotificationType.UpdateUI
                            });
                            break;
                        }
                    }
                    catch { }
                });

                Messenger.Default.Register <TempContentNotification>(this, (notification) =>
                {
                    try
                    {
                        switch (notification.type)
                        {
                        case TempContentType.currentIDs when !notification.answerNotification:
                            Messenger.Default.Send(new TempContentNotification {
                                answerNotification = true, type = TempContentType.currentIDs, content = GlobalVariables.CurrentIDs
                            });
                            break;

                        case TempContentType.currentDevice when !notification.answerNotification:
                            Messenger.Default.Send(new TempContentNotification {
                                answerNotification = true, type = TempContentType.currentDevice, content = GlobalVariables.CurrentDevice
                            });
                            break;

                        case TempContentType.currentTheme when !notification.answerNotification:
                            Messenger.Default.Send(new TempContentNotification {
                                answerNotification = true, type = TempContentType.currentTheme, content = GlobalVariables.CurrentTheme
                            });
                            break;
                        }
                    }
                    catch { }
                });

                rootFrame = new Frame();

                rootFrame.NavigationFailed += OnNavigationFailed;

                Window.Current.Content = rootFrame;

                if (rootFrame.Content == null)
                {
                    rootFrame.Navigate(typeof(EditorView), args);
                }
                Window.Current.Activate();
            }
            else
            {
                await TabsCreatorAssistant.OpenFilesAlreadyOpenedAndCreateNewTabsFiles(GlobalVariables.CurrentIDs.ID_TabsList, args.Files);
            }
        }
예제 #27
0
        private async void SetInterface()
        {
            switch (GlobalVariables.CurrentDevice)
            {
            case CurrentDevice.WindowsMobile:
                //UI modification for mobile
                PrincipalUI.VerticalAlignment                  = VerticalAlignment.Bottom;
                ColorPrincipalUI.VerticalAlignment             = VerticalAlignment.Bottom;
                BackgroundPrincipalUIControl.VerticalAlignment = VerticalAlignment.Bottom;
                Console.Height = 30;
                SheetViewSplit.OpenPaneLength = MasterGrid.ActualWidth - 40;
                Grid.SetColumnSpan(Toolbar, 1);
                TextInfoTitlebar.Margin      = new Thickness(0);
                ContentViewerGrid.Margin     = new Thickness(0, 0, 0, 75);
                SheetViewSplit.Margin        = new Thickness(0, 0, 0, 75);
                TextInfoTitlebar.Visibility  = Visibility.Collapsed;
                TopSheetViewSplit.Visibility = Visibility.Collapsed;

                ToolbarWidth.Width       = new GridLength(1, GridUnitType.Star);
                FocusTitlebarWidth.Width = new GridLength(0, GridUnitType.Pixel);

                StatusBar.GetForCurrentView().ProgressIndicator.Text = "Serris Code Editor MLV";
                UpdateUI(true, true);
                break;

            case CurrentDevice.Desktop:

                if (AppSettings.Values.ContainsKey("ui_extendedview"))
                {
                    if (!(bool)AppSettings.Values["ui_extendedview"])
                    {
                        ContentViewerGrid.Margin    = new Thickness(60, ColorPrincipalUI.ActualHeight, 0, 0);
                        DeployUIDetector.Visibility = Visibility.Visible;
                    }
                    else
                    {
                        ContentViewerGrid.Margin    = new Thickness(60, 0, 0, 0);
                        DeployUIDetector.Visibility = Visibility.Collapsed;
                    }
                }
                else
                {
                    ContentViewerGrid.Margin = new Thickness(60, ColorPrincipalUI.ActualHeight, 0, 0);
                }

                //CLOSE PANEL AUTOMATICALLY
                if (AppSettings.Values.ContainsKey("ui_closepanelauto"))
                {
                    ClosePanelAuto = (bool)AppSettings.Values["ui_closepanelauto"];
                }

                //LEFT PANE REDUCED SETTING
                if (AppSettings.Values.ContainsKey("ui_leftpanelength"))
                {
                    TopSheetViewSplit.Width          = (int)AppSettings.Values["ui_leftpanelength"];
                    SheetViewSplit.CompactPaneLength = (int)AppSettings.Values["ui_leftpanelength"];
                    ContentViewerGrid.Margin         = new Thickness((int)AppSettings.Values["ui_leftpanelength"], ContentViewerGrid.Margin.Top, 0, 0);
                }

                //LEFT PANE OPENED SETTING
                if (AppSettings.Values.ContainsKey("ui_leftpaneopenlength"))
                {
                    SheetViewSplit.OpenPaneLength = (int)AppSettings.Values["ui_leftpaneopenlength"];
                }

                SetTilebarText("");
                CoreApplication.GetCurrentView().TitleBar.ExtendViewIntoTitleBar = true;

                Window.Current.SetTitleBar(focus_titlebar);
                UpdateUI(false, true);
                break;
            }

            if (!EditorStartModulesEventsLaunched)
            {
                //onEditorStart
                foreach (InfosModule Module in ModulesAccessManager.GetModules(true))
                {
                    if (Module.IsEnabled && Module.ModuleType == SerrisModulesServer.Type.ModuleTypesList.Addon)
                    {
                        SCEELibs.SCEELibs Libs = new SCEELibs.SCEELibs(Module.ID);
                        await Task.Run(() => new AddonExecutor(Module.ID, Libs).ExecuteDefaultFunction(AddonExecutorFuncTypes.onEditorStart));
                    }
                }

                EditorStartModulesEventsLaunched = true;
            }
        }
예제 #28
0
 public async void createNewSheet(string sheetName, string pathHTMLPage)
 {
     await DispatcherHelper.ExecuteOnUIThreadAsync(async() =>
     {
         ModuleHTMLView view = new ModuleHTMLView();
         view.LoadPage(pathHTMLPage, id);
         Messenger.Default.Send(new ModuleSheetNotification {
             id = id, sheetName = sheetName, type = ModuleSheetNotificationType.NewSheet, sheetContent = view, sheetIcon = await ModulesAccessManager.GetModuleIconViaIDAsync(id, ModulesAccessManager.GetModuleViaID(id).ModuleSystem), sheetSystem = false
         });
     });
 }
예제 #29
0
        private async void UpdateTabInformations()
        {
            //Set temp tab + tabs list ID
            try
            {
                current_tab = TabsAccessManager.GetTabViaID(new TabID {
                    ID_Tab = current_tab.ID, ID_TabsList = current_list
                });

                name_tab.Text = current_tab.TabName;

                //Tooltip name
                ToolTip ButtonTooltip = new ToolTip();
                ButtonTooltip.Content = current_tab.TabName;
                ToolTipService.SetToolTip(IconAndTabNameGrid, ButtonTooltip);

                switch (current_tab.TabContentType)
                {
                case ContentType.File:
                    string ModuleIDIcon = LanguagesHelper.GetModuleIDOfLangageType(current_tab.TabType);
                    TabIcon.Source = await ModulesAccessManager.GetModuleIconViaIDAsync(ModuleIDIcon, ModulesAccessManager.GetModuleViaID(ModuleIDIcon).ModuleSystem);

                    if (!string.IsNullOrEmpty(current_tab.TabOriginalPathContent))
                    {
                        switch (current_tab.TabStorageMode)
                        {
                        case StorageListTypes.LocalStorage:
                            path_tab.Text = current_tab.TabOriginalPathContent;
                            break;

                        case StorageListTypes.OneDrive:
                            path_tab.Text = "OneDrive file";
                            break;
                        }

                        Size_Stackpanel.Visibility     = Visibility.Visible;
                        Modified_Stackpanel.Visibility = Visibility.Visible;
                        Created_Stackpanel.Visibility  = Visibility.Visible;

                        Rename_Tab.IsEnabled = false;
                    }
                    else
                    {
                        Size_Stackpanel.Visibility     = Visibility.Collapsed;
                        Modified_Stackpanel.Visibility = Visibility.Collapsed;
                        Created_Stackpanel.Visibility  = Visibility.Collapsed;

                        Rename_Tab.IsEnabled = true;
                    }

                    Notification.ShowBadge = current_tab.TabNewModifications;

                    TabsListGrid.Visibility = Visibility.Collapsed;
                    TabIcon.Visibility      = Visibility.Visible;
                    FolderIcon.Visibility   = Visibility.Collapsed;
                    StackInfos.Visibility   = Visibility.Visible;

                    MaxHeightAnimShow.Value   = 200;
                    MaxHeightAnimRemove.Value = 200;
                    break;

                case ContentType.Folder:
                    Notification.ShowBadge = false;
                    Rename_Tab.IsEnabled   = false;

                    More_Tab.Visibility     = Visibility.Visible;
                    TabsListGrid.Visibility = Visibility.Visible;
                    StackInfos.Visibility   = Visibility.Collapsed;

                    TabIcon.Visibility    = Visibility.Collapsed;
                    FolderIcon.Visibility = Visibility.Visible;

                    if (TempTabID != current_tab.ID && TabsList.ListID != current_list)
                    {
                        if (current_tab.FolderOpened)
                        {
                            ShowInfos.Begin(); infos_opened = true;
                        }
                        else
                        {
                            infos_opened = false;
                        }

                        TabsList.ListTabs.Items.Clear();
                        TempTabID       = current_tab.ID;
                        TabsList.ListID = current_list;
                        foreach (int ID in current_tab.FolderContent)
                        {
                            try
                            {
                                if (TabsAccessManager.GetTabViaID(new TabID {
                                    ID_Tab = ID, ID_TabsList = current_list
                                }) != null)
                                {
                                    TabsList.ListTabs.Items.Add(new TabID {
                                        ID_Tab = ID, ID_TabsList = current_list
                                    });
                                    if ((int)AppSettings.Values["Tabs_tab-selected-index"] == ID && (int)AppSettings.Values["Tabs_list-selected-index"] == current_list)
                                    {
                                        TabsList.ListTabs.SelectedIndex = TabsList.ListTabs.Items.Count - 1;
                                    }
                                }
                            }
                            catch { }
                        }
                    }

                    MaxHeightAnimShow.Value   = 1500;
                    MaxHeightAnimRemove.Value = 1500;
                    break;
                }
            }
            catch { }
        }
예제 #30
0
        public async Task <string> GetLanguageDefinitionContent()
        {
            try
            {
                StorageFile LanguageFile = await StorageFile.GetFileFromApplicationUriAsync(new Uri(ModuleFolderPath + "language.js"));

                return("var content = function() { " + await FileIO.ReadTextAsync(LanguageFile) + " }; monaco.languages.setMonarchTokensProvider('" + ModulesAccessManager.GetModuleViaID(ModuleID).ProgrammingLanguageMonacoDefinitionName + "', content());");
            }
            catch { return(""); }
        }