示例#1
0
        private void SaveProject()
        {
            // commit data to CurrentProject
            SaveToCurrentProject();

            bool success;

            string data = XmlHelper.Serialize(CurrentProject, out success);

            if (success)
            {
                // actual save
                File.WriteAllText(CurrentProject.DataFile, data);

                MessageBox.Show(
                    "Project saved.", "Save",
                    MessageBoxButtons.OK, MessageBoxIcon.Information);

                StamperLiveData.SendProjectChanged();
            }
            else
            {
                MessageBox.Show(
                    "A problem occured serializing the project data.",
                    "Save error",
                    MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
        }
示例#2
0
        private void DrivesForm_Load(object sender, EventArgs e)
        {
            LoadModeFromLiveData();
            LoadSessionLogFromLiveData();

            DriveStamperUI.Instance.OnActivityChanged += ActivityChanged;

            StamperLiveData.OnProjectChanged    += ProjectChanged;
            StamperLiveData.OnSessionLogChanged += SessionLogChanged;
            StamperLiveData.SendProjectChanged();

            StamperLiveData.OnDrivesUpdated += DrivesUpdated;
            DriveStamperUI.Instance.UpdateDrives();
        }
        protected override void OnLoad(EventArgs e)
        {
            Visible       = false; // Hide form window.
            ShowInTaskbar = false; // Remove from taskbar.

            base.OnLoad(e);

            StamperLiveData.Log("Application Started.");

            // load previous project or start new project
            InitialiseData();

            // show the drives form
            OnDrives(null, null);
        }
 public static void LoadProject(string file)
 {
     if (string.IsNullOrWhiteSpace(file) || !File.Exists(file))
     {
         StamperLiveData.Project = new Project();
         StamperLiveData.Project.SetDefaults();
         StamperLiveData.SendProjectChanged();
         StamperLiveData.SetLastProjectName(string.Empty);
     }
     else
     {
         StamperLiveData.Project = XmlHelper.Deserialize <Project>(File.ReadAllText(file));
         StamperLiveData.SendProjectChanged();
         StamperLiveData.SetLastProjectName(file);
     }
 }
        public void StampDrive(DriveInfo drive)
        {
            try
            {
                if (OnActivityChanged != null)
                {
                    OnActivityChanged(eActivity.Stamping);
                }

                IEnumerable <string> failiures = null;
                bool success = false;

                string msg = "Stamping drive: " + drive.Name;
                StamperLiveData.Log(msg);
                DriveStamperUI.ShowMessage(msg, ToolTipIcon.Info);

                success = Stamper.Stamp(drive, StamperLiveData.Project, out failiures);

                if (success)
                {
                    string msgOk = "Drive stamped: " + drive.Name;
                    StamperLiveData.Log(msgOk);
                    DriveStamperUI.ShowMessage(msgOk, ToolTipIcon.Info);
                }
                else
                {
                    string msgFail = "Drive not succesfully stamped:\n" + string.Join("\n", (failiures ?? new List <string>()).ToArray());
                    StamperLiveData.Log(msgFail);
                    DriveStamperUI.ShowMessage(msgFail, ToolTipIcon.Warning);
                }
            }
            catch (Exception e)
            {
                string msgFail = "Unexpected exception:\n" + e.Message;
                StamperLiveData.Log(msgFail);
                DriveStamperUI.ShowMessage(msgFail, ToolTipIcon.Warning);
            }
            finally
            {
                UpdateDrives();
                if (OnActivityChanged != null)
                {
                    OnActivityChanged(eActivity.None);
                }
            }
        }
        public void UpdateDrives()
        {
            StamperLiveData.ObservedDriveState.Clear();

            var drives = DriveHelper.FindDrives(StamperLiveData.Project);

            foreach (var drive in drives)
            {
                bool done  = Stamper.CheckDrive(drive, StamperLiveData.Project);
                bool space = Stamper.DriveHasSpace(drive, StamperLiveData.Project);

                eDriveState state = done ? eDriveState.Stamped : (space ? eDriveState.Ready : eDriveState.NoSpace);

                StamperLiveData.ObservedDriveState.Add(drive, state);
            }

            StamperLiveData.SendDrivesUpdate();
        }
        private void OnDriveArrived(object sender, DriveDetectorEventArgs e)
        {
            e.HookQueryRemove = false;
            UpdateDrives();

            // match the drive to a key already in the observed state
            var drive = StamperLiveData.ObservedDriveState.Keys.Where(k => k.Name == new DriveInfo(e.Drive).Name).FirstOrDefault();

            if (drive != null)
            {
                StamperLiveData.Log("Drive detected: " + e.Drive + " - in state: " + StamperLiveData.ObservedDriveState[drive].ToString());
            }
            else
            {
                StamperLiveData.Log("Drive detected: " + e.Drive + " - state not detected.");
            }

            if (drive != null && StamperLiveData.ObservedDriveState[drive] == eDriveState.Ready)
            {
                if (StamperLiveData.Mode == eStampMode.Automatic)
                {
                    StampDrive(drive);
                }
                if (StamperLiveData.Mode == eStampMode.SemiAutomatic)
                {
                    var answer = MessageBox.Show("Stamp drive: " + drive.Name + "?", "Drive detected", MessageBoxButtons.YesNo, MessageBoxIcon.Question);

                    if (answer == System.Windows.Forms.DialogResult.Yes)
                    {
                        StampDrive(drive);
                    }
                }

                UpdateDrives();
            }
        }
        private static void InitialiseData()
        {
            string file = StamperLiveData.GetLastProjectFilename();

            LoadProject(file);
        }
 /// <summary>
 /// Called by DriveDetector after removable device has been unplugged
 /// </summary>
 /// <param name="sender"></param>
 /// <param name="e"></param>
 private void OnDriveRemoved(object sender, DriveDetectorEventArgs e)
 {
     StamperLiveData.Log("Drive removed: " + e.Drive);
     UpdateDrives();
 }