Esempio n. 1
0
def map_to_png(map_viewer: MapViewer, map_name):
    if '.png' not in map_name:
        map_name = map_name + '.png'
    tile_layer_data = map_viewer.map.get_tile_layer().data
    height = len(tile_layer_data)
    width = len(tile_layer_data[0])
    mergedImage = QtGui.QImage(width * map_viewer.map.gridSize,
                               height * map_viewer.map.gridSize,
                               QtGui.QImage.Format_RGB32)
    painter = QtGui.QPainter(mergedImage)
    transform = QtGui.QTransform()
    transform.translate(0, 0)
    painter.setTransform(transform, False)
    # Draw tile layer
    map_viewer.draw_tiles(tile_layer_data, painter, transform)
    # Draw objects
    for layer in map_viewer.map.get_object_layers(only_visible=True):
        map_viewer.draw_objects(layer.get_objects(), painter)
    painter.resetTransform()

    mergedImage.save(map_name, "png")
    painter.end()
Esempio n. 2
0
    def __init__(self, parent=None):
        super(MainWindow, self).__init__(parent)
        self.setupUi(self)
        self.show()

        self.confJSON = self.readConfigurationJSON("config.json")
        self.calendarJSON = self.readConfigurationJSON("calendar.json",
                                                       imprimir=False)

        #Property map
        self.scene = QtGui.QGraphicsScene(self)
        self.mapViewer = MapViewer(self.scene, self.scrollArea,
                                   "img/finca-pia.jpg")
        for cerca in self.confJSON["cercas"]:
            self.mapViewer.drawCerca(cerca["polilinea"])

        #List of messages
        self.createMessages(self.messagesView)

        #self.scene = QtGui.QGraphicsScene(self)
        self.createCalendar(self.calendarJSON, self.calendarView)

        self.show()
Esempio n. 3
0
	def __init__(self, parent=None):
		super(MainWindow, self).__init__(parent)
		self.setupUi(self)
		self.show()
		
		self.confJSON = self.readConfigurationJSON("config.json")
		self.calendarJSON = self.readConfigurationJSON("calendar.json", imprimir = False)
		
		#Property map
		self.scene = QtGui.QGraphicsScene(self)
		self.mapViewer = MapViewer(self.scene, self.scrollArea, "img/finca-pia.jpg")
		for cerca in self.confJSON["cercas"]:
			self.mapViewer.drawCerca( cerca["polilinea"] )
		
		#List of messages
		self.createMessages( self.messagesView)
		
		#self.scene = QtGui.QGraphicsScene(self)
		self.createCalendar( self.calendarJSON, self.calendarView)
	
		self.show()
