void main() { struct student * head,* stu; int search_num,del_num; printf("input records:\n"); head=CreateLink(); PrintLink(head); printf("\nplease input a number for search:\n"); scanf("%d",&search_num); struct student * p=SearchId(head,search_num); printf("\nplease input a inserted num:\n"); stu=(struct student *)malloc(LEN); scanf("%d,%s,%f",&stu->num,&stu->name,&stu->score); while(stu->num!=0) { head=InsertNote(head,stu); PrintLink(head); printf("input the inserted record:"); stu=(struct student *)malloc(LEN); scanf("%d,%s,%f",&stu->num,&stu->name,&stu->score); } printf("\ninput the deleted number:"); scanf("%d",&del_num); while(del_num!=0) { head=DeleteNote(head,del_num); PrintLink(head); printf("\ninput the deleted number:"); scanf("%d",&del_num); } DeleteLink(head); }
void EnvReadInsert(FILE_NUM fnum, int offset, OBJECT env) { int pos; OBJECT x, loser; debug3(DET, DD, "EnvReadInsert(%s, %d, env %d)", FileName(fnum), offset, (int) env); /* to limit the cache size, remove least recently used entry if full */ if( cache_count >= MAX_CACHE ) { Child(loser, Down(env_cache)); DeleteLink(Up(loser)); DisposeChild(Up(loser)); cache_count--; } /* insert the new entry */ hash2(pos, fnum, offset); if( tab[pos] == nilobj ) New(tab[pos], ACAT); New(x, ACAT); env_fnum(x) = fnum; env_offset(x) = offset; env_read(x) = TRUE; Link(tab[pos], x); Link(env_cache, x); Link(x, env); cache_count++; debug1(DET, DD, "EnvReadInsert returning (cache_count = %d)", cache_count); } /* end EnvReadInsert */
void LAYER::Unlink( void ) { //if( flags.bRoute ) { if( route_end_layer.layer ) { flags.bEnded = FALSE; DeleteLink( &route_end_layer.layer->linked, this ); route_end_layer.layer = NULL; } else if( route_start_layer.layer ) { DeleteLink( &route_start_layer.layer->linked, this ); route_start_layer.layer = NULL; } } }
void XDLink::StopDebugger() { Send("detach"); DeleteLink(); CancelAllCommands(); InitFlags(); }
OBJECT DetachEnv(OBJECT x) { OBJECT env; debug1(DCE, DD, "DetachEnv( %s )", EchoObject(x)); assert( type(x) == CLOSURE, "DetachEnv: type(x) != CLOSURE!" ); assert( LastDown(x) != x, "DetachEnv: LastDown(x) == x!" ); Child(env, LastDown(x)); DeleteLink(LastDown(x)); assert( type(env) == ENV, "DetachEnv: type(env) != ENV!" ); debug1(DCE, DD, "DetachEnv resturning %s", EchoObject(env)); return env; } /* end DetachEnv */
void main() { struct student *head,stud,*p; printf("Input the students' records:\n"); head=CreatLink(); PrintLink(head); printf("\nInput the inserted record:"); scanf("%ld,%f,%s",&stud.num,&stud.score,stud.name); head=InsertNode(head,&stud); PrintLink(head); p=SearchID(head); if(p!=NULL) { printf("\nThe student's record:%ld,%.1f,%s\n",p->num,p->score,p->name); } DeleteNode(head); PrintLink(head); DeleteLink(head); }
int main() { ListLink head,temp = NULL; int inum; head = CreateLink(); PrintLink(head); temp = (ListLink)malloc(LEN); printf("student's num:"); scanf("%d",&temp->num); printf("student's name:"); scanf("%s",temp->name); printf("student's score:"); scanf("%lf",&temp->score); head = InsertNode(head,temp,numMin); PrintLink(head); printf("the inum of student to search:"); scanf("%d",&inum); temp = Searchid(inum,head); if(temp) printf("temp num:%d\tname:%s\tscore:%.2lf\n",temp->num,temp->name,temp->score); printf("Please input the num of student to delete:"); scanf("%d",&inum); head = DeleteNode(head,inum); PrintLink(head); head = SortScore(head); PrintLink(head); head = Sortid(head); PrintLink(head); head = DeleteLink(head); return 0; }
VOID CreateRASEntry(HINSTANCE hinst) { DWORD cb; RASENTRY RasEntry; TCHAR name[256]; LoadString(hinst, IDS_DEFAULT_NAME, name, 256); // This will create the default entries if the key does not exist. RasEntry.dwSize = sizeof(RASENTRY); cb = sizeof(RASENTRY); RasGetEntryProperties (NULL, TEXT(""), &RasEntry, &cb, NULL, NULL); // Now set up the entry the way we want it (like "`115200 Default") LoadString(hinst, SOCKET_FRIENDLY_NAME, RasEntry.szDeviceName, RAS_MaxDeviceName + 1); // And finally, write the new entry out if ( RasSetEntryProperties (NULL, name, &RasEntry, sizeof(RasEntry), NULL, 0) ) { DEBUGMSG (1, (TEXT("Error %d from RasSetEntryProperties\r\n"), GetLastError())); } else { HKEY hKey; DWORD dwDisp; DEBUGMSG (1, (TEXT("RasEntry '%s' Created\r\n"), name)); if (ERROR_SUCCESS==RegCreateKeyEx(HKEY_CURRENT_USER, RK_CONTROLPANEL_COMM, 0, NULL, REG_OPTION_NON_VOLATILE, KEY_ALL_ACCESS, NULL, &hKey, &dwDisp)) { RegSetValueEx(hKey, RV_CNCT, 0, REG_SZ, (LPBYTE)name, sizeof(TCHAR)*(1+lstrlen(name))); RegCloseKey(hKey); } } // Now, delete the link file. DeleteLink(hinst); }
void CPROC ClientClosed( PCLIENT pc ) { printf( "lost client %p\n", pc ); DeleteLink( &clients, pc ); }
BOOL TUninstDlg::UnInstall(void) { // 現在、起動中の ipmsg を終了 int st = TerminateIPMsg(); if (st == 1) return FALSE; if (st == 2) { if (!IsWinVista() || TIsUserAnAdmin() || !TIsEnableUAC()) { MessageBox(GetLoadStr(IDS_CANTTERMINATE), UNINSTALL_STR); return FALSE; } if (MessageBox(GetLoadStr(IDS_REQUIREADMIN_TERM), "", MB_OKCANCEL|MB_ICONINFORMATION) != IDOK) return FALSE; return RunAsAdmin(hWnd); } if (!runasWnd && MessageBox(GetLoadStr(IDS_START), UNINSTALL_STR, MB_OKCANCEL|MB_ICONINFORMATION) != IDOK) return FALSE; // 公開鍵削除 if (IsDlgButtonChecked(DELPUBKEY_CHECK)) { BOOL need_admin = FALSE; char contName[MAX_PATH_U8], userName[MAX_PATH_U8]; DWORD size = sizeof(userName); ::GetUserName(userName, &size); ::wsprintf(contName, "ipmsg.rsa2048.%s", userName); if (!DeleteKeySet(MS_ENHANCED_PROV, contName, CRYPT_MACHINE_KEYSET) || !DeleteKeySet(MS_ENHANCED_PROV, contName, 0)) need_admin = TRUE; ::wsprintf(contName, "ipmsg.rsa1024.%s", userName); if (!DeleteKeySet(MS_ENHANCED_PROV, contName, CRYPT_MACHINE_KEYSET) || !DeleteKeySet(MS_ENHANCED_PROV, contName, 0)) need_admin = TRUE; ::wsprintf(contName, "ipmsg.rsa512.%s", userName); if (!DeleteKeySet(MS_DEF_PROV, contName, CRYPT_MACHINE_KEYSET) || !DeleteKeySet(MS_DEF_PROV, contName, 0)) need_admin = TRUE; if (need_admin) { if (IsWinVista() && !TIsUserAnAdmin() && TIsEnableUAC()) { if (MessageBox(GetLoadStr(IDS_REQUIREADMIN_PUBKEY), "", MB_OKCANCEL|MB_ICONINFORMATION) != IDOK) return FALSE; return RunAsAdmin(hWnd); } } } // スタートアップ&デスクトップから削除 TRegistry reg(HKEY_CURRENT_USER); if (reg.OpenKey(REGSTR_SHELLFOLDERS)) { char buf[MAX_PATH_U8]; char *regStr[] = { REGSTR_STARTUP, REGSTR_PROGRAMS, REGSTR_DESKTOP, NULL }; for (int i=0; regStr[i]; i++) { if (reg.GetStr(regStr[i], buf, sizeof(buf))) { if (i == 0) RemoveSameLink(buf); ::wsprintf(buf + strlen(buf), "\\%s", IPMSG_SHORTCUT_NAME); DeleteLink(buf); } } reg.CloseKey(); } // レジストリからユーザー設定情報を削除 if (reg.ChangeApp(HSTOOLS_STR)) reg.DeleteChildTree(GetLoadStr(IDS_REGIPMSG)); // レジストリからアプリケーション情報を削除 char setupDir[MAX_PATH_U8]; // セットアップディレクトリ情報を保存 GetDlgItemTextU8(RESETUP_EDIT, setupDir, sizeof(setupDir)); reg.ChangeTopKey(HKEY_LOCAL_MACHINE); if (reg.OpenKey(REGSTR_PATH_APPPATHS)) { if (reg.OpenKey(IPMSG_EXENAME)) { reg.GetStr(REGSTR_PATH, setupDir, sizeof(setupDir)); reg.CloseKey(); } reg.DeleteKey(IPMSG_EXENAME); reg.CloseKey(); } // レジストリからアンインストール情報を削除 if (reg.OpenKey(REGSTR_PATH_UNINSTALL)) { reg.DeleteKey(IPMSG_NAME); reg.CloseKey(); } // 終了メッセージ MessageBox(GetLoadStr(IDS_UNINSTCOMPLETE)); // インストールディレクトリを開く if (GetDriveTypeEx(setupDir) != DRIVE_REMOTE) ShellExecuteU8(NULL, NULL, setupDir, 0, 0, SW_SHOW); ::PostQuitMessage(0); return TRUE; }
JSimpleProcess::~JSimpleProcess() { DeleteLink(); }
BOOL TInstDlg::Install(void) { char buf[MAX_PATH_U8], setupDir[MAX_PATH_U8], setupPath[MAX_PATH_U8]; char installPath[MAX_PATH_U8]; BOOL extract_only = IsDlgButtonChecked(EXTRACT_CHECK); // 現在、起動中の ipmsg を終了 int st = extract_only ? 0 : TerminateIPMsg(); if (st == 1) return FALSE; // インストールパス設定 GetDlgItemTextU8(FILE_EDIT, setupDir, sizeof(setupDir)); if (IsWinVista() && !::IsUserAnAdmin() && TIsEnableUAC() && TIsVirtualizedDirW(U8toWs(setupDir))) { if (MessageBox(GetLoadStr(IDS_REQUIREADMIN), INSTALL_STR, MB_OKCANCEL|MB_ICONINFORMATION) != IDOK) return FALSE; return RunAsAdmin(hWnd, TRUE); } CreateDirectoryU8(setupDir, NULL); DWORD attr = GetFileAttributesU8(setupDir); if (attr == 0xffffffff || (attr & FILE_ATTRIBUTE_DIRECTORY) == 0) return MessageBox(GetLoadStr(IDS_NOTCREATEDIR), INSTALL_STR), FALSE; MakePath(setupPath, setupDir, IPMSG_EXENAME); if (st == 2) { MessageBox(GetLoadStr(IDS_CANTTERMINATE), INSTALL_STR); return FALSE; } if (!runasImm && MessageBox(GetLoadStr(IDS_START), INSTALL_STR, MB_OKCANCEL|MB_ICONINFORMATION) != IDOK) { return FALSE; } runasImm = FALSE; // ファイル生成 for (int i=0; SetupFiles[i]; i++) { MakePath(installPath, setupDir, SetupFiles[i]); CreateStatus cs = CreateFileBySelf(installPath, SetupFiles[i]); if (cs == CS_BROKEN) { MessageBox(GetLoadStr(IDS_BROKENARCHIVE), INSTALL_STR); return FALSE; } else if (cs == CS_ACCESS) { const char *msg = Fmt("%s\r\n%s", GetLoadStrU8(IDS_NOTCREATEFILE), installPath); MessageBoxU8(msg, INSTALL_STR); return FALSE; } } // 展開のみ if (extract_only) { ShellExecuteW(NULL, NULL, U8toWs(setupDir), 0, 0, SW_SHOW); return TRUE; } // スタートアップ&デスクトップに登録 TRegistry reg(HKEY_CURRENT_USER); if (reg.OpenKey(REGSTR_SHELLFOLDERS)) { char *regStr[] = { REGSTR_STARTUP, REGSTR_PROGRAMS, REGSTR_DESKTOP, NULL }; BOOL resId[] = { STARTUP_CHECK, PROGRAM_CHECK, DESKTOP_CHECK, NULL }; for (int i=0; regStr[i]; i++) { if (reg.GetStr(regStr[i], buf, sizeof(buf))) { if (i != 0 || !RemoveSameLink(buf, buf)) ::wsprintf(buf + strlen(buf), "\\%s", IPMSG_SHORTCUT_NAME); if (IsDlgButtonChecked(resId[i])) SymLink(setupPath, buf); else DeleteLink(buf); } } reg.CloseKey(); } // レジストリにアプリケーション情報を登録 reg.ChangeTopKey(HKEY_LOCAL_MACHINE); if (reg.OpenKey(REGSTR_PATH_APPPATHS)) { if (reg.CreateKey(IPMSG_EXENAME)) { reg.SetStr(NULL, setupPath); reg.SetStr(REGSTR_PATH, setupDir); reg.CloseKey(); } reg.CloseKey(); } // レジストリにアンインストール情報を登録 if (reg.OpenKey(REGSTR_PATH_UNINSTALL)) { if (reg.CreateKey(IPMSG_NAME)) { MakePath(buf, setupDir, SETUP_EXENAME); strcat(buf, " /r"); reg.SetStr(REGSTR_VAL_UNINSTALLER_DISPLAYNAME, IPMSG_FULLNAME); reg.SetStr(REGSTR_VAL_UNINSTALLER_COMMANDLINE, buf); reg.CloseKey(); } reg.CloseKey(); } // コピーしたアプリケーションを起動 const char *msg = GetLoadStr(IDS_SETUPCOMPLETE); int flg = MB_OKCANCEL|MB_ICONINFORMATION; // if (IsWinVista() && ::IsUserAnAdmin() && TIsEnableUAC()) { // msg = Fmt("%s%s", msg, GetLoadStr(IDS_COMPLETE_UACADD)); // flg |= MB_DEFBUTTON2; // } TLaunchDlg dlg(msg, this); if (dlg.Exec() == IDOK) { if (runasWnd) { Wstr wbuf(setupDir); if (::SendDlgItemMessageW(runasWnd, FILE_EDIT, WM_SETTEXT, 0, (LPARAM)wbuf.Buf())) { ::PostMessage(runasWnd, WM_IPMSG_QUIT, 1, 0); runasWnd = NULL; } } else { AppKick(); } } else { HWND hHelp = ShowHelpU8(0, setupDir, GetLoadStrU8(IDS_IPMSGHELP), "#history"); if (hHelp) { Show(SW_HIDE); while (::IsWindow(hHelp)) { this->Sleep(100); } } } if (runasWnd) { ::PostMessage(runasWnd, WM_IPMSG_QUIT, 0, 0); runasWnd = NULL; } // ShellExecuteU8(NULL, NULL, setupDir, 0, 0, SW_SHOW); ::PostQuitMessage(0); return TRUE; }
OBJECT ClosureExpand(OBJECT x, OBJECT env, BOOLEAN crs_wanted, OBJECT *crs, OBJECT *res_env) { OBJECT link, y, res, prnt_env, par, prnt; debug3(DCE, D, "[ ClosureExpand( %s, %s, %s, crs, res_env )", EchoObject(x), EchoObject(env), bool(crs_wanted)); assert( type(x) == CLOSURE, "ClosureExpand given non-CLOSURE!"); assert( predefined(actual(x)) == FALSE, "ClosureExpand given predefined!" ); /* add tag to x if needed but not provided; add cross-reference to crs */ if( has_tag(actual(x)) ) CrossAddTag(x); if( crs_wanted && has_tag(actual(x)) ) { OBJECT tmp = CopyObject(x, no_fpos); AttachEnv(env, tmp); y = CrossMake(actual(x), tmp, CROSS_TARG); New(tmp, CROSS_TARG); actual(tmp) = y; Link(tmp, y); if( *crs == nilobj ) New(*crs, CR_LIST); Link(*crs, tmp); } /* case x is a parameter */ res = *res_env = nilobj; if( is_par(type(actual(x))) ) { prnt = SearchEnv(env, enclosing(actual(x))); if( prnt != nilobj ) { prnt_env = GetEnv(prnt); for( link = Down(prnt); link != prnt; link = NextDown(link) ) { Child(par, link); if( type(par) == PAR && actual(par) == actual(x) ) { assert( Down(par) != par, "ExpandCLosure: Down(par)!"); Child(res, Down(par)); if( dirty(enclosing(actual(par))) || is_enclose(actual(par)) ) { debug2(DCE, DD, "copy %s %s", SymName(actual(par)), EchoObject(res)); res = CopyObject(res, no_fpos); } else { debug2(DCE, DD, "link %s %s", FullSymName(actual(par), AsciiToFull(".")), EchoObject(res)); DeleteLink(Down(par)); y = MakeWord(WORD, STR_NOCROSS, &fpos(res)); Link(par, y); } ReplaceNode(res, x); if( type(actual(x)) == RPAR && has_body(enclosing(actual(x))) ) { debug0(DCR, DDD, " calling SetEnv from ClosureExpand (a)"); *res_env = SetEnv(prnt, nilobj); DisposeObject(x); } else if( type(actual(x)) == NPAR && imports_encl(actual(x)) ) { debug0(DCR, DDD, " calling SetEnv from ClosureExpand (x)"); AttachEnv(env, x); *res_env = SetEnv(x, nilobj); } else { AttachEnv(env, x); debug0(DCR, DDD, " calling SetEnv from ClosureExpand (b)"); *res_env = SetEnv(x, prnt_env); } break; } } } else { /* fail only if there is no default value available */ if( sym_body(actual(x)) == nilobj ) { debug3(DCE, D, "failing ClosureExpand( %s, crs, %s, %s, res_env )", EchoObject(x), bool(crs_wanted), EchoObject(env)); Error(9, 2, "no value for parameter %s of symbol %s:", WARN, &fpos(x), SymName(actual(x)), SymName(enclosing(actual(x)))); Error(9, 1, "symbol with import list misused", FATAL, &fpos(x)); } } } /* case x is a user-defined symbol or default parameter */ if( res == nilobj ) { if( sym_body(actual(x)) == nilobj ) res = MakeWord(WORD, STR_NOCROSS, &fpos(x)); else res = CopyObject(sym_body(actual(x)), &fpos(x)); ReplaceNode(res, x); AttachEnv(env, x); debug0(DCR, DDD, " calling SetEnv from ClosureExpand (c)"); *res_env = SetEnv(x, nilobj); } assert( *res_env!=nilobj && type(*res_env)==ENV, "ClosureExpand: *res_env!"); debug0(DCE, D, "] ClosureExpand returning, res ="); ifdebug(DCE, D, DebugObject(res)); debug1(DCE, D, " environment = %s", EchoObject(*res_env)); return res; } /* end ClosureExpand */
/* * Initialize the GUI interface for the plugin - this is only called once when the plugin is * added to the plugin registry in the QGIS application. */ void QRap::initGui() { mToolBarPointer = 0; printf("QRap::initGui\n"); mPoints.clear(); mMouseType = CLEAN; // Create the action for tool cout << "VOOR DataBase Connect" << endl; openDatabaseConnection(); cout << "Na DataBase Connect" << endl; cout << "Voor new Actions" << endl; mQActionPointer = new QAction(QIcon(":/qrap/Data.png"),tr("Q-Rap Database Interface"), this); mSiteAction = new QAction(QIcon(":/qrap/Site.png"),tr("Q-Rap: Place a Site"), this); mSelectSiteAction = new QAction(QIcon(":/qrap/SiteSelect.png"),tr("Q-Rap: Select a Site"), this); mDeleteSiteAction = new QAction(QIcon(":/qrap/SiteDelete.png"),tr("Q-Rap: Delete a Site"), this); mLinkAction = new QAction(QIcon(":/qrap/Link.png"),tr("Q-Rap: Link Analysis"), this); mSelectLinkAction = new QAction(QIcon(":/qrap/LinkSelect.png"),tr("Q-Rap: Select a Link"), this); mDeleteLinkAction = new QAction(QIcon(":/qrap/LinkDelete.png"),tr("Q-Rap: Delete a Link"), this); mMultiLinkAction = new QAction(QIcon(":/qrap/MultiLink.png"),tr("Q-Rap: Establish all Links possible in set of Sites"), this); mRadioAction = new QAction(QIcon(":/qrap/Coverage.png"),tr("Q-Rap: Perform a Prediction"), this); mMeasAnalysisAction = new QAction(QIcon(":/qrap/Measurements.png"),tr("Q-Rap: Compare measurements with predictions"), this); mSpectralAction = new QAction(QIcon(":/qrap/Spectral.png"),tr("Q-Rap: Perform Spectral Interference Analysis"), this); mPreferencesAction = new QAction(QIcon(":/qrap/Preferences.png"),tr("Q-Rap Preferences"), this); mOptimisationAction = new QAction(QIcon(":/qrap/Optimisation.png"),tr("Q-Rap: Optimise link structure in selected area"), this); // mImportExportAction = new QAction(QIcon(":/qrap/ImportExport.png"),tr("Import Export"),this); // mHelpAction = new QAction(QIcon(":/qrap/Help.png"),tr("Q-Rap Help"), this); cout << "Na new Actions" << endl; // Connect the action to the run connect(mQActionPointer, SIGNAL(activated()), this, SLOT(run())); connect(mSiteAction, SIGNAL(activated()), this, SLOT(PlaceSite())); connect(mSelectSiteAction, SIGNAL(activated()), this, SLOT(SelectSite())); connect(mDeleteSiteAction, SIGNAL(activated()), this, SLOT(DeleteSite())); connect(mLinkAction, SIGNAL(activated()), this, SLOT(CreateLinkAnalysis())); connect(mDeleteLinkAction, SIGNAL(activated()), this, SLOT(DeleteLink())); connect(mMultiLinkAction, SIGNAL(activated()), this, SLOT(MultiLink())); connect(mSelectLinkAction, SIGNAL(activated()), this, SLOT(SelectLink())); connect(mRadioAction, SIGNAL(activated()), this, SLOT(Prediction())); connect(mMeasAnalysisAction, SIGNAL(activated()), this, SLOT(Measurements())); connect(mSpectralAction, SIGNAL(activated()), this, SLOT(SpectralAnalysis())); connect(mPreferencesAction, SIGNAL(activated()), this, SLOT(Preferences())); connect(mOptimisationAction, SIGNAL(activated()), this, SLOT(Optimise())); // connect(mImportExportAction,SIGNAL(activated()), this, SLOT(ImportExport())); // connect(mHelpAction,SIGNAL(activated()), this, SLOT(Help())); cout << "Na Connect" << endl; // Add the toolbar to the main window mToolBarPointer = mQGisIface->addToolBar(tr("Q-Rap")); mToolBarPointer->setIconSize(QSize(24,24)); mToolBarPointer->setObjectName("Q-Rap"); // Add the icon to the toolbar mToolBarPointer->addAction(mSiteAction); mToolBarPointer->addAction(mSelectSiteAction); mToolBarPointer->addAction(mDeleteSiteAction); mToolBarPointer->addAction(mLinkAction); mToolBarPointer->addAction(mSelectLinkAction); mToolBarPointer->addAction(mDeleteLinkAction); mToolBarPointer->addAction(mRadioAction); mToolBarPointer->addAction(mMultiLinkAction); mToolBarPointer->addAction(mMeasAnalysisAction); mToolBarPointer->addAction(mSpectralAction); mToolBarPointer->addAction(mOptimisationAction); mToolBarPointer->addAction(mPreferencesAction); mToolBarPointer->addAction(mQActionPointer); // mToolBarPointer->addAction(mImportExportAction); // mToolBarPointer->addAction(mHelpAction); mLoaded = true; // openDatabaseConnection(); // cout << "Na DataBase Connect" << endl; // mQGisIface->addToolBarIcon( mQActionPointer ); // mQGisIface->addPluginToMenu( tr( "Q-Rap Database" ), mQActionPointer ); Mouse = new MouseEvents(mQGisIface->mapCanvas()); cout << "Na Mouse" << endl; connect(Mouse, SIGNAL(RightPoint(QgsPoint&)), this, SLOT(ReceivedRightPoint(QgsPoint&))); connect(Mouse, SIGNAL(LeftPoint(QgsPoint&)), this, SLOT(ReceivedLeftPoint(QgsPoint&))); }