https://github.com/minorua/Qgis2threejs
Revision c9b801258ea252ec8793823838c041ceeb0dda35 authored by Minoru Akagi on 13 April 2014, 06:04:38 UTC, committed by Minoru Akagi on 13 April 2014, 09:10:27 UTC
1 parent d5576ca
Tip revision: c9b801258ea252ec8793823838c041ceeb0dda35 authored by Minoru Akagi on 13 April 2014, 06:04:38 UTC
fix pan control of OrbitControls.js (partly revert 43f8c98)
fix pan control of OrbitControls.js (partly revert 43f8c98)
Tip revision: c9b8012
vectorobject.py
# -*- coding: utf-8 -*-
"""
/***************************************************************************
Qgis2threejs
A QGIS plugin
export terrain and map image into web browser
-------------------
begin : 2014-01-11
copyright : (C) 2014 Minoru Akagi
email : akaginch@gmail.com
***************************************************************************/
/***************************************************************************
* *
* This program is free software; you can redistribute it and/or modify *
* it under the terms of the GNU General Public License as published by *
* the Free Software Foundation; either version 2 of the License, or *
* (at your option) any later version. *
* *
***************************************************************************/
"""
from PyQt4.QtCore import qDebug
from PyQt4.QtGui import QColor
from qgis.core import QGis, QgsMessageLog
import sys
import random
from stylewidget import *
debug_mode = 1
def list_modules():
for nam, mod in sys.modules.items():
qDebug(nam + ": " + str(mod))
class ObjectTypeModule:
def __init__(self, module):
self.module = module
self.geometryType = getattr(module, 'geometryType')()
self.objectTypeNames = getattr(module, 'objectTypeNames')()
self.setupForm = getattr(module, 'setupForm') # setupForm(dialog, mapTo3d, layer, type_index=0)
self.write = getattr(module, 'write') # write(mapTo3d, pt(s), properties, layer=None, f=None)
@classmethod
def load(self, modname):
if modname in sys.modules:
module = reload(sys.modules[modname])
else:
module = __import__(modname)
for comp in modname.split(".")[1:]:
module = getattr(module, comp)
return ObjectTypeModule(module)
class ObjectTypeItem:
def __init__(self, name, mod_index, type_index):
self.name = name
self.mod_index = mod_index
self.type_index = type_index
class ObjectTypeManager:
def __init__(self):
# load basic object types
self.modules = []
self.objTypes = {QGis.Point: [], QGis.Line: [], QGis.Polygon:[]} # each list item is ObjectTypeItem object
module_names = ["point_basic", "line_basic", "polygon_basic"]
module_names += ["point_json"]
module_fullnames = map(lambda x: "Qgis2threejs.objects." + x, module_names)
for modname in module_fullnames:
mod = ObjectTypeModule.load(modname)
mod_index = len(self.modules)
self.modules.append(mod)
for type_index, name in enumerate(mod.objectTypeNames):
self.objTypes[mod.geometryType].append(ObjectTypeItem(name, mod_index, type_index))
if debug_mode:
qDebug("ObjectTypeManager: " + str(self.objTypes))
def objectTypeNames(self, geom_type):
if geom_type in self.objTypes:
return map(lambda x: x.name, self.objTypes[geom_type])
return []
def objectTypeItem(self, geom_type, item_index):
if geom_type in self.objTypes:
return self.objTypes[geom_type][item_index]
return None
def module(self, mod_index):
if mod_index < len(self.modules):
return self.modules[mod_index]
return None
def setupForm(self, dialog, mapTo3d, layer, geom_type, item_index):
if geom_type in self.objTypes:
typeitem = self.objTypes[geom_type][item_index]
return self.modules[typeitem.mod_index].setupForm(dialog, mapTo3d, layer, typeitem.type_index)
return False
Computing file changes ...