<DependentUpon>Settings.settings</DependentUpon>\r
<DesignTimeSharedInput>True</DesignTimeSharedInput>\r
</Compile>\r
- <None Include="Resources\configuration.json">\r
+ <None Include="Configuration\audiorecorder.json">\r
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>\r
</None>\r
</ItemGroup>\r
{\r
"audio_device_name": "",\r
- "unc_path": "c:\\temp",\r
+ "unc_path": "I:\\",\r
"working_dir": "C:\\temp",\r
- "loud_percent": 10,\r
- "address": "http://10.10.1.28/services/rest/octopus/",\r
+ "loud_percent": 30,\r
+ "address": "http://10.10.1.27/services/rest/octopus/",\r
"userName": "dani",\r
"password": "dani",\r
"timeout": 1000\r
};\r
}\r
\r
- private void IdChangedEvent(string id, string name) {\r
+ private void IdChangedEvent(string id, string name, string text) {\r
//TODO\r
this.id = name;\r
buttonRendben.Enabled = !String.IsNullOrEmpty(id);\r
[DllImport("user32.dll")]\r
public static extern int SendMessage(IntPtr hWnd, int wMsg, int wParam, int lParam);\r
\r
- private const String CONFIG_FILE = "Resources/configuration.json";\r
+ //private const String CONFIG_FILE = "Resources/configuration.json";\r
+ private const String CONFIG_FILE = "Configuration/audiorecorder.json";\r
\r
private IRecorder recorder;\r
private ISettings settings;\r
\r
private void copyFileToUncPath()\r
{\r
- String wavFileName = new FileInfo(recorder.getCurentWavFilePath()).Name;\r
- String wavUncPath = String.Format("{0}{1}{2}", settings.getUncPath(), Path.DirectorySeparatorChar, wavFileName);\r
+ FileInfo fileInfo = new FileInfo(recorder.getCurentWavFilePath());\r
+ String wavFileName = fileInfo.Name;\r
+ String wavUncPath = DetermineWorkingDirectory(settings.getUncPath(), fileInfo.Name);\r
+ if (!Directory.Exists(wavUncPath))\r
+ Directory.CreateDirectory(wavUncPath);\r
+ wavUncPath = Path.Combine(wavUncPath, fileInfo.Name);\r
+ //String.Format("{0}{1}{2}", settings.getUncPath(), Path.DirectorySeparatorChar, wavFileName);\r
fileWorker.copy(recorder.getCurentWavFilePath(), wavUncPath);\r
}\r
\r
+ protected String DetermineWorkingDirectory(string path, string ID) {\r
+ string result = path;\r
+ string subDir = ID;\r
+ if (ID.Contains("_")) {\r
+ subDir = ID.Split('_')[0];\r
+ }\r
+ if (ID.Contains(".")) {\r
+ subDir = ID.Split('.')[0];\r
+ }\r
+ result = Path.Combine(path, subDir);\r
+ return result;\r
+ }\r
+\r
private void record_Click(object sender, EventArgs e)\r
{\r
FileNameForm nameForm = new FileNameForm(this, settings);\r
\r
private void DisableHotKeysDefaults(Control.ControlCollection controls) {\r
foreach (Control control in controls) {\r
+ if (control.Equals(dgSegments))\r
+ continue;\r
control.PreviewKeyDown += new PreviewKeyDownEventHandler(PlayerForm_PreviewKeyDown);\r
if (control.HasChildren)\r
DisableHotKeysDefaults(control.Controls);\r
\r
private void PlayerForm_KeyDown(object sender, KeyEventArgs e) {\r
e.Handled = true;\r
- e.SuppressKeyPress = true;\r
+ e.SuppressKeyPress = true; \r
}\r
\r
private bool HandleHotKey(Keys keyCode) {\r
- if (m_play == null)\r
- return false;\r
+ Debug.WriteLine("Key pressed " + keyCode);\r
+ if (m_play == null || dgSegments.IsCurrentCellInEditMode || (!m_play.IsFullscreen() && !this.ContainsFocus))\r
+ return true; \r
+ Debug.WriteLine("Handling " + keyCode);\r
bool result = false;\r
switch (keyCode) {\r
case Keys.Escape:\r
// \r
// ArchiveMetadataForm\r
// \r
- this.AcceptButton = this.btnOk;\r
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);\r
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;\r
this.CancelButton = this.btnCancel;\r
{\r
"title": "Lebony betöltő",\r
- "active": false,\r
+ "active": true,\r
"startInTray": false,\r
"enableCustomMetadataId": true,\r
"player": {\r
}\r
},\r
"metadatas": [\r
+ {\r
+ "$type": "OctopusMetadata",\r
+ "server": {\r
+ "address": "http://10.10.1.27/services/rest/octopus/",\r
+ "timeout": 1000\r
+ }\r
+ },\r
{\r
"$type": "TrafficMetadata",\r
"server": {\r
{\r
"title": "SxS",\r
- "active": true,\r
+ "active": false,\r
"startInTray": false,\r
"enableCustomMetadataId": true,\r
"player": {\r
private void OnArchiveMetadataClick(object sender, EventArgs e) {\r
if (archiveMetadata == null)\r
archiveMetadata = GetArchiveMetadata();\r
+ if (archiveMetadata == null || !archiveMetadata.IsFilled) {\r
+ MessageBox.Show("Nem található archív metaadat!");\r
+ return;\r
+ }\r
+\r
ArchiveMetadataForm form = new ArchiveMetadataForm(archiveMetadata);\r
DialogResult result = form.ShowDialog();\r
if (result == DialogResult.OK && String.IsNullOrEmpty(textSelectedMetadata.Text))\r
case MetadataType.MediaCube:\r
result = GetMediaCubeMetadata();\r
break;\r
+ case MetadataType.OctopusStory:\r
case MetadataType.OctopusPlaceHolder:\r
- result = GetOctopusMetadata();\r
+ result = GetOctopusMetadata(metadataType);\r
break;\r
case MetadataType.TrafficMaterial:\r
case MetadataType.TrafficPromo:\r
return result;\r
}\r
\r
- private ArchiveMetadata GetOctopusMetadata() {\r
- ArchiveMetadata result = new ArchiveMetadata();\r
- string id = SelectedMetadata?.VariantID.ToString();\r
+ private ArchiveMetadata GetOctopusMetadata(MetadataType metadataType) {\r
+ string id = SelectedMetadata?.ID.ToString();\r
if (String.IsNullOrEmpty(id))\r
return null;\r
OctopusAPI api = octopusIDSelector.GetClient();\r
- IEnumerable<Story> storiesEnum = api.GetStoriesByPlaceHolderId(id);\r
- if (storiesEnum != null) {\r
- List<Story> stories = storiesEnum.ToList();\r
- FillModelFromStories(result, stories, api);\r
+ IEnumerable<Story> octopusResult = null;\r
+ switch (metadataType) {\r
+ case MetadataType.OctopusPlaceHolder:\r
+ octopusResult = api.GetStoriesByPlaceHolderId(id);\r
+ break;\r
+ case MetadataType.OctopusStory:\r
+ octopusResult = api.GetStoriesByParentStoryId(id);\r
+ break;\r
}\r
- return result;\r
+ if (octopusResult == null)\r
+ return null;\r
+ List<Story> stories = octopusResult.ToList();\r
+ return GetStoryMetadata(stories);\r
}\r
\r
- private void FillModelFromStories(ArchiveMetadata model, List<Story> stories, OctopusAPI api) {\r
+ private ArchiveMetadata GetStoryMetadata(List<Story> stories) {\r
if (stories == null || stories.Count == 0)\r
- return;\r
+ return null;\r
Story story = stories[0];\r
- if (story.StoryFolders != null && story.StoryFolders.Length > 0) {\r
- IEnumerable<StoryFolder> storyFoldersEnum = api.GetStoryFoldersByStoryID(story.ID);\r
- if (storyFoldersEnum == null)\r
- return;\r
- List<StoryFolder> storyFolders = storyFoldersEnum.ToList();\r
- StoryFolder folder = storyFolders[0];\r
- model.itemHouseId = folder.ID;\r
- model.itemTitle = folder.Name;\r
- } else if (story.Rundowns != null) {\r
+ ArchiveMetadata result = new ArchiveMetadata();\r
+\r
+ OctopusAPI api = octopusIDSelector.GetClient();\r
+ if (story.Rundowns != null && story.Rundowns.Length > 0) {\r
IEnumerable<Rundown> rundownsEnum = api.GetRundownsByStoryID(story.ID);\r
if (rundownsEnum == null)\r
- return;\r
+ return null;\r
List<Rundown> rundowns = rundownsEnum.ToList();\r
Rundown rundown = rundowns[0];\r
- model.itemHouseId = rundown.ID;\r
- model.itemTitle = rundown.Name;\r
- model.itemDescription = rundown.Start.ToString();\r
+ result.itemHouseId = rundown.ID;\r
+ result.itemTitle = rundown.Name;\r
+ result.itemDescription = rundown.Start.ToString();\r
+ } else if (story.StoryFolders != null && story.StoryFolders.Length > 0) {\r
+ IEnumerable<StoryFolder> storyFoldersEnum = api.GetStoryFoldersByStoryID(story.ID);\r
+ if (storyFoldersEnum == null)\r
+ return null;\r
+ List<StoryFolder> storyFolders = storyFoldersEnum.ToList();\r
+ StoryFolder folder = storyFolders[0];\r
+ result.itemHouseId = folder.ID;\r
+ result.itemTitle = folder.Name;\r
}\r
- model.mediaHouseId = story.ID;\r
- model.mediaTitle = story.Name;\r
- model.mediaDescription = story.Script;\r
+ result.mediaHouseId = story.ID;\r
+ result.mediaTitle = story.Name;\r
+ result.mediaDescription = story.ScriptContent;\r
+ return result;\r
}\r
\r
private void OnMetadataIDChanged(object sender, EventArgs e) {\r
UpdateLookupByMetadataEnabled();\r
}\r
\r
- private void OnOctopusIDSelected(string id, string name) {\r
+ private void OnOctopusIDSelected(string id, string name, string text) {\r
trafficIDSelector.ClearSelection();\r
archiveMetadata = null;\r
if (id == null) {\r
SelectedMetadata = null;\r
return;\r
}\r
- MetadataType metadataType = GuessMetadataType(id);\r
+ MetadataType metadataType = GuessMetadataType(name);\r
SelectedMetadata = new MetadataInfo() {\r
Kind = metadataType,\r
ID = name,\r
+ MetadataText = text,\r
VariantID = int.Parse(id)\r
};\r
}\r
}\r
\r
private void OnLookupByMetadata(object sender, EventArgs e) {\r
+ Lookup(SelectedMetadata.ID);\r
+ }\r
+\r
+ private void Lookup(string id) {\r
MetadataProvider config = null;\r
switch (SelectedMetadata?.Kind) {\r
case MetadataType.TrafficAD:\r
config = Configuration.GetMetadataProvider<OctopusMetadata>();\r
if (config == null)\r
return;\r
- octopusIDSelector.LookupByPlaceHolder(SelectedMetadata.ID);\r
+ octopusIDSelector.LookupByPlaceHolder(id);\r
break;\r
case MetadataType.OctopusStory:\r
config = Configuration.GetMetadataProvider<OctopusMetadata>();\r
if (config == null)\r
return;\r
- octopusIDSelector.LookupByStory(SelectedMetadata.ID);\r
+ octopusIDSelector.LookupByStory(id);\r
break;\r
}\r
}\r
\r
-\r
-\r
private void UpdateEditArchiveMetadataEnabled() {\r
ctxiModifyArchiveMetadata.Enabled = SelectedSource != null;\r
}\r
}\r
\r
private void OnLookupBySource(object sender, EventArgs e) {\r
- Cursor.Current = Cursors.WaitCursor;\r
- MetadataType metadataType = GuessMetadataType(SelectedSource?.Prefix);\r
- switch (metadataType) {\r
- case MetadataType.TrafficMaterial:\r
- case MetadataType.TrafficPromo:\r
- case MetadataType.TrafficAD:\r
- LookupTraffic(metadataType);\r
- break;\r
- case MetadataType.OctopusPlaceHolder:\r
- LookupOctopus();\r
- break;\r
- }\r
- trafficIDSelector.ClearSelection();\r
- octopusIDSelector.ClearSelection();\r
-\r
- Cursor.Current = Cursors.Default;\r
+ Lookup(SelectedMetadata.ID);\r
+ //Cursor.Current = Cursors.WaitCursor;\r
+ //MetadataType metadataType = GuessMetadataType(SelectedSource?.Prefix);\r
+ //switch (metadataType) {\r
+ // case MetadataType.TrafficMaterial:\r
+ // case MetadataType.TrafficPromo:\r
+ // case MetadataType.TrafficAD:\r
+ // LookupTraffic(metadataType);\r
+ // break;\r
+ // case MetadataType.OctopusPlaceHolder:\r
+ // LookupOctopus();\r
+ // break;\r
+ //}\r
+ //trafficIDSelector.ClearSelection();\r
+ //octopusIDSelector.ClearSelection();\r
+\r
+ //Cursor.Current = Cursors.Default;\r
}\r
\r
private void LookupTraffic(MetadataType metadataType) {\r
// Cursor.Current = Cursors.Default;\r
//}\r
\r
- private void LookupOctopus() {\r
- OctopusAPI api = octopusIDSelector.GetClient();\r
- IEnumerable<MosObject> mosIDs = api.GetMosObjectsByID(SelectedSource?.Prefix);\r
- if (mosIDs == null) {\r
- MessageBox.Show(this, StringResources.NINCS_TALALAT);\r
- return;\r
- }\r
- List<MosObject> mosObjects = mosIDs.ToList();\r
- if (mosObjects == null || mosObjects.Count == 0) {\r
- MessageBox.Show(this, StringResources.NINCS_TALALAT);\r
- return;\r
- }\r
- if (mosObjects.Count == 1)\r
- OnOctopusIDSelected(mosObjects[0].ID, mosObjects[0].ObjID);\r
- else {\r
- OctopusLookupResultSelector box = new OctopusLookupResultSelector(mosObjects, OnOctopusIDSelected);\r
- box.ShowDialog();\r
- }\r
- }\r
+ //private void LookupOctopus() {\r
+ // OctopusAPI api = octopusIDSelector.GetClient();\r
+ // IEnumerable<MosObject> mosIDs = api.GetMosObjectsByID(SelectedSource?.Prefix);\r
+ // if (mosIDs == null) {\r
+ // MessageBox.Show(this, StringResources.NINCS_TALALAT);\r
+ // return;\r
+ // }\r
+ // List<MosObject> mosObjects = mosIDs.ToList();\r
+ // if (mosObjects == null || mosObjects.Count == 0) {\r
+ // MessageBox.Show(this, StringResources.NINCS_TALALAT);\r
+ // return;\r
+ // }\r
+ // if (mosObjects.Count == 1)\r
+ // OnOctopusIDSelected(mosObjects[0].ID, mosObjects[0].ObjID);\r
+ // else {\r
+ // OctopusLookupResultSelector box = new OctopusLookupResultSelector(mosObjects, OnOctopusIDSelected);\r
+ // box.ShowDialog();\r
+ // }\r
+ //}\r
\r
\r
private void picClearFilter_Click(object sender, EventArgs e) {\r
public Target TargetConfig { get; set; }\r
public string InputFileName { get; set; }\r
public string ID { get; set; }\r
+ public string MetadataText { get; set; }\r
public List<Segment> Segments { get; set; }\r
public List<MovieSegment> MovieSegments { get; set; }\r
public MediaCubeApi MediaCubeApi { get; set; }\r
SourceConfig = Configuration.Source,\r
TargetConfig = target,\r
ID = textSelectedMetadata.Text,\r
+ MetadataText = SelectedMetadata?.MetadataText,\r
InputFileName = sourceItem.Name,\r
Segments = segments == null ? null : new List<Segment>(segments),\r
MovieSegments = movieSegments == null ? null : movieSegments.ToList(), \r
namespace Maestro.Metadata {\r
public class MetadataInfo {\r
public string ID { get; set; }\r
+ public string MetadataText { get; set; }\r
public MetadataType Kind { get; set; }\r
public int VariantID { get; set; }\r
\r
\r
public class TrayApplicationContext : ApplicationContext {\r
private const string GLOBAL_JSON = "global.json";\r
+ private const string AUDIORECORDER_JSON = "audiorecorder.json";\r
private const string JSON_WILDCARD = "*.json";\r
private const string CONFIG_ERROR = "Nem található aktív konfiguráció.";\r
private const string SYSCONFIG_ERROR = "Nem található a 'global.json' rendszer konfiguráció.";\r
\r
CheckGlobalConfig(files);\r
foreach (String file in files) {\r
+ string audioRecorderFile = Path.Combine(CONFIGURATION_FOLDER, AUDIORECORDER_JSON);\r
+ if (file.Equals(audioRecorderFile))\r
+ continue;\r
CreateForm(file);\r
}\r
if (forms.Count == 0)\r
// You can specify all the values or you can default the Build and Revision Numbers\r
// by using the '*' as shown below:\r
// [assembly: AssemblyVersion("1.0.*")]\r
-[assembly: AssemblyVersion("1.9.8")]\r
-[assembly: AssemblyFileVersion("1.9.8")]\r
+[assembly: AssemblyVersion("1.9.9")]\r
+[assembly: AssemblyFileVersion("1.9.9")]\r
this.pictureBox1.SizeMode = System.Windows.Forms.PictureBoxSizeMode.Zoom;\r
this.pictureBox1.TabIndex = 0;\r
this.pictureBox1.TabStop = false;\r
- this.pictureBox1.Visible = false;\r
// \r
// labelVersion\r
// \r
using Maestro.Commons;\r
using Commons;\r
using Maestro.Metadata;\r
+using System.Globalization;\r
\r
namespace Maestro.Targets {\r
\r
}\r
\r
protected virtual string CreateOutputFileName() {\r
- string nameWithoutExtension = parameters.TargetConfig.OutputFormat.Replace("%ID%", ID).Replace("%SOURCENAME%", Path.GetFileNameWithoutExtension(InputName));\r
+ string nameWithoutExtension = parameters.TargetConfig.OutputFormat\r
+ .Replace("%ID%", ID)\r
+ .Replace("%TEXT%", parameters.MetadataText)\r
+ .Replace("%SOURCENAME%", Path.GetFileNameWithoutExtension(InputName))\r
+ .Replace("%TIMESTAMP%", DateTime.Now.ToString("yyyyMMddhhmmss", CultureInfo.InvariantCulture));\r
string extension = InputName.Contains(".") ? InputName.Substring(InputName.LastIndexOf(".")) : DEFAULT_EXTENSION;\r
extension = extension.ToUpper();\r
string result = String.Format(FILENAME, nameWithoutExtension, extension);\r
\r
public class Story {\r
public string ID { get; set; }\r
+ public string ParentStoryID { get; set; }\r
public string Name { get; set; }\r
public string Script { get; set; }\r
+ public string ScriptContent { get; set; }\r
public string Format { get; set; }\r
public MosObject[] MosObjects { get; set; }\r
public StoryFolder[] StoryFolders { get; set; }\r
private Story ToStory(JToken d) {\r
return new Story {\r
ID = d["id"]?.ToString(),\r
+ ParentStoryID = d["parentStoryId"]?.ToString(),\r
Name = d["name"]?.ToString(),\r
Format = d["format"]?.ToString(),\r
MosObjects = GetMosObjectsFromStory(d)?.ToArray(),\r
Script = d["script"]?.ToString(),\r
+ ScriptContent = d["script_content"]?.ToString(),\r
StoryFolders = GetStoryFolderFromStory(d)?.ToArray(),\r
Rundowns = GetRundownFromStory(d)?.ToArray()\r
};\r
public IEnumerable<Story> GetStoriesById(String id) {\r
IEnumerable<Story> result = null;\r
try {\r
- var request = new RestRequest("getStoriesByIDRegex/{id}", Method.GET);\r
+ var request = new RestRequest("getStoriesByID/{id}", Method.GET);\r
+ request.AddParameter("id", id, ParameterType.UrlSegment);\r
+ var response = client.Execute<JsonArray>(request);\r
+ if (response.ContentLength == 0) {\r
+ if (response.ErrorException != null)\r
+ throw new Exception(String.Format("[Octopus] {0}", response.ErrorMessage));\r
+ else return null;\r
+ }\r
+ JArray resultObject = JArray.Parse(response.Content);\r
+\r
+ result = resultObject.Children().Select(d => {\r
+ Story r = ToStory(d);\r
+ //logger.Debug($"{r}");\r
+ return r;\r
+ });\r
+ }\r
+ catch (Exception e) {\r
+ OnError(e);\r
+ }\r
+ return result;\r
+ }\r
+\r
+ public IEnumerable<Story> GetStoriesByParentStoryId(String id) {\r
+ IEnumerable<Story> result = null;\r
+ try {\r
+ var request = new RestRequest("getStoriesByParentStoryID/{id}", Method.GET);\r
request.AddParameter("id", id, ParameterType.UrlSegment);\r
var response = client.Execute<JsonArray>(request);\r
if (response.ContentLength == 0) {\r
using System.Drawing;\r
\r
namespace OctopusClient {\r
- public delegate void OnSelectedIDChanged(string id, string name);\r
+ public delegate void OnSelectedIDChanged(string id, string name, string text);\r
\r
public partial class OctopusIDSelector : UserControl {\r
private static Logger logger = LogManager.GetCurrentClassLogger();\r
//selectedRundownIndex = cbRundowns.SelectedIndex;\r
}\r
\r
- private void AddStories(IEnumerable<Story> stories) {\r
- foreach (var story in stories) {\r
- string name = story.Name == null ? OctopusAPI.UNNAMED : story.Name;\r
- string label = story.ID;\r
- if (!String.IsNullOrEmpty(story.Format))\r
- label += String.Format($" [{story.Format}] {story.Name}");\r
- else\r
- label += String.Format($" {story.Name}");\r
- TreeNode storyNode = treeOctopus.Nodes.Add(story.ID, label);\r
- storyNode.Tag = story.ID;\r
- if (configuration.DisableStoryCheck)\r
- HideCheckBox(treeOctopus, storyNode);\r
- else {\r
- if (lookupStoryId != null && lookupStoryId.Equals(story.ID))\r
- storyNode.Checked = true;\r
- }\r
-\r
- MosObject[] mosObjects = story.MosObjects;\r
- if (mosObjects == null)\r
- continue;\r
- foreach (MosObject mosObject in mosObjects) {\r
- TreeNode placeHolderNode = storyNode.Nodes.Add(mosObject.ObjID, String.Format($"{mosObject.ObjID}"));\r
- // TODO wich?\r
- placeHolderNode.Tag = mosObject.ID;\r
- if (configuration.DisablePlaceHolderCheck)\r
- HideCheckBox(treeOctopus, placeHolderNode);\r
- else {\r
- if (lookupPlaceHolderId != null && lookupPlaceHolderId.Equals(mosObject.ID))\r
- placeHolderNode.Checked = true;\r
- }\r
- }\r
- }\r
- }\r
-\r
private void comboStoryFolder_SelectedValueChanged(object sender, EventArgs e) {\r
StoryFolder storyFolder = cbStoryFolder.SelectedValue as StoryFolder;\r
if (storyFolder == null)\r
var stories = client.GetStoryFolderStories(storyFolder.ID);\r
if (stories == null)\r
return;\r
- AddStories(stories);\r
+ AddStories(stories, true);\r
//selectedStoryFolderIndex = cbStoryFolder.SelectedIndex;\r
}\r
\r
Cursor.Current = Cursors.Default;\r
}\r
\r
- private void InitCheckID(string id, TreeNodeCollection collection) {\r
- foreach (TreeNode actual in collection) {\r
- if (id.Equals(actual.Tag)) {\r
- actual.Checked = true;\r
- break;\r
- }\r
- }\r
- }\r
-\r
public void ClearSelection() {\r
if (selectedNode == null)\r
return;\r
selectedNode.Checked = false;\r
treeOctopus.AfterCheck += OnTreeAfterCheck;\r
selectedNode = null;\r
- IDChangedEvent?.Invoke(null, null);\r
+ IDChangedEvent?.Invoke(null, null, null);\r
}\r
\r
private void tabControl1_Selected(object sender, TabControlEventArgs e) {\r
//this.OnKeyDown(e);\r
}\r
\r
+ private void AddStories(IEnumerable<Story> stories, bool isFolderView = false) {\r
+ foreach (var story in stories) {\r
+ string name = story.Name == null ? OctopusAPI.UNNAMED : story.Name;\r
+ String ID = isFolderView ? story.ID : story.ParentStoryID;\r
+ string label = ID;\r
+ if (!String.IsNullOrEmpty(story.Format))\r
+ label += String.Format($" [{story.Format}] {story.Name}");\r
+ else\r
+ label += String.Format($" {story.Name}");\r
+\r
+ TreeNode storyNode = treeOctopus.Nodes.Add(ID, label);\r
+ storyNode.Tag = ID;\r
+ if (configuration.DisableStoryCheck)\r
+ HideCheckBox(treeOctopus, storyNode);\r
+ else {\r
+ if (lookupStoryId != null && lookupStoryId.Equals(story.ID))\r
+ storyNode.Checked = true;\r
+ }\r
+\r
+ MosObject[] mosObjects = story.MosObjects;\r
+ if (mosObjects == null)\r
+ continue;\r
+ foreach (MosObject mosObject in mosObjects) {\r
+ TreeNode placeHolderNode = storyNode.Nodes.Add(mosObject.ObjID, String.Format($"{mosObject.ObjID}"));\r
+ placeHolderNode.Tag = mosObject.ID;\r
+ if (configuration.DisablePlaceHolderCheck)\r
+ HideCheckBox(treeOctopus, placeHolderNode);\r
+ else {\r
+ if (lookupPlaceHolderId != null && lookupPlaceHolderId.Equals(mosObject.ObjID)) {\r
+ placeHolderNode.Checked = true;\r
+ storyNode.Expand();\r
+ }\r
+ }\r
+ }\r
+ }\r
+ }\r
+\r
private void OnTreeAfterCheck(object sender, TreeViewEventArgs e) {\r
//logger.Debug("Handling {0} {1} {2}", e.Node.Name, e.Node.Text, e.Node.Checked);\r
\r
}\r
\r
if (selectedNode.Checked)\r
- IDChangedEvent?.Invoke(selectedNode.Tag as string, selectedNode.Name);\r
+ IDChangedEvent?.Invoke(selectedNode.Tag as string, selectedNode.Name, selectedNode.Text);\r
else\r
- IDChangedEvent?.Invoke(null, null);\r
+ IDChangedEvent?.Invoke(null, null, null);\r
}\r
\r
public OctopusAPI GetClient() {\r