Пример #1
0
        /// <summary>
        /// Reads an OGAMA import settings file.
        /// </summary>
        /// <param name="filePath">A <see cref="string"/> with the path to the
        /// OGAMA import settings xml file.</param>
        /// <returns><strong>True</strong> if successful,
        /// otherwise <strong>null</strong>.</returns>
        private ASCIISettings Deserialize(string filePath)
        {
            try
            {
                ASCIISettings settings = new ASCIISettings();

                using (FileStream fs = new FileStream(filePath, FileMode.Open))
                {
                    // Create an instance of the XmlSerializer class;
                    // specify the type of object to be deserialized
                    XmlSerializer serializer = new XmlSerializer(typeof(ASCIISettings));

                    //////* If the XML document has been altered with unknown
                    //////nodes or attributes, handle them with the
                    //////UnknownNode and UnknownAttribute events.*/
                    ////serializer.UnknownNode += new XmlNodeEventHandler(serializer_UnknownNode);
                    ////serializer.UnknownAttribute += new XmlAttributeEventHandler(serializer_UnknownAttribute);

                    /* Use the Deserialize method to restore the object's state with
                     * data from the XML document. */
                    settings = (ASCIISettings)serializer.Deserialize(fs);
                }

                return(settings);
            }
            catch (Exception ex)
            {
                ExceptionMethods.HandleException(ex);
            }

            return(null);
        }
Пример #2
0
 /// <summary>
 ///   Initializes static members of the ImportFixations class.
 /// </summary>
 static ImportFixations()
 {
   SubjectList = new List<SubjectsData>();
   TrialList = new List<TrialsData>();
   FixationDataList = new List<FixationData>();
   detectionSetting = new DetectionSettings();
   asciiSetting = new ASCIISettings();
 }
Пример #3
0
    ///////////////////////////////////////////////////////////////////////////////
    // Construction and Initializing methods                                     //
    ///////////////////////////////////////////////////////////////////////////////
    #region CONSTRUCTION

    /// <summary>
    /// Initializes static members of the ImportOgamaData class.
    /// </summary>
    static ImportOgamaData()
    {
      subjectList = new List<SubjectsData>();
      trialList = new List<TrialsData>();
      trialEventsList = new List<TrialEventsData>();
      rawDataList = new List<RawData>();
      asciiSettings = new ASCIISettings();
    }
Пример #4
0
        ///////////////////////////////////////////////////////////////////////////////
        // Construction and Initializing methods                                     //
        ///////////////////////////////////////////////////////////////////////////////

        #region CONSTRUCTION

        /// <summary>
        /// Initializes a new instance of the ImportImagesDialog class.
        /// </summary>
        /// <param name="newAsciiSettings">Ref. The <see cref="ASCIISettings"/> to use.</param>
        /// <param name="newDetectionSettings">Ref. The <see cref="DetectionSettings"/> to use.</param>
        public ImportImagesDialog(ref ASCIISettings newAsciiSettings, ref DetectionSettings newDetectionSettings)
        {
            this.InitializeComponent();
            this.numberOfImportLines    = 20000;
            this.detectionSetting       = newDetectionSettings;
            this.asciiSetting           = newAsciiSettings;
            this.imagesImportRows       = new List <string[]>();
            this.imagefileColumnHeaders = new List <string>();
        }
Пример #5
0
        ///////////////////////////////////////////////////////////////////////////////
        // Construction and Initializing methods                                     //
        ///////////////////////////////////////////////////////////////////////////////
        #region CONSTRUCTION

        /// <summary>
        /// Initializes a new instance of the ImportTrialsDialog class.
        /// </summary>
        /// <param name="newAsciiSettings">Ref. The <see cref="ASCIISettings"/> to use.</param>
        /// <param name="newDetectionSettings">Ref. The <see cref="DetectionSettings"/> to use.</param>
        public ImportTrialsDialog(ref ASCIISettings newAsciiSettings, ref DetectionSettings newDetectionSettings)
        {
            this.InitializeComponent();
            this.numberOfImportLines       = 20000;
            this.detectionSetting          = newDetectionSettings;
            this.asciiSetting              = newAsciiSettings;
            this.trialImportRows           = new List <string[]>();
            this.trialColumnHeaders        = new List <string>();
            this.cbbTimeUnit.SelectedIndex = 1;
        }
