From: John F. <jo...@us...> - 2012-11-08 10:21:52
|
Update of /cvsroot/ingex/ingex/studio/ace-tao/Ingexgui/src In directory vz-cvs-4.sog:/tmp/cvs-serv9675 Modified Files: eventlist.cpp eventlist.h ingexgui.cpp Log Message: Prevent editing of non-editable cue point descriptions. Index: eventlist.h =================================================================== RCS file: /cvsroot/ingex/ingex/studio/ace-tao/Ingexgui/src/eventlist.h,v retrieving revision 1.19 retrieving revision 1.20 diff -C2 -d -r1.19 -r1.20 *** eventlist.h 2 Apr 2012 14:34:30 -0000 1.19 --- eventlist.h 8 Nov 2012 10:21:49 -0000 1.20 *************** *** 62,66 **** void SetSavedState(SavedState * savedState); void CanEdit(const bool); ! bool LatestChunkCuePointIsSelected(); bool AtTop(); bool AtStartOfTake(); --- 62,66 ---- void SetSavedState(SavedState * savedState); void CanEdit(const bool); ! bool EditableCuePointIsSelected(); bool AtTop(); bool AtStartOfTake(); Index: eventlist.cpp =================================================================== RCS file: /cvsroot/ingex/ingex/studio/ace-tao/Ingexgui/src/eventlist.cpp,v retrieving revision 1.29 retrieving revision 1.30 diff -C2 -d -r1.29 -r1.30 *** eventlist.cpp 18 Oct 2012 13:58:12 -0000 1.29 --- eventlist.cpp 8 Nov 2012 10:21:49 -0000 1.30 *************** *** 275,280 **** void EventList::OnEventBeginEdit(wxListEvent& event) { ! wxXmlNode * currentNode = GetNode(event.GetIndex()); ! if (currentNode && currentNode->GetName() == wxT("CuePoint") && !currentNode->GetParent()->GetParent()->GetNext()) { //a cue point in the latest chunk //want to edit the description text (as opposed to the column 0 label text), so transfer it to the label wxListItem item; --- 275,279 ---- void EventList::OnEventBeginEdit(wxListEvent& event) { ! if (EditableCuePointIsSelected()) { //assume the item in question is the selected item //want to edit the description text (as opposed to the column 0 label text), so transfer it to the label wxListItem item; *************** *** 473,478 **** } ! /// Returns true if an event is selected and if it's a cue point in the latest chunk. ! bool EventList::LatestChunkCuePointIsSelected() { wxMutexLocker lock(mMutex); --- 472,477 ---- } ! /// Returns true if an event is selected that is a cue point that can be edited. ! bool EventList::EditableCuePointIsSelected() { wxMutexLocker lock(mMutex); *************** *** 480,485 **** return selectedNode //something selected && wxT("CuePoint") == selectedNode->GetName() //a cue point is selected ! && !selectedNode->GetParent()->GetParent()->GetNext() //within last chunk ! && !selectedNode->GetParent()->GetParent()->GetParent()->GetParent()->GetNext(); //within last recording } --- 479,484 ---- return selectedNode //something selected && wxT("CuePoint") == selectedNode->GetName() //a cue point is selected ! && !selectedNode->GetParent()->GetParent()->GetNext() //within last chunk (as earlier chunks' cue points have already been sent to the recorders) ! && !selectedNode->GetParent()->GetParent()->GetParent()->GetParent()->HasProp(wxT("OutFrame")); //the recording has not finished (so this chunk's cue points have not been sent to the recorders) } *************** *** 629,632 **** --- 628,632 ---- } else { + if (STOP == type) currentRecordingNode->AddProperty(wxT("OutFrame"), wxString::Format(wxT("%d"), 0)); //make sure this attribute is present as it's checked elsewhere to determine whether recording is occurring or not timecode = &tc; //invalid timecode } *************** *** 863,893 **** void EventList::DeleteCuePoint() { ! long selected = GetFirstSelected(); ! if (-1 < selected) { wxMutexLocker lock(mMutex); wxXmlNode * cuePointNode = GetNode(selected); ! if (cuePointNode ! && wxT("CuePoint") == cuePointNode->GetName() //currently selected node is a cue point node ! && GetCreatingChunkNode() == cuePointNode->GetParent()->GetParent() //in the last chunk ! && !GetRecordingNode(cuePointNode)->HasProp(wxT("OutFrame"))) //in last recording, and recording ! { ! //remove displayed cue point ! wxListItem item; ! item.SetId(selected); ! DeleteItem(item); ! //remove node ! wxXmlNode * cuePointsNode = cuePointNode->GetParent(); ! cuePointsNode->RemoveChild(cuePointNode); ! delete cuePointNode; ! //remove parent if no cue points left ! if (!cuePointsNode->GetChildren()) { ! cuePointsNode->GetParent()->RemoveChild(cuePointsNode); ! delete cuePointsNode; ! } ! SaveDocument(); ! mMutex.Unlock(); ! //Selected row has gone so select something sensible (the next row, or the last row if the last row was deleted) ! Select(GetItemCount() == selected ? selected - 1 : selected); //Generates an event which will update the delete cue button state } } } --- 863,887 ---- void EventList::DeleteCuePoint() { ! if (EditableCuePointIsSelected()) { ! long selected = GetFirstSelected(); wxMutexLocker lock(mMutex); wxXmlNode * cuePointNode = GetNode(selected); ! //remove displayed cue point ! wxListItem item; ! item.SetId(selected); ! DeleteItem(item); ! //remove node ! wxXmlNode * cuePointsNode = cuePointNode->GetParent(); ! cuePointsNode->RemoveChild(cuePointNode); ! delete cuePointNode; ! //remove parent if no cue points left ! if (!cuePointsNode->GetChildren()) { ! cuePointsNode->GetParent()->RemoveChild(cuePointsNode); ! delete cuePointsNode; } + SaveDocument(); + mMutex.Unlock(); + //Selected row has gone so select something sensible (the next row, or the last row if the last row was deleted) + Select(GetItemCount() == selected ? selected - 1 : selected); //Generates an event which will update the delete cue button state } } Index: ingexgui.cpp =================================================================== RCS file: /cvsroot/ingex/ingex/studio/ace-tao/Ingexgui/src/ingexgui.cpp,v retrieving revision 1.52 retrieving revision 1.53 diff -C2 -d -r1.52 -r1.53 *** ingexgui.cpp 18 Oct 2012 13:58:12 -0000 1.52 --- ingexgui.cpp 8 Nov 2012 10:21:49 -0000 1.53 *************** *** 2170,2175 **** break; case BUTTON_DeleteCue: ! enabled = RECORDING == mStatus //no point in deleting cue points after recording, as the descriptions have already been sent to the recorder ! && mEventList->LatestChunkCuePointIsSelected(); //it's an appropriate cue point break; case BUTTON_ClearDescription: --- 2170,2174 ---- break; case BUTTON_DeleteCue: ! enabled = mEventList->EditableCuePointIsSelected(); break; case BUTTON_ClearDescription: |