Exemple #1
0
        private void Mixer_Load(object sender, EventArgs e)
        {
            MixerControl mixer = new MixerControl();

            mixer.Dock = DockStyle.Fill;
            this.Controls.Add(mixer);
        }
Exemple #2
0
        public void UpdateConnections(MixerControl mixerCtrl)
        {
            string name = mixerCtrl.Mixer.Name;

            ArrayList streamInList = new ArrayList();
            int       count        = mixerCtrl.Mixer.InletStreams.Count;

            for (int i = 0; i < count; i++)
            {
                PointOrientation streamInOrientation = MixerControl.INLET_ORIENTATION;
                int             streamInIdx          = i + 1;
                Point           streamInPoint        = mixerCtrl.GetStreamInConnectionPoint(i + 1, count);
                ConnectionPoint streamInCp           = new ConnectionPoint(streamInIdx, name, streamInPoint, streamInOrientation);
                streamInList.Add(streamInCp);
            }

            PointOrientation streamOutOrientation = MixerControl.OUTLET_ORIENTATION;
            int             streamOutIdx          = Mixer.OUTLET_INDEX;
            Point           streamOutPoint        = mixerCtrl.GetStreamOutConnectionPoint();
            ConnectionPoint streamOutCp           = new ConnectionPoint(streamOutIdx, name, streamOutPoint, streamOutOrientation);

            IEnumerator e = this.Connections.GetEnumerator();

            while (e.MoveNext())
            {
                SolvableConnection dc        = (SolvableConnection)e.Current;
                Boolean            isChanged = false;

                IEnumerator en = streamInList.GetEnumerator();
                while (en.MoveNext())
                {
                    ConnectionPoint streamInCp = (ConnectionPoint)en.Current;
                    if (dc.UnitOpPoint.Equals(streamInCp))
                    {
                        isChanged            = true;
                        dc.UnitOpPoint.Point = streamInCp.Point;
                    }
                }

                if (dc.UnitOpPoint.Equals(streamOutCp))
                {
                    isChanged            = true;
                    dc.UnitOpPoint.Point = streamOutPoint;
                }
                if (isChanged)
                {
                    this.flowsheet.Controls.Remove(dc);
                    dc.UpdateConnection();
                    this.flowsheet.Controls.Add(dc);
                    isChanged = false;
                }
            }
            //this.DrawConnections();
        }
        private void TestForm_Load(object sender, EventArgs e)
        {
            mc = new MixerControl();
            // mc.Init();
            checkBox1.Checked = mc.Mute;
            trackBar1.Value   = (int)mc.MasterVolume;

            // mo = new MouseHook();
            //  mo.SetHook();
            // mo.MouseDown += Mo_MouseDown;

            ke = new KeyboardHook();
            ke.SetHook();
            ke.KeyDown += Ke_KeyDown;

            man = new BindingManager();
            man.InitHook();

            bi = new BindingItem((new [] { Keys.ControlKey, Keys.K }).ToList(), BindingType.Press, 1, 0);
        }
Exemple #4
0
        void PopulateMixerControls(IEnumerable <XElement> ctlElements)
        {
            var xElements = ctlElements as XElement[] ?? ctlElements.ToArray();

            for (var i = 0; i < xElements.Length; i++)
            {
                var ctlElement = xElements[i];
                var name       = ctlElement.Attribute("name")?.Value;

                if (string.IsNullOrWhiteSpace(name))
                {
                    _logger.LogWarning("ctl with no name at index {CtlIndex}, skipping", i);
                    continue;
                }

                var id     = ctlElement.Attribute("id")?.Value;
                var ctlKey = $"{name}:{id ?? ""}";

                if (MixerControls.ContainsKey(ctlKey))
                {
                    if (string.IsNullOrWhiteSpace(id))
                    {
                        _logger.LogWarning("Duplicate control {CtlName}, skipping", name);
                    }
                    else
                    {
                        _logger.LogWarning("Duplicate control {CtlName} id {CtlId}, skipping", name, id);
                    }

                    continue;
                }

                var value = ctlElement.Attribute("value")?.Value;
                MixerControls[ctlKey] = new MixerControl(name, id, value);
                _logger.LogDebug("Found control {CtlName} with default value {CtlValue}", name, value);
            }
        }
