Some time ago I made severe critics about the Maemo Development.
Well, I remain with the same opinion: it´s a crap.
Too much bla bla bla about "the next upcoming features" and no effective 
results, and of course, I was a moron, stupid, puny programmer and other nice 
adjectives.
I don´t care... It´s not my company or my job. 
But if some of you need a very crude Text Editor with dead keys support for 
Bluetooth keyboards, you may try my Python Editor. Obviously I made it for my 
portuguese needs, but the code is fairly simple and you can easily adapt for 
your needs. 
It can save text and open, work's in fullscreen too. And finish, no fancy fonts 
and colors.

There's no deb package, I don´t have time for that.

You can install as I say:
-Install Python
-Install Become Root
-Install xTerminal
Save the editor and editor.desktop file in your memory stick

Open the terminal

Do this as root:
Sudo su -

Chmod +x editor
Cp editor /usr/bin/

maemo-select-menu-location editor.desktop tana_fi_utilities

That's it... Finally I can use my Nokia for some word processing... Before that 
I enjoyed toillet internet (much better than newspaper) and as a big pendrive. 
Now my money worth something. 

Thanks for nothing to INDT and Nokia for no help at all. Ah, one last 
question... Where are the dozens of new software for nokia 770? I say: with the 
development architecture in use forget it... Indeed, with the arrogance of INDT 
and the Nokia fear to really release the Maemo for true Open Source 
Development, try a new cell fone...

With time I'll put this little Text Editor at www.ihatenokia770.com.
If you don´t have a Nokia 770 do yourself a favor and buy an UMPC with Windows 
Tablet.
And don´t mail me to blame about the editor, about the lack of a deb package 
and so on...
If you own a Nokia 770 you probably think yourself as a Linux hotshot, so 
expect to deal with hard code.

Here's the source code for the editor (beware with the TAB's, you can mail me 
for the file fonts) 
----------------------------------------
#!/usr/bin/python
import gtk
import hildon

class MyEditor(hildon.Program):
        def __init__(self):
                hildon.Program.__init__(self)
                self.window = hildon.Window()
                self.window.connect("destroy", gtk.main_quit)
                self.window.connect("key-press-event", self.on_key_press)
                self.window.connect("window-state-event", 
self.on_window_state_change)
                self.add_window(self.window)
                
            file_menu = gtk.Menu()
            open_item = gtk.MenuItem("Open")
            save_item = gtk.MenuItem("Save")
            quit_item = gtk.MenuItem("Quit")
                
            file_menu.append(open_item)
            file_menu.append(save_item)
            file_menu.append(quit_item)

            open_item.connect_object("activate", self.menuitem_response, 
"file.open")
            save_item.connect_object("activate", self.menuitem_response, 
"file.save")
            quit_item.connect_object ("activate", self.menuitem_response, 
"file.quit")

            open_item.show()
            save_item.show()
            quit_item.show()

            self.window.set_menu(file_menu)
                self.Tbuffer= gtk.TextBuffer(table=None)        
                self.texto = gtk.TextView(buffer=self.Tbuffer)
                self.texto.set_wrap_mode(gtk.WRAP_WORD)
                self.AccentBuffer = ""
                self.window.set_title("Editor!")
                self.window.add(self.texto)
                self.window.show_all()
                self.window_on_fullscreen = False
                self.file_name = False
        def on_key_press(self, widget, event, *args):
                self.texto.set_editable(True)
                #whether or not accent
                if self.AccentBuffer == "":
                    if event.keyval == gtk.keysyms.asciitilde:
                        self.AccentBuffer = "~"
                        self.texto.set_editable(False)
                    elif event.keyval == gtk.keysyms.apostrophe:
                        self.AccentBuffer = "'"
                        self.texto.set_editable(False)
                    elif event.keyval == gtk.keysyms.asciicircum:
                        self.AccentBuffer = "^"
                        self.texto.set_editable(False)
                    elif event.keyval == gtk.keysyms.grave:
                        self.AccentBuffer = "`"
                        self.texto.set_editable(False)
                    elif event.keyval == gtk.keysyms.quotedbl:
                        self.AccentBuffer = '"'
                        self.texto.set_editable(False)
                #events for tilde
                elif self.AccentBuffer == "~":
                    self.AccentBuffer = ""
                    if event.keyval == gtk.keysyms.a:
                        self.Tbuffer.insert_at_cursor(u'\xe3')
                                self.texto.set_editable(False)
                    elif event.keyval == gtk.keysyms.A:
                        self.Tbuffer.insert_at_cursor(u'\xc3')
                                self.texto.set_editable(False)
                    elif event.keyval == gtk.keysyms.o:
                        self.Tbuffer.insert_at_cursor(u'\xf5')
                                self.texto.set_editable(False)
                    elif event.keyval == gtk.keysyms.O:
                        self.Tbuffer.insert_at_cursor(u'\xd5')
                                self.texto.set_editable(False)
                    else:
                        if event.keyval == gtk.keysyms.Shift_L or event.keyval 