Пример #6
0
    /// <summary>
    /// Reads an OGAMA import settings file.
    /// </summary>
    /// <param name="filePath">
    /// A <see cref="string"/> with the path to the
    ///   OGAMA import settings xml file.
    /// </param>
    private static void DeserializeSettings(string filePath)
    {
      try
      {
        using (var fs = new FileStream(filePath, FileMode.Open))
        {
          // Create an instance of the XmlSerializer class;
          // specify the type of object to be deserialized 
          var serializer = new XmlSerializer(typeof(MergedSettings));

          /* Use the Deserialize method to restore the object's state with
          data from the XML document. */
          var settings = (MergedSettings)serializer.Deserialize(fs);

          asciiSetting = settings.AsciiSetting;
          detectionSetting = settings.DetectionSetting;
        }
      }
      catch (Exception ex)
      {
        ExceptionMethods.HandleException(ex);
      }
    }
Пример #7
0
    /// <summary>
    ///   Starts a multiple dialog routine (fixations import assistant)
    ///   for reading fixation log files into OGAMAs database.
    /// </summary>
    public static void Start()//(MainForm mainWindow)
    {
      try
      {
        asciiSetting = new ASCIISettings();
        detectionSetting = new DetectionSettings();

        var objfrmImportAssistent = new ImportFixationsAssistentDialog();
        if (objfrmImportAssistent.ShowDialog() == DialogResult.OK)
        {
        OpenFile:
          if (asciiSetting.FileDialog.ShowDialog() == DialogResult.OK)
          {
            // Save filename
            string filename = asciiSetting.FileDialog.FileName;

            // Ask the user to use a settings file
            // and loads it into the importsettings, if true.
            AskforUsingSettingsFile();

            // Save import file
            asciiSetting.Filename = filename;

            // Set import mode
            detectionSetting.ImportType = ImportTypes.Fixations;

            var objfrmImportReadFile = new ImportParseFileDialog(ref asciiSetting);
          ReadFile:
            DialogResult resultRawData = objfrmImportReadFile.ShowDialog();
            if (resultRawData == DialogResult.OK)
            {
              var objfrmImportFixationsAssignColumns = new ImportFixationsAssignColumnsDialog();

            MakeAssignments:
              DialogResult resultAssign = objfrmImportFixationsAssignColumns.ShowDialog();
              if (resultAssign == DialogResult.OK)
              {
                var objfrmImportTrials = new ImportTrialsDialog(ref asciiSetting, ref detectionSetting);

                //CheckTrials:
                DialogResult resultTrials = objfrmImportTrials.ShowDialog();
                if (resultTrials == DialogResult.OK)
                {
                  //var objfrmImportImages = new ImportImagesDialog(ref asciiSetting, ref detectionSetting);

                  //DialogResult resultImages = objfrmImportImages.ShowDialog();
                  //if (resultImages == DialogResult.OK)
                  //{
                  if (InformationDialog.Show(
                    "Save ?",
                    "Would you like to save the import settings ?",
                    true,
                    MessageBoxIcon.Question) == DialogResult.Yes)
                  {
                    SaveImportSettings();
                  }

                  // Inform user about deletion.
                  string cleanupMessage = "If you continue the import process, " + Environment.NewLine + "all existing "
                                   + "gaze fixation data is deleted before the imported fixations "
                                   + "are written to the database.";
                  if (MessageBox.Show(
                    cleanupMessage,
                    Application.ProductName,
                    MessageBoxButtons.OKCancel,
                    MessageBoxIcon.Information) == DialogResult.Cancel)
                  {
                    return;
                  }

                  // Show import splash window
                  asciiSetting.WaitingSplash.RunWorkerAsync();

                  // Give some time to show the splash ...
                  Application.DoEvents();

                  // Read log file again, but complete
                  if (!GenerateOgamaFixationDataList(-1))
                  {
                    asciiSetting.WaitingSplash.CancelAsync();
                    return;
                  }

                  // Generate the trials
                  GenerateOgamaSubjectAndTrialList();

                  // Save the import into ogamas database and the mdf file.
                  var successful = SaveImportIntoTablesAndDB();

                  //// Create slideshow trials
                  //ImportRawData.GenerateOgamaSlideshowTrials(detectionSetting, mainWindow);

                  // Import has finished.
                  asciiSetting.WaitingSplash.CancelAsync();

                  // Inform user about success.
                  if (successful)
                  {
                    string message = "Fixation data successfully written to database.";// + Environment.NewLine +
                    //"Please don´t forget to move the stimuli images to the SlideResources subfolder" +
                    //"of the experiment, otherwise no images will be shown.";
                    ExceptionMethods.ProcessMessage("Success", message);
                  }
                  else
                  {
                    string message = "Import had errors. Some or all of the import data " +
                      "could not be written the database.";
                    ExceptionMethods.ProcessErrorMessage(message);
                  }
                  //}
                  //else if (resultImages == DialogResult.Cancel)
                  //{
                  //  goto CheckTrials;
                  //}
                }
                else if (resultTrials == DialogResult.Cancel)
                {
                  goto MakeAssignments;
                }
                else if (resultTrials == DialogResult.Abort)
                {

                }
              }
              else if (resultAssign == DialogResult.Cancel)
              {
                goto ReadFile;
              }
            }
            else if (resultRawData == DialogResult.Cancel)
            {
              goto OpenFile;
            }
          }
        }
      }
      catch (Exception ex)
      {
        string message = "Something failed during import." + Environment.NewLine
                         + "Please try again with other settings." + Environment.NewLine + "Error: " + ex.Message;
        ExceptionMethods.ProcessErrorMessage(message);

        if (asciiSetting.WaitingSplash.IsBusy)
        {
          asciiSetting.WaitingSplash.CancelAsync();
        }
      }
    }