Exemple #5
0
 /**
  * @brief Set the volume of a Windows Mixer Wave-Out device from
  * the 'enum' of devices.
  *
  * @param nWaveDeviceID The @a nWaveDeviceID from the #BearWare.SoundDevice
  * struct.
  * @param nControl A mixer control.
  * @param nVolume A value ranging from 0 to 65535. */
 public static bool SetWaveOutVolume(int nWaveDeviceID, MixerControl nControl, int nVolume)
 {
     return TTDLL.TT_Mixer_SetWaveOutVolume(nWaveDeviceID, nControl, nVolume);
 }
Exemple #6
0
 /**
  * @brief Mute or unmute a Windows Mixer Wave-Out device from the
  * 'enum' of devices.
  *
  * @param nWaveDeviceID The @a nWaveDeviceID from the #BearWare.SoundDevice
  * struct.
  * @param nControl A mixer control.
  * @param bMute True if device should be muted, False if it should be
  * unmuted.
  * @see WindowsMixer.GetWaveOutMute */
 public static bool SetWaveOutMute(int nWaveDeviceID, MixerControl nControl, bool bMute)
 {
     return TTDLL.TT_Mixer_SetWaveOutMute(nWaveDeviceID, nControl, bMute);
 }
Exemple #7
0
 /**
  * @brief Set the selected state of a Windows Mixer Wave-In
  * device from the 'enum' of devices.
  *
  * @param nWaveDeviceID The @a nWaveDeviceID from the #BearWare.SoundDevice
  * struct.
  * @param nControl A mixer control. */
 public static bool SetWaveInSelected(int nWaveDeviceID, MixerControl nControl)
 {
     return TTDLL.TT_Mixer_SetWaveInSelected(nWaveDeviceID, nControl);
 }
Exemple #8
0
 /**
  * @brief Get the volume of a Windows Mixer Wave-Out device from
  * the 'enum' of devices.
  *
  * @param nWaveDeviceID The @a nWaveDeviceID from the #BearWare.SoundDevice
  * struct.
  * @param nControl A mixer control.
  * @return A value ranging from 0 to 65535, or -1 on error. */
 public static int GetWaveOutVolume(int nWaveDeviceID, MixerControl nControl)
 {
     return TTDLL.TT_Mixer_GetWaveOutVolume(nWaveDeviceID, nControl);
 }
