Кнопки расширения пропадают...

0 голосов
спросил 17 Июль, 04 от dindzilin (4,160 баллов) в категории Программные продукты Esri
Сделал свое небольшое расширение ... Как и водится написал 3 скрипта - Install,UnInstall и MyExistation.Make ... Вроде все работает нормально, но если при подключенном расширении сохраняешь и закрываешь проект, то при последующем открытии, кнопки и инструменты куда-то пропадают. При этом, само расширение в списке модулей остается активным. Отключаешь расширение, снова подключаешь... кнопки и инструменты опять появляются. Скрипты могу выложить хоть здесь, хоть выслать на мыло если кто-нибудь изъявит желание помочь

12 Ответы

0 голосов
ответил 19 Июль, 04 от Albert1 (10,780 баллов)
Скрипт инсталляции некорректен
0 голосов
ответил 19 Июль, 04 от Albert1 (10,780 баллов)
Могу посмотреть
0 голосов
ответил 19 Июль, 04 от dindzilin (4,160 баллов)

Альберт, спасибо за отзыв и намек, разобрался сам, в скрипте действительно было несколько совсем лишних строк...

0 голосов
ответил 20 Июль, 04 от Гость (210,080 баллов)
Караул, ребята! У меня проблема как раз обратная: загружаю расширение, пока проект открыт, все работает отлично. Отключаешь расширение пропадает меню, включаешь появляется снова. Но, если я проект сохраняю, потом открываю вновь, появляется еще одно такое же меню. И так далее: если 10 раз, значит, 10 меню. Можно, конечно, и так работать, но как то… неприятно.image В чем можеь быть дело?
0 голосов
ответил 20 Июль, 04 от dindzilin (4,160 баллов)

Скрипт инсталляции некорректен

Больше нечего сказать, надо его смотреть...

0 голосов
ответил 20 Июль, 04 от Гость (210,080 баллов)
Скрипт инсталляции: b = av.GetProject.FindGUI("View").GetMenuBar newPositionIndex = b.GetControls.Count - 2 newMenu = b.New(newPositionIndex) newMenu.SetLabel("Nährstoffkarten") theItem1 = newMenu.New(-1) theItem1.SetLabel("Projection") theItem1.SetClick("projection") theItem2 = newMenu.New(-2) theItem2.SetLabel("Interpol") theItem2.SetClick("nk.manager")
0 голосов
ответил 20 Июль, 04 от Гость (210,080 баллов)
Или, возможно, "виноват" скрипт деинсталяции, по логике вещей b = av.GetProject.FindGUI("View").GetMenuBar menus = b.FindByLabel("Nährstoffkarten") b.Remove(menus)
0 голосов
ответил 20 Июль, 04 от dindzilin (4,160 баллов)

В этих вопросах я не очень но вот мой вариант ответа:

При каждом открытии выполняется скрипт Install в котором каждый раз он будет добавлять меню ("Nährstoffkarten") и все остальное...

Предложение:

В меню GUI Вида руками организуешь все то, что ты делаешь в твоем инсталле, а далее смотри мои скрипты организации Ext, его инсталл и анинсталл:

 

' MyExtension.Make
viewDocGUI = av.FindGUI("View")
viewMenuBar =  viewDocGUI.GetMenuBar

efn = "$AVHOME\EXT32\Nahrstoffkarten.avx".AsFileName

Ext = Extension.Make(efn, "Nahrstoffkarten",av.FindScript("Install"),av.FindScript("UnInstall"),{})
Ext.SetAbout("И теперь все работает нормально!!!")
Ext.SetExtVersion(1)
Ext.Add(viewMenuBar.FindByLabel("Nahrstoffkarten"))

' Добовляем пользвовательские скрипты
for each aDoc in av.GetProject.GetDocs
   if (aDoc.Is(SEd)) then
      if ((aDoc.GetName <> "Install") and
          (aDoc.GetName <> "MyExtension.Make") and
          (aDoc.GetName <> "Uninstall")) then
        if (aDoc.IsCompiled.Not) then
          aDoc.Compile
        end
        Ext.Add(av.FindScript(aDoc.GetName))
      end
    end

' Добовляем пользвовательские Диалоги
  if (aDoc.Is(dEd)) then
    adoc.getwin.open
    aDoc.Compile
    adoc.getwin.close       
    adialog=adoc.getdialog
    if (adialog.getname<>"") then
       Ext.Add(adialog)
    else
      msgbox.info("Не найдено "+adoc.getname,"")
    end
  end
end

Ext.Commit

'******************************************

'Install
' выпиcываем версии номер расширения в словарь предпочтения
if (self.GetPreferences.Get("Version") = NIL) then
  self.GetPreferences.Add("Version",self.GetExtVersion)
end

viewDocGUI = av.GetProject.FindGUI("View")

NF = viewDocGUI.GetMenuBar.FindByLabel("Nahrstoffkarten")
 
if (NF=Nil) then
   aGOMenu = self.Get(0)
   viewDocGUI.GetMenuBar.Add(aGOMenu,viewDocGUI.GetMenuBar.GetControls.Count - 2)
end

'***********************************************

'UnInstall
b = av.GetProject.FindGUI("View").GetMenuBar

NF = b.FindByLabel("Nahrstoffkarten")

while (NF<>nil)
 b.Remove(NF)
 NF = b.FindByLabel("Nahrstoffkarten")
end
 

Скрипты проверил, всё работает... Удачиimage

0 голосов
ответил 21 Июль, 04 от Leo_SS (6,820 баллов)
Коллеги есть в \ESRI\AV_GIS30\ARCVIEW\Samples\ext проект extbuild.apr . В нем 3 скрипта My Extension Install,My Extension MAKE и My Extension Uninstall которые работают отменно. Копируй их в свой проект и не будет проблем с кнопками. Только нужно правильно заполнить  My Extension MAKE .
0 голосов
ответил 21 Июль, 04 от Leo_SS (6,820 баллов)
P.S. Я свои модули создаю используя эти скрипты. Таких проблем не возникало.
Добро пожаловать на сайт Вопросов и Ответов, где вы можете задавать вопросы по GIS тематике и получать ответы от других членов сообщества.
...