== gtk.keysyms.Shift_R:
                            self.texto.set_editable(False)
                            self.AccentBuffer = "~"
                        else:
                            self.Tbuffer.insert_at_cursor('~')
                            self.texto.set_editable(False)
                #events for apostrophe
                elif self.AccentBuffer == "'":
                  self.AccentBuffer = ""
                  if event.keyval == gtk.keysyms.c:
                        self.Tbuffer.insert_at_cursor(u'\xe7')
                                self.texto.set_editable(False)
                        elif event.keyval == gtk.keysyms.C:
                        self.Tbuffer.insert_at_cursor(u'\xc7')
                                self.texto.set_editable(False)
                        elif event.keyval == gtk.keysyms.a:
                        self.Tbuffer.insert_at_cursor(u'\xe1')
                                self.texto.set_editable(False)
                        elif event.keyval == gtk.keysyms.A:
                        self.Tbuffer.insert_at_cursor(u'\xc1')
                                self.texto.set_editable(False)
                        elif event.keyval == gtk.keysyms.e:
                        self.Tbuffer.insert_at_cursor(u'\xe9')
                                self.texto.set_editable(False)
                        elif event.keyval == gtk.keysyms.E:
                        self.Tbuffer.insert_at_cursor(u'\xc9')
                                self.texto.set_editable(False)
                        elif event.keyval == gtk.keysyms.i:
                        self.Tbuffer.insert_at_cursor(u'\xed')
                                self.texto.set_editable(False)
                    elif event.keyval == gtk.keysyms.I:
                        self.Tbuffer.insert_at_cursor(u'\xcd')
                                self.texto.set_editable(False)
                    elif event.keyval == gtk.keysyms.o:
                        self.Tbuffer.insert_at_cursor(u'\xf3')
                        self.texto.set_editable(False)
                    elif event.keyval == gtk.keysyms.O:
                        self.Tbuffer.insert_at_cursor(u'\xd3')
                        self.texto.set_editable(False)
                    elif event.keyval == gtk.keysyms.u:
                        self.Tbuffer.insert_at_cursor(u'\xfa')
                        self.texto.set_editable(False)
                    elif event.keyval == gtk.keysyms.U:
                        self.Tbuffer.insert_at_cursor(u'\xda')
                        self.texto.set_editable(False)
                    else:
                        if event.keyval == gtk.keysyms.Shift_L or event.keyval 
== gtk.keysyms.Shift_R:
                            self.texto.set_editable(False)
                            self.AccentBuffer = "'"
                        else:
                            self.Tbuffer.insert_at_cursor("'")
                            self.texto.set_editable(False)
                #events for circum
                elif self.AccentBuffer == "^":
                    self.AccentBuffer = ""
                    if event.keyval == gtk.keysyms.a:
                        self.Tbuffer.insert_at_cursor(u'\xe2')
                        self.texto.set_editable(False)
                    elif event.keyval == gtk.keysyms.A:
                        self.Tbuffer.insert_at_cursor(u'\xc2')
                        self.texto.set_editable(False)
                    elif event.keyval == gtk.keysyms.e:
                        self.Tbuffer.insert_at_cursor(u'\xea')
                        self.texto.set_editable(False)
                    elif event.keyval == gtk.keysyms.E:
                        self.Tbuffer.insert_at_cursor(u'\xca')
                        self.texto.set_editable(False)
                    elif event.keyval == gtk.keysyms.o:
                        self.Tbuffer.insert_at_cursor(u'\xf4')
                        self.texto.set_editable(False)
                    elif event.keyval == gtk.keysyms.O:
                        self.Tbuffer.insert_at_cursor(u'\xd4')
                        self.texto.set_editable(False)
                    else:
                        if event.keyval == gtk.keysyms.Shift_L or event.keyval 
