def __init__(self, cursor, path, daemon=False):
        QtGui.QWidget.__init__(self)

        self.ui = Ui_NetworkIdent()
        self.ui.setupUi(self)

        self.setAttribute(QtCore.Qt.WA_DeleteOnClose)

        self.cursor = cursor
        self.backup_path = path

        self.filename = os.path.join(
            self.backup_path,
            plugins_utils.realFileName(
                self.cursor,
                filename="com.apple.network.identification.plist",
                domaintype="SystemPreferencesDomain"))

        if (not os.path.isfile(self.filename)):
            raise Exception("Network Identification file not found: \"%s\"" %
                            self.filename)

        QtCore.QObject.connect(self.ui.networksTree,
                               QtCore.SIGNAL("itemSelectionChanged()"),
                               self.onTreeClick)
        self.ui.networksTree.setColumnHidden(0, True)

        if (daemon == False):
            self.populateUI()
	def __init__(self, cursor, path, daemon = False):
		QtGui.QWidget.__init__(self)
		
		self.ui = Ui_NetworkIdent()
		self.ui.setupUi(self)
		
		self.setAttribute(QtCore.Qt.WA_DeleteOnClose)
		
		self.cursor = cursor
		self.backup_path = path
		
		self.filename = os.path.join(self.backup_path, plugins_utils.realFileName(self.cursor, filename="com.apple.network.identification.plist", domaintype="SystemPreferencesDomain"))

		if (not os.path.isfile(self.filename)):
			raise Exception("Network Identification file not found: \"%s\""%self.filename)
		
		QtCore.QObject.connect(self.ui.networksTree, QtCore.SIGNAL("itemSelectionChanged()"), self.onTreeClick)
		self.ui.networksTree.setColumnHidden(0,True)
		
		if (daemon == False):
			self.populateUI()
class NetworkIdentWidget(QtGui.QWidget):
    def __init__(self, cursor, path, daemon=False):
        QtGui.QWidget.__init__(self)

        self.ui = Ui_NetworkIdent()
        self.ui.setupUi(self)

        self.setAttribute(QtCore.Qt.WA_DeleteOnClose)

        self.cursor = cursor
        self.backup_path = path

        self.filename = os.path.join(
            self.backup_path,
            plugins_utils.realFileName(
                self.cursor,
                filename="com.apple.network.identification.plist",
                domaintype="SystemPreferencesDomain"))

        if (not os.path.isfile(self.filename)):
            raise Exception("Network Identification file not found: \"%s\"" %
                            self.filename)

        QtCore.QObject.connect(self.ui.networksTree,
                               QtCore.SIGNAL("itemSelectionChanged()"),
                               self.onTreeClick)
        self.ui.networksTree.setColumnHidden(0, True)

        if (daemon == False):
            self.populateUI()

    def populateUI(self):

        signatures = plistutils.readPlist(self.filename)['Signatures']

        index = 0
        for element in signatures:
            ident = element['Identifier']
            identParts = ident.split(";")
            if (len(identParts) == 1):
                ident = identParts[0]
            else:
                ident = identParts[1].split("=")[1]

            timestamp = element['Timestamp']
            timestamp = timestamp.strftime('%b %d %Y %H:%M UTC')

            newElement = QtGui.QTreeWidgetItem(None)
            newElement.setText(0, str(index))
            newElement.setText(1, ident)
            newElement.setText(2, str(timestamp))
            self.ui.networksTree.addTopLevelItem(newElement)

            index += 1

    def onTreeClick(self):

        # retrieving selected network
        currentSelectedElement = self.ui.networksTree.currentItem()
        if (currentSelectedElement): pass
        else: return

        signatures = plistutils.readPlist(self.filename)['Signatures']

        currentNetworkIndex = int(currentSelectedElement.text(0))
        currentNetworkServices = signatures[currentNetworkIndex]['Services']

        networkDescr = signatures[currentNetworkIndex]['Identifier']
        networkDescrParts = networkDescr.split(";")
        networkDescr = "\n".join(networkDescrParts)
        self.ui.networkLabel.setText(networkDescr)

        self.ui.servicesTree.clear()

        for service in currentNetworkServices:

            serviceNode = QtGui.QTreeWidgetItem(None)
            serviceNode.setText(0, "service")
            self.ui.servicesTree.addTopLevelItem(serviceNode)
            serviceNode.setExpanded(True)

            for serviceKey in service.keys():

                subserviceNode = QtGui.QTreeWidgetItem(serviceNode)
                subserviceNode.setText(0, serviceKey)
                self.ui.servicesTree.addTopLevelItem(subserviceNode)
                subserviceNode.setExpanded(True)

                if (serviceKey == "ServiceID"):
                    subserviceNode.setText(1, service['ServiceID'])
                    continue

                for element in service[serviceKey].keys():

                    elementNode = QtGui.QTreeWidgetItem(subserviceNode)
                    elementNode.setText(0, element)
                    text = service[serviceKey][element]
                    if (type(text) == type([1, 2])):
                        text = ", ".join(text)
                    elementNode.setText(1, text)
                    self.ui.servicesTree.addTopLevelItem(elementNode)
                    elementNode.setExpanded(True)
