diff options
Diffstat (limited to 'ldmicro/schematic.cpp')
-rw-r--r-- | ldmicro/schematic.cpp | 946 |
1 files changed, 473 insertions, 473 deletions
diff --git a/ldmicro/schematic.cpp b/ldmicro/schematic.cpp index 84be7b6..849093e 100644 --- a/ldmicro/schematic.cpp +++ b/ldmicro/schematic.cpp @@ -21,7 +21,7 @@ // Actual manipulation of circuit elements happens in circuit.cpp, though. // Jonathan Westhues, Oct 2004 //----------------------------------------------------------------------------- -#include <windows.h> +#include "linuxUI.h" #include <stdio.h> #include <stdlib.h> @@ -83,43 +83,43 @@ BOOL FindSelected(int *gx, int *gy) //----------------------------------------------------------------------------- void SelectElement(int gx, int gy, int state) { - if(gx < 0 || gy < 0) { - if(!FindSelected(&gx, &gy)) { - return; - } - } - - if(Selected) Selected->selectedState = SELECTED_NONE; - - Selected = DisplayMatrix[gx][gy]; - SelectedWhich = DisplayMatrixWhich[gx][gy]; - - if(SelectedWhich == ELEM_PLACEHOLDER) { - state = SELECTED_LEFT; - } - - if((gy - ScrollYOffset) >= ScreenRowsAvailable()) { - ScrollYOffset = gy - ScreenRowsAvailable() + 1; - RefreshScrollbars(); - } - if((gy - ScrollYOffset) < 0) { - ScrollYOffset = gy; - RefreshScrollbars(); - } - if((gx - ScrollXOffset*POS_WIDTH*FONT_WIDTH) >= ScreenColsAvailable()) { - ScrollXOffset = gx*POS_WIDTH*FONT_WIDTH - ScreenColsAvailable(); - RefreshScrollbars(); - } - if((gx - ScrollXOffset*POS_WIDTH*FONT_WIDTH) < 0) { - ScrollXOffset = gx*POS_WIDTH*FONT_WIDTH; - RefreshScrollbars(); - } - - ok(); - Selected->selectedState = state; - ok(); - - WhatCanWeDoFromCursorAndTopology(); +// if(gx < 0 || gy < 0) { +// if(!FindSelected(&gx, &gy)) { +// return; +// } +// } + +// if(Selected) Selected->selectedState = SELECTED_NONE; + +// Selected = DisplayMatrix[gx][gy]; +// SelectedWhich = DisplayMatrixWhich[gx][gy]; + +// if(SelectedWhich == ELEM_PLACEHOLDER) { +// state = SELECTED_LEFT; +// } + +// if((gy - ScrollYOffset) >= ScreenRowsAvailable()) { +// ScrollYOffset = gy - ScreenRowsAvailable() + 1; +// RefreshScrollbars(); +// } +// if((gy - ScrollYOffset) < 0) { +// ScrollYOffset = gy; +// RefreshScrollbars(); +// } +// if((gx - ScrollXOffset*POS_WIDTH*FONT_WIDTH) >= ScreenColsAvailable()) { +// ScrollXOffset = gx*POS_WIDTH*FONT_WIDTH - ScreenColsAvailable(); +// RefreshScrollbars(); +// } +// if((gx - ScrollXOffset*POS_WIDTH*FONT_WIDTH) < 0) { +// ScrollXOffset = gx*POS_WIDTH*FONT_WIDTH; +// RefreshScrollbars(); +// } + +// ok(); +// Selected->selectedState = state; +// ok(); + +// WhatCanWeDoFromCursorAndTopology(); } //----------------------------------------------------------------------------- @@ -129,86 +129,86 @@ void SelectElement(int gx, int gy, int state) //----------------------------------------------------------------------------- void WhatCanWeDoFromCursorAndTopology(void) { - BOOL canNegate = FALSE, canNormal = FALSE; - BOOL canResetOnly = FALSE, canSetOnly = FALSE; - BOOL canPushUp = TRUE, canPushDown = TRUE; - - BOOL canDelete = TRUE; - - int i = RungContainingSelected(); - if(i >= 0) { - if(i == 0) canPushUp = FALSE; - if(i == (Prog.numRungs-1)) canPushDown = FALSE; - - if(Prog.rungs[i]->count == 1 && - Prog.rungs[i]->contents[0].which == ELEM_PLACEHOLDER) - { - canDelete = FALSE; - } - } - - CanInsertEnd = FALSE; - CanInsertOther = TRUE; - - if(Selected && - (SelectedWhich == ELEM_COIL || - SelectedWhich == ELEM_RES || - SelectedWhich == ELEM_ADD || - SelectedWhich == ELEM_SUB || - SelectedWhich == ELEM_MUL || - SelectedWhich == ELEM_DIV || - SelectedWhich == ELEM_CTC || - SelectedWhich == ELEM_READ_ADC || - SelectedWhich == ELEM_SET_PWM || - SelectedWhich == ELEM_MASTER_RELAY || - SelectedWhich == ELEM_SHIFT_REGISTER || - SelectedWhich == ELEM_LOOK_UP_TABLE || - SelectedWhich == ELEM_PIECEWISE_LINEAR || - SelectedWhich == ELEM_PERSIST || - SelectedWhich == ELEM_MOVE)) - { - if(SelectedWhich == ELEM_COIL) { - canNegate = TRUE; - canNormal = TRUE; - canResetOnly = TRUE; - canSetOnly = TRUE; - } - - if(Selected->selectedState == SELECTED_ABOVE || - Selected->selectedState == SELECTED_BELOW) - { - CanInsertEnd = TRUE; - CanInsertOther = FALSE; - } else if(Selected->selectedState == SELECTED_RIGHT) { - CanInsertEnd = FALSE; - CanInsertOther = FALSE; - } - } else if(Selected) { - if(Selected->selectedState == SELECTED_RIGHT || - SelectedWhich == ELEM_PLACEHOLDER) - { - CanInsertEnd = ItemIsLastInCircuit(Selected); - } - } - if(SelectedWhich == ELEM_CONTACTS) { - canNegate = TRUE; - canNormal = TRUE; - } - if(SelectedWhich == ELEM_PLACEHOLDER) { - // a comment must be the only element in its rung, and it will fill - // the rung entirely - CanInsertComment = TRUE; - } else { - CanInsertComment = FALSE; - } - if(SelectedWhich == ELEM_COMMENT) { - // if there's a comment there already then don't let anything else - // into the rung - CanInsertEnd = FALSE; - CanInsertOther = FALSE; - } - SetMenusEnabled(canNegate, canNormal, canResetOnly, canSetOnly, canDelete, - CanInsertEnd, CanInsertOther, canPushDown, canPushUp, CanInsertComment); +// BOOL canNegate = FALSE, canNormal = FALSE; +// BOOL canResetOnly = FALSE, canSetOnly = FALSE; +// BOOL canPushUp = TRUE, canPushDown = TRUE; + +// BOOL canDelete = TRUE; + +// int i = RungContainingSelected(); +// if(i >= 0) { +// if(i == 0) canPushUp = FALSE; +// if(i == (Prog.numRungs-1)) canPushDown = FALSE; + +// if(Prog.rungs[i]->count == 1 && +// Prog.rungs[i]->contents[0].which == ELEM_PLACEHOLDER) +// { +// canDelete = FALSE; +// } +// } + +// CanInsertEnd = FALSE; +// CanInsertOther = TRUE; + +// if(Selected && +// (SelectedWhich == ELEM_COIL || +// SelectedWhich == ELEM_RES || +// SelectedWhich == ELEM_ADD || +// SelectedWhich == ELEM_SUB || +// SelectedWhich == ELEM_MUL || +// SelectedWhich == ELEM_DIV || +// SelectedWhich == ELEM_CTC || +// SelectedWhich == ELEM_READ_ADC || +// SelectedWhich == ELEM_SET_PWM || +// SelectedWhich == ELEM_MASTER_RELAY || +// SelectedWhich == ELEM_SHIFT_REGISTER || +// SelectedWhich == ELEM_LOOK_UP_TABLE || +// SelectedWhich == ELEM_PIECEWISE_LINEAR || +// SelectedWhich == ELEM_PERSIST || +// SelectedWhich == ELEM_MOVE)) +// { +// if(SelectedWhich == ELEM_COIL) { +// canNegate = TRUE; +// canNormal = TRUE; +// canResetOnly = TRUE; +// canSetOnly = TRUE; +// } + +// if(Selected->selectedState == SELECTED_ABOVE || +// Selected->selectedState == SELECTED_BELOW) +// { +// CanInsertEnd = TRUE; +// CanInsertOther = FALSE; +// } else if(Selected->selectedState == SELECTED_RIGHT) { +// CanInsertEnd = FALSE; +// CanInsertOther = FALSE; +// } +// } else if(Selected) { +// if(Selected->selectedState == SELECTED_RIGHT || +// SelectedWhich == ELEM_PLACEHOLDER) +// { +// CanInsertEnd = ItemIsLastInCircuit(Selected); +// } +// } +// if(SelectedWhich == ELEM_CONTACTS) { +// canNegate = TRUE; +// canNormal = TRUE; +// } +// if(SelectedWhich == ELEM_PLACEHOLDER) { +// // a comment must be the only element in its rung, and it will fill +// // the rung entirely +// CanInsertComment = TRUE; +// } else { +// CanInsertComment = FALSE; +// } +// if(SelectedWhich == ELEM_COMMENT) { +// // if there's a comment there already then don't let anything else +// // into the rung +// CanInsertEnd = FALSE; +// CanInsertOther = FALSE; +// } +// SetMenusEnabled(canNegate, canNormal, canResetOnly, canSetOnly, canDelete, +// CanInsertEnd, CanInsertOther, canPushDown, canPushUp, CanInsertComment); } //----------------------------------------------------------------------------- @@ -250,33 +250,33 @@ void ForgetEverything(void) //----------------------------------------------------------------------------- BOOL MoveCursorTopLeft(void) { - int i, j; - // Let us first try to place it somewhere on-screen, so start at the - // vertical scroll offset, not the very top (to avoid placing the - // cursor in a position that would force us to scroll to put it in to - // view.) - for(i = 0; i < DISPLAY_MATRIX_X_SIZE; i++) { - for(j = ScrollYOffset; - j < DISPLAY_MATRIX_Y_SIZE && j < (ScrollYOffset+16); j++) - { - if(VALID_LEAF(DisplayMatrix[i][j])) { - SelectElement(i, j, SELECTED_LEFT); - return TRUE; - } - } - } - - // If that didn't work, then try anywhere on the diagram before giving - // up entirely. - for(i = 0; i < DISPLAY_MATRIX_X_SIZE; i++) { - for(j = 0; j < 16; j++) { - if(VALID_LEAF(DisplayMatrix[i][j])) { - SelectElement(i, j, SELECTED_LEFT); - return TRUE; - } - } - } - return FALSE; +// int i, j; +// // Let us first try to place it somewhere on-screen, so start at the +// // vertical scroll offset, not the very top (to avoid placing the +// // cursor in a position that would force us to scroll to put it in to +// // view.) +// for(i = 0; i < DISPLAY_MATRIX_X_SIZE; i++) { +// for(j = ScrollYOffset; +// j < DISPLAY_MATRIX_Y_SIZE && j < (ScrollYOffset+16); j++) +// { +// if(VALID_LEAF(DisplayMatrix[i][j])) { +// SelectElement(i, j, SELECTED_LEFT); +// return TRUE; +// } +// } +// } + +// // If that didn't work, then try anywhere on the diagram before giving +// // up entirely. +// for(i = 0; i < DISPLAY_MATRIX_X_SIZE; i++) { +// for(j = 0; j < 16; j++) { +// if(VALID_LEAF(DisplayMatrix[i][j])) { +// SelectElement(i, j, SELECTED_LEFT); +// return TRUE; +// } +// } +// } +// return FALSE; } //----------------------------------------------------------------------------- @@ -287,108 +287,108 @@ BOOL MoveCursorTopLeft(void) //----------------------------------------------------------------------------- void MoveCursorKeyboard(int keyCode) { - if(!Selected || Selected->selectedState == SELECTED_NONE) { - MoveCursorTopLeft(); - return; - } - - switch(keyCode) { - case VK_LEFT: { - if(!Selected || Selected->selectedState == SELECTED_NONE) { - break; - } - if(Selected->selectedState != SELECTED_LEFT) { - SelectElement(-1, -1, SELECTED_LEFT); - break; - } - if(SelectedWhich == ELEM_COMMENT) break; - int i, j; - if(FindSelected(&i, &j)) { - i--; - while(i >= 0 && (!VALID_LEAF(DisplayMatrix[i][j]) || - (DisplayMatrix[i][j] == Selected))) - { - i--; - } - if(i >= 0) { - SelectElement(i, j, SELECTED_RIGHT); - } - } - break; - } - case VK_RIGHT: { - if(!Selected || Selected->selectedState == SELECTED_NONE) { - break; - } - if(Selected->selectedState != SELECTED_RIGHT) { - SelectElement(-1, -1, SELECTED_RIGHT); - break; - } - if(SelectedWhich == ELEM_COMMENT) break; - int i, j; - if(FindSelected(&i, &j)) { - i++; - while(i < DISPLAY_MATRIX_X_SIZE && - !VALID_LEAF(DisplayMatrix[i][j])) - { - i++; - } - if(i != DISPLAY_MATRIX_X_SIZE) { - SelectElement(i, j, SELECTED_LEFT); - } - } - break; - } - case VK_UP: { - if(!Selected || Selected->selectedState == SELECTED_NONE) { - break; - } - if(Selected->selectedState != SELECTED_ABOVE && - SelectedWhich != ELEM_PLACEHOLDER) - { - SelectElement(-1, -1, SELECTED_ABOVE); - break; - } - int i, j; - if(FindSelected(&i, &j)) { - j--; - while(j >= 0 && !VALID_LEAF(DisplayMatrix[i][j])) - j--; - if(j >= 0) { - SelectElement(i, j, SELECTED_BELOW); - } - } - break; - } - case VK_DOWN: { - if(!Selected || Selected->selectedState == SELECTED_NONE) { - break; - } - if(Selected->selectedState != SELECTED_BELOW && - SelectedWhich != ELEM_PLACEHOLDER) - { - SelectElement(-1, -1, SELECTED_BELOW); - break; - } - int i, j; - if(FindSelected(&i, &j)) { - j++; - while(j < DISPLAY_MATRIX_Y_SIZE && - !VALID_LEAF(DisplayMatrix[i][j])) - { - j++; - } - if(j != DISPLAY_MATRIX_Y_SIZE) { - SelectElement(i, j, SELECTED_ABOVE); - } else if(ScrollYOffsetMax - ScrollYOffset < 3) { - // special case: scroll the end marker into view - ScrollYOffset = ScrollYOffsetMax; - RefreshScrollbars(); - } - } - break; - } - } +// if(!Selected || Selected->selectedState == SELECTED_NONE) { +// MoveCursorTopLeft(); +// return; +// } + +// switch(keyCode) { +// case VK_LEFT: { +// if(!Selected || Selected->selectedState == SELECTED_NONE) { +// break; +// } +// if(Selected->selectedState != SELECTED_LEFT) { +// SelectElement(-1, -1, SELECTED_LEFT); +// break; +// } +// if(SelectedWhich == ELEM_COMMENT) break; +// int i, j; +// if(FindSelected(&i, &j)) { +// i--; +// while(i >= 0 && (!VALID_LEAF(DisplayMatrix[i][j]) || +// (DisplayMatrix[i][j] == Selected))) +// { +// i--; +// } +// if(i >= 0) { +// SelectElement(i, j, SELECTED_RIGHT); +// } +// } +// break; +// } +// case VK_RIGHT: { +// if(!Selected || Selected->selectedState == SELECTED_NONE) { +// break; +// } +// if(Selected->selectedState != SELECTED_RIGHT) { +// SelectElement(-1, -1, SELECTED_RIGHT); +// break; +// } +// if(SelectedWhich == ELEM_COMMENT) break; +// int i, j; +// if(FindSelected(&i, &j)) { +// i++; +// while(i < DISPLAY_MATRIX_X_SIZE && +// !VALID_LEAF(DisplayMatrix[i][j])) +// { +// i++; +// } +// if(i != DISPLAY_MATRIX_X_SIZE) { +// SelectElement(i, j, SELECTED_LEFT); +// } +// } +// break; +// } +// case VK_UP: { +// if(!Selected || Selected->selectedState == SELECTED_NONE) { +// break; +// } +// if(Selected->selectedState != SELECTED_ABOVE && +// SelectedWhich != ELEM_PLACEHOLDER) +// { +// SelectElement(-1, -1, SELECTED_ABOVE); +// break; +// } +// int i, j; +// if(FindSelected(&i, &j)) { +// j--; +// while(j >= 0 && !VALID_LEAF(DisplayMatrix[i][j])) +// j--; +// if(j >= 0) { +// SelectElement(i, j, SELECTED_BELOW); +// } +// } +// break; +// } +// case VK_DOWN: { +// if(!Selected || Selected->selectedState == SELECTED_NONE) { +// break; +// } +// if(Selected->selectedState != SELECTED_BELOW && +// SelectedWhich != ELEM_PLACEHOLDER) +// { +// SelectElement(-1, -1, SELECTED_BELOW); +// break; +// } +// int i, j; +// if(FindSelected(&i, &j)) { +// j++; +// while(j < DISPLAY_MATRIX_Y_SIZE && +// !VALID_LEAF(DisplayMatrix[i][j])) +// { +// j++; +// } +// if(j != DISPLAY_MATRIX_Y_SIZE) { +// SelectElement(i, j, SELECTED_ABOVE); +// } else if(ScrollYOffsetMax - ScrollYOffset < 3) { +// // special case: scroll the end marker into view +// ScrollYOffset = ScrollYOffsetMax; +// RefreshScrollbars(); +// } +// } +// break; +// } +// } } //----------------------------------------------------------------------------- @@ -397,100 +397,100 @@ void MoveCursorKeyboard(int keyCode) //----------------------------------------------------------------------------- void EditSelectedElement(void) { - if(!Selected || Selected->selectedState == SELECTED_NONE) return; - - switch(SelectedWhich) { - case ELEM_COMMENT: - ShowCommentDialog(Selected->d.comment.str); - break; - - case ELEM_CONTACTS: - ShowContactsDialog(&(Selected->d.contacts.negated), - Selected->d.contacts.name); - break; - - case ELEM_COIL: - ShowCoilDialog(&(Selected->d.coil.negated), - &(Selected->d.coil.setOnly), &(Selected->d.coil.resetOnly), - Selected->d.coil.name); - break; - - case ELEM_TON: - case ELEM_TOF: - case ELEM_RTO: - ShowTimerDialog(SelectedWhich, &(Selected->d.timer.delay), - Selected->d.timer.name); - break; - - case ELEM_CTU: - case ELEM_CTD: - case ELEM_CTC: - ShowCounterDialog(SelectedWhich, &(Selected->d.counter.max), - Selected->d.counter.name); - break; - - case ELEM_EQU: - case ELEM_NEQ: - case ELEM_GRT: - case ELEM_GEQ: - case ELEM_LES: - case ELEM_LEQ: - ShowCmpDialog(SelectedWhich, Selected->d.cmp.op1, - Selected->d.cmp.op2); - break; - - case ELEM_ADD: - case ELEM_SUB: - case ELEM_MUL: - case ELEM_DIV: - ShowMathDialog(SelectedWhich, Selected->d.math.dest, - Selected->d.math.op1, Selected->d.math.op2); - break; - - case ELEM_RES: - ShowResetDialog(Selected->d.reset.name); - break; - - case ELEM_MOVE: - ShowMoveDialog(Selected->d.move.dest, Selected->d.move.src); - break; - - case ELEM_SET_PWM: - ShowSetPwmDialog(Selected->d.setPwm.name, - &(Selected->d.setPwm.targetFreq)); - break; - - case ELEM_READ_ADC: - ShowReadAdcDialog(Selected->d.readAdc.name+1); - break; - - case ELEM_UART_RECV: - case ELEM_UART_SEND: - ShowUartDialog(SelectedWhich, Selected->d.uart.name); - break; - - case ELEM_PERSIST: - ShowPersistDialog(Selected->d.persist.var); - break; - - case ELEM_SHIFT_REGISTER: - ShowShiftRegisterDialog(Selected->d.shiftRegister.name, - &(Selected->d.shiftRegister.stages)); - break; - - case ELEM_FORMATTED_STRING: - ShowFormattedStringDialog(Selected->d.fmtdStr.var, - Selected->d.fmtdStr.string); - break; - - case ELEM_PIECEWISE_LINEAR: - ShowPiecewiseLinearDialog(Selected); - break; - - case ELEM_LOOK_UP_TABLE: - ShowLookUpTableDialog(Selected); - break; - } +// if(!Selected || Selected->selectedState == SELECTED_NONE) return; + +// switch(SelectedWhich) { +// case ELEM_COMMENT: +// ShowCommentDialog(Selected->d.comment.str); +// break; + +// case ELEM_CONTACTS: +// ShowContactsDialog(&(Selected->d.contacts.negated), +// Selected->d.contacts.name); +// break; + +// case ELEM_COIL: +// ShowCoilDialog(&(Selected->d.coil.negated), +// &(Selected->d.coil.setOnly), &(Selected->d.coil.resetOnly), +// Selected->d.coil.name); +// break; + +// case ELEM_TON: +// case ELEM_TOF: +// case ELEM_RTO: +// ShowTimerDialog(SelectedWhich, &(Selected->d.timer.delay), +// Selected->d.timer.name); +// break; + +// case ELEM_CTU: +// case ELEM_CTD: +// case ELEM_CTC: +// ShowCounterDialog(SelectedWhich, &(Selected->d.counter.max), +// Selected->d.counter.name); +// break; + +// case ELEM_EQU: +// case ELEM_NEQ: +// case ELEM_GRT: +// case ELEM_GEQ: +// case ELEM_LES: +// case ELEM_LEQ: +// ShowCmpDialog(SelectedWhich, Selected->d.cmp.op1, +// Selected->d.cmp.op2); +// break; + +// case ELEM_ADD: +// case ELEM_SUB: +// case ELEM_MUL: +// case ELEM_DIV: +// ShowMathDialog(SelectedWhich, Selected->d.math.dest, +// Selected->d.math.op1, Selected->d.math.op2); +// break; + +// case ELEM_RES: +// ShowResetDialog(Selected->d.reset.name); +// break; + +// case ELEM_MOVE: +// ShowMoveDialog(Selected->d.move.dest, Selected->d.move.src); +// break; + +// case ELEM_SET_PWM: +// ShowSetPwmDialog(Selected->d.setPwm.name, +// &(Selected->d.setPwm.targetFreq)); +// break; + +// case ELEM_READ_ADC: +// ShowReadAdcDialog(Selected->d.readAdc.name+1); +// break; + +// case ELEM_UART_RECV: +// case ELEM_UART_SEND: +// ShowUartDialog(SelectedWhich, Selected->d.uart.name); +// break; + +// case ELEM_PERSIST: +// ShowPersistDialog(Selected->d.persist.var); +// break; + +// case ELEM_SHIFT_REGISTER: +// ShowShiftRegisterDialog(Selected->d.shiftRegister.name, +// &(Selected->d.shiftRegister.stages)); +// break; + +// case ELEM_FORMATTED_STRING: +// ShowFormattedStringDialog(Selected->d.fmtdStr.var, +// Selected->d.fmtdStr.string); +// break; + +// case ELEM_PIECEWISE_LINEAR: +// ShowPiecewiseLinearDialog(Selected); +// break; + +// case ELEM_LOOK_UP_TABLE: +// ShowLookUpTableDialog(Selected); +// break; +// } } //----------------------------------------------------------------------------- @@ -502,30 +502,30 @@ void EditSelectedElement(void) //----------------------------------------------------------------------------- void EditElementMouseDoubleclick(int x, int y) { - x += ScrollXOffset; - - y += FONT_HEIGHT/2; - - int gx = (x - X_PADDING)/(POS_WIDTH*FONT_WIDTH); - int gy = (y - Y_PADDING)/(POS_HEIGHT*FONT_HEIGHT); - - gy += ScrollYOffset; - - if(InSimulationMode) { - ElemLeaf *l = DisplayMatrix[gx][gy]; - if(l && DisplayMatrixWhich[gx][gy] == ELEM_CONTACTS) { - char *name = l->d.contacts.name; - if(name[0] == 'X') { - SimulationToggleContact(name); - } - } else if(l && DisplayMatrixWhich[gx][gy] == ELEM_READ_ADC) { - ShowAnalogSliderPopup(l->d.readAdc.name); - } - } else { - if(DisplayMatrix[gx][gy] == Selected) { - EditSelectedElement(); - } - } +// x += ScrollXOffset; + +// y += FONT_HEIGHT/2; + +// int gx = (x - X_PADDING)/(POS_WIDTH*FONT_WIDTH); +// int gy = (y - Y_PADDING)/(POS_HEIGHT*FONT_HEIGHT); + +// gy += ScrollYOffset; + +// if(InSimulationMode) { +// ElemLeaf *l = DisplayMatrix[gx][gy]; +// if(l && DisplayMatrixWhich[gx][gy] == ELEM_CONTACTS) { +// char *name = l->d.contacts.name; +// if(name[0] == 'X') { +// SimulationToggleContact(name); +// } +// } else if(l && DisplayMatrixWhich[gx][gy] == ELEM_READ_ADC) { +// ShowAnalogSliderPopup(l->d.readAdc.name); +// } +// } else { +// if(DisplayMatrix[gx][gy] == Selected) { +// EditSelectedElement(); +// } +// } } //----------------------------------------------------------------------------- @@ -536,71 +536,71 @@ void EditElementMouseDoubleclick(int x, int y) //----------------------------------------------------------------------------- void MoveCursorMouseClick(int x, int y) { - x += ScrollXOffset; - - y += FONT_HEIGHT/2; - - int gx0 = (x - X_PADDING)/(POS_WIDTH*FONT_WIDTH); - int gy0 = (y - Y_PADDING)/(POS_HEIGHT*FONT_HEIGHT); - - int gx = gx0; - int gy = gy0 + ScrollYOffset; - - if(VALID_LEAF(DisplayMatrix[gx][gy])) { - int i, j; - for(i = 0; i < DISPLAY_MATRIX_X_SIZE; i++) { - for(j = 0; j < DISPLAY_MATRIX_Y_SIZE; j++) { - if(DisplayMatrix[i][j]) - DisplayMatrix[i][j]->selectedState = SELECTED_NONE; - } - } - int dx = x - (gx0*POS_WIDTH*FONT_WIDTH + X_PADDING); - int dy = y - (gy0*POS_HEIGHT*FONT_HEIGHT + Y_PADDING); - - int dtop = dy; - int dbottom = POS_HEIGHT*FONT_HEIGHT - dy; - int dleft = dx; - int dright = POS_WIDTH*FONT_WIDTH - dx; - - int extra = 1; - if(DisplayMatrixWhich[gx][gy] == ELEM_COMMENT) { - dleft += gx*POS_WIDTH*FONT_WIDTH; - dright += (ColsAvailable - gx - 1)*POS_WIDTH*FONT_WIDTH; - extra = ColsAvailable; - } else { - if((gx > 0) && (DisplayMatrix[gx-1][gy] == DisplayMatrix[gx][gy])) { - dleft += POS_WIDTH*FONT_WIDTH; - extra = 2; - } - if((gx < (DISPLAY_MATRIX_X_SIZE-1)) && - (DisplayMatrix[gx+1][gy] == DisplayMatrix[gx][gy])) - { - dright += POS_WIDTH*FONT_WIDTH; - extra = 2; - } - } - - int decideX = (dright - dleft); - int decideY = (dtop - dbottom); - - decideY = decideY*3*extra; - - int state; - if(abs(decideY) > abs(decideX)) { - if(decideY > 0) { - state = SELECTED_BELOW; - } else { - state = SELECTED_ABOVE; - } - } else { - if(decideX > 0) { - state = SELECTED_LEFT; - } else { - state = SELECTED_RIGHT; - } - } - SelectElement(gx, gy, state); - } +// x += ScrollXOffset; + +// y += FONT_HEIGHT/2; + +// int gx0 = (x - X_PADDING)/(POS_WIDTH*FONT_WIDTH); +// int gy0 = (y - Y_PADDING)/(POS_HEIGHT*FONT_HEIGHT); + +// int gx = gx0; +// int gy = gy0 + ScrollYOffset; + +// if(VALID_LEAF(DisplayMatrix[gx][gy])) { +// int i, j; +// for(i = 0; i < DISPLAY_MATRIX_X_SIZE; i++) { +// for(j = 0; j < DISPLAY_MATRIX_Y_SIZE; j++) { +// if(DisplayMatrix[i][j]) +// DisplayMatrix[i][j]->selectedState = SELECTED_NONE; +// } +// } +// int dx = x - (gx0*POS_WIDTH*FONT_WIDTH + X_PADDING); +// int dy = y - (gy0*POS_HEIGHT*FONT_HEIGHT + Y_PADDING); + +// int dtop = dy; +// int dbottom = POS_HEIGHT*FONT_HEIGHT - dy; +// int dleft = dx; +// int dright = POS_WIDTH*FONT_WIDTH - dx; + +// int extra = 1; +// if(DisplayMatrixWhich[gx][gy] == ELEM_COMMENT) { +// dleft += gx*POS_WIDTH*FONT_WIDTH; +// dright += (ColsAvailable - gx - 1)*POS_WIDTH*FONT_WIDTH; +// extra = ColsAvailable; +// } else { +// if((gx > 0) && (DisplayMatrix[gx-1][gy] == DisplayMatrix[gx][gy])) { +// dleft += POS_WIDTH*FONT_WIDTH; +// extra = 2; +// } +// if((gx < (DISPLAY_MATRIX_X_SIZE-1)) && +// (DisplayMatrix[gx+1][gy] == DisplayMatrix[gx][gy])) +// { +// dright += POS_WIDTH*FONT_WIDTH; +// extra = 2; +// } +// } + +// int decideX = (dright - dleft); +// int decideY = (dtop - dbottom); + +// decideY = decideY*3*extra; + +// int state; +// if(abs(decideY) > abs(decideX)) { +// if(decideY > 0) { +// state = SELECTED_BELOW; +// } else { +// state = SELECTED_ABOVE; +// } +// } else { +// if(decideX > 0) { +// state = SELECTED_LEFT; +// } else { +// state = SELECTED_RIGHT; +// } +// } +// SelectElement(gx, gy, state); +// } } //----------------------------------------------------------------------------- @@ -609,49 +609,49 @@ void MoveCursorMouseClick(int x, int y) //----------------------------------------------------------------------------- void MoveCursorNear(int gx, int gy) { - int out = 0; - - for(out = 0; out < 8; out++) { - if(gx - out >= 0) { - if(VALID_LEAF(DisplayMatrix[gx-out][gy])) { - SelectElement(gx-out, gy, SELECTED_RIGHT); - return; - } - } - if(gx + out < DISPLAY_MATRIX_X_SIZE) { - if(VALID_LEAF(DisplayMatrix[gx+out][gy])) { - SelectElement(gx+out, gy, SELECTED_LEFT); - return; - } - } - if(gy - out >= 0) { - if(VALID_LEAF(DisplayMatrix[gx][gy-out])) { - SelectElement(gx, gy-out, SELECTED_BELOW); - return; - } - } - if(gy + out < DISPLAY_MATRIX_Y_SIZE) { - if(VALID_LEAF(DisplayMatrix[gx][gy+out])) { - SelectElement(gx, gy+out, SELECTED_ABOVE); - return; - } - } - - if(out == 1) { - // Now see if we have a straight shot to the right; might be far - // if we have to go up to a coil or other end of line element. - int across; - for(across = 1; gx+across < DISPLAY_MATRIX_X_SIZE; across++) { - if(VALID_LEAF(DisplayMatrix[gx+across][gy])) { - SelectElement(gx+across, gy, SELECTED_LEFT); - return; - } - if(!DisplayMatrix[gx+across][gy]) break; - } - } - } - - MoveCursorTopLeft(); +// int out = 0; + +// for(out = 0; out < 8; out++) { +// if(gx - out >= 0) { +// if(VALID_LEAF(DisplayMatrix[gx-out][gy])) { +// SelectElement(gx-out, gy, SELECTED_RIGHT); +// return; +// } +// } +// if(gx + out < DISPLAY_MATRIX_X_SIZE) { +// if(VALID_LEAF(DisplayMatrix[gx+out][gy])) { +// SelectElement(gx+out, gy, SELECTED_LEFT); +// return; +// } +// } +// if(gy - out >= 0) { +// if(VALID_LEAF(DisplayMatrix[gx][gy-out])) { +// SelectElement(gx, gy-out, SELECTED_BELOW); +// return; +// } +// } +// if(gy + out < DISPLAY_MATRIX_Y_SIZE) { +// if(VALID_LEAF(DisplayMatrix[gx][gy+out])) { +// SelectElement(gx, gy+out, SELECTED_ABOVE); +// return; +// } +// } + +// if(out == 1) { +// // Now see if we have a straight shot to the right; might be far +// // if we have to go up to a coil or other end of line element. +// int across; +// for(across = 1; gx+across < DISPLAY_MATRIX_X_SIZE; across++) { +// if(VALID_LEAF(DisplayMatrix[gx+across][gy])) { +// SelectElement(gx+across, gy, SELECTED_LEFT); +// return; +// } +// if(!DisplayMatrix[gx+across][gy]) break; +// } +// } +// } + +// MoveCursorTopLeft(); } //----------------------------------------------------------------------------- |