1
0
mirror of https://git.dev.opencascade.org/repos/occt.git synced 2025-04-05 18:16:23 +03:00
occt/src/XSControl/XSControl_Controller.cxx
bugmaster b311480ed5 0023024: Update headers of OCCT files
Added appropriate copyright and license information in source files
2012-03-21 19:43:04 +04:00

668 lines
23 KiB
C++
Executable File

// Copyright (c) 1999-2012 OPEN CASCADE SAS
//
// The content of this file is subject to the Open CASCADE Technology Public
// License Version 6.5 (the "License"). You may not use the content of this file
// except in compliance with the License. Please obtain a copy of the License
// at http://www.opencascade.org and read it completely before using this file.
//
// The Initial Developer of the Original Code is Open CASCADE S.A.S., having its
// main offices at: 1, place des Freres Montgolfier, 78280 Guyancourt, France.
//
// The Original Code and all software distributed under the License is
// distributed on an "AS IS" basis, without warranty of any kind, and the
// Initial Developer hereby disclaims all such warranties, including without
// limitation, any warranties of merchantability, fitness for a particular
// purpose or non-infringement. Please see the License for the specific terms
// and conditions governing the rights and limitations under the License.
#include <XSControl_Controller.ixx>
#include <IFSelect_GeneralModifier.hxx>
#include <Dico_IteratorOfDictionaryOfTransient.hxx>
#include <Dico_IteratorOfDictionaryOfInteger.hxx>
#include <TColStd_IndexedMapOfTransient.hxx>
#include <IFSelect_Option.hxx>
#include <IFSelect_SelectModelEntities.hxx>
#include <IFSelect_SelectModelRoots.hxx>
#include <IFSelect_SelectPointed.hxx>
#include <IFSelect_SelectSharing.hxx>
#include <IFSelect_SelectShared.hxx>
#include <IFSelect_GraphCounter.hxx>
#include <XSControl_SelectForTransfer.hxx>
#include <XSControl_ConnectedShapes.hxx>
#include <XSControl_SignTransferStatus.hxx>
#include <XSControl_TransferReader.hxx>
#include <XSControl_WorkSession.hxx>
#include <IFSelect_SignType.hxx>
#include <IFSelect_SignCounter.hxx>
#include <IFSelect_SignCategory.hxx>
#include <IFSelect_SignValidity.hxx>
#include <IFSelect_SignAncestor.hxx>
#include <IFSelect_DispPerOne.hxx>
#include <IFSelect_DispPerCount.hxx>
#include <IFSelect_DispPerFiles.hxx>
#include <IFSelect_DispPerSignature.hxx>
#include <IFSelect_IntParam.hxx>
// ParamEditor
#include <TColStd_HSequenceOfHAsciiString.hxx>
#include <Interface_Static.hxx>
#include <IFSelect_ParamEditor.hxx>
#include <IFSelect_EditForm.hxx>
#include <IFSelect_SelectModelRoots.hxx>
// Transferts
#include <Transfer_Binder.hxx>
#include <Transfer_SimpleBinderOfTransient.hxx>
#include <Transfer_TransientMapper.hxx>
#include <TransferBRep_ShapeMapper.hxx>
#include <Standard_DomainError.hxx>
#include <TCollection_HAsciiString.hxx>
#include <Interface_Macros.hxx>
#include <Message_Messenger.hxx>
#include <Message.hxx>
static Handle(Dico_DictionaryOfTransient)& listadapt()
{
static Handle(Dico_DictionaryOfTransient) listad;
if (listad.IsNull()) listad = new Dico_DictionaryOfTransient;
return listad;
}
static TColStd_IndexedMapOfTransient& mapadapt()
{
static TColStd_IndexedMapOfTransient mapad;
return mapad;
}
XSControl_Controller::XSControl_Controller
(const Standard_CString longname, const Standard_CString shortname)
: theShortName (shortname) , theLongName (longname)
{
theAdaptorApplied.Clear();
theAdaptorHooks = new TColStd_HSequenceOfHAsciiString();
// Parametres Standard
Interface_Static::Standards();
// TraceStatic ("read.stdsameparameter.mode",5);
TraceStatic ("read.precision.mode" , 5);
TraceStatic ("read.precision.val" , 5);
TraceStatic ("write.precision.mode" , 6);
TraceStatic ("write.precision.val" , 6);
// Initialisation du Profile
theProfile = new IFSelect_Profile;
/* essai option sur parametre
Handle(IFSelect_Option) optrdprec = new IFSelect_Option
(Interface_Static::Static ("read.precision.mode"),"readprecision.mode");
optrdprec->AddBasic("default","File");
optrdprec->AddBasic("Session");
optrdprec->Switch ("default");
theProfile->AddOption (optrdprec);
*/
// Handle(IFSelect_Option) optproto = new IFSelect_Option
// (STANDARD_TYPE(Interface_Protocol),"protocol");
// theProfile->AddOption (optproto);
Handle(IFSelect_Option) optsign = new IFSelect_Option
(STANDARD_TYPE(IFSelect_Signature),"sign-type");
optsign->Add ("default",theSignType);
theProfile->AddOption (optsign);
// Handle(IFSelect_Option) optwlib = new IFSelect_Option
// (STANDARD_TYPE(IFSelect_WorkLibrary),"access");
// theProfile->AddOption (optwlib);
Handle(IFSelect_Option) optactrd = new IFSelect_Option
(STANDARD_TYPE(Transfer_ActorOfTransientProcess),"tr-read");
theProfile->AddOption (optactrd);
Handle(IFSelect_Option) optactwr = new IFSelect_Option
(STANDARD_TYPE(Transfer_ActorOfFinderProcess),"tr-write");
theProfile->AddOption (optactwr);
// Definition de la config de base : suite a la customisation
}
void XSControl_Controller::SetNames
(const Standard_CString longname, const Standard_CString shortname)
{
if (longname && longname[0] != '\0') {
theLongName.Clear(); theLongName.AssignCat (longname);
}
if (shortname && shortname[0] != '\0') {
theShortName.Clear(); theShortName.AssignCat (shortname);
}
}
void XSControl_Controller::AutoRecord () const
{
Record (Name(Standard_True));
Record (Name(Standard_False));
}
void XSControl_Controller::Record (const Standard_CString name) const
{
Standard_Boolean deja;
Handle(Standard_Transient)& newadapt = listadapt()->NewItem (name,deja);
if (deja) {
Handle(Standard_Transient) thisadapt = this;
if (newadapt->IsKind(thisadapt->DynamicType()))
{
}
else if (thisadapt->IsKind(newadapt->DynamicType()))
{
newadapt = this;
if (mapadapt().FindIndex(newadapt) == 0) mapadapt().Add(newadapt);
}
else
if (thisadapt != newadapt) Standard_DomainError::Raise
("XSControl_Controller : Record");
}
else {
newadapt = this;
if (mapadapt().FindIndex(newadapt) == 0) mapadapt().Add(newadapt);
}
}
Handle(XSControl_Controller) XSControl_Controller::Recorded
(const Standard_CString name)
{
Handle(XSControl_Controller) recorded;
if (!listadapt()->GetItem (name,recorded)) recorded.Nullify();
return recorded;
}
Handle(TColStd_HSequenceOfHAsciiString) XSControl_Controller::ListRecorded
(const Standard_Integer mode)
{
Handle(TColStd_HSequenceOfHAsciiString) list = new TColStd_HSequenceOfHAsciiString();
if (mode == 0) {
Dico_IteratorOfDictionaryOfTransient iter (listadapt());
for (; iter.More(); iter.Next()) {
Handle(TCollection_HAsciiString) name = new TCollection_HAsciiString
(iter.Name());
list->Append(name);
}
} else {
Standard_Integer i, nb = mapadapt().Extent();
for (i = 1; i <= nb; i ++) {
DeclareAndCast(XSControl_Controller,ctl,mapadapt().FindKey(i));
if (ctl.IsNull()) continue;
Handle(TCollection_HAsciiString) name = new TCollection_HAsciiString
(ctl->Name( (mode < 0) ));
list->Append(name);
}
}
return list;
}
Standard_CString XSControl_Controller::Name (const Standard_Boolean rsc) const
{ return (rsc ? theShortName.ToCString() : theLongName.ToCString()); }
// #### PROFILE ####
Handle(IFSelect_Profile) XSControl_Controller::Profile () const
{ return theProfile; }
void XSControl_Controller::DefineProfile
(const Standard_CString confname)
{
if (!theProfile->HasConf(confname)) theProfile->AddConf (confname);
theProfile->SetFromCurrent (confname);
}
Standard_Boolean XSControl_Controller::SetProfile
(const Standard_CString confname)
{
if (!theProfile->SetCurrent (confname)) return Standard_False;
// theProfile->Value("protocol",theAdaptorProtocol);
theProfile->Value("sign-type",theSignType);
// theProfile->Value("access",theAdaptorLibrary);
theProfile->Value("tr-read",theAdaptorRead);
theProfile->Value("tr-write",theAdaptorWrite);
return SettingProfile (confname);
}
Standard_Boolean XSControl_Controller::SettingProfile
(const Standard_CString )
{ return Standard_True; }
Standard_Boolean XSControl_Controller::ApplyProfile
(const Handle(XSControl_WorkSession)& WS, const Standard_CString confname)
{
if (!SetProfile (confname)) return Standard_False;
// Typed Values : toutes
theProfile->SetTypedValues();
// SignType
Handle(IFSelect_Signature) signtype;
theProfile->Value ("sign-type",signtype);
WS->SetSignType (signtype);
// ActorRead
Handle(Transfer_ActorOfTransientProcess) actrd;
theProfile->Value ("tr-read",actrd);
WS->TransferReader()->SetActor (actrd);
// ActorWrite : dans le Controller meme
Handle(Transfer_ActorOfFinderProcess) actwr;
theProfile->Value ("tr-write",actwr);
theAdaptorWrite = actwr;
return ApplyingProfile (WS,confname);
}
Standard_Boolean XSControl_Controller::ApplyingProfile
(const Handle(XSControl_WorkSession)& , const Standard_CString )
{ return Standard_True; }
// #### DEFINITION ####
Handle(Interface_Protocol) XSControl_Controller::Protocol () const
{ return theAdaptorProtocol; }
Handle(IFSelect_Signature) XSControl_Controller::SignType () const
{ return theSignType; }
Handle(IFSelect_WorkLibrary) XSControl_Controller::WorkLibrary () const
{ return theAdaptorLibrary; }
Handle(Transfer_ActorOfFinderProcess) XSControl_Controller::ActorWrite () const
{ return theAdaptorWrite; }
void XSControl_Controller::UpdateStatics
(const Standard_Integer, const Standard_CString ) const
{ } // a redefinir si besoin
// ###########################
// Help du Transfer : controle de valeur + help
void XSControl_Controller::SetModeWrite
(const Standard_Integer modemin, const Standard_Integer modemax,
const Standard_Boolean )
{
if (modemin > modemax) { theModeWriteShapeN.Nullify(); return; }
theModeWriteShapeN = new Interface_HArray1OfHAsciiString (modemin,modemax);
}
void XSControl_Controller::SetModeWriteHelp
(const Standard_Integer modetrans, const Standard_CString help,
const Standard_Boolean )
{
if (theModeWriteShapeN.IsNull()) return;
if (modetrans < theModeWriteShapeN->Lower() ||
modetrans > theModeWriteShapeN->Upper()) return;
Handle(TCollection_HAsciiString) hl = new TCollection_HAsciiString (help);
theModeWriteShapeN->SetValue (modetrans,hl);
}
Standard_Boolean XSControl_Controller::ModeWriteBounds
(Standard_Integer& modemin, Standard_Integer& modemax,
const Standard_Boolean ) const
{
modemin = modemax = 0;
if (theModeWriteShapeN.IsNull()) return Standard_False;
modemin = theModeWriteShapeN->Lower();
modemax = theModeWriteShapeN->Upper();
return Standard_True;
}
Standard_Boolean XSControl_Controller::IsModeWrite
(const Standard_Integer modetrans, const Standard_Boolean ) const
{
if (theModeWriteShapeN.IsNull()) return Standard_True;
if (modetrans < theModeWriteShapeN->Lower()) return Standard_False;
if (modetrans > theModeWriteShapeN->Upper()) return Standard_False;
return Standard_True;
}
Standard_CString XSControl_Controller::ModeWriteHelp
(const Standard_Integer modetrans, const Standard_Boolean ) const
{
if (theModeWriteShapeN.IsNull()) return "";
if (modetrans < theModeWriteShapeN->Lower()) return "";
if (modetrans > theModeWriteShapeN->Upper()) return "";
Handle(TCollection_HAsciiString) str = theModeWriteShapeN->Value(modetrans);
if (str.IsNull()) return "";
return str->ToCString();
}
// ###########################
// Transfer : on fait ce qu il faut par defaut (avec ActorWrite)
// peut etre redefini ...
Standard_Boolean XSControl_Controller::RecognizeWriteTransient
(const Handle(Standard_Transient)& obj,
const Standard_Integer modetrans) const
{
if (theAdaptorWrite.IsNull()) return Standard_False;
theAdaptorWrite->ModeTrans() = modetrans;
return theAdaptorWrite->Recognize (new Transfer_TransientMapper(obj));
}
// Fonction interne
static IFSelect_ReturnStatus TransferFinder
(const Handle(Transfer_ActorOfFinderProcess)& actor,
const Handle(Transfer_Finder)& mapper,
const Handle(Transfer_FinderProcess)& FP,
const Handle(Interface_InterfaceModel)& model,
const Standard_Integer modetrans)
{
if (actor.IsNull()) return IFSelect_RetError;
if (model.IsNull()) return IFSelect_RetError;
actor->ModeTrans() = modetrans;
FP->SetModel (model);
FP->SetActor (actor);
FP->Transfer (mapper);
IFSelect_ReturnStatus stat = IFSelect_RetFail;
Handle(Transfer_Binder) binder = FP->Find (mapper);
Handle(Transfer_SimpleBinderOfTransient) bindtr;
while (!binder.IsNull()) {
bindtr = Handle(Transfer_SimpleBinderOfTransient)::DownCast (binder);
if (!bindtr.IsNull()) {
Handle(Standard_Transient) ent = bindtr->Result();
if (!ent.IsNull()) {
stat = IFSelect_RetDone;
model->AddWithRefs (ent);
}
}
binder = binder->NextResult();
}
return stat;
}
IFSelect_ReturnStatus XSControl_Controller::TransferWriteTransient
(const Handle(Standard_Transient)& obj,
const Handle(Transfer_FinderProcess)& FP,
const Handle(Interface_InterfaceModel)& model,
const Standard_Integer modetrans) const
{
if (obj.IsNull()) return IFSelect_RetVoid;
return TransferFinder
(theAdaptorWrite,new Transfer_TransientMapper(obj), FP,model,modetrans);
}
Standard_Boolean XSControl_Controller::RecognizeWriteShape
(const TopoDS_Shape& shape,
const Standard_Integer modetrans) const
{
if (theAdaptorWrite.IsNull()) return Standard_False;
theAdaptorWrite->ModeTrans() = modetrans;
return theAdaptorWrite->Recognize (new TransferBRep_ShapeMapper(shape));
}
IFSelect_ReturnStatus XSControl_Controller::TransferWriteShape
(const TopoDS_Shape& shape,
const Handle(Transfer_FinderProcess)& FP,
const Handle(Interface_InterfaceModel)& model,
const Standard_Integer modetrans) const
{
if (shape.IsNull()) return IFSelect_RetVoid;
IFSelect_ReturnStatus theReturnStat = TransferFinder
(theAdaptorWrite,new TransferBRep_ShapeMapper(shape), FP,model,modetrans);
return theReturnStat;
}
// ###########################
// File Cluster : quand un ensemble de donnees n est pas envoye d un coup mais
// en plusieurs petits paquets ...
// D abord, on detecte la chose et on prepare un contexte de resolution
// specifique du cas a traiter. Null Handle si rien a faire (par defaut)
// Ensuite on resoud
// Les formules par defaut ne font rien (redefinissables)
Handle(Standard_Transient) XSControl_Controller::ClusterContext
(const Handle(XSControl_WorkSession)& ) const
{ Handle(Standard_Transient) nulctx; return nulctx; }
Interface_CheckIterator XSControl_Controller::ResolveCluster
(const Handle(XSControl_WorkSession)& , const Handle(Standard_Transient)& ) const
{ Interface_CheckIterator nulist; return nulist; }
// ###########################
// ControlItems : si ActorWrite etc... ne suffisent meme plus, on peut en
// rajouter, Controller ne fait alors que les accueillir
void XSControl_Controller::AddControlItem
(const Handle(Standard_Transient)& item, const Standard_CString name)
{
if (item.IsNull() || name[0] == '\0') return;
if (theItems.IsNull()) theItems = new Dico_DictionaryOfTransient;
theItems->SetItem (name,item);
}
Handle(Standard_Transient) XSControl_Controller::ControlItem
(const Standard_CString name) const
{
Handle(Standard_Transient) item;
if (theItems.IsNull()) return item;
theItems->GetItem (name,item);
return item;
}
// ###########################
// Cutomisation ! On enregistre des Items pour une WorkSession
// (annule et remplace)
// Ensuite, on les remet en place a la demande
void XSControl_Controller::TraceStatic
(const Standard_CString name, const Standard_Integer use)
{
Handle(Interface_Static) val = Interface_Static::Static(name);
if (val.IsNull()) return;
theParams.Append (val);
theParamUses.Append(use);
}
void XSControl_Controller::AddSessionItem
(const Handle(Standard_Transient)& item, const Standard_CString name,
const Standard_CString setapplied)
{
if (item.IsNull() || name[0] == '\0') return;
if (theAdaptorSession.IsNull()) theAdaptorSession =
new Dico_DictionaryOfTransient;
theAdaptorSession->SetItem (name,item);
if (!setapplied || setapplied[0] == '\0') return;
if (item->IsKind(STANDARD_TYPE(IFSelect_GeneralModifier))) {
// cout<<" -- Xstep Controller : SetApplied n0."<<theAdaptorApplied.Length()+1
// <<" Name:"<<name<<endl;
theAdaptorApplied.Append(item);
Handle(TCollection_HAsciiString) hook = new TCollection_HAsciiString(setapplied);
theAdaptorHooks->Append (hook);
}
}
Handle(Standard_Transient) XSControl_Controller::SessionItem
(const Standard_CString name) const
{
Handle(Standard_Transient) item;
if (theAdaptorSession.IsNull()) return item;
theAdaptorSession->GetItem (name,item);
return item;
}
Standard_Boolean XSControl_Controller::IsApplied
(const Handle(Standard_Transient)& item) const
{
if (item.IsNull()) return Standard_False;
for (Standard_Integer i = theAdaptorApplied.Length(); i >= 1; i --)
if (item == theAdaptorApplied.Value(i)) return Standard_True;
return Standard_False;
}
void XSControl_Controller::Customise
( Handle(XSControl_WorkSession)& WS)
{
WS->SetParams (theParams,theParamUses);
// General
if(!theAdaptorSession.IsNull()) {
Dico_IteratorOfDictionaryOfTransient iter(theAdaptorSession);
for (iter.Start(); iter.More(); iter.Next()) {
WS->AddNamedItem (iter.Name().ToCString() , iter.Value());
}
}
Customising(WS);
// Applied Modifiers
Standard_Integer i, nb = theAdaptorApplied.Length();
for (i = 1; i <= nb; i ++) {
Handle(Standard_Transient) anitem = theAdaptorApplied.Value(i);
Handle(TCollection_HAsciiString) name = WS->Name(anitem);
// Handle(Message_Messenger) sout = Message::DefaultMessenger();
// sout<<" -- Customise applied n0."<<i<<" type:"<<anitem->DynamicType()->Name();
// if (name.IsNull()) sout<<" no name"<<endl;
// else sout<<" name:"<<name->ToCString()<<endl;
WS->SetAppliedModifier
(GetCasted(IFSelect_GeneralModifier,theAdaptorApplied.Value(i)),
WS->ShareOut() );
}
// Editeurs de Parametres
// Ici car les constructeurs specifiques des controlleurs ont pu creer des
// Parametres : attendre donc ici
Handle(TColStd_HSequenceOfHAsciiString) listat = Interface_Static::Items();
Handle(IFSelect_ParamEditor) paramed =
IFSelect_ParamEditor::StaticEditor (listat,"All Static Parameters");
WS->AddNamedItem ("xst-static-params-edit",paramed);
Handle(IFSelect_EditForm) paramform = paramed->Form(Standard_False);
WS->AddNamedItem ("xst-static-params",paramform);
// Norm Specific
//Customising (WS);
// Loading Options of the Profile
// Available Signatures
Handle(IFSelect_Option) optsign = theProfile->Option ("sign-type");
// Handle(TColStd_HSequenceOfHAsciiString) signs =
// WS->ItemNames (STANDARD_TYPE(IFSelect_Signature));
// Standard_Integer isign, nbsign = (signs.IsNull() ? 0 : signs->Length());
// for (isign = 1; isign <= nbsign; isign ++) {
// Handle(TCollection_HAsciiString) signame = signs->Value(isign);
// Handle(Standard_Transient) asign = WS->NamedItem (signame);
// optsign->Add (signame->ToCString(),asign);
// }
optsign->Add ("default",theSignType); // defaut specifique
optsign->Switch ("default"); // garder courante la definition par defaut !
// Actor Read
Handle(IFSelect_Option) optacrd = theProfile->Option ("tr-read");
optacrd->Add ("default",theAdaptorRead);
optacrd->Switch ("default");
// Actor Write
Handle(IFSelect_Option) optacwr = theProfile->Option ("tr-write");
optacwr->Add ("default",theAdaptorWrite);
optacwr->Switch ("default");
// Basic configuration
theProfile->AddConf ("Base");
theProfile->AddSwitch ("Base","sign-type","default");
theProfile->AddSwitch ("Base","tr-read","default");
theProfile->AddSwitch ("Base","tr-write","default");
theProfile->SetCurrent ("Base");
}
void XSControl_Controller::Customising
( Handle(XSControl_WorkSession)& WS)
{
//ndle(IFSelect_SelectModelRoots) slr = new IFSelect_SelectModelRoots;
///WS->AddNamedItem ("xst-model-roots",slr);
if(!WS->NamedItem("xst-model-all").IsNull()) return;
Handle(IFSelect_SelectModelEntities) sle = new IFSelect_SelectModelEntities;
WS->AddNamedItem ("xst-model-all",sle);
Handle(IFSelect_SelectModelRoots) slr;
slr = new IFSelect_SelectModelRoots;
WS->AddNamedItem ("xst-model-roots",slr);
if(strcasecmp(WS->SelectedNorm(),"STEP")) {
Handle(XSControl_SelectForTransfer) st1 = new XSControl_SelectForTransfer;
st1->SetInput (slr);
st1->SetReader (WS->TransferReader());
WS->AddNamedItem ("xst-transferrable-roots",st1);
}
//else slr = Handle(IFSelect_SelectModelRoots)::DownCast(WS->NamedItem("xst-model-roots"));
Handle(XSControl_SelectForTransfer) st2 = new XSControl_SelectForTransfer;
st2->SetInput (sle);
st2->SetReader (WS->TransferReader());
WS->AddNamedItem ("xst-transferrable-all",st2);
Handle(XSControl_SignTransferStatus) strs = new XSControl_SignTransferStatus;
strs->SetReader (WS->TransferReader());
WS->AddNamedItem ("xst-transfer-status",strs);
Handle(XSControl_ConnectedShapes) scs = new XSControl_ConnectedShapes;
scs->SetReader (WS->TransferReader());
WS->AddNamedItem ("xst-connected-faces",scs);
Handle(IFSelect_SignType) stp = new IFSelect_SignType (Standard_False);
WS->AddNamedItem ("xst-long-type",stp);
Handle(IFSelect_SignType) stc = new IFSelect_SignType (Standard_True);
WS->AddNamedItem ("xst-type",stc);
Handle(IFSelect_SignAncestor) sta = new IFSelect_SignAncestor;
WS->AddNamedItem ("xst-ancestor-type",sta);
Handle(IFSelect_SignCounter) tc1 =
new IFSelect_SignCounter(stp,Standard_False,Standard_True);
WS->AddNamedItem ("xst-types",tc1);
Handle(IFSelect_SignCategory) sca = new IFSelect_SignCategory;
WS->AddNamedItem ("xst-category",sca);
Handle(IFSelect_SignValidity) sva = new IFSelect_SignValidity;
WS->AddNamedItem ("xst-validity",sva);
Handle(IFSelect_DispPerOne) dispone = new IFSelect_DispPerOne;
dispone->SetFinalSelection(slr);
WS->AddNamedItem ("xst-disp-one",dispone);
Handle(IFSelect_DispPerCount) dispcount = new IFSelect_DispPerCount;
Handle(IFSelect_IntParam) intcount = new IFSelect_IntParam;
intcount->SetValue(5);
dispcount->SetCount(intcount);
dispcount->SetFinalSelection(slr);
WS->AddNamedItem ("xst-disp-count",dispcount);
Handle(IFSelect_DispPerFiles) dispfiles = new IFSelect_DispPerFiles;
Handle(IFSelect_IntParam) intfiles = new IFSelect_IntParam;
intfiles->SetValue(10);
dispfiles->SetCount(intfiles);
dispfiles->SetFinalSelection(slr);
WS->AddNamedItem ("xst-disp-files",dispfiles);
Handle(IFSelect_DispPerSignature) dispsign = new IFSelect_DispPerSignature;
dispsign->SetSignCounter(new IFSelect_SignCounter(stc));
dispsign->SetFinalSelection(slr);
WS->AddNamedItem ("xst-disp-sign",dispsign);
// Pas utilisables directement mais bien utiles quand meme
WS->AddNamedItem ("xst-pointed",new IFSelect_SelectPointed);
WS->AddNamedItem ("xst-sharing",new IFSelect_SelectSharing);
WS->AddNamedItem ("xst-shared",new IFSelect_SelectShared);
WS->AddNamedItem ("xst-nb-selected",new IFSelect_GraphCounter);
theSignType = stp;
// au moins cela
}
Handle(Dico_DictionaryOfTransient) XSControl_Controller::AdaptorSession() const
{
return theAdaptorSession;
}