public ViewModelUploader() { UploadCommand = new UploadCommand(this); ContinueUploadCommand = new ContinueUploadCommand(this); HideInfoCommand = new HideInfoCommand(this); ShowInfoCommand = new ShowInfoCommand(this); try { _dal = new DataAccessLayer(); UploadQueue = _dal.GetNotUploaded(); } catch (Exception ex) { ShowMessage(ex.Message); } }
public static Parser CreateParser() { var infoOption = new Option("--info", "Display product information: name, configuration, various versions"); return(new CommandLineBuilder() .AddOption(infoOption) .UseMiddlewareOrdered(MiddlewareOrder.Preprocessing, async(ctx, next) => { if (ctx.ParseResult.HasOption(infoOption)) { ShowInfoCommand.Run(ctx.Console); } else { await next(ctx); } }) .UseDefaults() .AddCommand( new Command("convertxml", "[WIP] Converts BattleScribe XML files into Gitree directory structure.") { new Option(new[] { "-s", "--source" }, "Directory in which to look for XML files.") { Argument = new Argument <DirectoryInfo>(GetCurrentDirectoryInfo).ExistingOnly() }, new Option(new[] { "-o", "--output" }, "Root directory in which to save Gitree files and folders.") { Argument = new Argument <DirectoryInfo>(GetCurrentDirectoryInfo).LegalFilePathsOnly() }, CreateVerbosityOption() } .Hidden() .Runs(typeof(ConvertXmlCommand).GetMethod(nameof(ConvertXmlCommand.Run)))) .AddCommand( new Command("convertgitree", "[WIP] Converts Gitree directory structure into BattleScribe XML files.") { new Option(new[] { "-s", "--source" }, "Root directory of Gitree to convert.") { Argument = new Argument <DirectoryInfo>(GetCurrentDirectoryInfo).ExistingOnly() }, new Option(new[] { "-o", "--output" }, "Directory in which to save XML files.") { Argument = new Argument <DirectoryInfo>(GetCurrentDirectoryInfo).LegalFilePathsOnly() }, CreateVerbosityOption() } .Hidden() .Runs(typeof(ConvertGitreeCommand).GetMethod(nameof(ConvertGitreeCommand.Run)))) .AddCommand( new Command("publish", "Publishes given workspace in selected formats, by default a .bsr file.") { new Option( new[] { "-a", "--artifacts" }, "Kinds of artifacts to publish to output (multiple values allowed):" + " XML - uncompressed cat/gst XML files;" + " ZIP - zipped catz/gstz XML files;" + " INDEX - index.xml datafile index for hosting on the web;" + " BSI - index.bsi zipped datafile index for hosting on the web;" + " BSR - zipped cat/gst datafile container with index.") { Argument = new Argument <string>() { Arity = ArgumentArity.OneOrMore } .WithDefaultValue("bsr") .FromAmong(PublishCommand.ArtifactNames) }, new Option(new[] { "-s", "--source" }, "Directory in which to look for datafiles.") { Argument = new Argument <DirectoryInfo>(GetCurrentDirectoryInfo).ExistingOnly() }, new Option(new[] { "-o", "--output" }, "Directory to save artifacts to.") { Argument = new Argument <DirectoryInfo>(GetCurrentDirectoryInfo).LegalFilePathsOnly() }, new Option("--url", "Url of the index that gets included in indexes and bsr.") { Argument = new Argument <Uri>().RequireAbsoluteUrl() }, new Option( "--repo-name", "Repository name used in published indexes (includes bsr)." + " Default is name of the game system, or <source> folder name if no game system included.") { Argument = new Argument <string>() }, new Option( new[] { "-f", "--filename" }, "Filename (without extension) of the output artifacts. Default is <source> folder name.") { Argument = new Argument <string>().LegalFilePathsOnly() }, new Option("--url-only-index", "Don't include data index entries in published indexes (doesn't impact bsr index).") { Argument = new Argument <bool>() }, new Option("--additional-urls", "Additional urls of index/bsr included in published indexes (doesn't impact bsr index).") { Argument = new Argument <Uri[]>().RequireAbsoluteUrl() }, CreateVerbosityOption() } .Runs(typeof(PublishCommand).GetMethod(nameof(PublishCommand.Run)))) .Build()); }
public MainWindowViewModel(List <Task> tasks, UserGroup group) { GridWidth = false; // Set the current user CurrentUser = RunTimeContext.Context.CurrentUser; #region Lists // The list of scheduled tasks (bind to the Schedule list in UI) ScheduledList = new ObservableCollection <Schedule>(ScheduleManager.GetScheduledTask(RunTimeContext.Context.CurrentUser, RunTimeContext.Context.DatabaseContext)); // Result list (bind to the result panel in UI) ResultList = new ObservableCollection <ResultTask>(); // Property list, to use with FileLib, /!\ not implemented now :( Props = new ObservableCollection <Dictionary <string, string> >(); // Task list, with all the task, given by the loading screen as constructor parameter TaskList = tasks == null ? new ObservableCollection <Task>() : new ObservableCollection <Task>(tasks); // The list of queued tasks (bind to the queue panel in UI) QueueList = new ObservableCollection <Task>(); // The list of markets (Bind to the combobox with the list of markets in UI) MarketList = new ObservableCollection <Market>(MarketManager.GetAllMarkets(RunTimeContext.Context.DatabaseContext)); #endregion #region Selected // Set the market to the main market of the user SelectedMarket = CurrentUser.MainMarket; // Set the selected task to the first one of the list SelectedTask = FilteredTasks.FirstOrDefault(); #endregion #region User right // Those three properties are used to be bind with some UI elements like menu // If you bind the IsVisibility property of a control with one of those, only the group of person with the appropriate // rights will be able to see it // eg : Visibility="{Binding IsAdmin}" <-- only Admin level people will see // Do the user have Admin Access ? IsAdmin = (@group == UserGroup.Dev || @group == UserGroup.Admin) ? Visibility.Visible : Visibility.Collapsed; // Manager ? IsManager = @group == UserGroup.Manager ? Visibility.Visible : Visibility.Collapsed; // Or maybe a Developer ? IsDev = @group == UserGroup.Dev ? Visibility.Visible : Visibility.Collapsed; #endregion #region Commands OpenConfigCommand = new OpenConfigCommand(this); OpenScheduleCommand = new OpenScheduleCommand(this); OpenFileCommand = new OpenFileCommand(this); OpenFolderCommand = new OpenFolderCommand(this); OpenLogCommand = new OpenLogCommand(this); RunCommand = new RunTaskCommand(this); QueueCommand = new QueueTaskCommand(this); RemoveCommand = new RemoveTaskCommand(this); CloseCommand = new CloseWindowCommand(); MinimizeCommand = new MinimizeWindowCommand(); MaximizeCommand = new MaximizeWindowCommand(); LogoutCommand = new LogoutCommand(); ClearQueueCommand = new ClearQueueCommand(this); MoveDownQueueCommand = new MoveDownQueueCommand(this); MoveUpQueueCommand = new MoveUpQueueCommand(this); StartQueueCommand = new StartQueueCommand(this); AddScheduleCommand = new AddScheduleCommand(this); RemoveScheduleCommand = new RemoveScheduleCommand(this); ChangeScheduleCommand = new ChangeScheduleCommand(this); ShowAllTaskCommand = new ShowAllTaskCommand(this); ShowMarketTaskCommand = new ShowMarketTaskCommand(this); ShowInfoCommand = new ShowInfoCommand(this); ShowQueueCommand = new ShowQueueCommand(this); FilterResultCommand = new FilterResultCommand(this); ReportDevCommand = new ReportDevCommand(this); #endregion // Number of time in a row a task failed // if 3 the error window will appear automatically FailedInARow = 0; #region Hide other regions GridWidth = true; //CollapseQueue(); //CollapseGrid(); #endregion // A simple bool to see if a task is running at the moment or not TaskRunning = false; // The result filter, chaging it will change automatically the task list ResultFilter = ""; // The log List Log = new ObservableCollection <Log>(); // The list of currently scheduled tasks, use for rerun if failed and keep track of current running status CurrentlyScheduledTasks = new Dictionary <int, ScheduledTaskInfo>(); #region Timer // Create new DispatcherTimer and attach event handler to it var launchScheduleTimer = new DispatcherTimer(); launchScheduleTimer.Tick += LaunchScheduleTimer_Tick; launchScheduleTimer.Interval = new TimeSpan(0, 1, 0); launchScheduleTimer.Start(); #endregion }