diff options
Diffstat (limited to 'app/bin/cmisc.c')
| -rw-r--r-- | app/bin/cmisc.c | 157 |
1 files changed, 84 insertions, 73 deletions
diff --git a/app/bin/cmisc.c b/app/bin/cmisc.c index 580c681..354c290 100644 --- a/app/bin/cmisc.c +++ b/app/bin/cmisc.c @@ -28,6 +28,7 @@ #include "track.h" #include "common-ui.h" #include "draw.h" +#include "note.h" EXPORT wIndex_t describeCmdInx; EXPORT BOOL_T inDescribeCmd; @@ -42,6 +43,7 @@ EXPORT BOOL_T descUndoStarted; static BOOL_T descNeedDrawHilite; static wWinPix_t describeW_posy; static wWinPix_t describeCmdButtonEnd; +EXPORT char * descTitle = "<>"; static wMenu_p descPopupM; @@ -230,7 +232,7 @@ static void DescribeUpdate( } if (!descUndoStarted) { - UndoStart(_("Change Track"), "Change Track"); + UndoStart( descTitle, "Change Track" ); descUndoStarted = TRUE; } @@ -296,30 +298,30 @@ static void DescribeUpdate( } -static void DescOk(void * junk) +EXPORT void DescribeDone(void * junk) { - wHide(describePG.win); - - if (layerValue && *layerValue>=0) { - SetTrkLayer(descTrk, - editableLayerList[*layerValue]); //int found that is really in the parm controls. + if (descTrk) { + CHECK(!IsTrackDeleted(descTrk)); + // TODO_CANCEL last arg could be true + if ( descUpdateFunc && descTrk && GetTrkType(descTrk) != T_NOTE ) { + descUpdateFunc(descTrk, -1, descData, !descUndoStarted); + } + if (layerValue && *layerValue>=0) { + SetTrkLayer(descTrk, + editableLayerList[*layerValue]); + } + // wipe out reference + layerValue = NULL; + descTrk = NULL; + } + if (describePG.win && wWinIsVisible(describePG.win)) { + wHide(describePG.win); } - layerValue = NULL; // wipe out reference - descUpdateFunc(descTrk, -1, descData, !descUndoStarted); - descTrk = NULL; - if (descUndoStarted) { UndoEnd(); descUndoStarted = FALSE; } - descNeedDrawHilite = FALSE; - if (programMode == MODE_DESIGN) { - Reset(); // DescOk - } else { - descNeedDrawHilite = FALSE; - wSetCursor(mainD.d,defaultCursor); - } } @@ -461,12 +463,16 @@ void DoDescribe(char * title, track_p trk, descData_p data, descUpdate_t update) descData = data; descUpdateFunc = update; describeW_posy = 0; + descTitle = title; if (describePG.win == NULL) { /* SDB 5.13.2005 */ - ParamCreateDialog(&describePG, _("Description"), _("Done"), DescOk, - (paramActionCancelProc) DescribeCancel, - TRUE, DescribeLayout, F_RECALLPOS, + ParamCreateDialog(&describePG, _("Description"), + //_("Done"), DescribeDone, + NULL, NULL, + ParamCancel_Reset, + TRUE, DescribeLayout, + F_RECALLPOS|PD_F_ALT_CANCELLABEL, DescribeUpdate); describeCmdButtonEnd = wControlBelow((wControl_p)describePG.helpB); } @@ -561,26 +567,6 @@ static void DescChange(long changes) */ -EXPORT void DescribeCancel(void) -{ - if (describePG.win && wWinIsVisible(describePG.win)) { - if (descTrk) { - CHECK(!IsTrackDeleted(descTrk)); - descUpdateFunc(descTrk, -1, descData, TRUE); - descTrk = NULL; - - } - - wHide(describePG.win); - - if (descUndoStarted) { - UndoEnd(); - descUndoStarted = FALSE; - } - } - - descNeedDrawHilite = FALSE; -} EXPORT STATUS_T CmdDescribe(wAction_t action, coOrd pos) @@ -590,10 +576,11 @@ EXPORT STATUS_T CmdDescribe(wAction_t action, coOrd pos) switch (action) { case C_START: - InfoMessage(_("Select track to describe +Shift for Frozen")); + InfoMessage(_("Click on object for Properties +Shift for Frozen")); wSetCursor(mainD.d,wCursorQuestion); descUndoStarted = FALSE; trk = NULL; + descTrk = NULL; return C_CONTINUE; case wActionMove: @@ -607,38 +594,59 @@ EXPORT STATUS_T CmdDescribe(wAction_t action, coOrd pos) case C_DOWN: - if ((trk = OnTrack(&pos, FALSE, FALSE)) != NULL) { - if (GetLayerFrozen(GetTrkLayer(trk)) && !(MyGetKeyState()& WKEY_SHIFT)) { - InfoMessage("Track is Frozen, Add Shift to Describe"); - trk = NULL; - return C_CONTINUE; - } - if (describePG.win && wWinIsVisible(describePG.win) && descTrk) { - descUpdateFunc(descTrk, -1, descData, TRUE); - descTrk = NULL; - } + if ((trk = OnTrack(&pos, FALSE, FALSE)) == NULL) { + // Not a track - ignore + return C_CONTINUE; + } +#ifdef TODO_CANCEL + if ( trk == descTrk ) { + // Same track - ignore + return C_CONTINUE; + } +#endif + InfoMessage( "" ); + DescribeDone( NULL ); + if ( trk == NULL ) { + // This should not happen. + // Somebody is stomping on trk + // Unreproducible. + printf( "CmdDescribe: trk is NULL!\n" ); + return C_CONTINUE; + } + if (GetLayerFrozen(GetTrkLayer(trk)) && !(MyGetKeyState()& WKEY_SHIFT)) { + InfoMessage("Track is Frozen, Add Shift to Describe"); + trk = NULL; + return C_CONTINUE; + } + if (describePG.win && wWinIsVisible(describePG.win) && descTrk) { + // finish update + descUpdateFunc(descTrk, -1, descData, TRUE); + descTrk = NULL; + } - descBorder = mainD.scale*0.1; + descBorder = mainD.scale*0.1; - if (descBorder < trackGauge) { - descBorder = trackGauge; - } + if (descBorder < trackGauge) { + descBorder = trackGauge; + } - inDescribeCmd = TRUE; - GetBoundingBox(trk, &descSize, &descOrig); - descOrig.x -= descBorder; - descOrig.y -= descBorder; - descSize.x -= descOrig.x-descBorder; - descSize.y -= descOrig.y-descBorder; - descNeedDrawHilite = TRUE; - DescribeTrack(trk, msg, 255); - inDescribeCmd = FALSE; - InfoMessage(msg); - trk = NULL; + inDescribeCmd = TRUE; + GetBoundingBox(trk, &descSize, &descOrig); + descOrig.x -= descBorder; + descOrig.y -= descBorder; + descSize.x -= descOrig.x-descBorder; + descSize.y -= descOrig.y-descBorder; + descNeedDrawHilite = TRUE; + DescribeTrack(trk, msg, 255); + inDescribeCmd = FALSE; + InfoMessage(msg); + // Ugly code: but Describe Notes do not continue like other objects + if ( GetTrkType( trk ) != T_NOTE ) { + descTrk = trk; } else { - InfoMessage(""); + descTrk = NULL; } - + trk = NULL; return C_CONTINUE; case C_REDRAW: @@ -667,7 +675,7 @@ EXPORT STATUS_T CmdDescribe(wAction_t action, coOrd pos) break; case C_CANCEL: - DescribeCancel(); + DescribeDone( NULL ); wSetCursor(mainD.d,defaultCursor); return C_CONTINUE; @@ -675,6 +683,9 @@ EXPORT STATUS_T CmdDescribe(wAction_t action, coOrd pos) menuPos = pos; if (!trk) { wMenuPopupShow(descPopupM); } return C_CONTINUE; + + case C_FINISH: + return C_CONTINUE; } @@ -683,19 +694,19 @@ EXPORT STATUS_T CmdDescribe(wAction_t action, coOrd pos) -#include "bitmaps/describe.xpm3" +#include "bitmaps/describe.image3" void InitCmdDescribe(wMenu_p menu) { describeCmdInx = AddMenuButton(menu, CmdDescribe, "cmdDescribe", - _("Properties"), wIconCreatePixMap(describe_xpm3[iconSize]), + _("Properties"), wIconCreatePixMap(describe_image3[iconSize]), LEVEL0, IC_CANCEL|IC_POPUP|IC_WANT_MOVE|IC_CMDMENU, ACCL_DESCRIBE, NULL); RegisterChangeNotification(DescChange); ParamRegister(&describePG); } void InitCmdDescribe2(wMenu_p menu) { - descPopupM = MenuRegister( "Describe Context Menu" ); + descPopupM = MenuRegister( "Properties Context Menu" ); wMenuPushCreate(descPopupM, "cmdSelectMode", GetBalloonHelpStr("cmdSelectMode"), 0, DoCommandB, I2VP(selectCmdInx)); wMenuPushCreate(descPopupM, "cmdModifyMode", GetBalloonHelpStr("cmdModifyMode"), |