Esempio n. 4
0
class MainWindow(QtGui.QWidget, Ui_Demain):
	def __init__(self, parent=None):
		super(MainWindow, self).__init__(parent)
		self.setupUi(self)
		self.show()
		
		self.confJSON = self.readConfigurationJSON("config.json")
		self.calendarJSON = self.readConfigurationJSON("calendar.json", imprimir = False)
		
		#Property map
		self.scene = QtGui.QGraphicsScene(self)
		self.mapViewer = MapViewer(self.scene, self.scrollArea, "img/finca-pia.jpg")
		for cerca in self.confJSON["cercas"]:
			self.mapViewer.drawCerca( cerca["polilinea"] )
		
		#List of messages
		self.createMessages( self.messagesView)
		
		#self.scene = QtGui.QGraphicsScene(self)
		self.createCalendar( self.calendarJSON, self.calendarView)
	
		self.show()
	
		
	def readConfigurationJSON(self, fileName, imprimir = False):
		with open(fileName, 'r') as fileJson:
			data = json.load(fileJson)
                if imprimir == True:
                    pprint(data)
		return data
  
  
	def createCalendar(self, calJSON, calView):
		calView.setRowCount(10);
		calView.setColumnCount(12*4*2);
		#calView.setSizePolicy(QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Fixed)
		calView.horizontalHeader().hide()
		calView.verticalHeader().hide()
		calView.setWordWrap(True)
		calView.setTextElideMode(QtCore.Qt.ElideNone)
		calView.setShowGrid(False)

		#Months span
		NROW = 1
		for i,c in zip(range(0,96,4), range(24)):
			calView.setSpan(NROW, i, NROW, 4)
			item = QtGui.QTableWidgetItem(meses[c%12])
			item.setTextAlignment(QtCore.Qt.AlignCenter)
			brush = QtGui.QBrush(QtGui.QColor(128, 128, 128))
			brush.setStyle(QtCore.Qt.SolidPattern)
			item.setBackground(brush)
			font = QtGui.QFont()
			font.setFamily(u"DejaVu Sans")
			font.setPointSize(14)
			font.setBold(True)
			item.setFont(font)
			calView.setItem(NROW,i, item)
			
		#Weeks naming
		NROW = 2
		for col in range(calView.columnCount()):
			item = QtGui.QTableWidgetItem("semana " + str(col))
			item.setTextAlignment(QtCore.Qt.AlignCenter)
			brush = QtGui.QBrush(QtGui.QColor(98, 98, 98))
			brush.setStyle(QtCore.Qt.SolidPattern)
			item.setBackground(brush)
			calView.setItem(NROW,col, item)
			
		#Content      
		NROW = 3
		weeks = calJSON["weeks"]
		for week, actions in weeks.iteritems():
			column = int(week)-1
			row =  NROW
			nameAnt = ""
			for action in actions:
				item = QtGui.QTableWidgetItem(action["name"])
				item.setTextAlignment(QtCore.Qt.AlignCenter)
				#print action["name"]
				brush = QtGui.QBrush(mapaColores[action["name"].encode("utf_8")])
				brush.setStyle(QtCore.Qt.SolidPattern)
				item.setBackground(brush)
				font = QtGui.QFont()
				font.setFamily(u"DejaVu Sans")
				font.setPointSize(12)
				item.setFont(font)
				calView.setItem(row, column, item);
				row = row + 1
		
		
		#Merge cols with the same name
		NROW = 3
		for row in range(NROW, calView.rowCount()):
			textAnt = ""
			for col in range(calView.columnCount()):
				item = calView.item(row,col)
				if item is not None:
					#print item.text(), textAnt, "col", col, range(col,-1,-1)
					for c in range(col, -1, -1):
					#  print calView.item(NROW,c) is None, calView.item(NROW,c).text() != textAnt
						if (calView.item(row,c) is None) or (calView.item(row,c).text() != textAnt):
							break
							
					#[c for c in range(col, 0,-1) if calView.item(NROW,c) is not None and calView.item(NROW,c).text() == textAnt]
					#print c, col
					if c < col and c>0:
						calView.setSpan(row,c+1,1,calView.columnSpan(row,c+1)+1)
					if c < col and c==0:  #ÑAPA
						calView.setSpan(row,c,1,calView.columnSpan(row,c)+1)
					textAnt = item.text()
			
		calView.resizeRowsToContents()

	def createMessages(self, messagesView):
		messagesView.setRowCount(len(messages));
		messagesView.setColumnCount(2);
		#messagesView.horizontalHeader().hide()
		messagesView.verticalHeader().hide()
		messagesView.setWordWrap(True)
		messagesView.setTextElideMode(QtCore.Qt.ElideNone)
		font = QtGui.QFont()
		font.setFamily(u"DejaVu Sans")
		font.setPointSize(14)
		font.setBold(True)
		messagesView.horizontalHeader().setFont(font)
		messagesView.setHorizontalHeaderLabels(("Mensajes", "Enviar"))
		messagesView.setColumnWidth(0, messagesView.width()*0.85)
		messagesView.setEditTriggers(QtGui.QTableWidget.NoEditTriggers)
		messagesView.setSelectionBehavior(QtGui.QTableWidget.SelectRows)
		
		for m,row in zip(messages, range(len(messages))):
			item = QtGui.QTableWidgetItem(m)
			item.setTextAlignment(QtCore.Qt.AlignLeft)
			brush = QtGui.QBrush(QtCore.Qt.darkGray)
			brush.setStyle(QtCore.Qt.SolidPattern)
			item.setBackground(brush)
			font = QtGui.QFont()
			font.setFamily(u"DejaVu Sans")
			font.setPointSize(12)
			item.setFont(font)
			messagesView.setItem(row, 0, item)
			
			# send Button
			btn = QtGui.QPushButton(messagesView)
			btn.clicked.connect(self.sendMessage)
			btn.setIcon(QtGui.QIcon("rightArrow.png"))
			btn.setIconSize(QtCore.QSize(btn.width()*0.7,btn.height()*0.7))
			messagesView.setCellWidget(row, 1, btn)
			
			
		#messagesView.resizeColumnsToContents()
		messagesView.horizontalHeader().setStretchLastSection(True)
		
	def sendMessage(self):
		clickme = QtGui.qApp.focusWidget()
		index = self.messagesView.indexAt(clickme.pos())
		if index.isValid():
			print messages[index.row()]
			clickme.setIcon(QtGui.QIcon())
			clickme.setText("OK")
		
	#wheel event to scroll the calendar
	def wheelEvent(self,event):
		if QtGui.qApp.focusWidget() == self.calendarView:
			if event.delta()/120 > 0:
				self.calendarView.horizontalScrollBar().triggerAction(QtGui.QAbstractSlider.SliderSingleStepAdd)
			if event.delta()/120 < 0:
				self.calendarView.horizontalScrollBar().triggerAction(QtGui.QAbstractSlider.SliderSingleStepSub)
