Пример #1
0
long EditorWindow::onActivateCreator (FXObject* , FXSelector, void* )
{
    butSelector->handle(this,MKUINT(ID_UNCHECK ,SEL_COMMAND),NULL);
    butCreator->handle (this,MKUINT(ID_CHECK ,SEL_COMMAND),NULL);
    butMirror->handle (this,MKUINT(ID_UNCHECK ,SEL_COMMAND),NULL);
    butRotate->handle (this,MKUINT(ID_UNCHECK ,SEL_COMMAND),NULL);

    for (int i = 0; i<3; i++)
        View[i]->setTool(TOOL_CREATOR);

    return 1;
}
Пример #2
0
long EditorWindow::onActivateRotate(FXObject* , FXSelector, void* )
{
    if (PM->isSelectionEmpty())		// non dovrebbe mai accadere
        return 1;

    butSelector->handle(this,MKUINT(ID_UNCHECK ,SEL_COMMAND),NULL);
    butCreator->handle (this,MKUINT(ID_UNCHECK ,SEL_COMMAND),NULL);
    butMirror->handle (this,MKUINT(ID_UNCHECK ,SEL_COMMAND),NULL);
    butRotate->handle (this,MKUINT(ID_CHECK ,SEL_COMMAND),NULL);

    for (int i = 0; i<3; i++)
        View[i]->setTool(TOOL_ROTATE);

    return 1;
}
Пример #3
0
long AlphaBallControl::onQueryTip(FXObject* sender,FXSelector,void*){
  if(!tip.empty() && (flags&FLAG_TIP)){
    sender->handle(this,MKUINT(ID_SETSTRINGVALUE,SEL_COMMAND),(void*)&tip);
    return 1;
    }
  return 0;
  }
Пример #4
0
long CDPreferences::onCmdAccept(FXObject*,FXSelector,void*)
{
    handle(this,MKUINT(ID_APPLY,SEL_COMMAND),NULL);
    getApp()->stopModal(this,TRUE);
    hide();
    return 1;
}
Пример #5
0
void Viewport::updateButtons()
{	
	butCPoints->handle(this,MKUINT((RenderMode.ShowCtrlPoints) ? ID_CHECK:ID_UNCHECK ,SEL_COMMAND),NULL);
	butCPolygon->handle(this,MKUINT((RenderMode.ShowCtrlPolygon) ? ID_CHECK:ID_UNCHECK ,SEL_COMMAND),NULL);
	butPatch->handle(this,MKUINT((RenderMode.ShowPatch) ? ID_CHECK:ID_UNCHECK ,SEL_COMMAND),NULL);	

	butSnapToGrid->handle(this,MKUINT((RenderMode.SnapToGrid) ? ID_CHECK:ID_UNCHECK ,SEL_COMMAND),NULL);
	butCullFace->handle(this,MKUINT((RenderMode.Cullface) ? ID_UNCHECK : ID_CHECK, SEL_COMMAND),NULL);
	
	butShowGrid->handle(this,MKUINT((RenderMode.ShowGrid) ? ID_CHECK : ID_UNCHECK, SEL_COMMAND),NULL);
	butSolid->handle(this,MKUINT((RenderMode.Solid) ? ID_CHECK : ID_UNCHECK, SEL_COMMAND),NULL);
	butTexture->handle(this,MKUINT((RenderMode.Texture) ? ID_CHECK : ID_UNCHECK, SEL_COMMAND),NULL);

	butCameraTrackball->handle(this,MKUINT((RenderMode.UseCamera) ? ID_CHECK:ID_UNCHECK ,SEL_COMMAND),NULL);	
}
Пример #6
0
long AlphaBallControl::onLeftBtnRelease(FXObject*,FXSelector,void* ptr){
  FXuint flgs=flags;
  float* valphap = new float[1];  
  int vmax;
  if(isEnabled()){
    ungrab();
    flags|=FLAG_UPDATE;
    flags&=~FLAG_PRESSED;
    flags&=~FLAG_CHANGED;
    if(target && target->handle(this,MKUINT(message,SEL_LEFTBUTTONRELEASE),ptr)) return 1;
    if(flgs&FLAG_CHANGED){
      getMaxBound(vmax,spotx,spoty);
      valphap[0]=vmax;
      if(target) target->handle(this,MKUINT(message,SEL_COMMAND),(void*)valphap);
      delete valphap;
      }      
    return 1;
    }
  return 1;
  }