Пример #8
0
    ///////////////////////////////////////////////////////////////////////////////
    // Construction and Initializing methods                                     //
    ///////////////////////////////////////////////////////////////////////////////

    #region CONSTRUCTION

    /// <summary>
    /// Initializes a new instance of the ImportImagesDialog class.
    /// </summary>
    /// <param name="newAsciiSettings">Ref. The <see cref="ASCIISettings"/> to use.</param>
    /// <param name="newDetectionSettings">Ref. The <see cref="DetectionSettings"/> to use.</param>
    public ImportImagesDialog(ref ASCIISettings newAsciiSettings, ref DetectionSettings newDetectionSettings)
    {
      this.InitializeComponent();
      this.numberOfImportLines = 20000;
      this.detectionSetting = newDetectionSettings;
      this.asciiSetting = newAsciiSettings;
      this.imagesImportRows = new List<string[]>();
      this.imagefileColumnHeaders = new List<string>();
    }
Пример #9
0
    ///////////////////////////////////////////////////////////////////////////////
    // Public methods                                                            //
    ///////////////////////////////////////////////////////////////////////////////
    #region PUBLICMETHODS

    /// <summary>
    /// Opens a file dialog to choose the ogamas export file that 
    /// should be imported into the programs database.
    /// </summary>
    public static void Start()
    {
      try
      {
        asciiSettings = new ASCIISettings();

        if (asciiSettings.FileDialog.ShowDialog() == DialogResult.OK)
        {
          // Save filename
          string filename = asciiSettings.FileDialog.FileName;

          // Save import file
          asciiSettings.Filename = filename;

          NumberFormatInfo nfi = CultureInfo.CurrentCulture.NumberFormat;

          // Set locale separator character
          asciiSettings.DecimalSeparatorCharacter = nfi.NumberDecimalSeparator.ToCharArray()[0];

          // Show import splash window
          asciiSettings.WaitingSplash.RunWorkerAsync();

          // Give some time to show the splash ...
          Application.DoEvents();

          // Generate the import tables
          GenerateSubjectTrialRawdataList();

          // Save the import into ogamas database and the mdf file.
          var successful = SaveImportIntoTablesAndDB();

          // Import has finished.
          asciiSettings.WaitingSplash.CancelAsync();

          // Inform user about success.
          if (successful)
          {
            ExceptionMethods.ProcessMessage("Success", "Import data successfully written to database.");
          }
          else
          {
            string message = "Import had errors. Some or all of the import data " +
              "could not be written the database.";
            ExceptionMethods.ProcessErrorMessage(message);
          }
        }
      }
      catch (Exception ex)
      {
        string message = "Something failed during import." + Environment.NewLine
          + "Please try again with other settings. " + Environment.NewLine +
          "Error: " + ex.Message;
        ExceptionMethods.ProcessErrorMessage(message);

        if (asciiSettings.WaitingSplash.IsBusy)
        {
          asciiSettings.WaitingSplash.CancelAsync();
        }
      }
    }
