LINUX Format №122 09.09

Page 68

OpenOffice.org Учебник

'Value': node. getElementsByTagName('Value') [0].childNodes[0].nodeValue}) self.kurses.append({'CharCode': 'RUR', 'Nominal': '1', 'Name': u'Российских руб­лей', 'Value': '1'}) В ито­ге по­лу­ча­ем кур­сы ва­лют в ви­де спи­ска сло­ва­рей и спи­ сок на­име­но­ва­ний ва­лют для под­ста­нов­ки в вы­па­даю­щие ме­ню ValuteName1 и ValuteName2. До­бав­ля­ем «слу­ша­те­лей» на­жа­тий на кноп­ки: self.dlgMain.btnCalculate.addActionListener( self ) self.dlgMain.btnClear.addActionListener( self ) Ос­та­лось соз­дать об­ра­бот­чи­ки на­жа­тий – ме­то­ды, вы­зы­ва­ емые при ак­ти­ва­ции со­от­вет­ст­вую­щих эле­мен­тов управ­ле­ния. Име­ну­ют­ся они сле­дую­щим об­ра­зом: on_action_<имя_эле­мен­та>. Кноп­ка btnClear сбра­сы­ва­ет зна­че­ния эле­мен­тов управ­ле­ния на на­чаль­ные: def on_action_btnClear(self): self.dlgMain.ValuteNum1.Value=100.00 self.dlgMain.ValuteNum2.Value=0 self.dlgMain.ValuteName1.selectItemPos(4,True) self.dlgMain.ValuteName2.selectItemPos(self.dlgMain. ValuteName2.ItemCount-1,True) Кноп­ка btnCalculate вы­чис­ля­ет курс пер­вой ва­лю­ты от­но­си­ тель­но дру­гой, под­счи­ты­ва­ет сум­му в дру­гой ва­лю­те и, в за­ви­си­ мо­сти от со­стоя­ния флаж­ка, встав­ля­ет ре­зуль­тат в до­к у­мент. def on_action_btnCalculate(self): if (self.dlgMain.ValuteName1.getSelectedItemPos()>-1) and (self.dlgMain.ValuteName2.getSelectedItemPos()>-1): valuteID1=self.dlgMain.ValuteName1. getSelectedItemPos() valuteID2=self.dlgMain.ValuteName2. getSelectedItemPos() self.kursnode1=self.kurses[valuteID1] self.kursnode2=self.kurses[valuteID2] v1=eval(self.kursnode1['Value'].replace(',','.')) /eval(self.kursnode1['Nominal']) v2=eval(self.kursnode2['Value']. replace(',','.')) /eval(self.kursnode2['Nominal']) sum1=self.dlgMain.ValuteNum1.Value val1to2=v1/v2 self.dlgMain.ValuteNum2. Value=sum1*val1to2 if (self.dlgMain.chkInsert.State): if self.cursor.isCollapsed(): self.cursor. String=round(self.dlgMain.ValuteNum2.Value,2) else: self.cursor. collapseToEnd() self.cursor. String=round(self.dlgMain.ValuteNum2.Value,2) Для кнопки За­крыть об­ра­бот­чик не ну­жен. Наконец, добавим метод заполнения списков наименований валют и добьемся, чтобы пункты «Доллар США» и «Российских рублей» были выбраны по умолчанию: self.fillList() self.dlgMain.ValuteName1.selectItemPos(4,True) self.dlgMain.ValuteName2.selectItemPos(self.dlgMain. ValuteName2.ItemCount-1,True) Ме­тод fillList вы­гля­дит так: def fillList(self):

for i in range(0, len(self.kurses)): self.dlgMain.ValuteName1.addItem(self. kurses[i][‘Name’],i) self.dlgMain.ValuteName2. addItem(self.kurses[i][‘Name’],i) В ито­ге у нас дол­жен по­лу­чить­ся та­кой ме­тод curconverter: def curconverter( self ): self.summa=util.writer.getWord(self.getcontroller()). String self.cursor=self.getcontroller().getViewCursor() self.dlgMain = dlgMain = self.createdialog( 'Main' ) self.dlgMain.btnCalculate.addActionListener( self ) self.dlgMain.btnClear.addActionListener( self ) try: eval(self.summa) self.dlgMain.ValuteNum1.Value=self.summa except: self.dlgMain.ValuteNum1.Value=100.00 self.config = ConfigParser.ConfigParser() self.config.read(os.path.join(self.path, 'settings')) if not(self.config.has_option('Global','URL')): self.config.set('Global','URL', 'http://www. cbr.ru/scripts/XML_daily.asp') self.BANK_URL = self.config.get('Global','URL') self.getKurs() self.fillList() self.dlgMain.ValuteName1.selectItemPos(4,True) self.dlgMain.ValuteName2.selectItemPos(self.dlgMain. ValuteName2.ItemCount-1,True) dlgMain.execute() Ре­зуль­та­ты на­ших тру­дов мож­но ви­деть на рис. 5.

Скорая помощь В случае, если вам нужно просмотреть содержимое какого-либо объекта во время выполнения программы, можно воспользоваться встроенной функцией debug (<Expression>). Для вывода сообщений во всплывающих окнах служит метод self. box(“Сообщение”).

Фи­наль­ный штрих На­ше рас­ши­ре­ние го­то­во. На вся­кий слу­чай еще раз со­хра­ним диа­ло­ги че­рез ок­но О рас­ши­ре­нии. За­тем вой­ди­те в ка­та­лог EOEC и со­бе­ри­те го­то­вое рас­ши­ре­ние. python pack.py CurConverter Что­бы из­ме­нить но­мер вер­сии рас­ши­ре­ния, не­об­хо­ди­мо от­ре­ дак­ти­ро­вать файл description.xml. В стро­ке <version value=”1.0”></version> вме­сто 1.0 нуж­но уста­но­вить тре­буе­мый но­мер. Фор­мат фай­ ла description.xml под­роб­но опи­сан в ру­ко­во­дстве раз­ра­бот­чи­ка: http://api.openoffice.org/docs/DevelopersGuide/Extensions/Extensions. xhtml#1_5_description.xml Поя­вив­шее­ся в ка­та­ло­ге рас­ши­рение CurConverter.oxt вер­ сии 1.0 го­то­во для рас­про­странения. Раз­местить его для об­ ще­го досту­па мож­но на сай­те рас­ши­рений для OpenOffice.org: extensions.services.openoffice.org. Ин­ст­рук­цию о том, как пра­виль­ но это сде­лать, мож­но най­ти по сле­д ую­ще­му ад­ре­су: http://wiki. services.openoffice.org/wiki/Extensions/website/submission

Рис. 5. Рас­ши­ре­ ние CurConverter го­то­во к ра­бо­те.

Сентябрь 2009 Linux Format      67


Issuu converts static files into: digital portfolios, online yearbooks, online catalogs, digital photo albums and more. Sign up and create your flipbook.