Hello All,
I've developed a python addin toolbar that adds a desired layer file (chosen from a menu in the toolbar) to the table of contents in a project. The functionality only works, however, when the project is in the data frame view -- clicking a layer in the menu does nothing if the project is in the layout view. I've googled around, but haven't found a sollution to this issue. Anyone have any ideas? Feedback is greatly appreciated!
Using: ArcGIS 10.2.2, Python 2.7
Sample code:
# -*- coding: utf-8 -*-
import arcpy
import pythonaddins
class FD_Bau_Fischaufstiege(object):
"""Implementation for Themenmanager_addin.button (Button)"""
def __init__(self):
self.enabled = True
## self.checked = False
self.mxd = arcpy.mapping.MapDocument('current')
def onClick(self):
layer = r'G:\Gis\DATEN\wvdat\Querbauwerke\Fischaufstieg.lyr'
activeDataFrame = self.mxd.activeView
df = arcpy.mapping.ListDataFrames(self.mxd, activeDataFrame)[0]
if arcpy.Exists(layer):
layerToAdd = arcpy.mapping.Layer(layer)
arcpy.mapping.AddLayer(df, layerToAdd, 'TOP')
else:
warningButton = pythonaddins.MessageBox("Die Datei ist nicht verfugbar.\nBitte kontaktieren Sie die GIS Abteilung.", "Datei nicht verfugbar", 0)
pass
EDIT: I was able to get this to work in both views with the following code:
class FD_Bau_Fischaufstiege(object):
"""Implementation for Themenmanager_addin.button (Button)"""
def __init__(self):
self.enabled = True
## self.checked = False
def onClick(self):
mxd = arcpy.mapping.MapDocument("CURRENT")
df = mxd.activeDataFrame
layer = r'G:\Gis\DATEN\wvdat\Querbauwerke\Fischaufstieg.lyr'
if arcpy.Exists(layer):
layerToAdd = arcpy.mapping.Layer(layer)
arcpy.mapping.AddLayer(df, layerToAdd, 'TOP')
else:
warningButton = pythonaddins.MessageBox("Die Datei ist nicht verfugbar.\nBitte kontaktieren Sie die GIS Abteilung.", "Datei nicht verfugbar", 0)
pass