Esempio n. 1
0
void QgsGrassNewMapset::regionChanged()
{

  mRegionModified = true;
  checkRegion();
  drawRegion();
}
void JCFloaterAreaSearch::onRefresh()
{
	//llinfos << "Clicked search" << llendl;
	mStopped = false;
	checkRegion(true);
	results();
}
// static
void JCFloaterAreaSearch::processObjectPropertiesFamily(LLMessageSystem* msg)
{
	checkRegion();

	LLUUID object_id;
	msg->getUUIDFast(_PREHASH_ObjectData, _PREHASH_ObjectID, object_id);

	bool exists = (sObjectDetails.count(object_id) != 0);
	AObjectDetails* details = &sObjectDetails[object_id];
	if (!exists || details->name == REQUEST_STRING)
	{
		// We cache unknown objects (to avoid having to request them later)
		// and requested objects.
		if (exists && sRequested > 0) sRequested--;
		msg->getUUIDFast(_PREHASH_ObjectData, _PREHASH_OwnerID, details->owner_id);
		msg->getUUIDFast(_PREHASH_ObjectData, _PREHASH_GroupID, details->group_id);
		msg->getStringFast(_PREHASH_ObjectData, _PREHASH_Name, details->name);
		msg->getStringFast(_PREHASH_ObjectData, _PREHASH_Description, details->desc);
		gCacheName->get(details->owner_id, false,
						boost::bind(&callbackLoadOwnerName, _1, _2, _3));
		gCacheName->get(details->group_id, true,
						boost::bind(&callbackLoadOwnerName, _1, _2, _3));
		LL_DEBUGS("AreaSearch") << "Got info for "
								<< (exists ? "requested" : "unknown")
								<< " object " << object_id << LL_ENDL;
	}
}
Esempio n. 4
0
static int r_getPos(lua_State *L) {
	Region *pR = checkRegion(L);
	assert(pR);

	Vertex::vertexToLuaVertex(L, pR->getPosition());
	return 1;
}
Esempio n. 5
0
static int r_getY(lua_State *L) {
	Region *pR = checkRegion(L);
	assert(pR);

	lua_pushnumber(L, pR->getPosY());
	return 1;
}
Esempio n. 6
0
static int r_isValid(lua_State *L) {
	Region *pR = checkRegion(L);
	assert(pR);

	lua_pushbooleancpp(L, pR->isValid());
	return 1;
}
Esempio n. 7
0
void QgsGrassNewMapset::regionChanged()
{
    QgsDebugMsg( "entered." );

    mRegionModified = true;
    checkRegion();
    drawRegion();
}
Esempio n. 8
0
static int r_getCentroid(lua_State *L) {
	Region *RPtr = checkRegion(L);
	assert(RPtr);

	Vertex::vertexToLuaVertex(L, RPtr->getCentroid());

	return 1;
}
Esempio n. 9
0
static int r_setY(lua_State *L) {
	Region *pR = checkRegion(L);
	assert(pR);

	pR->setPosY(static_cast<int>(luaL_checknumber(L, 2)));

	return 0;
}
Esempio n. 10
0
void QgsGrassNewMapset::setCurrentRegion()
{
    QgsDebugMsg( "entered." );

    QgsRectangle ext = mIface->mapCanvas()->extent();

    int srsid = QgsProject::instance()->readNumEntry(
                    "SpatialRefSys", "/ProjectCRSID", 0 );

    QgsCoordinateReferenceSystem srs( srsid, QgsCoordinateReferenceSystem::InternalCrsId );
    QgsDebugMsg( QString( "current project srsid = %1" ).arg( srsid ) );
    QgsDebugMsg( QString( "srs.isValid() = %1" ).arg( srs.isValid() ) );

    std::vector<QgsPoint> points;

    // TODO: this is not perfect
    points.push_back( QgsPoint( ext.xMinimum(), ext.yMinimum() ) );
    points.push_back( QgsPoint( ext.xMaximum(), ext.yMaximum() ) );

    // TODO add a method, this code is copy-paste from setSelectedRegion
    if ( srs.isValid() && mSrs.isValid()
            && srs.srsid() != mSrs.srsid() )
    {
        QgsCoordinateTransform trans( srs, mSrs );

        bool ok = true;
        for ( int i = 0; i < 2; i++ )
        {
            try
            {
                points[i] = trans.transform( points[i] );
            }
            catch ( QgsCsException &cse )
            {
                Q_UNUSED( cse );
                QgsDebugMsg( "Cannot transform point" );
                ok = false;
                break;
            }
        }

        if ( !ok )
        {
            QMessageBox::warning( 0, tr( "Warning" ), tr( "Cannot reproject region" ) );
            return;
        }
    }
    mNorthLineEdit->setText( QString::number( points[1].y() ) );
    mSouthLineEdit->setText( QString::number( points[0].y() ) );
    mEastLineEdit->setText( QString::number( points[1].x() ) );
    mWestLineEdit->setText( QString::number( points[0].x() ) );

    mRegionModified = true;
    checkRegion();
    drawRegion();
    QgsDebugMsg( "setCurrentRegion - End" );
}
Esempio n. 11
0
static int r_isPointInRegion(lua_State *L) {
	Region *pR = checkRegion(L);
	assert(pR);

	Vertex vertex;
	Vertex::luaVertexToVertex(L, 2, vertex);
	lua_pushbooleancpp(L, pR->isPointInRegion(vertex));
	return 1;
}
Esempio n. 12
0
static int r_setPos(lua_State *L) {
	Region *pR = checkRegion(L);
	assert(pR);

	Vertex vertex;
	Vertex::luaVertexToVertex(L, 2, vertex);
	pR->setPos(vertex.x, vertex.y);

	return 0;
}
Esempio n. 13
0
bool searchMatched(mafLine_t *ml, char *seq, uint32_t start, uint32_t stop) {
    // report false if search did not match, true if it did
    if (ml->type != 's')
        return false;
    if (!(strcmp(ml->species, seq) == 0))
        return false;
    if (checkRegion(start, stop, ml->start, ml->length, ml->sourceLength, ml->strand))
        return true;
    return false;
}
void JCFloaterAreaSearch::onCommitLine(LLUICtrl* caller, const LLSD& value, OBJECT_COLUMN_ORDER type)
{
	std::string text = value.asString();
	LLStringUtil::toLower(text);
	caller->setValue(text);
 	mFilterStrings[type] = text;
	//llinfos << "loaded " << name << " with "<< text << llendl;
	checkRegion();
	results();
}
void FSAreaSearch::cancel()
{
	checkRegion();
	closeFloater();
	
	mSearchedName = "";
	mSearchedDesc = "";
	mSearchedOwner = "";
	mSearchedGroup = "";
}
Esempio n. 16
0
bool searchMatched(mafLine_t *ml, const char *seq, uint64_t start, uint64_t stop) {
    // report false if search did not match, true if it did
    if (maf_mafLine_getType(ml) != 's')
        return false;
    if (!(strcmp(maf_mafLine_getSpecies(ml), seq) == 0))
        return false;
    if (checkRegion(start, stop, maf_mafLine_getStart(ml), maf_mafLine_getLength(ml),
                    maf_mafLine_getSourceLength(ml), maf_mafLine_getStrand(ml)))
        return true;
    return false;
}
// static
void JCFloaterAreaSearch::cancel(void* data)
{
	checkRegion();
	if (sInstance)
	{
		sInstance->close(TRUE);
	}
	sSearchedName = "";
	sSearchedDesc = "";
	sSearchedOwner = "";
	sSearchedGroup = "";
}
Esempio n. 18
0
void QgsGrassNewMapset::setCurrentRegion()
{
  QgsDebugMsg( "entered" );

  QgsRectangle ext = mIface->mapCanvas()->extent();

  QgsCoordinateReferenceSystem srs = mIface->mapCanvas()->mapSettings().destinationCrs();
  QgsDebugMsg( "srs = " + srs.toWkt() );

  std::vector<QgsPoint> points;

  // TODO: this is not perfect
  points.push_back( QgsPoint( ext.xMinimum(), ext.yMinimum() ) );
  points.push_back( QgsPoint( ext.xMaximum(), ext.yMaximum() ) );

  // TODO add a method, this code is copy-paste from setSelectedRegion
  if ( srs.isValid() && mCrs.isValid()
       && srs.srsid() != mCrs.srsid() )
  {
    QgsCoordinateTransform trans( srs, mCrs );

    bool ok = true;
    for ( int i = 0; i < 2; i++ )
    {
      try
      {
        points[i] = trans.transform( points[i] );
      }
      catch ( QgsCsException &cse )
      {
        Q_UNUSED( cse );
        QgsDebugMsg( "Cannot transform point" );
        ok = false;
        break;
      }
    }

    if ( !ok )
    {
      QgsGrass::warning( tr( "Cannot reproject region" ) );
      return;
    }
  }
  mNorthLineEdit->setText( QString::number( points[1].y() ) );
  mSouthLineEdit->setText( QString::number( points[0].y() ) );
  mEastLineEdit->setText( QString::number( points[1].x() ) );
  mWestLineEdit->setText( QString::number( points[0].x() ) );

  mRegionModified = true;
  checkRegion();
  drawRegion();
  QgsDebugMsg( "setCurrentRegion - End" );
}
void FSAreaSearch::onCommitLine(LLLineEditor* line, void* user_data)
{
	std::string name = line->getName();
	std::string text = line->getText();

	if (name == "Name query chunk") mSearchedName = text;
	else if (name == "Description query chunk") mSearchedDesc = text;
	else if (name == "Owner query chunk") mSearchedOwner = text;
	else if (name == "Group query chunk") mSearchedGroup = text;

	if (text.length() > 3)
	{
		checkRegion();
		results();
	}
}
// static
void JCFloaterAreaSearch::onCommitLine(LLLineEditor* line, void* user_data)
{
	std::string name = line->getName();
	std::string text = line->getText();
	LLStringUtil::toLower(text);
	line->setText(text);
	if (name == "Name query chunk") sSearchedName = text;
	else if (name == "Description query chunk") sSearchedDesc = text;
	else if (name == "Owner query chunk") sSearchedOwner = text;
	else if (name == "Group query chunk") sSearchedGroup = text;

	if (text.length() > 3)
	{
		checkRegion();
		setDirty();
	}
}
// static
void JCFloaterAreaSearch::toggle()
{
	if (sInstance)
	{
		if (sInstance->getVisible())
		{
			sInstance->setVisible(FALSE);
		}
		else
		{
			checkRegion();
			sInstance->setVisible(TRUE);
		}
	}
	else
	{
		sInstance = new JCFloaterAreaSearch();
		LLUICtrlFactory::getInstance()->buildFloater(sInstance, "floater_area_search.xml");
	}
}
Esempio n. 22
0
// static
void JCFloaterAreaSearch::processObjectPropertiesFamily(LLMessageSystem* msg, void** user_data)
{
	checkRegion();

	LLUUID object_id;
	msg->getUUIDFast(_PREHASH_ObjectData, _PREHASH_ObjectID, object_id);

	AObjectDetails* details = &sObjectDetails[object_id];
	if (!details->ready) sRequested--;
	// We cache unknown objects (to avoid having to request them later)
	// and requested objects.
	
	msg->getUUIDFast(_PREHASH_ObjectData, _PREHASH_OwnerID, details->owner_id);
	msg->getUUIDFast(_PREHASH_ObjectData, _PREHASH_GroupID, details->group_id);
	msg->getStringFast(_PREHASH_ObjectData, _PREHASH_Name, details->name);
	msg->getStringFast(_PREHASH_ObjectData, _PREHASH_Description, details->desc);
	details->ready = true;
	gCacheName->get(details->owner_id, FALSE, callbackLoadOwnerName);
	gCacheName->get(details->group_id, TRUE, callbackLoadOwnerName);
}
Esempio n. 23
0
// static
void JCFloaterAreaSearch::onCommitLine(LLLineEditor* line, void* user_data)
{
	std::string name = line->getName();
	std::string text = line->getText();
	line->setText(text);

	if (name == "Name query chunk") {sSearchedName = text; sSearchingName = (text.length() > 3);}
	else if (name == "Description query chunk") {sSearchedDesc = text; sSearchingDesc = (text.length() > 3);}
	else if (name == "Owner query chunk") {sSearchedOwner = text; sSearchingOwner = (text.length() > 3);}
	else if (name == "Group query chunk") {sSearchedGroup = text; sSearchingGroup = (text.length() > 3);}

	if (text.length() > 3)
	{
		checkRegion();
		results();
	}
	else
	{

	}
}
// static
void JCFloaterAreaSearch::processObjectPropertiesFamily(LLMessageSystem* msg, void** user_data)
{
	checkRegion();

	LLUUID object_id;
	msg->getUUIDFast(_PREHASH_ObjectData, _PREHASH_ObjectID, object_id);

	bool exists = (sObjectDetails.count(object_id) != 0);
	AObjectDetails* details = &sObjectDetails[object_id];
	if (!exists || details->name == request_string)
	{
		// We cache unknown objects (to avoid having to request them later)
		// and requested objects.
		if (exists && sRequested > 0) sRequested--;
		msg->getUUIDFast(_PREHASH_ObjectData, _PREHASH_OwnerID, details->owner_id);
		msg->getUUIDFast(_PREHASH_ObjectData, _PREHASH_GroupID, details->group_id);
		msg->getStringFast(_PREHASH_ObjectData, _PREHASH_Name, details->name);
		msg->getStringFast(_PREHASH_ObjectData, _PREHASH_Description, details->desc);
		gCacheName->get(details->owner_id, false, boost::bind(&JCFloaterAreaSearch::results));
		gCacheName->get(details->group_id, true, boost::bind(&JCFloaterAreaSearch::results));
		//llinfos << "Got info for " << (exists ? "requested" : "unknown") << " object " << object_id << llendl;
	}
}
void FSAreaSearch::processObjectPropertiesFamily(LLMessageSystem* msg)
{
	checkRegion();

	LLUUID object_id;
	msg->getUUIDFast(_PREHASH_ObjectData, _PREHASH_ObjectID, object_id);

	bool exists = (mObjectDetails.count(object_id) != 0);
	AObjectDetails* details = &mObjectDetails[object_id];
	if (!exists || details->name == request_string)
	{
		// We cache unknown objects (to avoid having to request them later)
		// and requested objects.
		if (exists && mRequested > 0) mRequested--;
		msg->getUUIDFast(_PREHASH_ObjectData, _PREHASH_OwnerID, details->owner_id);
		msg->getUUIDFast(_PREHASH_ObjectData, _PREHASH_GroupID, details->group_id);
		msg->getStringFast(_PREHASH_ObjectData, _PREHASH_Name, details->name);
		msg->getStringFast(_PREHASH_ObjectData, _PREHASH_Description, details->desc);
		gCacheName->get(details->owner_id, false, boost::bind(
							&FSAreaSearch::callbackLoadOwnerName, this, _1, _2));
		gCacheName->get(details->group_id, true, boost::bind(
							&FSAreaSearch::callbackLoadOwnerName, this, _1, _2));
	}
}
// static
void JCFloaterAreaSearch::search(void* data)
{
	//llinfos << "Clicked search" << llendl;
	checkRegion();
	results();
}
Esempio n. 27
0
void QgsGrassNewMapset::setSelectedRegion()
{
    QgsDebugMsg( "entered." );

    // mRegionsPoints are in EPSG 4326 = LL WGS84
    int index = 2 * mRegionsComboBox->currentIndex();

    std::vector<QgsPoint> points;
    // corners ll lr ur ul
    points.push_back( QgsPoint( mRegionsPoints[index] ) );
    points.push_back( QgsPoint( mRegionsPoints[index+1].x(),
                                mRegionsPoints[index].y() ) );
    points.push_back( QgsPoint( mRegionsPoints[index+1] ) );
    points.push_back( QgsPoint( mRegionsPoints[index].x(),
                                mRegionsPoints[index+1].y() ) );

    // Convert to currently selected coordinate system


    // Warning: seems that crashes if source == dest
    if ( mProjectionSelector->selectedCrsId() != GEOCRS_ID )
    {
        // Warning: QgsCoordinateReferenceSystem::EpsgCrsId is broken (using epsg_id)
        //QgsCoordinateReferenceSystem source ( 4326, QgsCoordinateReferenceSystem::EpsgCrsId );
        QgsCoordinateReferenceSystem source( GEOCRS_ID, QgsCoordinateReferenceSystem::InternalCrsId );

        if ( !source.isValid() )
        {
            QMessageBox::warning( 0, tr( "Warning" ),
                                  tr( "Cannot create QgsCoordinateReferenceSystem" ) );
            return;
        }

        QgsCoordinateReferenceSystem dest( mProjectionSelector->selectedCrsId(),
                                           QgsCoordinateReferenceSystem::InternalCrsId );

        if ( !dest.isValid() )
        {
            QMessageBox::warning( 0, tr( "Warning" ),
                                  tr( "Cannot create QgsCoordinateReferenceSystem" ) );
            return;
        }

        QgsCoordinateTransform trans( source, dest );

        bool ok = true;
        for ( int i = 0; i < 4; i++ )
        {
            QgsDebugMsg( QString( "%1,%2->" ).arg( points[i].x() ).arg( points[i].y() ) );
            try
            {
                points[i] = trans.transform( points[i] );
                QgsDebugMsg( QString( "%1,%2" ).arg( points[i].x() ).arg( points[i].y() ) );
            }
            catch ( QgsCsException &cse )
            {
                Q_UNUSED( cse );
                QgsDebugMsg( "Cannot transform point" );
                ok = false;
                break;
            }
        }

        if ( !ok )
        {
            QMessageBox::warning( 0, tr( "Warning" ),
                                  tr( "Cannot reproject selected region." ) );
            return;
        }
    }

    double n = -90.0, s = 90.0, e = -180.0, w = 180.0;

    if ( mCellHead.proj == PROJECTION_LL )
    {
        n = points[2].y();
        s = points[0].y();
        e = points[1].x();
        w = points[0].x();

        if ( n > 90 )
            n = 90;
        if ( s < -90 )
            s = -90;
#if 0
        if ( e > 180 )
            e = 180;
        if ( w < -180 )
            w = 180;
#endif
    }
    else
    {
        for ( int i = 0; i < 4; i++ )
        {
            if ( i == 0 || points[i].y() > n )
                n = points[i].y();
            if ( i == 0 || points[i].y() < s )
                s = points[i].y();
            if ( i == 0 || points[i].x() > e )
                e = points[i].x();
            if ( i == 0 || points[i].x() < w )
                w = points[i].x();
        }
    }

    mNorthLineEdit->setText( QString::number( n ) );
    mSouthLineEdit->setText( QString::number( s ) );
    mEastLineEdit->setText( QString::number( e ) );
    mWestLineEdit->setText( QString::number( w ) );

    mRegionModified = true;
    checkRegion();
    drawRegion();
}
Esempio n. 28
0
/**************************** REGION ********************************/
void QgsGrassNewMapset::setRegionPage()
{
    QgsDebugMsg( "entered." );

    // Set defaults
    if ( !mRegionModified )
    {
        setGrassRegionDefaults();
    }

    // Create new projection
    QgsCoordinateReferenceSystem newSrs;
    if ( mProjRadioButton->isChecked() )
    {
        QgsDebugMsg( QString( "selectedCrsId() = %1" ).arg( mProjectionSelector->selectedCrsId() ) );

        if ( mProjectionSelector->selectedCrsId() > 0 )
        {
            newSrs.createFromSrsId( mProjectionSelector->selectedCrsId() );
            if ( ! newSrs.isValid() )
            {
                QMessageBox::warning( 0, tr( "Warning" ), tr( "Cannot create projection." ) );
            }
        }
    }

    // Reproject previous region if it was modified
    // and if previous and current projection is valid
    if ( mRegionModified && newSrs.isValid() && mSrs.isValid()
            && newSrs.srsid() != mSrs.srsid() )
    {
        QgsCoordinateTransform trans( mSrs, newSrs );

        double n = mNorthLineEdit->text().toDouble();
        double s = mSouthLineEdit->text().toDouble();
        double e = mEastLineEdit->text().toDouble();
        double w = mWestLineEdit->text().toDouble();

        std::vector<QgsPoint> points;

        // TODO: this is not perfect
        points.push_back( QgsPoint( w, s ) );
        points.push_back( QgsPoint( e, n ) );

        bool ok = true;
        for ( int i = 0; i < 2; i++ )
        {
            try
            {
                points[i] = trans.transform( points[i] );
            }
            catch ( QgsCsException &cse )
            {
                Q_UNUSED( cse );
                QgsDebugMsg( "Cannot transform point" );
                ok = false;
                break;
            }
        }

        if ( ok )
        {
            mNorthLineEdit->setText( QString::number( points[1].y() ) );
            mSouthLineEdit->setText( QString::number( points[0].y() ) );
            mEastLineEdit->setText( QString::number( points[1].x() ) );
            mWestLineEdit->setText( QString::number( points[0].x() ) );
        }
        else
        {
            QMessageBox::warning( 0, tr( "Warning" ), tr( "Cannot reproject previously set region, default region set." ) );

            setGrassRegionDefaults();
        }
    }

    // Set current region projection
    mSrs = newSrs;

    // Enable / disable region selection widgets
    if ( mNoProjRadioButton->isChecked() )
    {
        mRegionMap->hide();
        mCurrentRegionButton->hide();
        mRegionsComboBox->hide();
        mRegionButton->hide();
        mSetRegionFrame->hide();
    }
    else
    {
        mRegionMap->show();
        mCurrentRegionButton->show();
        mRegionsComboBox->show();
        mRegionButton->show();
        mSetRegionFrame->show();

        QgsRectangle ext = mIface->mapCanvas()->extent();

        if ( ext.xMinimum() >= ext.xMaximum() || ext.yMinimum() >= ext.yMaximum() )
        {
            mCurrentRegionButton->setEnabled( false );
        }
    }

    checkRegion();

    if ( !mNoProjRadioButton->isChecked() )
    {
        drawRegion();
    }
}
void FSAreaSearch::search()
{
	checkRegion();
	results();
}
void JCFloaterAreaSearch::onOpen()
{
	checkRegion();
	results();
}