class NetworkIdentWidget(QtGui.QWidget):
	
	def __init__(self, cursor, path, daemon = False):
		QtGui.QWidget.__init__(self)
		
		self.ui = Ui_NetworkIdent()
		self.ui.setupUi(self)
		
		self.setAttribute(QtCore.Qt.WA_DeleteOnClose)
		
		self.cursor = cursor
		self.backup_path = path
		
		self.filename = os.path.join(self.backup_path, plugins_utils.realFileName(self.cursor, filename="com.apple.network.identification.plist", domaintype="SystemPreferencesDomain"))

		if (not os.path.isfile(self.filename)):
			raise Exception("Network Identification file not found: \"%s\""%self.filename)
		
		QtCore.QObject.connect(self.ui.networksTree, QtCore.SIGNAL("itemSelectionChanged()"), self.onTreeClick)
		self.ui.networksTree.setColumnHidden(0,True)
		
		if (daemon == False):
			self.populateUI()

	def populateUI(self):
		
		signatures = plistutils.readPlist(self.filename)['Signatures']
		
		index = 0
		for element in signatures:
			ident = element['Identifier']
			identParts = ident.split(";")
			if (len(identParts) == 1):
				ident = identParts[0]
			else:
				ident = identParts[1].split("=")[1]
			
			timestamp = element['Timestamp']
			timestamp = timestamp.strftime('%b %d %Y %H:%M UTC')

			newElement = QtGui.QTreeWidgetItem(None)
			newElement.setText(0, str(index))
			newElement.setText(1, ident)
			newElement.setText(2, str(timestamp))
			self.ui.networksTree.addTopLevelItem(newElement)
			
			index += 1

	def onTreeClick(self):
		
		# retrieving selected network
		currentSelectedElement = self.ui.networksTree.currentItem()
		if (currentSelectedElement): pass
		else: return
		
		signatures = plistutils.readPlist(self.filename)['Signatures']
		
		currentNetworkIndex = int(currentSelectedElement.text(0))
		currentNetworkServices = signatures[currentNetworkIndex]['Services']
		
		networkDescr = signatures[currentNetworkIndex]['Identifier']
		networkDescrParts = networkDescr.split(";")
		networkDescr = "\n".join(networkDescrParts)
		self.ui.networkLabel.setText(networkDescr)
		
		self.ui.servicesTree.clear()
		
		for service in currentNetworkServices:
			
			serviceNode = QtGui.QTreeWidgetItem(None)
			serviceNode.setText(0, "service")
			self.ui.servicesTree.addTopLevelItem(serviceNode)
			serviceNode.setExpanded(True)
			
			for serviceKey in service.keys():
				
				subserviceNode = QtGui.QTreeWidgetItem(serviceNode)
				subserviceNode.setText(0, serviceKey)
				self.ui.servicesTree.addTopLevelItem(subserviceNode)
				subserviceNode.setExpanded(True)

				if (serviceKey == "ServiceID"): 
					subserviceNode.setText(1, service['ServiceID'])
					continue
				
				for element in service[serviceKey].keys():
				
					elementNode = QtGui.QTreeWidgetItem(subserviceNode)
					elementNode.setText(0, element)
					text = service[serviceKey][element]
					if (type(text) == type([1,2])):
						text = ", ".join(text)
					elementNode.setText(1, text)
					self.ui.servicesTree.addTopLevelItem(elementNode)
					elementNode.setExpanded(True)