mirror of
https://github.com/cjcliffe/CubicSDR.git
synced 2024-10-31 15:37:11 -04:00
Use shift-right click for zero-right instead, additional cleanup
This commit is contained in:
parent
94ca0bbe54
commit
63631cd255
@ -163,9 +163,18 @@ void TuningCanvas::OnPaint(wxPaintEvent& WXUNUSED(event)) {
|
|||||||
SwapBuffers();
|
SwapBuffers();
|
||||||
}
|
}
|
||||||
|
|
||||||
void TuningCanvas::StepTuner(ActiveState state, int exponent, bool up) {
|
/***
|
||||||
double exp = pow(10, exponent);
|
* Perform tuner step
|
||||||
long long amount = up?exp:-exp;
|
*
|
||||||
|
* @param state Current hover state
|
||||||
|
* @param digit Digit position
|
||||||
|
* @param tuningDir Tuning direction, true for up
|
||||||
|
* @param preventCarry Prevent carry operation on digit overflow
|
||||||
|
* @param zeroOut Zero out 'digit' and lower digits
|
||||||
|
*/
|
||||||
|
void TuningCanvas::StepTuner(ActiveState state, TuningDirection tuningDir, int digit, bool preventCarry, bool zeroOut) {
|
||||||
|
double exp = pow(10, digit);
|
||||||
|
long long amount = tuningDir ? exp : -exp;
|
||||||
|
|
||||||
if (halfBand && state == TUNING_HOVER_BW) {
|
if (halfBand && state == TUNING_HOVER_BW) {
|
||||||
amount *= 2;
|
amount *= 2;
|
||||||
@ -176,11 +185,11 @@ void TuningCanvas::StepTuner(ActiveState state, int exponent, bool up) {
|
|||||||
long long freq = activeDemod->getFrequency();
|
long long freq = activeDemod->getFrequency();
|
||||||
long long diff = abs(wxGetApp().getFrequency() - freq);
|
long long diff = abs(wxGetApp().getFrequency() - freq);
|
||||||
|
|
||||||
if (ctrlDown) { // Zero digits to right
|
if (zeroOut) { // Zero digits to right
|
||||||
double intpart;
|
double intpart;
|
||||||
modf(freq / (exp * 10), &intpart);
|
modf(freq / (exp * 10), &intpart);
|
||||||
freq = intpart * exp * 10;
|
freq = intpart * exp * 10;
|
||||||
} else if (shiftDown) { // Prevent digit from carrying
|
} else if (preventCarry) { // Prevent digit from carrying
|
||||||
bool carried = (long long)((freq) / (exp * 10)) != (long long)((freq + amount) / (exp * 10)) || (bottom && freq < exp);
|
bool carried = (long long)((freq) / (exp * 10)) != (long long)((freq + amount) / (exp * 10)) || (bottom && freq < exp);
|
||||||
freq += carried?(9*-amount):amount;
|
freq += carried?(9*-amount):amount;
|
||||||
} else {
|
} else {
|
||||||
@ -203,11 +212,11 @@ void TuningCanvas::StepTuner(ActiveState state, int exponent, bool up) {
|
|||||||
if (state == TUNING_HOVER_BW) {
|
if (state == TUNING_HOVER_BW) {
|
||||||
long bw = wxGetApp().getDemodMgr().getLastBandwidth();
|
long bw = wxGetApp().getDemodMgr().getLastBandwidth();
|
||||||
|
|
||||||
if (ctrlDown) { // Zero digits to right
|
if (zeroOut) { // Zero digits to right
|
||||||
double intpart;
|
double intpart;
|
||||||
modf(bw / (exp * 10), &intpart);
|
modf(bw / (exp * 10), &intpart);
|
||||||
bw = intpart * exp * 10;
|
bw = intpart * exp * 10;
|
||||||
} else if (shiftDown) { // Prevent digit from carrying
|
} else if (preventCarry) { // Prevent digit from carrying
|
||||||
bool carried = (long)((bw) / (exp * 10)) != (long)((bw + amount) / (exp * 10)) || (bottom && bw < exp);
|
bool carried = (long)((bw) / (exp * 10)) != (long)((bw + amount) / (exp * 10)) || (bottom && bw < exp);
|
||||||
bw += carried?(9*-amount):amount;
|
bw += carried?(9*-amount):amount;
|
||||||
} else {
|
} else {
|
||||||
@ -227,11 +236,11 @@ void TuningCanvas::StepTuner(ActiveState state, int exponent, bool up) {
|
|||||||
|
|
||||||
if (state == TUNING_HOVER_CENTER) {
|
if (state == TUNING_HOVER_CENTER) {
|
||||||
long long ctr = wxGetApp().getFrequency();
|
long long ctr = wxGetApp().getFrequency();
|
||||||
if (ctrlDown) { // Zero digits to right
|
if (zeroOut) { // Zero digits to right
|
||||||
double intpart;
|
double intpart;
|
||||||
modf(ctr / (exp * 10), &intpart);
|
modf(ctr / (exp * 10), &intpart);
|
||||||
ctr = intpart * exp * 10;
|
ctr = intpart * exp * 10;
|
||||||
} else if (shiftDown) { // Prevent digit from carrying
|
} else if (preventCarry) { // Prevent digit from carrying
|
||||||
bool carried = (long long)((ctr) / (exp * 10)) != (long long)((ctr + amount) / (exp * 10)) || (bottom && ctr < exp);
|
bool carried = (long long)((ctr) / (exp * 10)) != (long long)((ctr + amount) / (exp * 10)) || (bottom && ctr < exp);
|
||||||
ctr += carried?(9*-amount):amount;
|
ctr += carried?(9*-amount):amount;
|
||||||
} else {
|
} else {
|
||||||
@ -242,7 +251,7 @@ void TuningCanvas::StepTuner(ActiveState state, int exponent, bool up) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (state == TUNING_HOVER_PPM) {
|
if (state == TUNING_HOVER_PPM) {
|
||||||
if (shiftDown) {
|
if (preventCarry) {
|
||||||
bool carried = (long long)((currentPPM) / (exp * 10)) != (long long)((currentPPM + amount) / (exp * 10)) || (bottom && currentPPM < exp);
|
bool carried = (long long)((currentPPM) / (exp * 10)) != (long long)((currentPPM + amount) / (exp * 10)) || (bottom && currentPPM < exp);
|
||||||
currentPPM += carried?(9*-amount):amount;
|
currentPPM += carried?(9*-amount):amount;
|
||||||
} else {
|
} else {
|
||||||
@ -267,12 +276,12 @@ void TuningCanvas::OnIdle(wxIdleEvent & /* event */) {
|
|||||||
if (downState != TUNING_HOVER_NONE) {
|
if (downState != TUNING_HOVER_NONE) {
|
||||||
dragAccum += 5.0*mouseTracker.getOriginDeltaMouseX();
|
dragAccum += 5.0*mouseTracker.getOriginDeltaMouseX();
|
||||||
while (dragAccum > 1.0) {
|
while (dragAccum > 1.0) {
|
||||||
StepTuner(downState, downIndex-1, true);
|
StepTuner(downState, TUNING_DIRECTION_UP, downIndex - 1, shiftDown, false);
|
||||||
dragAccum -= 1.0;
|
dragAccum -= 1.0;
|
||||||
dragging = true;
|
dragging = true;
|
||||||
}
|
}
|
||||||
while (dragAccum < -1.0) {
|
while (dragAccum < -1.0) {
|
||||||
StepTuner(downState, downIndex-1, false);
|
StepTuner(downState, TUNING_DIRECTION_DOWN, downIndex - 1, shiftDown, false);
|
||||||
dragAccum += 1.0;
|
dragAccum += 1.0;
|
||||||
dragging = true;
|
dragging = true;
|
||||||
}
|
}
|
||||||
@ -322,13 +331,13 @@ void TuningCanvas::OnMouseMoved(wxMouseEvent& event) {
|
|||||||
} else {
|
} else {
|
||||||
switch (hoverState) {
|
switch (hoverState) {
|
||||||
case TUNING_HOVER_FREQ:
|
case TUNING_HOVER_FREQ:
|
||||||
setStatusText("Click, wheel or drag(left/right) a digit to change frequency; SPACE or numeric key for direct input. Right click to set/clear snap. Hold ALT to change PPM. Hold SHIFT to disable carry. Hold CTRL to Zero Right.");
|
setStatusText("Click, wheel or drag(left/right) a digit to change frequency; SPACE or numeric key for direct input. Right click to set/clear snap. Hold ALT to change PPM. Hold SHIFT to disable carry. SHIFT-right click to Zero Right.");
|
||||||
break;
|
break;
|
||||||
case TUNING_HOVER_BW:
|
case TUNING_HOVER_BW:
|
||||||
setStatusText("Click, wheel or drag(left/right) a digit to change bandwidth; SPACE or numeric key for direct input. Hold SHIFT to disable carry. Hold CTRL to Zero Right.");
|
setStatusText("Click, wheel or drag(left/right) a digit to change bandwidth; SPACE or numeric key for direct input. Hold SHIFT to disable carry. SHIFT-right click to Zero Right.");
|
||||||
break;
|
break;
|
||||||
case TUNING_HOVER_CENTER:
|
case TUNING_HOVER_CENTER:
|
||||||
setStatusText("Click, wheel or drag(left/right) a digit to change center frequency; SPACE or numeric key for direct input. Hold SHIFT to disable carry. Hold CTRL to Zero Right.");
|
setStatusText("Click, wheel or drag(left/right) a digit to change center frequency; SPACE or numeric key for direct input. Hold SHIFT to disable carry. SHIFT-right click to Zero Right.");
|
||||||
break;
|
break;
|
||||||
case TUNING_HOVER_PPM:
|
case TUNING_HOVER_PPM:
|
||||||
setStatusText("Click, wheel or drag(left/right) a digit to change device PPM offset. Hold SHIFT to disable carry.");
|
setStatusText("Click, wheel or drag(left/right) a digit to change device PPM offset. Hold SHIFT to disable carry.");
|
||||||
@ -364,9 +373,9 @@ void TuningCanvas::OnMouseWheelMoved(wxMouseEvent& event) {
|
|||||||
|
|
||||||
if (hoverState != TUNING_HOVER_NONE && !mouseTracker.mouseDown() && hoverIndex) {
|
if (hoverState != TUNING_HOVER_NONE && !mouseTracker.mouseDown() && hoverIndex) {
|
||||||
if (event.m_wheelAxis == wxMOUSE_WHEEL_VERTICAL) {
|
if (event.m_wheelAxis == wxMOUSE_WHEEL_VERTICAL) {
|
||||||
StepTuner(hoverState, hExponent, (event.m_wheelRotation > 0)?true:false);
|
StepTuner(hoverState, (event.m_wheelRotation > 0) ? TUNING_DIRECTION_UP : TUNING_DIRECTION_DOWN, hExponent, shiftDown, false);
|
||||||
} else {
|
} else {
|
||||||
StepTuner(hoverState, hExponent, (event.m_wheelRotation < 0)?true:false);
|
StepTuner(hoverState, (event.m_wheelRotation < 0) ? TUNING_DIRECTION_UP : TUNING_DIRECTION_DOWN, hExponent, shiftDown, false);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -377,7 +386,7 @@ void TuningCanvas::OnMouseReleased(wxMouseEvent& event) {
|
|||||||
int hExponent = hoverIndex - 1;
|
int hExponent = hoverIndex - 1;
|
||||||
|
|
||||||
if (hoverState != TUNING_HOVER_NONE && !dragging && (downState == hoverState) && (downIndex == hoverIndex)) {
|
if (hoverState != TUNING_HOVER_NONE && !dragging && (downState == hoverState) && (downIndex == hoverIndex)) {
|
||||||
StepTuner(hoverState, hExponent, top);
|
StepTuner(hoverState, top ? TUNING_DIRECTION_UP : TUNING_DIRECTION_DOWN, hExponent, shiftDown, false);
|
||||||
}
|
}
|
||||||
|
|
||||||
mouseTracker.setVertDragLock(false);
|
mouseTracker.setVertDragLock(false);
|
||||||
@ -388,12 +397,23 @@ void TuningCanvas::OnMouseReleased(wxMouseEvent& event) {
|
|||||||
|
|
||||||
void TuningCanvas::OnMouseRightDown(wxMouseEvent& event) {
|
void TuningCanvas::OnMouseRightDown(wxMouseEvent& event) {
|
||||||
InteractiveCanvas::OnMouseRightDown(event);
|
InteractiveCanvas::OnMouseRightDown(event);
|
||||||
|
|
||||||
|
uxDown = 2.0 * (mouseTracker.getMouseX() - 0.5);
|
||||||
|
|
||||||
|
downIndex = hoverIndex;
|
||||||
|
downState = hoverState;
|
||||||
}
|
}
|
||||||
|
|
||||||
void TuningCanvas::OnMouseRightReleased(wxMouseEvent& event) {
|
void TuningCanvas::OnMouseRightReleased(wxMouseEvent& event) {
|
||||||
InteractiveCanvas::OnMouseRightReleased(event);
|
InteractiveCanvas::OnMouseRightReleased(event);
|
||||||
|
|
||||||
if (hoverState == TUNING_HOVER_FREQ) {
|
if (shiftDown) {
|
||||||
|
int hExponent = hoverIndex - 1;
|
||||||
|
|
||||||
|
if (hoverState != TUNING_HOVER_NONE && !dragging && (downState == hoverState) && (downIndex == hoverIndex)) {
|
||||||
|
StepTuner(hoverState, top ? TUNING_DIRECTION_UP : TUNING_DIRECTION_DOWN, hExponent, false, true);
|
||||||
|
}
|
||||||
|
} else if (hoverState == TUNING_HOVER_FREQ) {
|
||||||
if (hoverIndex == 1) {
|
if (hoverIndex == 1) {
|
||||||
wxGetApp().setFrequencySnap(1);
|
wxGetApp().setFrequencySnap(1);
|
||||||
} else if (hoverIndex > 1 && hoverIndex < 8) {
|
} else if (hoverIndex > 1 && hoverIndex < 8) {
|
||||||
|
@ -20,6 +20,9 @@ public:
|
|||||||
enum ActiveState {
|
enum ActiveState {
|
||||||
TUNING_HOVER_NONE, TUNING_HOVER_FREQ, TUNING_HOVER_BW, TUNING_HOVER_PPM, TUNING_HOVER_CENTER
|
TUNING_HOVER_NONE, TUNING_HOVER_FREQ, TUNING_HOVER_BW, TUNING_HOVER_PPM, TUNING_HOVER_CENTER
|
||||||
};
|
};
|
||||||
|
enum TuningDirection {
|
||||||
|
TUNING_DIRECTION_DOWN, TUNING_DIRECTION_UP
|
||||||
|
};
|
||||||
TuningCanvas(wxWindow *parent, const wxGLAttributes& dispAttrs);
|
TuningCanvas(wxWindow *parent, const wxGLAttributes& dispAttrs);
|
||||||
~TuningCanvas();
|
~TuningCanvas();
|
||||||
|
|
||||||
@ -45,7 +48,7 @@ private:
|
|||||||
void OnMouseRightDown(wxMouseEvent& event);
|
void OnMouseRightDown(wxMouseEvent& event);
|
||||||
void OnMouseRightReleased(wxMouseEvent& event);
|
void OnMouseRightReleased(wxMouseEvent& event);
|
||||||
|
|
||||||
void StepTuner(ActiveState state, int factor, bool up = true);
|
void StepTuner(ActiveState state, TuningDirection tuningDir, int digit, bool preventCarry = false, bool zeroOut = false);
|
||||||
|
|
||||||
TuningContext *glContext;
|
TuningContext *glContext;
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user