Exemplo n.º 1
0
        public static void Main(string[] argsArray)
        {
            Thread.CurrentThread.SetInvariantCulture();

            // This is required to get all required build tools in path
            // See https://github.com/fusetools/Fuse/issues/4245 for details
            if (Platform.OperatingSystem == OS.Mac)
            {
                Environment.SetEnvironmentVariable("PATH", "/usr/local/bin:" + Environment.GetEnvironmentVariable("PATH"));
            }

            var argumentList = argsArray.ToList();
            var fuse         = FuseApi.Initialize("Designer", argumentList);
            var shell        = new Shell();
            var errors       = new ReplaySubject <Exception>(1);

            if (!Application.InitializeAsDocumentApp(argumentList, "Fusetools.Fuse"))
            {
                return;
            }

            // Initialize console redirection early to show output during startup in debug window
            ConsoleOutputWindow.InitializeConsoleRedirection();

            UserSettings.Settings = PersistentSettings.Load(
                usersettingsfile: fuse.UserDataDir / new FileName("designer-config.json"),
                onError: errors.OnNext);

            var daemon = fuse.ConnectOrSpawnAsync("Designer").ToObservable().Switch();

            //var previewPlatform = Platform.OperatingSystem == OS.Mac
            //	? (IPlatform)new MacPlatform(fuse.MonoExe.Value.NativePath)
            //	: (IPlatform)new WindowsPlatform();

            var previewService = new PreviewService();

            Application.Terminating += previewService.Dispose;

            var openProject = new OpenProject(
                previewService,
                shell, fuse, daemon,
                errors);

            var createProject = new CreateProject(fuse);
            var splashWindow  = new Dashboard(createProject, fuse);


            Application.CreateDocumentWindow = document => openProject.Execute(document, argumentList.ToArray());

            Application.LaunchedWithoutDocuments = splashWindow.Show;

            Application.Run();
        }
Exemplo n.º 2
0
        static void Main(string[] argsArray)
        {
            var run    = true;
            var args   = argsArray.ToList();
            var fuse   = FuseApi.Initialize("CodeAssistanceService", args);
            var daemon = fuse.Connect("Code Assistance Service", TimeSpan.FromSeconds(30));

            daemon.ConnectionLost.Subscribe(d => run = false);

            var codeCompletionInstance = new CodeCompletionInstance(new ProjectDetector(new Shell()));

            daemon.Provide <GetCodeSuggestionsRequest, GetCodeSuggestionsResponse>(
                codeCompletionInstance.HandleGetCodeSuggestions);
            daemon.Provide <GotoDefinitionRequest, GotoDefinitionResponse>(codeCompletionInstance.HandleGotoDefinition);

            while (run)
            {
                Thread.Sleep(500);
            }
        }
Exemplo n.º 3
0
        static void Main()
        {
            var args = Environment.GetCommandLineArgs().ToList();

            var fuse = FuseApi.Initialize("Tray", args);

            var log = fuse.Report;

            var native = Application.Initialize(args);

            var client = fuse.ConnectAsync("Fuse Tray");

            var app = native.CreateTrayApplication(
                log,
                title: Observable.Return(""),
                icon: Observable.Return(
                    Icon.FromResource(
                        Platform.OperatingSystem == OS.Mac
                                                        ? "Outracks.Fuse.Notifier.Resources.Fuse.icns"
                                                        : "Outracks.Fuse.Notifier.Resources.Fuse.ico")),
                menu:
                Menu.Item(
                    "Fuse v. " + fuse.Version,
                    command: Command.Disabled)
                + Menu.Separator
                + Menu.Item(
                    Platform.OperatingSystem == OS.Mac ? "Quit" : "Exit",
                    async() => await Exit(client)));

            // Exit on connection lost
            client.ToObservable().SelectMany(c => c.ConnectionLost).Subscribe(d => Application.Exit(0));

            // Start dashboard on click
            app.UserClicked.Subscribe(clicks => fuse.Designer.Start());

            Application.Run();
        }