Exemple #9
0
        private Flowsheet SetFlowsheetContent(NewProcessSettings newProcessSettings, ApplicationPreferences appPrefs, ArrayList items, string flowsheetName)
        {
            Flowsheet   flowsheet = null;
            IEnumerator e         = items.GetEnumerator();

            while (e.MoveNext())
            {
                object obj = e.Current;

                if (obj is EvaporationAndDryingSystem)
                {
                    EvaporationAndDryingSystem persisted = (EvaporationAndDryingSystem)obj;
                    persisted.SetSystemFileName(flowsheetName); // call this before SetObjectData()
                    persisted.SetObjectData();
                    flowsheet = new Flowsheet(newProcessSettings, appPrefs, persisted);
                }

                else if (obj is GasStreamControl)
                {
                    GasStreamControl persistedCtrl = (GasStreamControl)obj;
                    string           solvableName  = (string)persistedCtrl.SerializationInfo.GetValue("SolvableName", typeof(string));
                    DryingGasStream  stream        = flowsheet.EvaporationAndDryingSystem.GetGasStream(solvableName);
                    GasStreamControl newCtrl       = new GasStreamControl(flowsheet, new Point(0, 0), stream);
                    newCtrl.SetObjectData(persistedCtrl.SerializationInfo, persistedCtrl.StreamingContext);
                    flowsheet.Controls.Add(newCtrl);
                }
                else if (obj is MaterialStreamControl)
                {
                    MaterialStreamControl persistedCtrl = (MaterialStreamControl)obj;
                    string solvableName           = (string)persistedCtrl.SerializationInfo.GetValue("SolvableName", typeof(string));
                    DryingMaterialStream  stream  = flowsheet.EvaporationAndDryingSystem.GetMaterialStream(solvableName);
                    MaterialStreamControl newCtrl = new MaterialStreamControl(flowsheet, new Point(0, 0), stream);
                    newCtrl.SetObjectData(persistedCtrl.SerializationInfo, persistedCtrl.StreamingContext);
                    flowsheet.Controls.Add(newCtrl);
                }
                else if (obj is DryerControl)
                {
                    DryerControl persistedCtrl = (DryerControl)obj;
                    string       solvableName  = (string)persistedCtrl.SerializationInfo.GetValue("SolvableName", typeof(string));
                    Dryer        uo            = flowsheet.EvaporationAndDryingSystem.GetDryer(solvableName);
                    DryerControl newCtrl       = new DryerControl(flowsheet, new Point(0, 0), uo);
                    newCtrl.SetObjectData(persistedCtrl.SerializationInfo, persistedCtrl.StreamingContext);
                    flowsheet.Controls.Add(newCtrl);
                }
                else if (obj is HeatExchangerControl)
                {
                    HeatExchangerControl persistedCtrl = (HeatExchangerControl)obj;
                    string               solvableName  = (string)persistedCtrl.SerializationInfo.GetValue("SolvableName", typeof(string));
                    HeatExchanger        uo            = flowsheet.EvaporationAndDryingSystem.GetHeatExchanger(solvableName);
                    HeatExchangerControl newCtrl       = new HeatExchangerControl(flowsheet, new Point(0, 0), uo);
                    newCtrl.SetObjectData(persistedCtrl.SerializationInfo, persistedCtrl.StreamingContext);
                    flowsheet.Controls.Add(newCtrl);
                }
                else if (obj is CycloneControl)
                {
                    CycloneControl persistedCtrl = (CycloneControl)obj;
                    string         solvableName  = (string)persistedCtrl.SerializationInfo.GetValue("SolvableName", typeof(string));
                    Cyclone        uo            = flowsheet.EvaporationAndDryingSystem.GetCyclone(solvableName);
                    CycloneControl newCtrl       = new CycloneControl(flowsheet, new Point(0, 0), uo);
                    newCtrl.SetObjectData(persistedCtrl.SerializationInfo, persistedCtrl.StreamingContext);
                    flowsheet.Controls.Add(newCtrl);
                }
                else if (obj is EjectorControl)
                {
                    EjectorControl persistedCtrl = (EjectorControl)obj;
                    string         solvableName  = (string)persistedCtrl.SerializationInfo.GetValue("SolvableName", typeof(string));
                    Ejector        uo            = flowsheet.EvaporationAndDryingSystem.GetEjector(solvableName);
                    EjectorControl newCtrl       = new EjectorControl(flowsheet, new Point(0, 0), uo);
                    newCtrl.SetObjectData(persistedCtrl.SerializationInfo, persistedCtrl.StreamingContext);
                    flowsheet.Controls.Add(newCtrl);
                }
                else if (obj is WetScrubberControl)
                {
                    WetScrubberControl persistedCtrl = (WetScrubberControl)obj;
                    string             solvableName  = (string)persistedCtrl.SerializationInfo.GetValue("SolvableName", typeof(string));
                    WetScrubber        uo            = flowsheet.EvaporationAndDryingSystem.GetWetScrubber(solvableName);
                    WetScrubberControl newCtrl       = new WetScrubberControl(flowsheet, new Point(0, 0), uo);
                    newCtrl.SetObjectData(persistedCtrl.SerializationInfo, persistedCtrl.StreamingContext);
                    flowsheet.Controls.Add(newCtrl);
                }
                else if (obj is ScrubberCondenserControl)
                {
                    ScrubberCondenserControl persistedCtrl = (ScrubberCondenserControl)obj;
                    string                   solvableName  = (string)persistedCtrl.SerializationInfo.GetValue("SolvableName", typeof(string));
                    ScrubberCondenser        uo            = flowsheet.EvaporationAndDryingSystem.GetScrubberCondenser(solvableName);
                    ScrubberCondenserControl newCtrl       = new ScrubberCondenserControl(flowsheet, new Point(0, 0), uo);
                    newCtrl.SetObjectData(persistedCtrl.SerializationInfo, persistedCtrl.StreamingContext);
                    flowsheet.Controls.Add(newCtrl);
                }
                else if (obj is MixerControl)
                {
                    MixerControl persistedCtrl = (MixerControl)obj;
                    string       solvableName  = (string)persistedCtrl.SerializationInfo.GetValue("SolvableName", typeof(string));
                    Mixer        uo            = flowsheet.EvaporationAndDryingSystem.GetMixer(solvableName);
                    MixerControl newCtrl       = new MixerControl(flowsheet, new Point(0, 0), uo);
                    newCtrl.SetObjectData(persistedCtrl.SerializationInfo, persistedCtrl.StreamingContext);
                    flowsheet.Controls.Add(newCtrl);
                }
                else if (obj is TeeControl)
                {
                    TeeControl persistedCtrl = (TeeControl)obj;
                    string     solvableName  = (string)persistedCtrl.SerializationInfo.GetValue("SolvableName", typeof(string));
                    Tee        uo            = flowsheet.EvaporationAndDryingSystem.GetTee(solvableName);
                    TeeControl newCtrl       = new TeeControl(flowsheet, new Point(0, 0), uo);
                    newCtrl.SetObjectData(persistedCtrl.SerializationInfo, persistedCtrl.StreamingContext);
                    flowsheet.Controls.Add(newCtrl);
                }
                else if (obj is FlashTankControl)
                {
                    FlashTankControl persistedCtrl = (FlashTankControl)obj;
                    string           solvableName  = (string)persistedCtrl.SerializationInfo.GetValue("SolvableName", typeof(string));
                    FlashTank        uo            = flowsheet.EvaporationAndDryingSystem.GetFlashTank(solvableName);
                    FlashTankControl newCtrl       = new FlashTankControl(flowsheet, new Point(0, 0), uo);
                    newCtrl.SetObjectData(persistedCtrl.SerializationInfo, persistedCtrl.StreamingContext);
                    flowsheet.Controls.Add(newCtrl);
                }
                else if (obj is FanControl)
                {
                    FanControl persistedCtrl = (FanControl)obj;
                    string     solvableName  = (string)persistedCtrl.SerializationInfo.GetValue("SolvableName", typeof(string));
                    Fan        uo            = flowsheet.EvaporationAndDryingSystem.GetFan(solvableName);
                    FanControl newCtrl       = new FanControl(flowsheet, new Point(0, 0), uo);
                    newCtrl.SetObjectData(persistedCtrl.SerializationInfo, persistedCtrl.StreamingContext);
                    flowsheet.Controls.Add(newCtrl);
                }
                else if (obj is ValveControl)
                {
                    ValveControl persistedCtrl = (ValveControl)obj;
                    string       solvableName  = (string)persistedCtrl.SerializationInfo.GetValue("SolvableName", typeof(string));
                    Valve        uo            = flowsheet.EvaporationAndDryingSystem.GetValve(solvableName);
                    ValveControl newCtrl       = new ValveControl(flowsheet, new Point(0, 0), uo);
                    newCtrl.SetObjectData(persistedCtrl.SerializationInfo, persistedCtrl.StreamingContext);
                    flowsheet.Controls.Add(newCtrl);
                }
                else if (obj is BagFilterControl)
                {
                    BagFilterControl persistedCtrl = (BagFilterControl)obj;
                    string           solvableName  = (string)persistedCtrl.SerializationInfo.GetValue("SolvableName", typeof(string));
                    BagFilter        uo            = flowsheet.EvaporationAndDryingSystem.GetBagFilter(solvableName);
                    BagFilterControl newCtrl       = new BagFilterControl(flowsheet, new Point(0, 0), uo);
                    newCtrl.SetObjectData(persistedCtrl.SerializationInfo, persistedCtrl.StreamingContext);
                    flowsheet.Controls.Add(newCtrl);
                }
                else if (obj is AirFilterControl)
                {
                    AirFilterControl persistedCtrl = (AirFilterControl)obj;
                    string           solvableName  = (string)persistedCtrl.SerializationInfo.GetValue("SolvableName", typeof(string));
                    AirFilter        uo            = flowsheet.EvaporationAndDryingSystem.GetAirFilter(solvableName);
                    AirFilterControl newCtrl       = new AirFilterControl(flowsheet, new Point(0, 0), uo);
                    newCtrl.SetObjectData(persistedCtrl.SerializationInfo, persistedCtrl.StreamingContext);
                    flowsheet.Controls.Add(newCtrl);
                }
                else if (obj is CompressorControl)
                {
                    CompressorControl persistedCtrl = (CompressorControl)obj;
                    string            solvableName  = (string)persistedCtrl.SerializationInfo.GetValue("SolvableName", typeof(string));
                    Compressor        uo            = flowsheet.EvaporationAndDryingSystem.GetCompressor(solvableName);
                    CompressorControl newCtrl       = new CompressorControl(flowsheet, new Point(0, 0), uo);
                    newCtrl.SetObjectData(persistedCtrl.SerializationInfo, persistedCtrl.StreamingContext);
                    flowsheet.Controls.Add(newCtrl);
                }
                else if (obj is HeaterControl)
                {
                    HeaterControl persistedCtrl = (HeaterControl)obj;
                    string        solvableName  = (string)persistedCtrl.SerializationInfo.GetValue("SolvableName", typeof(string));
                    Heater        uo            = flowsheet.EvaporationAndDryingSystem.GetHeater(solvableName);
                    HeaterControl newCtrl       = new HeaterControl(flowsheet, new Point(0, 0), uo);
                    newCtrl.SetObjectData(persistedCtrl.SerializationInfo, persistedCtrl.StreamingContext);
                    flowsheet.Controls.Add(newCtrl);
                }
                else if (obj is CoolerControl)
                {
                    CoolerControl persistedCtrl = (CoolerControl)obj;
                    string        solvableName  = (string)persistedCtrl.SerializationInfo.GetValue("SolvableName", typeof(string));
                    Cooler        uo            = flowsheet.EvaporationAndDryingSystem.GetCooler(solvableName);
                    CoolerControl newCtrl       = new CoolerControl(flowsheet, new Point(0, 0), uo);
                    newCtrl.SetObjectData(persistedCtrl.SerializationInfo, persistedCtrl.StreamingContext);
                    flowsheet.Controls.Add(newCtrl);
                }
                else if (obj is ElectrostaticPrecipitatorControl)
                {
                    ElectrostaticPrecipitatorControl persistedCtrl = (ElectrostaticPrecipitatorControl)obj;
                    string solvableName = (string)persistedCtrl.SerializationInfo.GetValue("SolvableName", typeof(string));
                    ElectrostaticPrecipitator        uo      = flowsheet.EvaporationAndDryingSystem.GetElectrostaticPrecipitator(solvableName);
                    ElectrostaticPrecipitatorControl newCtrl = new ElectrostaticPrecipitatorControl(flowsheet, new Point(0, 0), uo);
                    newCtrl.SetObjectData(persistedCtrl.SerializationInfo, persistedCtrl.StreamingContext);
                    flowsheet.Controls.Add(newCtrl);
                }
                else if (obj is PumpControl)
                {
                    PumpControl persistedCtrl = (PumpControl)obj;
                    string      solvableName  = (string)persistedCtrl.SerializationInfo.GetValue("SolvableName", typeof(string));
                    Pump        uo            = flowsheet.EvaporationAndDryingSystem.GetPump(solvableName);
                    PumpControl newCtrl       = new PumpControl(flowsheet, new Point(0, 0), uo);
                    newCtrl.SetObjectData(persistedCtrl.SerializationInfo, persistedCtrl.StreamingContext);
                    flowsheet.Controls.Add(newCtrl);
                }
                else if (obj is RecycleControl)
                {
                    RecycleControl persistedCtrl = (RecycleControl)obj;
                    string         solvableName  = (string)persistedCtrl.SerializationInfo.GetValue("SolvableName", typeof(string));
                    Recycle        uo            = flowsheet.EvaporationAndDryingSystem.GetRecycle(solvableName);
                    RecycleControl newCtrl       = new RecycleControl(flowsheet, new Point(0, 0), uo);
                    newCtrl.SetObjectData(persistedCtrl.SerializationInfo, persistedCtrl.StreamingContext);
                    flowsheet.Controls.Add(newCtrl);
                }
                else if (obj is SolvableConnection)
                {
                    SolvableConnection persistedDc = (SolvableConnection)obj;
                    SolvableConnection dc          = new SolvableConnection(flowsheet);
                    dc.SetObjectData(persistedDc.SerializationInfo, persistedDc.StreamingContext);
                    flowsheet.ConnectionManager.Connections.Add(dc);
                }
                else if (obj is FlowsheetPreferences)
                {
                    FlowsheetPreferences flowsheetPrefs = obj as FlowsheetPreferences;
                    flowsheetPrefs.SetObjectData(flowsheetPrefs.SerializationInfo, flowsheetPrefs.StreamingContext);
                    flowsheet.BackColor = flowsheetPrefs.BackColor;
                }
                else if (obj is ProsimoUI.CustomEditor.CustomEditor)
                {
                    ProsimoUI.CustomEditor.CustomEditor persistedEditor = (ProsimoUI.CustomEditor.CustomEditor)obj;
                    flowsheet.CustomEditor.SetObjectData(persistedEditor.SerializationInfo, persistedEditor.StreamingContext);
                }
            }

            if (this.CheckFlowsheetVersion(items, flowsheet))
            {
                flowsheet.IsDirty = false;
            }
            else
            {
                flowsheet = null;
            }

            return(flowsheet);
        }