Пример #7
0
long AlphaBallControl::onLeftBtnPress(FXObject*,FXSelector,void* ptr){
  FXEvent* event=(FXEvent*)ptr;
  flags&=~FLAG_TIP;
  float* valphap = new float[1];  
  int vmax;
  if(isEnabled()){
    grab();
    if(target && target->handle(this,MKUINT(message,SEL_LEFTBUTTONPRESS),ptr)) return 1;
    movespot(event->win_x-dialx,event->win_y-dialy);
    getMaxBound(vmax,spotx,spoty);
    valphap[0]=vmax;
    if(target) 
      target->handle(this,MKUINT(message,SEL_CHANGED),(void*)valphap);
    flags|=FLAG_CHANGED;
    flags&=~FLAG_UPDATE;
    flags|=FLAG_PRESSED;
    delete valphap;
    }
  return 1;
  }
Пример #8
0
// Cleanup; icons must be explicitly deleted
FileSelector::~FileSelector()
{	
	// Write options to the registry
	getApp()->reg().writeUnsignedEntry("FILEDIALOG","name_size",list->getHeaderSize(0));
	getApp()->reg().writeUnsignedEntry("FILEDIALOG","size_size",list->getHeaderSize(1));
	getApp()->reg().writeUnsignedEntry("FILEDIALOG","type_size",list->getHeaderSize(2));
	getApp()->reg().writeUnsignedEntry("FILEDIALOG","ext_size",list->getHeaderSize(3));
	getApp()->reg().writeUnsignedEntry("FILEDIALOG","modd_size",list->getHeaderSize(4));
	getApp()->reg().writeUnsignedEntry("FILEDIALOG","user_size",list->getHeaderSize(5));
	getApp()->reg().writeUnsignedEntry("FILEDIALOG","grou_size",list->getHeaderSize(6));
	getApp()->reg().writeUnsignedEntry("FILEDIALOG","attr_size",list->getHeaderSize(7));
	getApp()->reg().writeUnsignedEntry("FILEDIALOG","listmode",getFileBoxStyle());
	getApp()->reg().writeUnsignedEntry("FILEDIALOG","hiddenfiles",shownHiddenFiles());
	getApp()->reg().writeUnsignedEntry("FILEDIALOG","thumbnails",shownThumbnails());
	getApp()->reg().write();
	
	FXAccelTable *table=getShell()->getAccelTable();
	if(table)
	{
    	table->removeAccel(MKUINT(KEY_BackSpace,0));
    	table->removeAccel(MKUINT(KEY_h,CONTROLMASK));
    	table->removeAccel(MKUINT(KEY_w,CONTROLMASK));
    	table->removeAccel(MKUINT(KEY_a,CONTROLMASK));
    	table->removeAccel(MKUINT(KEY_i,CONTROLMASK));
    }
    delete list;
    delete pathlink;
	delete pathtext;
	delete filename;
	delete filefilter;
	delete readonly;
	delete accept;
	delete cancel;
	delete btnbackhist;
	delete btnforwardhist;
}
Пример #9
0
long CDPreferences::onCmdList(FXObject*,FXSelector,void* ptr)
{
    std::vector<FXTreeItem*>::const_iterator iter;

    for(iter=treeitem.begin(); iter!=treeitem.end(); ++iter)
    {
        if(*iter==(FXTreeItem*)ptr)
        {
            switcher->handle(this,MKUINT(FXSwitcher::ID_OPEN_FIRST+(iter-treeitem.begin()),SEL_COMMAND),NULL);
            break;
        }
    }

    return 1;
}
Пример #10
0
long AlphaBallControl::onMotion(FXObject*,FXSelector,void* ptr){
  FXEvent* event=(FXEvent*)ptr;
  flags&=~FLAG_TIP;
  float* valphap = new float[1];    
  int vmax;
  if(flags&FLAG_PRESSED){
    movespot(event->win_x-dialx,event->win_y-dialy);
    getMaxBound(vmax,spotx,spoty);
    valphap[0]=vmax;
    if(target) 
      target->handle(this,MKUINT(message,SEL_CHANGED),(void*)valphap);
    flags|=FLAG_CHANGED;
    delete valphap;
    return 1;
  }
  return 0;
}
Пример #11
0
// Note : the original function from FXAccelTable is buggy!!
// Parse accelerator from string
FXHotKey _parseAccel(const FXString& string)
{
	register FXuint code=0,mods=0;
	register FXint pos=0;

	// Parse leading space
	while(pos<string.length() && Ascii::isSpace(string[pos]))
		pos++;

	// Parse modifiers
	while(pos<string.length())
	{
		// Modifier
		if(comparecase(&string[pos],"ctl",3)==0)
		{
			mods|=CONTROLMASK;
			pos+=3;
		}
		else if(comparecase(&string[pos],"ctrl",4)==0)
		{
			mods|=CONTROLMASK;
			pos+=4;
		}
		else if(comparecase(&string[pos],"alt",3)==0)
		{
			mods|=ALTMASK;
			pos+=3;
		}
		else if(comparecase(&string[pos],"meta",4)==0)
		{
			mods|=METAMASK;
			pos+=4;
		}
		else if(comparecase(&string[pos],"shift",5)==0)
		{
			mods|=SHIFTMASK;
			pos+=5;
		}
		else
			break;

		// Separator
		if(string[pos]=='+' || string[pos]=='-' || Ascii::isSpace(string[pos]))
			pos++;
	}

	// Test for some special keys
	if(comparecase(&string[pos],"home",4)==0)
		code=KEY_Home;
	else if(comparecase(&string[pos],"end",3)==0)
		code=KEY_End;
	else if(comparecase(&string[pos],"pgup",4)==0)
		code=KEY_Page_Up;
	else if(comparecase(&string[pos],"pgdn",4)==0)
		code=KEY_Page_Down;
	else if(comparecase(&string[pos],"left",4)==0)
		code=KEY_Left;
	else if(comparecase(&string[pos],"right",5)==0)
		code=KEY_Right;
	else if(comparecase(&string[pos],"up",2)==0)
		code=KEY_Up;
	else if(comparecase(&string[pos],"down",4)==0)
		code=KEY_Down;
	else if(comparecase(&string[pos],"ins",3)==0)
		code=KEY_Insert;
	else if(comparecase(&string[pos],"del",3)==0)
		code=KEY_Delete;
	else if(comparecase(&string[pos],"esc",3)==0)
		code=KEY_Escape;
	else if(comparecase(&string[pos],"tab",3)==0)
		code=KEY_Tab;
	else if(comparecase(&string[pos],"return",6)==0)
		code=KEY_Return;
	else if(comparecase(&string[pos],"enter",5)==0)
		code=KEY_Return;
	else if(comparecase(&string[pos],"back",4)==0)
		code=KEY_BackSpace;
	else if(comparecase(&string[pos],"spc",3)==0)
		code=KEY_space;
	else if(comparecase(&string[pos],"space",5)==0)
		code=KEY_space;

	// Test for function keys
	else if(Ascii::toLower(string[pos])=='f' && Ascii::isDigit(string[pos+1]))
	{
		if(Ascii::isDigit(string[pos+2]))
		{			
			// !!!! Hack to fix a bug in FOX !!!!
			code=KEY_F1+10*(string[pos+1]-'0')+(string[pos+2]-'0')-1;
			// !!!! End of hack !!!!
		}
		else
			code=KEY_F1+string[pos+1]-'1';
	}
	// Test if hexadecimal code designator
	else if(string[pos]=='#')
		code=strtoul(&string[pos+1],NULL,16);

	// Test if its a single character accelerator
	else if(Ascii::isPrint(string[pos]))
	{
		if(mods&SHIFTMASK)
			code=Ascii::toUpper(string[pos])+KEY_space-' ';
		else
			code=Ascii::toLower(string[pos])+KEY_space-' ';
	}
	return MKUINT(code,mods);
}
Пример #12
0
long CDPreferences::onUpdDeviceRemove(FXObject* sender,FXSelector,void*)
{
    FXuint msg=(devlist->getNumItems()>1)?ID_ENABLE:ID_DISABLE;
    sender->handle(this,MKUINT(msg,SEL_COMMAND),NULL);
    return 1;
}