Вопрос

Недавно я работал над своим первым роботом для Google wave, жизненно важной частью того, что он делает, является вставка встроенных ответов во всплывающее окно.Я ни за что на свете не смогу понять, как это сделать!

В документах API есть функция Вставка lineblip что звучало многообещающе, однако призыв, который, похоже, ничего не дает!

Редактировать::Похоже, что это известная ошибка.Тем не менее, вопрос по-прежнему остается в силе, каков правильный способ вставить встроенную точку?Я предполагаю что-то вроде этого:

inline = blip.GetDocument().InsertInlineBlip(positionInText)
inline.GetDocument().SetText("some text")
Это было полезно?

Решение

Если вы посмотрите на исходный код для OpBasedDocument.InsertInlineBlip() вы увидите следующее:

 412 -  def InsertInlineBlip(self, position): 
 413      """Inserts an inline blip into this blip at a specific position. 
 414   
 415      Args: 
 416        position: Position to insert the blip at. 
 417   
 418      Returns: 
 419        The JSON data of the blip that was created. 
 420      """ 
 421      blip_data = self.__context.builder.DocumentInlineBlipInsert( 
 422          self._blip.waveId, 
 423          self._blip.waveletId, 
 424          self._blip.blipId, 
 425          position) 
 426      # TODO(davidbyttow): Add local blip element. 
 427      return self.__context.AddBlip(blip_data) 

Я думаю, комментарий к TODO предполагает, что эта функция еще не активирована.Метод должен быть вызываемым и возвращать корректно, однако я подозреваю, что операция document не применяется к глобальному документу.

Синтаксис, который вы включили в свой пост, выглядит правильным.Как вы можете видеть выше, InsertInlineBlip() возвращает значение из AddBlip(), то есть ...дун, дун, дун...вспышка.

 543 -  def AddBlip(self, blip_data): 
 544      """Adds a transient blip based on the data supplied. 
 545   
 546      Args: 
 547        blip_data: JSON data describing this blip. 
 548   
 549      Returns: 
 550        An OpBasedBlip that may have operations applied to it. 
 551      """ 
 552      blip = OpBasedBlip(blip_data, self) 
 553      self.blips[blip.GetId()] = blip 
 554      return blip 

Редактировать:Интересно отметить , что сигнатура метода метода Insert InsertInlineBlip(self, position) существенно отличается от метода вставки InsertElement(self, position, element). InsertInlineBlip() не принимает параметр элемента для вставки.Похоже, текущая логика для InsertInlineBlip() это больше похоже Blip.CreateChild(), который возвращает новый дочерний элемент, с которым можно работать.Исходя из этого, мы можем заподозрить, что этот API будет меняться по мере добавления функциональности.

Другие советы

Это могло бы быть возможным ошибка.

Похоже, что ранее это была ошибка, однако сегодняшнее обновление, мы надеемся, исправило ее:http://code.google.com/p/google-wave-resources/wiki/WaveAPIsChangeLog

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top