== gtk.keysyms.Shift_R:
                            self.texto.set_editable(False)
                            self.AccentBuffer = "^"
                        else:
                            self.Tbuffer.insert_at_cursor("^")
                            self.texto.set_editable(False)
                #events for grave
                elif self.AccentBuffer == "`":
                    self.AccentBuffer = ""
                    if event.keyval == gtk.keysyms.a:
                        self.Tbuffer.insert_at_cursor(u'\xe0')
                        self.texto.set_editable(False)
                    elif event.keyval == gtk.keysyms.A:
                        self.Tbuffer.insert_at_cursor(u'\xc0')
                        self.texto.set_editable(False)
                    else:
                        if event.keyval == gtk.keysyms.Shift_L or event.keyval 
== gtk.keysyms.Shift_R:
                            self.texto.set_editable(False)
                            self.AccentBuffer = "`"
                        else:
                            self.Tbuffer.insert_at_cursor("`")
                            self.texto.set_editable(False)
                #events for diaeresis
                elif self.AccentBuffer == '"':
                    self.AccentBuffer = ""
                    if event.keyval == gtk.keysyms.u:
                        self.Tbuffer.insert_at_cursor(u'\xfc')
                        self.texto.set_editable(False)
                    elif event.keyval == gtk.keysyms.U:
                        self.Tbuffer.insert_at_cursor(u'\xdc')
                        self.texto.set_editable(False)
                    else:
                        if event.keyval == gtk.keysyms.Shift_L or event.keyval 
== gtk.keysyms.Shift_R:
                            self.texto.set_editable(False)
                            self.AccentBuffer = '"'
                        else:
                            self.Tbuffer.insert_at_cursor('"')
                            self.texto.set_editable(False)
                #maximize key
                if event.keyval == gtk.keysyms.F6:
                        if self.window_in_fullscreen:
                                self.window.unfullscreen()
                        else:
                                self.window.fullscreen()
        def on_window_state_change(self, widget, event, *args):
            if event.new_window_state & gtk.gdk.WINDOW_STATE_FULLSCREEN:
                self.window_in_fullscreen = True
            else:
                self.window_in_fullscreen = False
        def menuitem_response(self, string):
                if string == "file.open":
                    self.filedialog = gtk.FileSelection("File selection")
                    self.filedialog.ok_button.connect("clicked", 
self.file_ok_sel)
                    self.filedialog.cancel_button.connect("clicked",lambda w: 
self.filedialog.destroy())
                    self.filedialog.show()
                elif string == "file.quit":
                    gtk.main_quit()
                elif string == "file.save":
                    if not self.file_name:
                        self.filedialog = gtk.FileSelection("Save as")
                        self.filedialog.ok_button.connect("clicked", 
self.file_ok_save)
                        self.filedialog.cancel_button.connect("clicked",lambda 
w: self.filedialog.destroy())
                        self.filedialog.set_filename("*.*")
                        self.filedialog.show()
                    else:
                        stream = file(self.file_name, 'a')
                        first = self.Tbuffer.get_start_iter()
                        last = self.Tbuffer.get_end_iter()
                        texto = self.Tbuffer.get_text(first, last, True)
                        stream.writelines(texto)
                        stream.close()
        def file_ok_sel(self, widget):
            stream = file(self.filedialog.get_filename(), 'rw')
            self.file_name = self.filedialog.get_filename()
            texto = stream.readlines()
            self.Tbuffer.set_text("")
            for x in texto:
                self.Tbuffer.insert_at_cursor(x)
            self.filedialog.destroy()
            stream.close()
        def file_ok_save(self, widget):
            stream = file(self.filedialog.get_filename(), 'a')
            self.file_name = self.filedialog.get_filename()
            first = self.Tbuffer.get_start_iter()
            last = self.Tbuffer.get_end_iter()
            texto = self.Tbuffer.get_text(first, last, True)
            stream.writelines(texto)
            self.filedialog.destroy()
            stream.close()
        def run(self):
                self.window.show_all()
                gtk.main()
if __name__=="__main__":
        app = MyEditor()
        app.run()

--------------------------------------------
Desktop

[Desktop Entry]
Version=1.0.0
Encoding=UTF-8
Name=Editor
Exec=/usr/bin/editor
Type=Application
X-Osso-Type=application/x-executable


Essa mensagem é destinada exclusivamente ao seu destinatário e pode conter 
informações confidenciais, protegidas por sigilo profissional ou cuja 
divulgação seja proibida por lei. O uso não autorizado de tais informações é 
proibido e está sujeito às penalidades cabíveis.

This message is intended exclusively for its addressee and may contain 
information that is confidential and protected by a professional privilege or 
whose disclosure is prohibited by law. Unauthorized use of such information is 
prohibited and subject to applicable penalties.
_______________________________________________
maemo-users mailing list
maemo-users@maemo.org
https://maemo.org/mailman/listinfo/maemo-users

Reply via email to