public void SetMoleculeSelected(int?moleculeID) { molecules.SelectedMoleculeID = moleculeID; foreach (KeyValuePair <int, MoleculeSettingsPanelListItem> item in moleculeListItems) { item.Value.SetHighlighted(false); UserInterfaceEvents.RaiseMoleculeSelected(item.Key, false); } if (moleculeID != null) { foreach (KeyValuePair <int, MoleculeSettingsPanelListItem> item in moleculeListItems) { if (item.Key == molecules.SelectedMoleculeID) { item.Value.SetHighlighted(true); // if molecule is hidden then dont raise event. When molecule is unhidden then an event will be raised instead MoleculeSettings molecule = molecules.Get((int)moleculeID); if (molecule != null && !molecule.Hidden) { UserInterfaceEvents.RaiseMoleculeSelected(item.Key, true); } } } } updateSelectedMoleculeInterfaceSettings(); }
public void MoleculeLoaded(int id, string name, string description, int atomCount, int residueCount) { if (molecules.Contains(id)) { console.ShowMessage("Loaded file: " + name); MoleculeSettings settings = molecules.Get(id); settings.Name = name; settings.Description = description; settings.AtomCount = atomCount; settings.ResidueCount = residueCount; settings.Loaded = true; GameObject listItem = GameObject.Instantiate(moleculeListItemPrefab); listItem.transform.position = Vector3.zero; listItem.transform.rotation = Quaternion.identity; listItem.transform.localScale = Vector3.one; listItem.SetActive(true); listItem.transform.SetParent(moleculeListContent.transform, false); MoleculeSettingsPanelListItem item = listItem.GetComponent <MoleculeSettingsPanelListItem>(); item.Initialise(id, settings.FileName, onMoleculeListItemClick, onMoleculeListItemDoubleClick); moleculeListItems.Add(id, item); numberMoleculeListItems(); SetMoleculeSelected(id); onMoleculeListItemDoubleClick(id); updateSelectedMoleculeInterfaceSettings(); } }
public void UpdateFrameNumberInfo() { MoleculeSettings selectedMolecule = molecules.GetSelected(); if (selectedMolecule.HasTrajectory) { int?frameNumber = selectedMolecule.CurrentTrajectoryFrameNumber; if (frameNumber == null) { this.frameNumber.text = "-"; } else { this.frameNumber.text = (frameNumber + 1).ToString(); // trajectory indexes start at zero but display starts at 1 } totalFrames.text = selectedMolecule.TrajectoryFrameCount.ToString(); } else { frameNumber.text = "-"; totalFrames.text = "-"; } }
// Settings file management methods below. These don't fit into the UserInterface or Molecule groups // so have left separately here. Could be moved into it's own class but the code but the code is minor // at the moment so have left here. private void saveSettingsFile(MoleculeSettings moleculeSettings, string saveFilePath) { SettingsFile settingsFile = new SettingsFile(); settingsFile.StructureFilePath = moleculeSettings.FilePath; settingsFile.TrajectoryFilePath = moleculeSettings.TrajectoryFilePath; settingsFile.RenderSettings = moleculeSettings.RenderSettings; settingsFile.MoleculeTransform = molecules.GetMoleculeTransform(moleculeSettings.ID); settingsFile.CameraTransform = new SerializableTransform(sceneCamera.transform); try { fsSerializer serializer = new fsSerializer(); fsData data; serializer.TrySerialize <SettingsFile>(settingsFile, out data).AssertSuccessWithoutWarnings(); string json = fsJsonPrinter.CompressedJson(data); if (!saveFilePath.EndsWith(Settings.SettingsFileExtension)) { saveFilePath += Settings.SettingsFileExtension; } File.WriteAllText(saveFilePath, json); userInterface.ShowConsoleMessage("Saved molecule settings to: " + saveFilePath); } catch (Exception e) { userInterface.ShowConsoleError("Error saving molecule settings: " + e.Message); return; } }
public MoleculeSettings Add(string filePath) { lastMoleculeID++; MoleculeSettings molecule = new MoleculeSettings(lastMoleculeID, filePath); molecules[lastMoleculeID] = molecule; return(molecule); }
public void OnResetPositionButton() { MoleculeSettings molecule = molecules.GetSelected(); if (molecule == null) { return; } UserInterfaceEvents.RaiseResetMoleculeTransform(molecule.ID); }
private void onSaveSettingsFileSubmitted(string fullPath) { MoleculeSettings molecule = molecules.GetSelected(); if (molecule == null) { return; } UserInterfaceEvents.RaiseSaveMoleculeSettings(molecule, fullPath); }
public void OnStopButton() { if (validMoleculeSelected()) { animating = false; MoleculeSettings molecule = molecules.GetSelected(); molecule.CurrentTrajectoryFrameNumber = null; UserInterfaceEvents.RaiseMoleculeRenderSettingsUpdated(molecule.ID, molecule.RenderSettings, molecule.CurrentTrajectoryFrameNumber); UpdateFrameNumberInfo(); } }
private bool validMoleculeSelected() { MoleculeSettings molecule = molecules.GetSelected(); if (molecule == null || molecule.Hidden || !molecule.HasTrajectory) { return(false); } return(true); }
private void loadRenderSettings(int moleculeID, MoleculeRenderSettings settings) { MoleculeSettings molecule = molecules.Get(moleculeID); if (molecule == null) { return; } molecule.RenderSettings = (MoleculeRenderSettings)settings; UserInterfaceEvents.RaiseMoleculeRenderSettingsUpdated(molecule.ID, molecule.RenderSettings, molecule.CurrentTrajectoryFrameNumber); }
private void stepBackwardAnimation() { MoleculeSettings molecule = molecules.GetSelected(); molecule.CurrentTrajectoryFrameNumber--; if (molecule.CurrentTrajectoryFrameNumber == null || molecule.CurrentTrajectoryFrameNumber < 0) { molecule.CurrentTrajectoryFrameNumber = molecule.TrajectoryFrameCount - 1; } UserInterfaceEvents.RaiseMoleculeRenderSettingsUpdated(molecule.ID, molecule.RenderSettings, molecule.CurrentTrajectoryFrameNumber); UpdateFrameNumberInfo(); }
public void UpdateSelectedMolecule() { if (isActiveAndEnabled) { selectedMolecule = molecules.GetSelected(); if (selectedMolecule != null) { selectedMoleculeText.text = "Selected molecule - " + selectedMolecule.FileName; } else { selectedMoleculeText.text = "< no molecule selected >"; } } }
private void onConfirmLoadTransformsFromSettings(bool confirmed, object data = null) { MoleculeSettings molecule = molecules.GetSelected(); if (molecule == null || data == null) { return; } try { UserInterfaceEvents.RaiseLoadMoleculeSettings(molecule.ID, (string)data, false, true, true, true, confirmed, loadRenderSettings); } catch (InvalidCastException) { // do nothing } }
public void UpdateSelectedMolecule() { if (isActiveAndEnabled) { selectedMolecule = molecules.GetSelected(); initialise(); if (selectedMolecule != null) { selectedMoleculeText.text = "Modifying settings for molecule - " + selectedMolecule.FileName; } else { selectedMoleculeText.text = "< no molecule selected >"; } } }
public void TrajectoryLoaded(int id, string filePath, int frameCount) { if (molecules.Contains(id)) { console.ShowMessage("Loaded trajectory. Frame count: " + frameCount); MoleculeSettings settings = molecules.Get(id); settings.HasTrajectory = true; settings.TrajectoryFilePath = filePath; settings.TrajectoryFrameCount = frameCount; settings.CurrentTrajectoryFrameNumber = null; loadTrajectoryButtonText.text = "Update Trajectory"; updateSelectedMoleculeInterfaceSettings(); } }
private void onLoadRenderSettingsFileSubmitted(string fullPath) { MoleculeSettings molecule = molecules.GetSelected(); if (molecule == null) { return; } if (!File.Exists(fullPath)) { console.ShowError("Cannot load settings, file not found at " + fullPath); return; } confirmDialog.gameObject.SetActive(true); confirmDialog.Initialise("Load new camera position from settings file also?", onConfirmLoadTransformsFromSettings, fullPath); }
public void OnSaveSettingsButton() { MoleculeSettings molecule = molecules.GetSelected(); if (molecule == null) { return; } saveFileDialog.SetActive(true); SaveFileDialog dialog = saveFileDialog.GetComponent <SaveFileDialog>(); List <string> validFileExtensions = new List <string>() { Settings.SettingsFileExtension }; dialog.Initialise(validFileExtensions, onSaveSettingsFileSubmitted); }
private void onLoadMoleculeFileSubmitted(string filePath) { MoleculeSettings molecule = molecules.Add(filePath); if (interactionsPanel.MonitoringEnabled) { interactionsPanel.StopInteractions(); console.ShowError("Stopped monitoring molecular interactions, loading molecule"); } if (filePath.EndsWith(Settings.SettingsFileExtension)) { UserInterfaceEvents.RaiseLoadMoleculeSettings(molecule.ID, filePath, true, true, true, true, true, loadRenderSettings); } else { UserInterfaceEvents.RaiseLoadMolecule(molecule.ID, filePath, molecule.RenderSettings); } }
public void UpdateSelectedMolecule() { if (isActiveAndEnabled) { selectedMolecule = molecules.GetSelected(); if (selectedMolecule != null) { selectedMoleculeText.text = "Modifying settings for molecule - " + selectedMolecule.FileName; EnableSettings(true); LoadSettings(); } else { selectedMoleculeText.text = "< no molecule selected >"; EnableSettings(false); ClearSettings(); } } }
public void OnShowHideMoleculeButton() { MoleculeSettings molecule = molecules.GetSelected(); if (molecule == null) { return; } if (hiddenMolecules.Contains(molecule.ID)) { molecule.Hidden = false; UserInterfaceEvents.RaiseShowMolecule(molecule.ID); if (molecule.PendingRerender) { UserInterfaceEvents.RaiseMoleculeRenderSettingsUpdated(molecule.ID, molecule.RenderSettings, molecule.CurrentTrajectoryFrameNumber); } UserInterfaceEvents.RaiseMoleculeSelected(molecule.ID, true); hiddenMolecules.Remove(molecule.ID); } else { molecule.Hidden = true; trajectoryControls.StopAnimation(); UserInterfaceEvents.RaiseHideMolecule(molecule.ID); hiddenMolecules.Add(molecule.ID); if (interactionsPanel.MonitoringEnabled) { interactionsPanel.StopInteractions(); console.ShowError("Stopped monitoring molecular interactions, hiding molecule"); } UserInterfaceEvents.RaiseMoleculeSelected(molecule.ID, false); } updateSelectedMoleculeInterfaceSettings(); }
public void OnEndEditFrameInput() { Debug.Log("End frame input"); try { int frameNumber = int.Parse(this.frameNumber.text); MoleculeSettings molecule = molecules.GetSelected(); frameNumber = Mathf.Clamp(frameNumber, 1, molecule.TrajectoryFrameCount); this.frameNumber.text = frameNumber.ToString(); if (frameNumber != lastFrameNumber) { Debug.Log("New frameNumber: " + frameNumber); molecule.CurrentTrajectoryFrameNumber = frameNumber - 1; UserInterfaceEvents.RaiseMoleculeRenderSettingsUpdated(molecule.ID, molecule.RenderSettings, molecule.CurrentTrajectoryFrameNumber); } } catch (Exception) { frameNumber.text = lastFrameNumber.ToString(); } }
public void UpdateSelectedMolecule() { if (isActiveAndEnabled) { selectedMolecule = molecules.GetSelected(); if (selectedMolecule != null) { selectedMoleculeText.text = "Modifying settings for molecule - " + selectedMolecule.FileName; if (primaryStructures.ContainsKey(selectedMolecule.ID)) { PrimaryStructure primaryStructure = primaryStructures[selectedMolecule.ID]; initialiseResidueRenderSettings(primaryStructure); showResidueNamesPanel(selectedMolecule.RenderSettings, primaryStructure); } } else { selectedMoleculeText.text = "< no molecule selected >"; } } }
private void updateSelectedMoleculeInterfaceSettings() { if (molecules.SelectedMoleculeID == null) { loadSettingsButton.interactable = false; loadSettingsButton.gameObject.SetActive(false); saveSettingsButton.interactable = false; saveSettingsButton.gameObject.SetActive(false); loadTrajectoryButton.interactable = false; loadTrajectoryButton.gameObject.SetActive(false); resetMoleculePositionButton.interactable = false; resetMoleculePositionButton.gameObject.SetActive(false); showHideMoleculeButton.interactable = false; showHideMoleculeButton.gameObject.SetActive(false); removeMoleculeButton.interactable = false; removeMoleculeButton.gameObject.SetActive(false); moleculeInfoPanel.SetActive(false); trajectoryControls.transform.gameObject.SetActive(false); } else { MoleculeSettings molecule = molecules.GetSelected(); loadSettingsButton.interactable = true; loadSettingsButton.gameObject.SetActive(true); saveSettingsButton.interactable = true; saveSettingsButton.gameObject.SetActive(true); loadTrajectoryButton.interactable = true; loadTrajectoryButton.gameObject.SetActive(true); resetMoleculePositionButton.interactable = true; resetMoleculePositionButton.gameObject.SetActive(true); showHideMoleculeButton.interactable = true; showHideMoleculeButton.gameObject.SetActive(true); removeMoleculeButton.interactable = true; removeMoleculeButton.gameObject.SetActive(true); if (molecule.HasTrajectory) { loadTrajectoryButtonText.text = "Update Trajectory"; trajectoryControls.transform.gameObject.SetActive(true); trajectoryControls.UpdateFrameNumberInfo(); } else { loadTrajectoryButtonText.text = "Load Trajectory"; trajectoryControls.transform.gameObject.SetActive(false); } if (hiddenMolecules.Contains((int)molecule.ID)) { showHideMoleculeButtonText.text = "Show Molecule"; } else { showHideMoleculeButtonText.text = "Hide Molecule"; } moleculeInfoPanel.SetActive(true); moleculePathText.text = molecule.FilePath; moleculeHeaderText.text = molecule.Description; moleculeAtomCountText.text = molecule.AtomCount.ToString(); moleculeResidueCountText.text = molecule.ResidueCount.ToString(); } }