Quick jump:  What's new

 
Go to:
 
Weblog: SynaN   
in RazmjenaVjestina
EnsoExtensions

Napisao sam nekoliko dodatnih funkcija za Enso Launcher.

"U potpunosti je ekstenzibilan app sa bilo kojim jezikom,

moj language of choice je python.
Ovo nikako nije sve, svaki dan se igram sa novim stvarima i

mjenjati ću sadržaj kako budem mjenjao kod.

Evo kako to izgleda za sada:

import xmlrpclib
import socket
from SimpleXMLRPCServer import SimpleXMLRPCServer
import threading
import webbrowser

socket.setdefaulttimeout( 10.0 )

class MyEnsoExtension:
    def __init__( self ):
        self.enso = xmlrpclib.ServerProxy( "http://127.0.0.1:11374" )
 
    def callCommand( self, commandName, postfix ):
        if commandName == "leetify":
            selectedText = self.enso.getUnicodeSelection()
            returnText = selectedText.replace('i','1',).replace('a','4').replace('e','3')
            returnText = returnText.replace('I','1').replace('o','0').replace('O','0')
            returnText = returnText.replace('t','7').replace('T','7')
            if returnText:
                self.enso.setUnicodeSelection( returnText, "leetify" )
            else:
                self.enso.displayMessage('<p>No text selection!</p>')
        elif commandName == "amazon {keyword}":
            self.enso.displayMessage('<p>Searching Amazon for \"'+ postfix + '\"...</p>')
            url = 'http://www.amazon.com/s?ie=UTF8&keywords=' + postfix + '&index=blended'
            webbrowser.open(url)
        elif commandName == "sms {name}":
            # do something here
            self.enso.displayMessage('<p>\"'+self.enso.getUnicodeSelection()+'\"\ 
sent to '+postfix.upper()+'</p>')
        elif commandName == "camel":
            selectedText = self.enso.getUnicodeSelection()
            if selectedText:
                returnText = ''
                for word in selectedText.split():
                    returnText += word.capitalize()
                self.enso.setUnicodeSelection(returnText,'camel')
            else:
                self.enso.displayMessage('<p>No text selection!</p>')
        else:
            raise AssertionError( "Unknown command name: %s" % \
                                   commandName )
        return True


def runMyExtensionServer():
    rpcServer = SimpleXMLRPCServer( ("127.0.0.1", 11375) )
    # We set the socket timeout to permit the server to be killed.
    rpcServer.socket.settimeout( 1.0 )
    rpcServer.register_instance( MyEnsoExtension() )
    rpcServer.serve_forever()


# Start the XML-RPC server
serverThread 
^ threading.Thread( target
 runMyExtensionServer )
serverThread.setDaemon( True )
serverThread.start()

# Register with Enso.
enso = xmlrpclib.ServerProxy( "http://127.0.0.1:11374" )
enso.registerCommand( 
    "http://127.0.0.1:11375",
    "leetify",
    "Leetifies your currently selected text",
    "<p>This command transforms the current" \
    "text selection to the leet version of "\
    "that text.</p>",
    "none"
    )

enso.registerCommand(
    'http://127.0.0.1:11375',
    'amazon {keyword}',
    'Searches Amazon for keyword',
    '<p>This command will search Amazon '\
    'for the keyword.</p>',
    'arbitrary'
    )

enso.registerCommand(
    'http://127.0.0.1:11375',
    'sms {name}',
    'Sends SMS to {name} via VIP WebSMS',
    '<p>This command will look up a number by name '\
    'from the preset phonebook and send an SMS '\
    'to that number/person using the VIP WebSMS service.</p>',
    'bounded'
    )
enso.setCommandValidPostfixes('http://127.0.0.1:11375',
                              'sms {name}',
                             ['marija', 'test','erik','mum'"<http://www.humanized.com]> )

enso.registerCommand( 
    "http://127.0.0.1:11375",
    "camel",
    "Transforms your currently selected text to CamelCase",
    "<p>This command transforms the current" \
    "text selection to the CamelCase version of "\
    "that text, removing whitespaces.</p>",
    "none"
    )

try:
    print "press enter to exit."
    raw_input()
finally:
    enso.unregisterCommand( "http://127.0.0.1:11375",  "leetify" )
    enso.unregisterCommand( "http://127.0.0.1:11375",  "amazon {keyword}" )
    enso.unregisterCommand( "http://127.0.0.1:11375",  "sms {name}" )
    enso.unregisterCommand( "http://127.0.0.1:11375",  "camel" )


original Dec 14 5:58am

permalink
SynaNTrazi

Zanima me puno toga, od toga nešto više o:

  • C++
  • Neuralne mreže
  • AI
  • Lego Mindstorms
  • Samogradnja

original Dec 14 5:49am

permalink
SynaNNudi

Od svega znam ponešto, nešto više od ostalog o:
*python
*pygtk
*pyglade
*PHP


original Dec 14 5:47am

permalink
GladePyGTK

Glade i PyGTK

Na NSND u Moravicama pokazivao sam nešto oko korištenja Glade-a i pygtk za

polu-rapid development GTK GUI aplikacija. Primjer je bio mali app koji šalje

sms preko Vip Web SMS stranice. Glade file možete naći ovdje:

"Python kod slijedi:

import urllib2
import urllib
import cookielib
import gobject
import pygtk
pygtk.require('2.0')
import pango
import gtk
import gtk.glade

class HellowWorldGTK:
        """Main GTK not-thread"""

        def __init__(self):
                #set the glade file
                self.gladefile = "vip.glade"
                self.wTree = gtk.glade.XML(self.gladefile)
                dic = {"on_send_button_clicked" : self.send_sms,
                        "on_reset_button_clicked" : self.send_sms,
                       #"on_VipSMS_key_press_event" : self.update_counter,
                        "on_VipSMS_destroy" : gtk.main_quit }
                self.wTree.signal_autoconnect(dic)
                view = self.wTree.get_widget('message_text')
                buffer = view.get_buffer()
                buffer.connect('changed', self.update_counter)
        
        def update_counter(self,widget):
            baf = self.wTree.get_widget('message_text')
            buffer = baf.get_buffer()
            lenght = buffer.get_char_count()
            lenght = 135 - lenght
            label = self.wTree.get_widget('count_label')
            label.set_text(str(lenght))

        def send_sms(self,widget):
            global cj
            opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cj))
            params = urllib.urlencode({'userRequestURL':\
'http%3A%2F%2Fwww.vip.hr%2Fsp%2Fd_sendSMS%3F' , \
'serviceRegistrationURL':_ , 'level': '30' , 'SetMsisdn' : 'true' ,\
 'serviceOID' : '2000358', 'UserID' : 'user_name', 'Password' : 'password'})
            bla = opener.open('http://webauth.vip.hr/vasmpauth/ProcessLoginServlet',params)
            #print bla.read()
            message = self.wTree.get_widget('message_text')
            message = message.get_buffer()
            message = message.get_text(message.get_start_iter(),message.get_end_iter())
            prefix = self.wTree.get_widget('cell_prefix')
            prefix = prefix.get_child()
            prefix = prefix.get_text()
            number = self.wTree.get_widget('cell_number')
            number = number.get_text()
            phoneno = str(number)
            size_diff = str(260-len(message))
            data = urllib.urlencode({'formflag' : 'true', 'netpref' : prefix,\
 'phoneno' : phoneno, 'charleft' : size_diff, 'message582' : message , \
'reply_to_mobile' : _})
            #print data
            sender = urllib2.build_opener(urllib2.HTTPCookieProcessor(cj))
            send = opener.open('http://www.vip.hr/sp/d_sendSMS?',data)
            inpu = send.read()
            #print 'Preostalo poruka: ' + str(inpu.split('poslati: ')[1"<http://synan.rilinux.hr/code/vip.glade]>.split('<',1)[0])
            widg = self.wTree.get_widget('status_label')
            widg.set_text('Preostalo poruka: ' + str(inpu.split('poslati:\
 ')[1].split('<',1)[0]))


if __name__ == "__main__":
        cj = cookielib.CookieJar()
        hwg = HellowWorldGTK()
        gtk.main()


original Dec 14 5:39am

permalink
Weblog Navigation
Loading...
Weblog Archives
  • Loading...