Пример #10
0
    ///////////////////////////////////////////////////////////////////////////////
    // Construction and Initializing methods                                     //
    ///////////////////////////////////////////////////////////////////////////////
    #region Constructors and Destructors

    /// <summary>
    ///   Initializes static members of the ImportRawData class.
    /// </summary>
    static ImportRawData()
    {
      SubjectList = new List<SubjectsData>();
      TrialList = new List<TrialsData>();
      RawDataList = new List<RawData>();

      detectionSetting = new DetectionSettings();
      asciiSetting = new ASCIISettings();
    }
Пример #11
0
        ///////////////////////////////////////////////////////////////////////////////
        // Construction and Initializing methods                                     //
        ///////////////////////////////////////////////////////////////////////////////
        #region CONSTRUCTION

        /// <summary>
        /// Initializes a new instance of the ImportParseFileDialog class.
        /// </summary>
        /// <param name="importSettings">ref. A <see cref="ASCIISettings"/>
        /// with the settings to use and update.</param>
        public ImportParseFileDialog(ref ASCIISettings importSettings)
        {
            this.InitializeComponent();
            this.asciiSetting        = importSettings;
            this.numberOfImportLines = 1000;
        }
Пример #12
0
    ///////////////////////////////////////////////////////////////////////////////
    // Construction and Initializing methods                                     //
    ///////////////////////////////////////////////////////////////////////////////
    #region CONSTRUCTION

    /// <summary>
    /// Initializes a new instance of the ImportParseFileDialog class.
    /// </summary>
    /// <param name="importSettings">ref. A <see cref="ASCIISettings"/>
    /// with the settings to use and update.</param>
    public ImportParseFileDialog(ref ASCIISettings importSettings)
    {
      this.InitializeComponent();
      this.asciiSetting = importSettings;
      this.numberOfImportLines = 1000;
    }
Пример #13
0
    /// <summary>
    /// Reads an OGAMA import settings file.
    /// </summary>
    /// <param name="filePath">A <see cref="string"/> with the path to the 
    /// OGAMA import settings xml file.</param>
    /// <returns><strong>True</strong> if successful, 
    /// otherwise <strong>null</strong>.</returns>
    private ASCIISettings Deserialize(string filePath)
    {
      try
      {
        ASCIISettings settings = new ASCIISettings();

        using (FileStream fs = new FileStream(filePath, FileMode.Open))
        {
          // Create an instance of the XmlSerializer class;
          // specify the type of object to be deserialized 
          XmlSerializer serializer = new XmlSerializer(typeof(ASCIISettings));

          //////* If the XML document has been altered with unknown 
          //////nodes or attributes, handle them with the 
          //////UnknownNode and UnknownAttribute events.*/
          ////serializer.UnknownNode += new XmlNodeEventHandler(serializer_UnknownNode);
          ////serializer.UnknownAttribute += new XmlAttributeEventHandler(serializer_UnknownAttribute);

          /* Use the Deserialize method to restore the object's state with
          data from the XML document. */
          settings = (ASCIISettings)serializer.Deserialize(fs);
        }

        return settings;
      }
      catch (Exception ex)
      {
        ExceptionMethods.HandleException(ex);
      }

      return null;
    }
Пример #14
0
    ///////////////////////////////////////////////////////////////////////////////
    // Construction and Initializing methods                                     //
    ///////////////////////////////////////////////////////////////////////////////
    #region CONSTRUCTION

    /// <summary>
    /// Initializes a new instance of the ImportTrialsDialog class.
    /// </summary>
    /// <param name="newAsciiSettings">Ref. The <see cref="ASCIISettings"/> to use.</param>
    /// <param name="newDetectionSettings">Ref. The <see cref="DetectionSettings"/> to use.</param>
    public ImportTrialsDialog(ref ASCIISettings newAsciiSettings, ref DetectionSettings newDetectionSettings)
    {
      this.InitializeComponent();
      this.numberOfImportLines = 20000;
      this.detectionSetting = newDetectionSettings;
      this.asciiSetting = newAsciiSettings;
      this.trialImportRows = new List<string[]>();
      this.trialColumnHeaders = new List<string>();
      this.cbbTimeUnit.SelectedIndex = 1;
    }
Пример #15
0
    ///////////////////////////////////////////////////////////////////////////////
    // Construction and Initializing methods                                     //
    ///////////////////////////////////////////////////////////////////////////////
    #region Constructors and Destructors

    /// <summary>
    ///   Initializes static members of the ImportAOI class.
    /// </summary>
    static ImportAOI()
    {
      AOIDataList = new List<AOIData>();
      AOISettings = new AOIDataSettings();
      asciiSettings = new ASCIISettings();
    }