示例#1
0
 /// <summary>
 /// Called on UI bus message.
 /// </summary>
 /// <param name="message">The message.</param>
 public void OnMessage(ApplicationMessage <UIBusMessageTypes> message)
 {
     try {
         switch (message.MessageType)
         {
         case UIBusMessageTypes.InformationRequest: {
             InformationRequest irqt = message.Payload as InformationRequest;
             if (irqt != null)
             {
                 WorkspaceViewModel vm = irqt.Tag as WorkspaceViewModel;
                 if (vm != null)
                 {
                     PopupView pw = new PopupView(vm);
                     pw.Owner = this.MainWindow;
                     pw.WindowStartupLocation = WindowStartupLocation.CenterOwner;
                     if (pw.ShowDialog() == true)
                     {
                         irqt.CompleteMethod(irqt);
                     }
                 }
                 else if (irqt.ResultType == typeof(System.IO.File))
                 {
                     SelectFileName(irqt);
                 }
             }
         }
         break;
         }
     }
     catch (Exception x) {
         AppContext.Current.LogTechError(string.Format("Technical error {0}: {1}", x.GetType().Name, x.Message), x);
         System.Diagnostics.Debug.WriteLine(x.GetDetails());
     }
 }
示例#2
0
        ///<summary>Execute Open project Command</summary>
        void DoOpenProjectCmd(object prm = null)
        {
            FileAccessRequest far = new FileAccessRequest();

            far.IsForReading         = true;
            far.IsMultiSelect        = false;
            far.ExtensionFilter      = "Media Rat project (*.xmr)|*.xmr|Media Rat project (*.xmv)|*.xmv|XML Documents (*.xml)|*.xml|All files (*.*)|*.*";
            far.ExtensionFilterIndex = 1;
            InformationRequest irq = new InformationRequest()
            {
                ResultType = typeof(System.IO.File),
                Prompt     = "Select Media Rat project file",
                Tag        = far
            };
            string sourceFileName = null;

            irq.CompleteMethod = (rq) => {
                if (rq.Result != null)
                {
                    sourceFileName = rq.Result.ToString();
                }
            };
            UIBus uiBus = AppContext.Current.GetServiceViaLocator <UIBus>();

            uiBus.Send(new UIMessage(this, UIBusMessageTypes.InformationRequest, irq));
            OpenFile(sourceFileName);
        }
示例#3
0
        ///<summary>Execute Add Source Command</summary>
        void DoAddSrcCmd(object prm = null)
        {
            this.Status.Clear();
            FileAccessRequest far = new FileAccessRequest();

            far.IsForReading         = true;
            far.IsMultiSelect        = false;
            far.ExtensionFilter      = "Video files (*.mts;*.mp4;*.mov;*.avi)|*.mts;*.mp4;*.mov;*.avi|Audio Files (*.mp3;*.m4a)|*.mp3;*.m4a|All files (*.*)|*.*";
            far.ExtensionFilterIndex = 1;
            InformationRequest irq = new InformationRequest()
            {
                ResultType = typeof(System.IO.File),
                Prompt     = "Select source media file",
                Tag        = far
            };
            string sourceFileName = null;

            irq.CompleteMethod = (rq) => {
                if (rq.Result != null)
                {
                    sourceFileName = rq.Result.ToString();
                }
            };
            UIBus uiBus = AppContext.Current.GetServiceViaLocator <UIBus>();

            uiBus.Send(new UIMessage(this, UIBusMessageTypes.InformationRequest, irq));
            AddMediaSource(sourceFileName);
        }
示例#4
0
 ///<summary>Execute Export media sheet Command</summary>
 void DoExportMediaSheetCmd(object prm = null)
 {
     try {
         FileAccessRequest far = new FileAccessRequest();
         far.IsForReading         = false;
         far.IsMultiSelect        = false;
         far.ExtensionFilter      = "XML Documents (*.xml)|*.xml|All files (*.*)|*.*";
         far.ExtensionFilterIndex = 1;
         far.SuggestedFileName    = "MyProject.xml";
         InformationRequest irq = new InformationRequest()
         {
             ResultType = typeof(System.IO.File),
             Prompt     = "Save as XML Media List file",
             Tag        = far
         };
         string           fileName = null;
         List <MediaFile> src      = new List <MediaFile>(this.GetSelectedMedia()); // Get the work set
         irq.CompleteMethod = (rq) => {
             if (rq.Result != null)
             {
                 fileName = rq.Result.ToString();
             }
         };
         UIBus uiBus = AppContext.Current.GetServiceViaLocator <UIBus>();
         uiBus.Send(new UIMessage(this, UIBusMessageTypes.InformationRequest, irq));
         if (fileName != null)
         {
             XElement xrt = new XElement("mediaList",
                                         new XAttribute(XNames.xaName, this.Project.Title),
                                         new XAttribute("timestamp", DateTime.Now));
             XDocument xdc = new XDocument(new XDeclaration("1.0", Encoding.UTF8.EncodingName, null), xrt);
             XElement  xr;
             foreach (var mf in src)
             {
                 if (null != (xr = mf.GetMediaListEntry()))
                 {
                     xrt.Add(xr);
                 }
             }
             xdc.Save(fileName);
             this.Status.SetPositive(string.Format("Media List file {0} has been created.", fileName));
         }
     }
     catch (BizException bx) {
         this.Status.SetError(bx.Message);
     }
     catch (Exception x) {
         this.Status.SetError(x.ToShortMsg("Save Media List"));
     }
 }
