Example #1
0
        private FILMANFileRecord OpenFILMANFile()
        {
            OpenFileDialog ofd = new OpenFileDialog();
            ofd.Title = "Open a FILMAN file ...";
            ofd.AddExtension = true;
            ofd.DefaultExt = ".fmn"; // Default file extension
            ofd.Filter = "FILMAN files (.fmn)|*.fmn|All files|*.*"; // Filter files by extension
            Nullable<bool> result = ofd.ShowDialog();
            if (result == false) return null;

            FILMANInputStream fmTemp;
            try
            {
                fmTemp = new FILMANInputStream(new FileStream(ofd.FileName, FileMode.Open, FileAccess.Read));
            }
            catch (Exception ex)
            {
                MessageBox.Show("Unable to read FILMAN file " + ofd.FileName + "." + Environment.NewLine + "Exception: " + ex.Message,
                    "FILMAN error", MessageBoxButton.OK, MessageBoxImage.Error);
                return null;
            }
            FILMANFileRecord ffr = new FILMANFileRecord();
            ffr.path = ofd.FileName;
            ffr.stream = fmTemp;
            //Now check to see if there is a Header file available
            string directory = Path.GetDirectoryName(ffr.path);
            IEnumerable<string> hdrFiles = Directory.EnumerateFiles(directory, "*.hdr");
            if (hdrFiles.Count() > 0) //there's a candidate Header file in this directory
            {
                HeaderFileReader headerFile = new HeaderFileReader
                    (new FileStream(hdrFiles.First(), FileMode.Open, FileAccess.Read));
                ffr.GVDictionary = headerFile.read().GroupVars; //save the GroupVar dictionary
                headerFile.Dispose(); //closes file
            }
            FMFileListItem fli = new FMFileListItem(ffr);
            ffr.FMFilePointSelector = fli;
            fli.ErrorCheckReq += new EventHandler(checkForError);
            checkForError(fli, null);
            return ffr;
        }
Example #2
0
        private void Select_Click(object sender, RoutedEventArgs e)
        {
            OpenFileDialog ofd = new OpenFileDialog();
            ofd.Title = "Open a FILMAN file ...";
            ofd.AddExtension = true;
            ofd.DefaultExt = ".fmn"; // Default file extension
            ofd.Filter = "FILMAN files (.fmn)|*.fmn|All files|*.*"; // Filter files by extension
            Nullable<bool> result = ofd.ShowDialog();
            if (result == false) return;

            //Open file and make sure it's valid before changing any of the file data, so there's something to fall back to
            FILMANInputStream fmTemp;
            try
            {
                fmTemp = new FILMANInputStream(new FileStream(ofd.FileName, FileMode.Open, FileAccess.Read));
            }
            catch (Exception ex)
            {
                MessageBox.Show("Unable to access FILMAN file " + ofd.FileName + "." + Environment.NewLine + "Exception: " + ex.Message,
                    "FILMAN error", MessageBoxButton.OK, MessageBoxImage.Error);
                return;
            }
            FILMANRecord fmr = fmTemp.read(); //Test read the first record to make sure there is at least one there
            if (fmr == null)
            {
                MessageBox.Show("No records in FILMAN file " + ofd.FileName, "FILMAN error", MessageBoxButton.OK, MessageBoxImage.Error);
                return;
            }

            //Now we can update the user interface with the file particulars
            fm = fmTemp; // don't update until all possible errors have passed
            FMFileName = System.IO.Path.GetFileName(ofd.FileName);
            FileName.Text = FMFileName;
            Directory.Text = System.IO.Path.GetDirectoryName(ofd.FileName);
            FileInfo fi = new FileInfo(ofd.FileName);
            CreationDate.Text = fi.LastWriteTime.ToString("dddd, d MMM yyyy");
            Size.Text = (fi.Length / 1024).ToString("#,##0KB");
            gp.Title = "FILMAN file: " + FMFileName;
            StringBuilder s = new StringBuilder(fm.Description(0));
            for (int i = 1; i < 6; i++)
            {
                string str = fm.Description(i);
                if (str != null && str != "")
                    s.Append(Environment.NewLine + str);
            }
            this.HeaderInfo.Text = s.ToString();
            double graphletMax = fmr.Max();
            double graphletMin = fmr.Min();
            if (fm.IS > 0)
            {
                T.IsEnabled = true;
                F.IsEnabled = true;
                if (graphletMin >= 0D || graphletMin > -graphletMax * 0.01D) { Pos.IsChecked = true; F.IsChecked = true; }
                else { PosNeg.IsChecked = true; T.IsChecked = true; }
                _tmaxMax=(double)fm.ND / fm.IS;
                Tmin.Text = "0.0";
                Tmax.Text = _tmaxMax.ToString("0.0");
                _fmaxMax=(double)fm.IS;
                Fmin.Text = "0.0";
                Fmax.Text = _fmaxMax.ToString("0.0");
            }
            else
            {
                P.IsChecked = true;
                T.IsEnabled = false;
                F.IsEnabled = false;
                if (graphletMin >= 0D || graphletMin > -graphletMax * 0.01D) Pos.IsChecked = true;
                else PosNeg.IsChecked = true;
            }
            Pmin.Text = "1";
            Pmax.Text = fm.ND.ToString("0");
            DecimationBox.Text = "1";
            OffsetBox.Text = "0";
            OffsetBox.IsEnabled = false;
            IncludeY.IsChecked = true;
            yAxis.Text = "Y-axis";
            scaleToRecsetMax.IsChecked = true;
            allYMaxValue.Text = Math.Max(graphletMax, -graphletMin).ToString("G5");
            ChannelList.Text = "1-" + fm.NC.ToString("0");
            AllChannels.IsChecked = true;
            None.IsChecked = true;
            Aspect.Text = "1.0";
            DefaultLocation.IsChecked = false;
        }