示例#1
0
bool WText::RichText::checkWellFormed()
{
  if (format == XHTMLText && text.literal()) {
    return removeScript(text);
  } else
    return true;
}
示例#2
0
void WTemplate::setTemplateText(const WString& text, TextFormat textFormat)
{
  text_ = text;

  if (textFormat == XHTMLText && text_.literal()) {
    if (!removeScript(text_))
      text_ = escapeText(text_, true);
  } else if (textFormat == PlainText)
    text_ = escapeText(text_, true);

  if (!text_.literal() && !text_.isLanguage())
  {
	  WLocalizedStrings *ls = 0;
	  WApplication *app = WApplication::instance();
	  if (app)
		  ls = app->localizedStrings();

	  if (!ls) {
		  WServer *server = WServer::instance();
		  if (server)
			  ls = server->localizedStrings();
	  }
	  ls->loadTemplateStyleSheet(text_.key(), text_.moduleAuthorId());
  }

  changed_ = true;
  repaint(RepaintSizeAffected);
}
示例#3
0
文件: WText.C 项目: ReWeb3D/wt
bool WText::checkWellFormed()
{
  if (textFormat_ == XHTMLText && text_.literal()) {
    return removeScript(text_);
  } else
    return true;
}
示例#4
0
void ScriptTarget::clearScripts()
{
    while (_scripts)
    {
        removeScript(_scripts);
    }
}
示例#5
0
void WTemplate::format(std::ostream& result, const WString& s,
		       TextFormat textFormat)
{
  WString v = s;

  if (textFormat == XHTMLText) {
    if (!removeScript(v))
      v = escapeText(v, true);
  } else if (textFormat == PlainText)
    v = escapeText(v, true);

  result << v.toUTF8();
}
示例#6
0
void WTemplate::setTemplateText(const WString& text, TextFormat textFormat)
{
  text_ = text;

  if (textFormat == XHTMLText && text_.literal()) {
    if (!removeScript(text_))
      text_ = escapeText(text_, true);
  } else if (textFormat == PlainText)
    text_ = escapeText(text_, true);

  changed_ = true;
  repaint(RepaintInnerHtml);
}
示例#7
0
int16 Op_RemoveProc() {
	int idx;
	int overlay;

	idx = popVar();
	overlay = popVar();

	if (!overlay) {
		overlay = currentScriptPtr->overlayNumber;
	}

	removeScript(overlay, idx, &procHead);

	return (0);
}
示例#8
0
bool ScriptTarget::removeScript(const char* path)
{
    GP_ASSERT(path);

    ScriptEntry* se = _scripts;
    while (se)
    {
        if (strcmp(se->script->getPath(), path) == 0 && se->script->getScope() == Script::PROTECTED)
        {
            removeScript(se);
            return true;
        }
        se = se->next;
    }

    return false;
}
示例#9
0
void WProgressBar::updateDom(DomElement& element, bool all)
{
  DomElement *bar = 0, *label = 0;

  if (all) {
    WApplication *app = WApplication::instance();

    bar = DomElement::createNew(DomElement_DIV);
    bar->setId("bar" + id());
    bar->setProperty(PropertyClass, valueStyleClass_);
    app->theme()->apply(this, *bar, ProgressBarBarRole);

    label = DomElement::createNew(DomElement_DIV);
    label->setId("lbl" + id());
    app->theme()->apply(this, *label, ProgressBarLabelRole);
  }

  if (changed_ || all) {
    if (!bar)
      bar = DomElement::getForUpdate("bar" + id(), DomElement_DIV);
    if (!label)
      label = DomElement::getForUpdate("lbl" + id(), DomElement_DIV);

    bar->setProperty(PropertyStyleWidth,
		     boost::lexical_cast<std::string>(percentage()) + "%");

    WString s = text();
    removeScript(s);

    label->setProperty(PropertyInnerHTML, s.toUTF8());

    changed_ = false;
  }

  if (bar)
    element.addChild(bar);

  if (label)
    element.addChild(label);

  WInteractWidget::updateDom(element, all);
}
示例#10
0
void WTemplate::format(std::ostream& result, const WString& s,
		       TextFormat textFormat)
{
  if (textFormat == XHTMLText) {
    WString v = s;
    if (removeScript(v)) {
      result << v.toUTF8();
      return;
    } else {
      EscapeOStream sout(result);
      sout.append(v.toUTF8(), *plainTextNewLineEscStream_);
      return;
    }
  } else if (textFormat == PlainText) {
    EscapeOStream sout(result);
    sout.append(s.toUTF8(), *plainTextNewLineEscStream_);
    return;
  }

  result << s.toUTF8();
}
示例#11
0
void WTemplate::bindString(const std::string& varName, const WString& value,
			   TextFormat textFormat)
{
  WWidget *w = resolveWidget(varName);
  if (w)
    bindWidget(varName, 0);

  WString v = value;

  if (textFormat == XHTMLText && v.literal()) {
    if (!removeScript(v))
      v = escapeText(v, true);
  } else if (textFormat == PlainText)
    v = escapeText(v, true);

  StringMap::const_iterator i = strings_.find(varName);

  if (i == strings_.end() || i->second != v.toUTF8()) {
    strings_[varName] = v.toUTF8();

    changed_ = true;
    repaint(RepaintInnerHtml);  
  }
}
示例#12
0
int freeOverlay(int overlayIdx) {
	ovlDataStruct *ovlDataPtr;
	int i;

	if (overlayTable[overlayIdx].alreadyLoaded == 0)
		return -4;

	overlayTable[overlayIdx].alreadyLoaded = 0;

	ovlDataPtr = overlayTable[overlayIdx].ovlData;

	if (!ovlDataPtr)
		return -4;


	/*
	  if (overlayTable[overlayIdx].var1E) {
	    MemFree(overlayTable[overlayIdx].var1E);
	    overlayTable[overlayIdx].var1E = NULL;
	  }

	  if (overlayTable[overlayIdx].var16) {
	    MemFree(overlayTable[overlayIdx].var16);
	    overlayTable[overlayIdx].var16 = NULL;
	  } */

	removeScript(overlayIdx, -1, &procHead);
	removeScript(overlayIdx, -1, &procHead);

	removeScript(overlayIdx, -1, &relHead);
	removeScript(overlayIdx, -1, &relHead);

	if (ovlDataPtr->stringTable) {
		for (i = 0; i < ovlDataPtr->numStrings; ++i)
			MemFree(ovlDataPtr->stringTable[i].string);
		MemFree(ovlDataPtr->stringTable);
	}
	if (ovlDataPtr->arrayProc) {
		ovlData3Struct *tempPtr = ovlDataPtr->arrayProc;
		for (i = 0; i < ovlDataPtr->numProc; ++i, ++tempPtr)
			MemFree(tempPtr->dataPtr);
		MemFree(ovlDataPtr->arrayProc);
	}
	if (ovlDataPtr->ptr1) {
		ovlData3Struct *tempPtr = (ovlData3Struct *)ovlDataPtr->ptr1;
		for (i = 0; i < ovlDataPtr->numRel; ++i, ++tempPtr)
			MemFree(tempPtr->dataPtr);
		MemFree(ovlDataPtr->ptr1);
	}

	MemFree(ovlDataPtr->arraySymbGlob);
	MemFree(ovlDataPtr->arrayNameSymbGlob);
	MemFree(ovlDataPtr->data4Ptr);
	MemFree(ovlDataPtr->arrayMsgRelHeader);
	MemFree(ovlDataPtr->ptr8);
	MemFree(ovlDataPtr->arrayObject);
	MemFree(ovlDataPtr->arrayObjVar);
	MemFree(ovlDataPtr->arrayStates);
	MemFree(ovlDataPtr->nameVerbGlob);
	MemFree(ovlDataPtr->arrayNameObj);
	MemFree(ovlDataPtr->arrayRelocGlob);
	MemFree(ovlDataPtr->arrayNameRelocGlob);

	MemFree(ovlDataPtr);
	overlayTable[overlayIdx].ovlData = NULL;

	debug(1, "freeOverlay: finish !");

	return 0;
}
示例#13
0
DlgPrefController::DlgPrefController(QWidget* parent, Controller* controller,
                                     ControllerManager* controllerManager,
                                     UserSettingsPointer pConfig)
        : DlgPreferencePage(parent),
          m_pConfig(pConfig),
          m_pControllerManager(controllerManager),
          m_pController(controller),
          m_pDlgControllerLearning(NULL),
          m_pInputTableModel(NULL),
          m_pInputProxyModel(NULL),
          m_pOutputTableModel(NULL),
          m_pOutputProxyModel(NULL),
          m_bDirty(false) {
    m_ui.setupUi(this);

    initTableView(m_ui.m_pInputMappingTableView);
    initTableView(m_ui.m_pOutputMappingTableView);
    initTableView(m_ui.m_pScriptsTableWidget);

    connect(m_pController, SIGNAL(presetLoaded(ControllerPresetPointer)),
            this, SLOT(slotPresetLoaded(ControllerPresetPointer)));
    // TODO(rryan): Eh, this really isn't thread safe but it's the way it's been
    // since 1.11.0. We shouldn't be calling Controller methods because it lives
    // in a different thread. Booleans (like isOpen()) are fine but a complex
    // object like a preset involves QHash's and other data structures that
    // really don't like concurrent access.
    ControllerPresetPointer pPreset = m_pController->getPreset();
    slotPresetLoaded(pPreset);

    m_ui.labelDeviceName->setText(m_pController->getName());
    QString category = m_pController->getCategory();
    if (!category.isEmpty()) {
        m_ui.labelDeviceCategory->setText(category);
    } else {
        m_ui.labelDeviceCategory->hide();
    }

    // When the user picks a preset, load it.
    connect(m_ui.comboBoxPreset, SIGNAL(activated(int)),
            this, SLOT(slotLoadPreset(int)));

    // When the user toggles the Enabled checkbox, toggle.
    connect(m_ui.chkEnabledDevice, SIGNAL(clicked(bool)),
            this, SLOT(slotEnableDevice(bool)));

    // Connect our signals to controller manager.
    connect(this, SIGNAL(openController(Controller*)),
            m_pControllerManager, SLOT(openController(Controller*)));
    connect(this, SIGNAL(closeController(Controller*)),
            m_pControllerManager, SLOT(closeController(Controller*)));
    connect(this, SIGNAL(loadPreset(Controller*, ControllerPresetPointer)),
            m_pControllerManager, SLOT(loadPreset(Controller*, ControllerPresetPointer)));

    // Input mappings
    connect(m_ui.btnAddInputMapping, SIGNAL(clicked()),
            this, SLOT(addInputMapping()));
    connect(m_ui.btnRemoveInputMappings, SIGNAL(clicked()),
            this, SLOT(removeInputMappings()));
    connect(m_ui.btnLearningWizard, SIGNAL(clicked()),
            this, SLOT(showLearningWizard()));
    connect(m_ui.btnClearAllInputMappings, SIGNAL(clicked()),
            this, SLOT(clearAllInputMappings()));

    // Output mappings
    connect(m_ui.btnAddOutputMapping, SIGNAL(clicked()),
            this, SLOT(addOutputMapping()));
    connect(m_ui.btnRemoveOutputMappings, SIGNAL(clicked()),
            this, SLOT(removeOutputMappings()));
    connect(m_ui.btnClearAllOutputMappings, SIGNAL(clicked()),
            this, SLOT(clearAllOutputMappings()));

    // Scripts
    connect(m_ui.m_pScriptsTableWidget, SIGNAL(cellChanged(int, int)),
            this, SLOT(slotDirty()));
    connect(m_ui.btnAddScript, SIGNAL(clicked()),
            this, SLOT(addScript()));
    connect(m_ui.btnRemoveScript, SIGNAL(clicked()),
            this, SLOT(removeScript()));
    connect(m_ui.btnOpenScript, SIGNAL(clicked()),
            this, SLOT(openScript()));
}
示例#14
0
void ScriptTarget::removeScriptCallback(const Event* event, const char* function)
{
    // Parse the script name (if it exists) and function out
    std::string scriptPath, func;
    splitURL(function, &scriptPath, &func);
    if (func.length() == 0)
    {
        // The url doesn't reference a script, only a function
        func = scriptPath;
        scriptPath = "";
    }

    // Find the script entry for this callback
    ScriptEntry* scriptEntry = NULL;
    if (!scriptPath.empty())
    {
        ScriptEntry* se = _scripts;
        while (se)
        {
            if (scriptPath == se->script->getPath() && se->script->getScope() == Script::GLOBAL)
            {
                scriptEntry = se;
                break;
            }
            se = se->next;
        }
    }
    Script* script = scriptEntry ? scriptEntry->script : NULL;

    // Remove any registered callback functions that match the specified one
    int removedCallbacks = 0;
    int totalCallbacks = 0;
    if (_scriptCallbacks)
    {
        std::map<const Event*, std::vector<CallbackFunction>>::iterator itr = _scriptCallbacks->begin();
        for (; itr != _scriptCallbacks->end(); ++itr)
        {
            // Erase matching callback functions for this event
            bool forEvent = itr->first == event;
            std::vector<CallbackFunction>& callbacks = itr->second;
            std::vector<CallbackFunction>::iterator itr2 = callbacks.begin();
            while (itr2 != callbacks.end())
            {
                if (itr2->script == script)
                {
                    ++totalCallbacks; // sum total number of callbacks found for this script
                    if (forEvent && itr2->function == func)
                    {
                        itr2 = callbacks.erase(itr2);
                        ++removedCallbacks; // sum number of callbacks removed
                    }
                    else
                        ++itr2;
                }
            }
        }
    }

    // Cleanup the script if there are no remaining callbacks for it
    if (scriptEntry && (totalCallbacks - removedCallbacks) <= 0)
    {
        removeScript(scriptEntry);
    }
}