示例#5
0
 ///<summary>Execute Export to Movie Maker Project Command</summary>
 void DoMovMakerProjectCmd(object prm = null)
 {
     try {
         FileAccessRequest far = new FileAccessRequest();
         far.IsForReading         = false;
         far.IsMultiSelect        = false;
         far.ExtensionFilter      = "Movie Maker project (*.wlmp)|*.wlmp|XML Documents (*.xml)|*.xml|All files (*.*)|*.*";
         far.ExtensionFilterIndex = 1;
         far.SuggestedFileName    = "MyProject.wlmp";
         InformationRequest irq = new InformationRequest()
         {
             ResultType = typeof(System.IO.File),
             Prompt     = "Save as Movie Maker Project file",
             Tag        = far
         };
         string fileName = null;
         irq.CompleteMethod = (rq) => {
             if (rq.Result != null)
             {
                 fileName = rq.Result.ToString();
             }
         };
         UIBus uiBus = AppContext.Current.GetServiceViaLocator <UIBus>();
         uiBus.Send(new UIMessage(this, UIBusMessageTypes.InformationRequest, irq));
         if (fileName != null)
         {
             MovieMakerHelper.MovieOptions options = new MovieMakerHelper.MovieOptions()
             {
                 ImgDisplayTime = 7,
                 TargetFileName = fileName,
                 Name           = this.Project.Title,
                 MediaFiles     = new List <MediaFile>(this.GetSelectedMedia())
             };
             MovieMakerHelper mmHelper = new MovieMakerHelper(options);
             mmHelper.CreateMMakerProject().Save(fileName);
             this.Status.SetPositive(string.Format("MovieMaker project file {0} has been created.", fileName));
         }
     }
     catch (BizException bx) {
         this.Status.SetError(bx.Message);
     }
     catch (Exception x) {
         this.Status.SetError(string.Format("Faield to save Movie Maker project. {0}: {1}", x.GetType().Name, x.Message), x);
     }
 }
示例#6
0
        void SelectFileName(InformationRequest request)
        {
            FileAccessRequest far = (FileAccessRequest)request.Tag;

            if (far.IsForReading)
            {
                OpenFileDialog ofd = new OpenFileDialog()
                {
                    Filter      = far.ExtensionFilter,
                    Multiselect = far.IsMultiSelect
                };
                if (far.ExtensionFilterIndex > 0)
                {
                    ofd.FilterIndex = far.ExtensionFilterIndex;
                }
                if (ofd.ShowDialog() == true)
                {
                    request.Result = ofd.FileName;
                    request.CompleteMethod(request);
                }
            }
            else
            {
                SaveFileDialog sfd = new SaveFileDialog()
                {
                    DefaultExt = string.IsNullOrEmpty(far.SuggestedFileName) ? string.Empty : System.IO.Path.GetExtension(far.SuggestedFileName),
                    Filter     = far.ExtensionFilter
                };
                if (far.ExtensionFilterIndex > 0)
                {
                    sfd.FilterIndex = far.ExtensionFilterIndex;
                }
                if (sfd.ShowDialog() == true)
                {
                    //Func<Stream> openWriteStream= () => sfd.OpenFile();
                    request.Result = sfd.FileName;
                    request.CompleteMethod(request);
                }
            }
        }
示例#7
0
        void SaveProject(VideoProject prj, bool askAltName = false)
        {
            if (!string.IsNullOrEmpty(prj.ProjectFileName) && !askAltName)
            {
                prj.Save(prj.ProjectFileName);
                return;
            }
            FileAccessRequest far = new FileAccessRequest();

            far.IsForReading         = false;
            far.IsMultiSelect        = false;
            far.ExtensionFilter      = "Media Rat Video Project (*.xmv)|*.xmv|XML Documents (*.xml)|*.xml|All files (*.*)|*.*";
            far.ExtensionFilterIndex = 1;
            far.SuggestedFileName    = "MyProject.xmv";
            InformationRequest irq = new InformationRequest()
            {
                ResultType = typeof(System.IO.File),
                Prompt     = "Save project file",
                Tag        = far
            };
            string fileName = null;

            irq.CompleteMethod = (rq) => {
                if (rq.Result != null)
                {
                    fileName = rq.Result.ToString();
                }
            };
            UIBus uiBus = AppContext.Current.GetServiceViaLocator <UIBus>();

            uiBus.Send(new UIMessage(this, UIBusMessageTypes.InformationRequest, irq));
            if (fileName != null)
            {
                prj.Save(fileName);
            }
        }