SYMPTR PsymFromRef( LPEXG lpexg, SYMPTR psymRef, HMOD *lphmod ) { REFSYM *lpref = (REFSYM *) psymRef; LPB lpbSymbols; LPMDS lpmds; assert(lpref->imod <= lpexg->cMod); lpmds = &lpexg->rgMod[lpref->imod]; lpbSymbols = (LPB) GetSymbols (lpmds); if (lphmod) { *lphmod = (HMOD) lpmds; } // catch case where there are no module symbols... if (lpbSymbols == NULL) { return NULL; } // catch the case where the ibSym is beyond the symbol array if (lpref->ibSym > lpmds->cbSymbols) { return(NULL); } return (SYMPTR) (lpbSymbols + lpref->ibSym); }
vector<CharSet> GetCharSets(CharRange ranges) { vector<CharSet> ret_val; for(int i = 1; i & static_cast<int>(CharRange::All); i <<= 1) { if(! (i & static_cast<int>(ranges))) continue; CharRange range = static_cast<CharRange>(i); switch(range) { case CharRange::LowerAtoZ: ret_val.push_back(CharSet(GetLowerAtoZ(), range)); break; case CharRange::UpperAtoZ: ret_val.push_back(CharSet(GetUpperAtoZ(), range)); break; case CharRange::Numbers: ret_val.push_back(CharSet(GetNumbers(), range)); break; case CharRange::Symbols: ret_val.push_back(CharSet(GetSymbols(), range)); break; case CharRange::Other: // ignore break; default: assert(false); return ret_val; } } return ret_val; }
void ReselectSymbols::Run() { std::list< std::pair<int,unsigned int> > symbols; heeksCAD->PickObjects(_("Select Sketches"), MARKING_FILTER_SKETCH | MARKING_FILTER_CIRCLE | MARKING_FILTER_AREA); if(GetSymbols( symbols )) { heeksCAD->CreateUndoPoint(); m_symbols->clear(); *m_symbols = symbols; ((ObjList*)m_object)->Clear(); m_object->ReloadPointers(); heeksCAD->Changed(); } else { wxMessageBox(_("Select cancelled. No sketches were selected!")); } // get back to the operation's properties heeksCAD->ClearMarkedList(); heeksCAD->Mark(m_object); }
INT_PTR CALLBACK SettingsProc(HWND hwndDlg, UINT msg, WPARAM wParam, LPARAM lParam) { switch(msg) { case WM_INITDIALOG: { int i = 0; for(i = (int)COMPRESSOR_SCRIPT; i <= (int)COMPRESSOR_BEST; i++) { SendDlgItemMessage(hwndDlg, IDC_COMPRESSOR, CB_ADDSTRING, 0, (LPARAM)compressor_display_names[i]); } SendDlgItemMessage(hwndDlg, IDC_COMPRESSOR, CB_SETCURSEL, (WPARAM)g_sdata.default_compressor, (LPARAM)0); SetSymbols(hwndDlg, g_sdata.symbols); SetFocus(GetDlgItem(hwndDlg, IDC_SYMBOL)); break; } case WM_MAKENSIS_LOADSYMBOLSET: { TCHAR *name = (TCHAR *)wParam; TCHAR **symbols = LoadSymbolSet(name); HGLOBAL hMem; SetSymbols(hwndDlg, symbols); if(symbols) { hMem = GlobalHandle(symbols); GlobalUnlock(hMem); GlobalFree(hMem); } break; } case WM_MAKENSIS_SAVESYMBOLSET: { TCHAR *name = (TCHAR *)wParam; TCHAR **symbols = GetSymbols(hwndDlg); HGLOBAL hMem; if(symbols) { SaveSymbolSet(name, symbols); hMem = GlobalHandle(symbols); GlobalUnlock(hMem); GlobalFree(hMem); } break; } case WM_COMMAND: { switch (LOWORD(wParam)) { case IDOK: { ResetObjects(); ResetSymbols(); g_sdata.symbols = GetSymbols(hwndDlg); int n = SendDlgItemMessage(hwndDlg, IDC_COMPRESSOR, CB_GETCURSEL, (WPARAM)0, (LPARAM)0); if (n >= (int)COMPRESSOR_SCRIPT && n <= (int)COMPRESSOR_BEST) { g_sdata.default_compressor = (NCOMPRESSOR)n; } else { g_sdata.default_compressor = COMPRESSOR_SCRIPT; } EndDialog(hwndDlg, TRUE); SetCompressor(g_sdata.default_compressor); } break; case IDCANCEL: EndDialog(hwndDlg, TRUE); break; case IDC_RIGHT: { int n = SendDlgItemMessage(hwndDlg, IDC_SYMBOL, WM_GETTEXTLENGTH, 0, 0); if(n > 0) { TCHAR *buf = (TCHAR*) MemAllocZI((n+1)*sizeof(TCHAR)); SendDlgItemMessage(hwndDlg, IDC_SYMBOL, WM_GETTEXT, n+1, (LPARAM)buf); if(_tcsstr(buf,_T(" ")) || _tcsstr(buf,_T("\t"))) { MessageBox(hwndDlg,SYMBOLSERROR,ERRBOXTITLE,MB_OK|MB_ICONSTOP); MemFree(buf); break; } n = SendDlgItemMessage(hwndDlg, IDC_VALUE, WM_GETTEXTLENGTH, 0, 0); if(n > 0) { TCHAR *buf2 = (TCHAR*) MemAllocZI((n+1)*sizeof(TCHAR)); SendDlgItemMessage(hwndDlg, IDC_VALUE, WM_GETTEXT, n+1, (LPARAM)buf2); TCHAR *buf3 = (TCHAR*) MemAllocZI((lstrlen(buf)+lstrlen(buf2)+2)*sizeof(TCHAR)); wsprintf(buf3,_T("%s=%s"),buf,buf2); MemFree(buf); buf = buf3; MemFree(buf2); } int idx = SendDlgItemMessage(hwndDlg, IDC_SYMBOLS, LB_ADDSTRING, 0, (LPARAM)buf); if (idx >= 0) { SendDlgItemMessage(hwndDlg, IDC_SYMBOLS, LB_SETSEL, FALSE, -1); SendDlgItemMessage(hwndDlg, IDC_SYMBOLS, LB_SETSEL, TRUE, idx); } EnableSymbolEditButtons(hwndDlg); SendDlgItemMessage(hwndDlg, IDC_SYMBOL, WM_SETTEXT, 0, 0); SendDlgItemMessage(hwndDlg, IDC_VALUE, WM_SETTEXT, 0, 0); MemFree(buf); EnableSymbolSetButtons(hwndDlg); } } break; case IDC_LEFT: { if (SendDlgItemMessage(hwndDlg, IDC_SYMBOLS, LB_GETSELCOUNT, 0, 0) != 1) break; int index; int num = SendDlgItemMessage(hwndDlg, IDC_SYMBOLS, LB_GETSELITEMS, 1, (LPARAM) &index); if(num == 1) { int n = SendDlgItemMessage(hwndDlg, IDC_SYMBOLS, LB_GETTEXTLEN, (WPARAM)index, 0); if(n > 0) { TCHAR *buf = (TCHAR*) MemAllocZI((n+1)*sizeof(TCHAR)); SendDlgItemMessage(hwndDlg, IDC_SYMBOLS, LB_GETTEXT, (WPARAM)index, (LPARAM)buf); TCHAR *p = _tcsstr(buf,_T("=")); if(p) { SendDlgItemMessage(hwndDlg, IDC_VALUE, WM_SETTEXT, 0, (LPARAM)(p+1)); *p=0; } SendDlgItemMessage(hwndDlg, IDC_SYMBOL, WM_SETTEXT, 0, (LPARAM)buf); MemFree(buf); SendDlgItemMessage(hwndDlg, IDC_SYMBOLS, LB_DELETESTRING, (WPARAM)index, 0); EnableWindow(GetDlgItem(hwndDlg, IDC_LEFT), FALSE); EnableWindow(GetDlgItem(hwndDlg, IDC_DEL), FALSE); EnableSymbolSetButtons(hwndDlg); } } } break; case IDC_CLEAR: { SendDlgItemMessage(hwndDlg, IDC_SYMBOLS, LB_RESETCONTENT , 0, 0); EnableSymbolSetButtons(hwndDlg); } break; case IDC_LOAD: case IDC_SAVE: { g_symbol_set_mode = IDC_LOAD == LOWORD(wParam) ? 1 : 2; DialogBox(g_sdata.hInstance,MAKEINTRESOURCE(DLG_SYMBOLSET),hwndDlg,(DLGPROC)SymbolSetProc); } break; case IDC_DEL: { int n = SendDlgItemMessage(hwndDlg, IDC_SYMBOLS, LB_GETSELCOUNT, 0, 0); int *items = (int*) MemAllocZI(n*sizeof(int)); if (items) { SendDlgItemMessage(hwndDlg, IDC_SYMBOLS, LB_GETSELITEMS, (WPARAM)n, (LPARAM)items); for(int i=n-1;i>=0;i--) SendDlgItemMessage(hwndDlg, IDC_SYMBOLS, LB_DELETESTRING, (WPARAM)items[i], 0); MemFree(items); } EnableSymbolEditButtons(hwndDlg); EnableSymbolSetButtons(hwndDlg); } break; case IDC_SYMBOL: if(HIWORD(wParam) == EN_CHANGE) { int n = SendDlgItemMessage(hwndDlg, IDC_SYMBOL, WM_GETTEXTLENGTH, 0, 0); EnableWindow(GetDlgItem(hwndDlg, IDC_RIGHT), n > 0); } break; case IDC_SYMBOLS: if (HIWORD(wParam) == LBN_SELCHANGE) { EnableSymbolEditButtons(hwndDlg); } else if (HIWORD(wParam) == LBN_DBLCLK) { SendDlgItemMessage(hwndDlg, IDC_LEFT, BM_CLICK, 0, 0); } break; } break; } } return FALSE; }
BOOL CALLBACK SettingsProc(HWND hwndDlg, UINT msg, WPARAM wParam, LPARAM lParam) { switch(msg) { case WM_INITDIALOG: { int i = 0; LRESULT rv; for(i = (int)COMPRESSOR_SCRIPT; i <= (int)COMPRESSOR_BEST; i++) { rv = SendDlgItemMessage(hwndDlg, IDC_COMPRESSOR, CB_ADDSTRING, 0, (LPARAM)compressor_display_names[i]); } rv = SendDlgItemMessage(hwndDlg, IDC_COMPRESSOR, CB_SETCURSEL, (WPARAM)g_sdata.default_compressor, (LPARAM)0); SetSymbols(hwndDlg, g_sdata.symbols); SetFocus(GetDlgItem(hwndDlg, IDC_SYMBOL)); break; } case WM_MAKENSIS_LOADSYMBOLSET: { char *name = (char *)wParam; char **symbols = LoadSymbolSet(name); HGLOBAL hMem; SetSymbols(hwndDlg, symbols); if(symbols) { hMem = GlobalHandle(symbols); GlobalUnlock(hMem); GlobalFree(hMem); } break; } case WM_MAKENSIS_SAVESYMBOLSET: { char *name = (char *)wParam; char **symbols = GetSymbols(hwndDlg); HGLOBAL hMem; if(symbols) { SaveSymbolSet(name, symbols); hMem = GlobalHandle(symbols); GlobalUnlock(hMem); GlobalFree(hMem); } break; } case WM_COMMAND: { switch (LOWORD(wParam)) { case IDOK: { ResetObjects(); ResetInputScript(); ResetSymbols(); g_sdata.symbols = GetSymbols(hwndDlg); int n = SendDlgItemMessage(hwndDlg, IDC_COMPRESSOR, CB_GETCURSEL, (WPARAM)0, (LPARAM)0); if (n >= (int)COMPRESSOR_SCRIPT && n <= (int)COMPRESSOR_BEST) { g_sdata.default_compressor = (NCOMPRESSOR)n; } else { g_sdata.default_compressor = COMPRESSOR_SCRIPT; } EndDialog(hwndDlg, TRUE); SetCompressor(g_sdata.default_compressor); } break; case IDCANCEL: EndDialog(hwndDlg, TRUE); break; case IDRIGHT: { int n = SendDlgItemMessage(hwndDlg, IDC_SYMBOL, WM_GETTEXTLENGTH, 0, 0); if(n > 0) { char *buf = (char *)GlobalAlloc(GPTR, (n+1)*sizeof(char)); SendDlgItemMessage(hwndDlg, IDC_SYMBOL, WM_GETTEXT, n+1, (LPARAM)buf); if(my_strstr(buf," ") || my_strstr(buf,"\t")) { MessageBox(hwndDlg,SYMBOLSERROR,"Error",MB_OK|MB_ICONSTOP); GlobalFree(buf); break; } n = SendDlgItemMessage(hwndDlg, IDC_VALUE, WM_GETTEXTLENGTH, 0, 0); if(n > 0) { char *buf2 = (char *)GlobalAlloc(GPTR, (n+1)*sizeof(char)); SendDlgItemMessage(hwndDlg, IDC_VALUE, WM_GETTEXT, n+1, (LPARAM)buf2); char *buf3 = (char *)GlobalAlloc(GPTR, (lstrlen(buf)+lstrlen(buf2)+2)*sizeof(char)); wsprintf(buf3,"%s=%s",buf,buf2); GlobalFree(buf); buf = buf3; GlobalFree(buf2); } SendDlgItemMessage(hwndDlg, IDC_SYMBOLS, LB_ADDSTRING, 0, (LPARAM)buf); SendDlgItemMessage(hwndDlg, IDC_SYMBOL, WM_SETTEXT, 0, 0); SendDlgItemMessage(hwndDlg, IDC_VALUE, WM_SETTEXT, 0, 0); GlobalFree(buf); EnableSymbolSetButtons(hwndDlg); } } break; case IDLEFT: { int index = SendDlgItemMessage(hwndDlg, IDC_SYMBOLS, LB_GETCURSEL, 0, 0); if(index != LB_ERR) { int n = SendDlgItemMessage(hwndDlg, IDC_SYMBOLS, LB_GETTEXTLEN, (WPARAM)index, 0); if(n > 0) { char *buf = (char *)GlobalAlloc(GPTR, (n+1)*sizeof(char)); SendDlgItemMessage(hwndDlg, IDC_SYMBOLS, LB_GETTEXT, (WPARAM)index, (LPARAM)buf); char *p = my_strstr(buf,"="); if(p) { SendDlgItemMessage(hwndDlg, IDC_VALUE, WM_SETTEXT, 0, (LPARAM)(p+1)); *p=0; } SendDlgItemMessage(hwndDlg, IDC_SYMBOL, WM_SETTEXT, 0, (LPARAM)buf); GlobalFree(buf); SendDlgItemMessage(hwndDlg, IDC_SYMBOLS, LB_DELETESTRING, (WPARAM)index, 0); EnableWindow(GetDlgItem(hwndDlg, IDLEFT), FALSE); EnableWindow(GetDlgItem(hwndDlg, IDDEL), FALSE); EnableSymbolSetButtons(hwndDlg); } } } break; case IDCLEAR: { SendDlgItemMessage(hwndDlg, IDC_SYMBOLS, LB_RESETCONTENT , 0, 0); EnableSymbolSetButtons(hwndDlg); } break; case IDLOAD: { g_symbol_set_mode=1; DialogBox(g_sdata.hInstance,MAKEINTRESOURCE(DLG_SYMBOLSET),hwndDlg,(DLGPROC)SymbolSetProc); } break; case IDSAVE: { g_symbol_set_mode=2; DialogBox(g_sdata.hInstance,MAKEINTRESOURCE(DLG_SYMBOLSET),hwndDlg,(DLGPROC)SymbolSetProc); } break; case IDDEL: { int n = SendDlgItemMessage(hwndDlg, IDC_SYMBOLS, LB_GETSELCOUNT, 0, 0); int *items = (int *)GlobalAlloc(GPTR, n*sizeof(int)); int rv = SendDlgItemMessage(hwndDlg, IDC_SYMBOLS, LB_GETSELITEMS, (WPARAM)n, (LPARAM)items); int i; for(i=n-1;i>=0;i--) { SendDlgItemMessage(hwndDlg, IDC_SYMBOLS, LB_DELETESTRING, (WPARAM)items[i], 0); } EnableSymbolSetButtons(hwndDlg); } break; case IDC_SYMBOL: if(HIWORD(wParam) == EN_CHANGE) { int n = SendDlgItemMessage(hwndDlg, IDC_SYMBOL, WM_GETTEXTLENGTH, 0, 0); if(n > 0) { EnableWindow(GetDlgItem(hwndDlg, IDRIGHT), TRUE); } else { EnableWindow(GetDlgItem(hwndDlg, IDRIGHT), FALSE); } } break; case IDC_SYMBOLS: if(HIWORD(wParam) == LBN_SELCHANGE) { int n = SendDlgItemMessage(hwndDlg, IDC_SYMBOLS, LB_GETSELCOUNT, 0, 0); if(n == 0) { EnableWindow(GetDlgItem(hwndDlg, IDLEFT), FALSE); EnableWindow(GetDlgItem(hwndDlg, IDDEL), FALSE); } else if(n == 1) { EnableWindow(GetDlgItem(hwndDlg, IDLEFT), TRUE); EnableWindow(GetDlgItem(hwndDlg, IDDEL), TRUE); } else if(n > 1) { EnableWindow(GetDlgItem(hwndDlg, IDLEFT), FALSE); EnableWindow(GetDlgItem(hwndDlg, IDDEL), TRUE); } } break; } break; } } return FALSE; }