Ошибка выполнения скрипта в разных OS

Автор spyAndrey, 26 октября 2016, 20:00

0 Пользователи и 1 гость просматривают эту тему.

spyAndrey

Цитата: spyAndrey от 27 октября 2016, 11:19Public oDrawDoc
а оставлю ка я так, поскольку в двух системах приходится запускать мало ли что :)

spyAndrey

Результат такой: хоть я и оптимизировал код, но работает только с wait 1000, поэтому делаю вывод, что проблема в OS Ubuntu, система не успевает создать рисунок

JohnSUN

Уговорил, показывай последний вариант - будем править
Владислав Орлов aka JohnSUN
Благодарить-не зазорно.
Подарить благо создателям офиса, нашему ресурсу, мне

kompilainenn

Цитата: JohnSUN от 28 октября 2016, 14:54
Уговорил, показывай последний вариант - будем править
работает - не трогай!
Поддержать разработчиков LibreOffice можно тут, а наш форум вот тут

JohnSUN

"Ой да ладно!.. Чего один человек смастерить сумел, другой завсегда починить сможет!.." - "Ты что сделал, подлец?!!"
Владислав Орлов aka JohnSUN
Благодарить-не зазорно.
Подарить благо создателям офиса, нашему ресурсу, мне

rami

Цитата: JohnSUN от 28 октября 2016, 14:54
Уговорил, показывай последний вариант - будем править
Тогда и я свой афоризм добавлю: "Последний вариант — лучшее начало"

JohnSUN

Ага, и до кучи - "Самая последняя ошибка в программе всегда только предпоследняя"
Это я к тому, что wait 1000 - это всего одна секунда. И если в какой-то момент подгруженная Ubuntu не успеет создать draw за отведенное время - опять вылезет ошибка
Владислав Орлов aka JohnSUN
Благодарить-не зазорно.
Подарить благо создателям офиса, нашему ресурсу, мне

mikekaganski

' ----------------------------------------------- XEventListener ------------------------------------------------------
' ------------------------ See https://forum.openoffice.org/en/forum/viewtopic.php?f=21&t=10123 ------------------------
global oXEventListener as object
global oXEventListenerComponent as object
global bOnNewFired as boolean

function sStartXEventListener(oComponent)
   if isNull(oXEventListener) then 'just to be shure it doesn't start twice
      oXEventListener=CreateUnoListener("XEventListener_", "com.sun.star.document.XEventListener")
      oComponent.com_sun_star_document_XEventBroadcaster_addEventListener(oXEventListener)
      oXEventListenerComponent = oComponent
   end if
   sStartXEventListener = True
end function
function sStopXEventListener
   if not isNull(oXEventListener) then 'only if still running
      oXEventListenerComponent.com_sun_star_document_XEventBroadcaster_removeEventListener(oXEventListener)
      oXEventListenerComponent=nothing
      oXEventListener=nothing 'To know later the listener has stopt.
   end if
   sStopXEventListener = True
end function
sub XEventListener_Disposing(oEvent)
   sStopXEventListener
end sub
sub XEventListener_notifyEvent(oEvent as object)
   if OEvent.EventName="OnNew" then
      bOnNewFired = True
   end if
end sub
' --------------------------------------------End XEventListener ------------------------------------------------------

'создание документа
Function LoadEmptyDocument(docType$)
  Dim noArgs()          'An empty array for the arguments
  Dim sURL As String    'URL of the document to load

  bOnNewFired = False

  sURL = "private:factory/" & docType
  LoadEmptyDocument = StarDesktop.LoadComponentFromUrl(sURL, "_blank", 0, noArgs())
  sStartXEventListener(LoadEmptyDocument)
 
  Do While (bOnNewFired = False)
    Wait(100)
  Loop
 
  sStopXEventListener
End Function
С уважением,
Михаил Каганский

JohnSUN

Изящно. Лично меня
GlobalScope.BasicLibraries.LoadLibrary("Tools")
oNewDoc = CreateNewDocument("sdraw")
еще ни разу не подводил... Но я не так часто тестирую код под Ubuntu
Владислав Орлов aka JohnSUN
Благодарить-не зазорно.
Подарить благо создателям офиса, нашему ресурсу, мне

spyAndrey

Цитата: JohnSUN от 28 октября 2016, 16:14
Ага, и до кучи - "Самая последняя ошибка в программе всегда только предпоследняя"
Это я к тому, что wait 1000 - это всего одна секунда. И если в какой-то момент подгруженная Ubuntu не успеет создать draw за отведенное время - опять вылезет ошибка
я предполагаю что пользоваться буду только под KUbuntu, может в других дистрибутивах (с другими рабочими столами типа Gnome, Unity и т.д.) всё и без костыля (wait 1000) будт обходиться? но программу прикладываю :)

spyAndrey

в ней только исправил только логические ошибки (в каждой процедуре создавал рисунок) и вынес указатель на рисунок в первую строку:
Public oDrawDoc  'Temporary draw document.

но если удастся до делать, буду рад

spyAndrey

сейчас честно говоря меня уже другой вопрос занимает, можно ли как нибудь управлять направляющими на рисунке?
Я у Питоньяка не видел примеров

JohnSUN

направляющими? на рисунке? еще и управлять? Ты ведь не про размерные линии, а именно про направляющие? И ими управлять?..  ???
Владислав Орлов aka JohnSUN
Благодарить-не зазорно.
Подарить благо создателям офиса, нашему ресурсу, мне

spyAndrey

Да, я имел в виду именно направляющие, к которым прилипание можно зделать для точной установки...
Размерные линии, я уже понял как рисовать (в смысле добавлять программно).

Я предположил, что может кто то пользовался Xray или библиотекой Питоньяка, может там есть доступ и функционал для работы с этими объектами?

rami

Цитата: spyAndrey от  1 ноября 2016, 06:49Да, я имел в виду именно направляющие, к которым прилипание можно зделать для точной установки...
Это уже новая тема или продолжение текущей ??? Прилипание к направляющим действует (если включено) при ручной работе, в макросе нужно задавать все размеры и параметры.
Цитата: spyAndrey от  1 ноября 2016, 06:49Я предположил, что может кто то пользовался Xray или библиотекой Питоньяка, может там есть доступ и функционал для работы с этими объектами?
Направляющие — это не объект, а скорее визуальная помощь для пользователя.