Exemple #10
0
        private ArrayList GetFlowsheetContent(Flowsheet flowsheet)
        {
            ArrayList toSerializeItems = new ArrayList();

            toSerializeItems.Add(flowsheet.EvaporationAndDryingSystem);

            // get all the flowsheet element controls
            IEnumerator e = flowsheet.Controls.GetEnumerator();

            while (e.MoveNext())
            {
                object obj = e.Current;
                if (obj is GasStreamControl)
                {
                    GasStreamControl ctrl = (GasStreamControl)obj;
                    toSerializeItems.Add(ctrl);
                }
                else if (obj is MaterialStreamControl)
                {
                    MaterialStreamControl ctrl = (MaterialStreamControl)obj;
                    toSerializeItems.Add(ctrl);
                }
                else if (obj is DryerControl)
                {
                    DryerControl ctrl = (DryerControl)obj;
                    toSerializeItems.Add(ctrl);
                }
                else if (obj is HeatExchangerControl)
                {
                    HeatExchangerControl ctrl = (HeatExchangerControl)obj;
                    toSerializeItems.Add(ctrl);
                }
                else if (obj is CycloneControl)
                {
                    CycloneControl ctrl = (CycloneControl)obj;
                    toSerializeItems.Add(ctrl);
                }
                else if (obj is EjectorControl)
                {
                    EjectorControl ctrl = (EjectorControl)obj;
                    toSerializeItems.Add(ctrl);
                }
                else if (obj is WetScrubberControl)
                {
                    WetScrubberControl ctrl = (WetScrubberControl)obj;
                    toSerializeItems.Add(ctrl);
                }
                else if (obj is ScrubberCondenserControl)
                {
                    ScrubberCondenserControl ctrl = (ScrubberCondenserControl)obj;
                    toSerializeItems.Add(ctrl);
                }
                else if (obj is MixerControl)
                {
                    MixerControl ctrl = (MixerControl)obj;
                    toSerializeItems.Add(ctrl);
                }
                else if (obj is TeeControl)
                {
                    TeeControl ctrl = (TeeControl)obj;
                    toSerializeItems.Add(ctrl);
                }
                else if (obj is FlashTankControl)
                {
                    FlashTankControl ctrl = (FlashTankControl)obj;
                    toSerializeItems.Add(ctrl);
                }
                else if (obj is FanControl)
                {
                    FanControl ctrl = (FanControl)obj;
                    toSerializeItems.Add(ctrl);
                }
                else if (obj is ValveControl)
                {
                    ValveControl ctrl = (ValveControl)obj;
                    toSerializeItems.Add(ctrl);
                }
                else if (obj is BagFilterControl)
                {
                    BagFilterControl ctrl = (BagFilterControl)obj;
                    toSerializeItems.Add(ctrl);
                }
                else if (obj is AirFilterControl)
                {
                    AirFilterControl ctrl = (AirFilterControl)obj;
                    toSerializeItems.Add(ctrl);
                }
                else if (obj is CompressorControl)
                {
                    CompressorControl ctrl = (CompressorControl)obj;
                    toSerializeItems.Add(ctrl);
                }
                else if (obj is HeaterControl)
                {
                    HeaterControl ctrl = (HeaterControl)obj;
                    toSerializeItems.Add(ctrl);
                }
                else if (obj is CoolerControl)
                {
                    CoolerControl ctrl = (CoolerControl)obj;
                    toSerializeItems.Add(ctrl);
                }
                else if (obj is ElectrostaticPrecipitatorControl)
                {
                    ElectrostaticPrecipitatorControl ctrl = (ElectrostaticPrecipitatorControl)obj;
                    toSerializeItems.Add(ctrl);
                }
                else if (obj is PumpControl)
                {
                    PumpControl ctrl = (PumpControl)obj;
                    toSerializeItems.Add(ctrl);
                }
                else if (obj is RecycleControl)
                {
                    RecycleControl ctrl = (RecycleControl)obj;
                    toSerializeItems.Add(ctrl);
                }
            }

            // get all the connections
            e = flowsheet.ConnectionManager.Connections.GetEnumerator();
            while (e.MoveNext())
            {
                SolvableConnection dc = (SolvableConnection)e.Current;
                toSerializeItems.Add(dc);
            }

            // get the flowsheet preferences
            FlowsheetPreferences flowsheetPrefs = new FlowsheetPreferences(flowsheet);

            toSerializeItems.Add(flowsheetPrefs);

            // get the custom editor (we persist only the ID of the variables)
            toSerializeItems.Add(flowsheet.CustomEditor);

            // get the flowsheet version
            toSerializeItems.Add(flowsheet.Version);

            return(toSerializeItems);
        }