예제 #1
0
PyPanel::PyPanel(const QString& scriptName,
                 const QString& label,
                 bool useUserParameters,
                 GuiApp* app)
    : QWidget( app->getGui() )
    , UserParamHolder()
    , PanelWidget(scriptName.toStdString(), this, app->getGui() )
    , _imp( new PyPanelPrivate() )
{
    setLabel( label.toStdString() );


    int idx = 1;
    std::string name = NATRON_PYTHON_NAMESPACE::makeNameScriptFriendly( scriptName.toStdString() );
    PanelWidget* existing = 0;
    existing = getGui()->findExistingTab(name);
    while (existing) {
        std::stringstream ss;
        ss << name << idx;
        existing = getGui()->findExistingTab( ss.str() );
        if (!existing) {
            name = ss.str();
        }
        ++idx;
    }

    setScriptName(name);


    if (useUserParameters) {
        _imp->holder = DialogParamHolder::create( QString::fromUtf8( name.c_str() ), getGui()->getApp(), this );
        setHolder(_imp->holder);
        _imp->holder->initializeKnobsPublic();
        _imp->mainLayout = new QVBoxLayout(this);
        _imp->mainLayout->setContentsMargins(0, 0, 0, 0);

        _imp->centerContainer = new QWidget(this);
        _imp->centerLayout = new QVBoxLayout(_imp->centerContainer);
        _imp->centerLayout->setContentsMargins(0, 0, 0, 0);

        _imp->panel = new DockablePanel(getGui(),
                                        _imp->holder,
                                        _imp->mainLayout,
                                        DockablePanel::eHeaderModeNoHeader,
                                        false,
                                        boost::shared_ptr<QUndoStack>(),
                                        QString(), QString(),
                                        _imp->centerContainer);
        _imp->panel->turnOffPages();
        _imp->centerLayout->insertWidget(0, _imp->panel);

        _imp->mainLayout->addWidget(_imp->centerContainer);
        _imp->mainLayout->addStretch();
    }
}
예제 #2
0
void
TabWidgetI::fromSerialization(const SERIALIZATION_NAMESPACE::SerializationObjectBase& serializationBase)
{
    const SERIALIZATION_NAMESPACE::TabWidgetSerialization* serialization = dynamic_cast<const SERIALIZATION_NAMESPACE::TabWidgetSerialization*>(&serializationBase);
    if (!serialization) {
        return;
    }
    setScriptName(serialization->scriptName);
    setAsAnchor(serialization->isAnchor);
    setTabsFromScriptNames(serialization->tabs);
    setCurrentIndex(serialization->currentIndex);
}
BOOL CModuleType::save()
{
	char	sysDirScripts	[FILE_MAX_PATHLEN];
	char	sysDirModules	[FILE_MAX_PATHLEN];
	char	sysDirIcons		[FILE_MAX_PATHLEN];

	if (RegKeyGetValue(REGKEY_SECTION_PATHNAME, REGKEY_KEY_SCRIPTS_PATHNAME,	sysDirScripts) == FALSE)
		strcpy(sysDirScripts, "scripts\\");
	if (RegKeyGetValue(REGKEY_SECTION_PATHNAME, REGKEY_KEY_MODULES_PATHNAME,	sysDirModules) == FALSE)
		strcpy(sysDirModules, "modules\\");
	if (RegKeyGetValue(REGKEY_SECTION_PATHNAME, REGKEY_KEY_ICONS_PATHNAME,		sysDirIcons) == FALSE)
		strcpy(sysDirIcons, "icons\\");

	char	outFnameScripts	[FILE_MAX_FILENAME];
	char	outFnameModules	[FILE_MAX_FILENAME];
	char	outFnameIcons	[FILE_MAX_FILENAME];

	sprintf(outFnameModules, "%s%s%s.%s", sysDirModules, getClassName(), getName(), MODULE_FILE_EXTENTION);
	strcpy(outFnameScripts, getScriptName());	FileChangePathName(outFnameScripts, sysDirScripts);
	sprintf(outFnameIcons, "%s%s%s.%s", sysDirIcons, getClassName(), getName(), ICON_FILE_EXTENTION);

	// Copy a icon and script files into system directry.
	BOOL bCopiedScriptFile = FileCopy(getScriptName(), outFnameScripts);
	BOOL bCopiedIconFile = FileCopy(getIconName(), outFnameIcons);
	
	if (!bCopiedScriptFile || !bCopiedIconFile)
		return FALSE;

	// Strip the directory name in a icon and scrpit file name.
	char	scriptFilename	[FILE_MAX_FILENAME];
	char	iconFilename	[FILE_MAX_FILENAME];
	strcpy(scriptFilename, getScriptName());	FileStripPathName(scriptFilename);	setScriptName(scriptFilename);
	sprintf(iconFilename, "%s%s.%s", getClassName(), getName(), ICON_FILE_EXTENTION);	setIconName(iconFilename);

	// Save this module infomation into a file
	return save(outFnameModules);
}
BOOL CModuleType::load(char *fname) 
{
	char	buffer[LINE_LENGTH_MAX];

	ifstream fin(fname);
	if (!fin)
		return FALSE;

	fin.ignore(LINE_LENGTH_MAX, '\n');

	char	className	[NAME_LENGTH_MAX];
	char	moduleName	[NAME_LENGTH_MAX];
	char	attribute	[NAME_LENGTH_MAX];
	char	scriptName	[NAME_LENGTH_MAX];
	char	iconName	[NAME_LENGTH_MAX];

	fin >> buffer >> className;
	fin >> buffer >> moduleName;
	fin >> buffer >> attribute;
	fin >> buffer >> scriptName;
	fin >> buffer >> iconName;

	setClassName(className);
	setName(moduleName);
	setAttribure(!StringCompare(attribute, MODULETYPE_ATTRIBUTE_SYSTEM_STRING) ? MODULETYPE_ATTRIBUTE_SYSTEM : MODULETYPE_ATTRIBUTE_USER);
	setScriptName(scriptName);
	setIconName(iconName);

	char	fieldType	[NAME_LENGTH_MAX];
	char	fieldName	[NAME_LENGTH_MAX];

	int	n;
	for (n=0; n<MODULE_INOUTNODE_MAXNUM; n++) {
		fin >> buffer >> fieldType >> fieldName;
		if (strcmp(fieldType, "NULL") != 0) {
			mEventInType[n]->setType(fieldType);
			mEventInType[n]->setName(fieldName);
		}
		else {
			mEventInType[n]->setType(fieldTypeNone);
			mEventInType[n]->setName(NULL);
		}
	}

	for (n=0; n<MODULE_INOUTNODE_MAXNUM; n++) {
		fin >> buffer >> fieldType >> fieldName;
		if (strcmp(fieldType, "NULL") != 0) {
			mEventOutType[n]->setType(fieldType);
			mEventOutType[n]->setName(fieldName);
		}
		else {
			mEventOutType[n]->setType(fieldTypeNone);
			mEventOutType[n]->setName(NULL);
		}
	}

	char	executionNode[NAME_LENGTH_MAX];
	fin >> buffer >> executionNode;
	(strcmp(executionNode, "TRUE") == 0) ? setExecutionNode(TRUE) : setExecutionNode(FALSE);

	// Default EventOut Route
	char	eventOutFieldTypeName[NAME_LENGTH_MAX];
	char	targetEventInFieldName[NAME_LENGTH_MAX];
	fin >> buffer >> eventOutFieldTypeName >> targetEventInFieldName;
/*
	setTargetNodeFieldTypeName(eventOutFieldTypeName);
	setTargetNodeFieldName(targetEventInFieldName);
*/	
	check();

	return TRUE;
}