本文整理汇总了Python中xpcom.server.UnwrapObject.id方法的典型用法代码示例。如果您正苦于以下问题:Python UnwrapObject.id方法的具体用法?Python UnwrapObject.id怎么用?Python UnwrapObject.id使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类xpcom.server.UnwrapObject
的用法示例。
在下文中一共展示了UnwrapObject.id方法的3个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: DOMDeserialize
# 需要导入模块: from xpcom.server import UnwrapObject [as 别名]
# 或者: from xpcom.server.UnwrapObject import id [as 别名]
def DOMDeserialize(self, rootElement, parentPref, prefFactory, basedir=None, chainNotifications=0):
"""We know how to deserialize preferent-set elements."""
# Create a new preference set and rig it into the preference set hierarchy.
xpPrefSet = components.classes["@activestate.com/koPreferenceSet;1"] \
.createInstance(components.interfaces.koIPreferenceSet)
newPrefSet = UnwrapObject(xpPrefSet)
newPrefSet.chainNotifications = chainNotifications
try:
newPrefSet.id = rootElement.getAttribute('id') or ""
except KeyError:
newPrefSet.id = ""
try:
newPrefSet.idref = rootElement.getAttribute('idref') or ""
except KeyError:
newPrefSet.idref = ""
# Iterate over the elements of the preference set,
# deserializing them and fleshing out the new preference
# set with content.
childNodes = rootElement.childNodes
for node in childNodes:
if node and node.nodeType == minidom.Node.ELEMENT_NODE:
if node.hasAttribute('validate'):
newPrefSet.setValidation(node.getAttribute('id'), node.getAttribute('validate'))
pref = _dispatch_deserializer(self, node, newPrefSet, prefFactory, basedir, chainNotifications)
if pref:
if pref.id:
newPrefSet.setPref(pref.id, pref)
else:
log.error("Preference has no id - dumping preference:")
pref.dump(0)
return xpPrefSet
示例2: DOMDeserialize
# 需要导入模块: from xpcom.server import UnwrapObject [as 别名]
# 或者: from xpcom.server.UnwrapObject import id [as 别名]
def DOMDeserialize(self, rootElement, parentPref, prefFactory, basedir=None, chainNotifications=0):
"""We know how to deserialize ordered-preference elements."""
# Create a new ordered preference.
xpOrderedPref = components.classes["@activestate.com/koOrderedPreference;1"].createInstance(
components.interfaces.koIOrderedPreference
)
newOrderedPref = UnwrapObject(xpOrderedPref)
try:
newOrderedPref.id = rootElement.getAttribute("id") or ""
except KeyError:
newOrderedPref.id = ""
# Iterate over the elements of the preference set,
# deserializing them and fleshing out the new preference
# set with content.
childNodes = rootElement.childNodes
for childNode in childNodes:
if childNode and childNode.nodeType == minidom.Node.ELEMENT_NODE:
pref = _dispatch_deserializer(self, childNode, newOrderedPref, prefFactory, basedir)
if pref:
newOrderedPref.appendPref(pref)
return xpOrderedPref
示例3: addNewItemToParent
# 需要导入模块: from xpcom.server import UnwrapObject [as 别名]
# 或者: from xpcom.server.UnwrapObject import id [as 别名]
def addNewItemToParent(self, parent, item, showNewItem=True):
"""
This code has a model part and a view part. Call the view
part if we need to update it.
"""
# TODO: if parent is null, use the std toolbox node
item = UnwrapObject(item)
parent = UnwrapObject(parent)
parent_path = self.toolbox_db.getPath(parent.id)
item_name = item.name
itemIsContainer = item.isContainer
if itemIsContainer:
# Bug 96486: Can't create folders named "*" on Windows
# Now that we're encouraging people to create folders with this name,
# we need to quietly change the "*"s to "_"s. I don't
# remember why I decided not to do this in general.
system_item_name = item_name.replace("*", "_")
# Don't do anything else to this name. If there's a dup, or
# it contains bad characters, give the user the actual
# error message. Which is why we need to try creating
# the folder first, before adding its entry.
path = join(parent_path, system_item_name)
if system_item_name != item_name:
# Make sure it's new
if os.path.exists(path):
for i in range(20):
suffix = i + 1
new_path = "%s-%d" % (path, suffix)
if not os.path.exists(new_path):
path = new_path
break
item.trailblazeForPath(path)
else:
path = self._prepareUniqueFileSystemName(parent_path, item_name)
try:
itemDetailsDict = {}
item.fillDetails(itemDetailsDict)
if itemIsContainer:
new_id = self.toolbox_db.addContainerItem(itemDetailsDict, item.typeName, path, item_name, parent.id)
else:
new_id = self.toolbox_db.addTool(itemDetailsDict, item.typeName, path, item_name, parent.id)
old_id = item.id
item.id = new_id
# Even if the old and new IDs are the same, we don't want
# to keep the old item in the cache.
try:
del self._tools[old_id]
except KeyError:
log.error("No self._tools[%r]", old_id)
self._tools[new_id] = item
item.saveNewToolToDisk(path)
if showNewItem:
self._koToolboxHView.addNewItemToParent(parent, item)
item.added()
except:
log.exception("addNewItemToParent: failed")
raise