Esempio n. 5
0
class MainWindow(QtGui.QWidget, Ui_Demain):
    def __init__(self, parent=None):
        super(MainWindow, self).__init__(parent)
        self.setupUi(self)
        self.show()

        self.confJSON = self.readConfigurationJSON("config.json")
        self.calendarJSON = self.readConfigurationJSON("calendar.json",
                                                       imprimir=False)

        #Property map
        self.scene = QtGui.QGraphicsScene(self)
        self.mapViewer = MapViewer(self.scene, self.scrollArea,
                                   "img/finca-pia.jpg")
        for cerca in self.confJSON["cercas"]:
            self.mapViewer.drawCerca(cerca["polilinea"])

        #List of messages
        self.createMessages(self.messagesView)

        #self.scene = QtGui.QGraphicsScene(self)
        self.createCalendar(self.calendarJSON, self.calendarView)

        self.show()

    def readConfigurationJSON(self, fileName, imprimir=False):
        with open(fileName, 'r') as fileJson:
            data = json.load(fileJson)
        if imprimir == True:
            pprint(data)
        return data

    def createCalendar(self, calJSON, calView):
        calView.setRowCount(10)
        calView.setColumnCount(12 * 4 * 2)
        #calView.setSizePolicy(QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Fixed)
        calView.horizontalHeader().hide()
        calView.verticalHeader().hide()
        calView.setWordWrap(True)
        calView.setTextElideMode(QtCore.Qt.ElideNone)
        calView.setShowGrid(False)

        #Months span
        NROW = 1
        for i, c in zip(range(0, 96, 4), range(24)):
            calView.setSpan(NROW, i, NROW, 4)
            item = QtGui.QTableWidgetItem(meses[c % 12])
            item.setTextAlignment(QtCore.Qt.AlignCenter)
            brush = QtGui.QBrush(QtGui.QColor(128, 128, 128))
            brush.setStyle(QtCore.Qt.SolidPattern)
            item.setBackground(brush)
            font = QtGui.QFont()
            font.setFamily(u"DejaVu Sans")
            font.setPointSize(14)
            font.setBold(True)
            item.setFont(font)
            calView.setItem(NROW, i, item)

        #Weeks naming
        NROW = 2
        for col in range(calView.columnCount()):
            item = QtGui.QTableWidgetItem("semana " + str(col))
            item.setTextAlignment(QtCore.Qt.AlignCenter)
            brush = QtGui.QBrush(QtGui.QColor(98, 98, 98))
            brush.setStyle(QtCore.Qt.SolidPattern)
            item.setBackground(brush)
            calView.setItem(NROW, col, item)

        #Content
        NROW = 3
        weeks = calJSON["weeks"]
        for week, actions in weeks.iteritems():
            column = int(week) - 1
            row = NROW
            nameAnt = ""
            for action in actions:
                item = QtGui.QTableWidgetItem(action["name"])
                item.setTextAlignment(QtCore.Qt.AlignCenter)
                #print action["name"]
                brush = QtGui.QBrush(
                    mapaColores[action["name"].encode("utf_8")])
                brush.setStyle(QtCore.Qt.SolidPattern)
                item.setBackground(brush)
                font = QtGui.QFont()
                font.setFamily(u"DejaVu Sans")
                font.setPointSize(12)
                item.setFont(font)
                calView.setItem(row, column, item)
                row = row + 1

        #Merge cols with the same name
        NROW = 3
        for row in range(NROW, calView.rowCount()):
            textAnt = ""
            for col in range(calView.columnCount()):
                item = calView.item(row, col)
                if item is not None:
                    #print item.text(), textAnt, "col", col, range(col,-1,-1)
                    for c in range(col, -1, -1):
                        #  print calView.item(NROW,c) is None, calView.item(NROW,c).text() != textAnt
                        if (calView.item(row, c) is None) or (calView.item(
                                row, c).text() != textAnt):
                            break

                    #[c for c in range(col, 0,-1) if calView.item(NROW,c) is not None and calView.item(NROW,c).text() == textAnt]
                    #print c, col
                    if c < col and c > 0:
                        calView.setSpan(row, c + 1, 1,
                                        calView.columnSpan(row, c + 1) + 1)
                    if c < col and c == 0:  #ÑAPA
                        calView.setSpan(row, c, 1,
                                        calView.columnSpan(row, c) + 1)
                    textAnt = item.text()

        calView.resizeRowsToContents()

    def createMessages(self, messagesView):
        messagesView.setRowCount(len(messages))
        messagesView.setColumnCount(2)
        #messagesView.horizontalHeader().hide()
        messagesView.verticalHeader().hide()
        messagesView.setWordWrap(True)
        messagesView.setTextElideMode(QtCore.Qt.ElideNone)
        font = QtGui.QFont()
        font.setFamily(u"DejaVu Sans")
        font.setPointSize(14)
        font.setBold(True)
        messagesView.horizontalHeader().setFont(font)
        messagesView.setHorizontalHeaderLabels(("Mensajes", "Enviar"))
        messagesView.setColumnWidth(0, messagesView.width() * 0.85)
        messagesView.setEditTriggers(QtGui.QTableWidget.NoEditTriggers)
        messagesView.setSelectionBehavior(QtGui.QTableWidget.SelectRows)

        for m, row in zip(messages, range(len(messages))):
            item = QtGui.QTableWidgetItem(m)
            item.setTextAlignment(QtCore.Qt.AlignLeft)
            brush = QtGui.QBrush(QtCore.Qt.darkGray)
            brush.setStyle(QtCore.Qt.SolidPattern)
            item.setBackground(brush)
            font = QtGui.QFont()
            font.setFamily(u"DejaVu Sans")
            font.setPointSize(12)
            item.setFont(font)
            messagesView.setItem(row, 0, item)

            # send Button
            btn = QtGui.QPushButton(messagesView)
            btn.clicked.connect(self.sendMessage)
            btn.setIcon(QtGui.QIcon("rightArrow.png"))
            btn.setIconSize(QtCore.QSize(btn.width() * 0.7,
                                         btn.height() * 0.7))
            messagesView.setCellWidget(row, 1, btn)

        #messagesView.resizeColumnsToContents()
        messagesView.horizontalHeader().setStretchLastSection(True)

    def sendMessage(self):
        clickme = QtGui.qApp.focusWidget()
        index = self.messagesView.indexAt(clickme.pos())
        if index.isValid():
            print messages[index.row()]
            clickme.setIcon(QtGui.QIcon())
            clickme.setText("OK")

    #wheel event to scroll the calendar
    def wheelEvent(self, event):
        if QtGui.qApp.focusWidget() == self.calendarView:
            if event.delta() / 120 > 0:
                self.calendarView.horizontalScrollBar().triggerAction(
                    QtGui.QAbstractSlider.SliderSingleStepAdd)
            if event.delta() / 120 < 0:
                self.calendarView.horizontalScrollBar().triggerAction(
                    QtGui.QAbstractSlider.SliderSingleStepSub)