This commit is contained in:
Bertrand Chenal
2008-10-29 16:16:57 +01:00
6 changed files with 94 additions and 58 deletions
+7 -3
View File
@@ -12,7 +12,7 @@ import logging
import version
import config
from config import CONFIG, CURRENT_DIR, PREFIX, PIXMAPS_DIR, TRYTON_ICON
from config import CONFIG, CURRENT_DIR, PREFIX, PIXMAPS_DIR, TRYTON_ICON, get_home_dir
import translate
import gui
import traceback
@@ -25,7 +25,6 @@ class TrytonClient(object):
def __init__(self):
logging.basicConfig()
translate.setlang()
translate.setlang(CONFIG['client.lang'])
for logger in CONFIG['logging.logger'].split(','):
@@ -93,7 +92,12 @@ class TrytonClient(object):
#except ImportError:
# pass
gtk.main()
try:
gtk.main()
except KeyboardInterrupt:
CONFIG.save()
if hasattr(gtk, 'accel_map_save'):
gtk.accel_map_save(os.path.join(get_home_dir(), '.trytonsc'))
if __name__ == "__main__":
CLIENT = TrytonClient()
+5 -2
View File
@@ -429,8 +429,11 @@ def send_bugtracker(msg, parent):
win.vbox.pack_start(hbox)
win.show_all()
entry_password.grab_focus()
entry_user.set_text(rpc._USERNAME)
if rpc._USERNAME:
entry_user.set_text(rpc._USERNAME)
entry_password.grab_focus()
else:
entry_user.grab_focus()
response = win.run()
parent.present()
+2 -1
View File
@@ -7,6 +7,7 @@ import gettext
from version import VERSION
import logging
import sys
import locale
_ = gettext.gettext
@@ -74,7 +75,7 @@ class ConfigManager(object):
'client.form_tab_orientation': 90,
'client.tree_width': True,
'client.spellcheck': False,
'client.lang': 'en_US',
'client.lang': locale.getdefaultlocale()[0],
'client.actions': {
'odt': {0: find_path(['ooffice', 'ooffice2'], '%s'),
1: find_path(['ooffice', 'ooffice2'], '-p %s')},
+75 -43
View File
@@ -5,7 +5,7 @@ import urlparse
import gobject
import gtk
import tryton.rpc as rpc
from tryton.config import CONFIG, TRYTON_ICON, PIXMAPS_DIR, DATA_DIR
from tryton.config import CONFIG, TRYTON_ICON, PIXMAPS_DIR, DATA_DIR, get_home_dir
import tryton.common as common
from tryton.action import Action
from tryton.gui.window import Window
@@ -45,6 +45,48 @@ class Main(object):
self.accel_group = gtk.AccelGroup()
self.window.add_accel_group(self.accel_group)
gtk.accel_map_add_entry('<tryton>/File/Connect', gtk.keysyms.O,
gtk.gdk.CONTROL_MASK)
gtk.accel_map_add_entry('<tryton>/File/Quit', gtk.keysyms.Q,
gtk.gdk.CONTROL_MASK)
gtk.accel_map_add_entry('<tryton>/Form/New', gtk.keysyms.N,
gtk.gdk.CONTROL_MASK)
gtk.accel_map_add_entry('<tryton>/Form/Save', gtk.keysyms.S,
gtk.gdk.CONTROL_MASK)
gtk.accel_map_add_entry('<tryton>/Form/Duplicate', gtk.keysyms.D,
gtk.gdk.CONTROL_MASK|gtk.gdk.SHIFT_MASK)
gtk.accel_map_add_entry('<tryton>/Form/Delete', gtk.keysyms.D,
gtk.gdk.CONTROL_MASK)
gtk.accel_map_add_entry('<tryton>/Form/Find', gtk.keysyms.F,
gtk.gdk.CONTROL_MASK)
gtk.accel_map_add_entry('<tryton>/Form/Next', gtk.keysyms.Page_Down,
0)
gtk.accel_map_add_entry('<tryton>/Form/Previous', gtk.keysyms.Page_Up,
0)
gtk.accel_map_add_entry('<tryton>/Form/Switch View', gtk.keysyms.L,
gtk.gdk.CONTROL_MASK)
gtk.accel_map_add_entry('<tryton>/Form/Menu', gtk.keysyms.T,
gtk.gdk.CONTROL_MASK)
gtk.accel_map_add_entry('<tryton>/Form/Home', gtk.keysyms.H,
gtk.gdk.CONTROL_MASK)
gtk.accel_map_add_entry('<tryton>/Form/Close', gtk.keysyms.W,
gtk.gdk.CONTROL_MASK)
gtk.accel_map_add_entry('<tryton>/Form/Previous Tab', gtk.keysyms.Page_Up,
gtk.gdk.CONTROL_MASK)
gtk.accel_map_add_entry('<tryton>/Form/Next Tab', gtk.keysyms.Page_Down,
gtk.gdk.CONTROL_MASK)
gtk.accel_map_add_entry('<tryton>/Form/Goto', gtk.keysyms.G,
gtk.gdk.CONTROL_MASK)
gtk.accel_map_add_entry('<tryton>/Form/Reload', gtk.keysyms.R,
gtk.gdk.CONTROL_MASK)
gtk.accel_map_add_entry('<tryton>/Form/Actions', gtk.keysyms.E,
gtk.gdk.CONTROL_MASK)
gtk.accel_map_add_entry('<tryton>/Form/Print', gtk.keysyms.P,
gtk.gdk.CONTROL_MASK)
if hasattr(gtk, 'accel_map_load'):
gtk.accel_map_load(os.path.join(get_home_dir(), '.trytonsc'))
self.tooltips = gtk.Tooltips()
toolbar = gtk.Toolbar()
@@ -63,6 +105,8 @@ class Main(object):
menu_file = self._set_menu_file()
menuitem_file.set_submenu(menu_file)
menu_file.set_accel_group(self.accel_group)
menu_file.set_accel_path('<tryton>/File')
menuitem_user = gtk.MenuItem(_('_User'))
self.menuitem_user = menuitem_user
@@ -71,6 +115,7 @@ class Main(object):
menu_user = self._set_menu_user()
menuitem_user.set_submenu(menu_user)
menuitem_user.set_accel_path('<tryton>/User')
menuitem_form = gtk.MenuItem(_('For_m'))
self.menuitem_form = menuitem_form
@@ -79,12 +124,15 @@ class Main(object):
menu_form = self._set_menu_form()
menuitem_form.set_submenu(menu_form)
menu_form.set_accel_group(self.accel_group)
menu_form.set_accel_path('<tryton>/Form')
menuitem_options = gtk.MenuItem(_('_Options'))
menubar.add(menuitem_options)
menu_options = self._set_menu_options()
menuitem_options.set_submenu(menu_options)
menuitem_options.set_accel_path('<tryton>/Options')
menuitem_plugins = gtk.MenuItem(_('_Plugins'))
self.menuitem_plugins = menuitem_plugins
@@ -93,17 +141,20 @@ class Main(object):
menu_plugins = self._set_menu_plugins()
menuitem_plugins.set_submenu(menu_plugins)
menuitem_plugins.set_accel_path('<tryton>/Plugins')
menuitem_shortcut = gtk.MenuItem(_('_Shortcuts'))
self.menuitem_shortcut = menuitem_shortcut
self.menuitem_shortcut.set_sensitive(False)
menubar.add(menuitem_shortcut)
menuitem_shortcut.set_accel_path('<tryton>/Shortcuts')
menuitem_help = gtk.MenuItem(_('_Help'))
menubar.add(menuitem_help)
menu_help = self._set_menu_help()
menuitem_help.set_submenu(menu_help)
menuitem_help.set_accel_path('<tryton>/Help')
vbox.pack_start(toolbar, False, True)
@@ -199,9 +250,8 @@ class Main(object):
image = gtk.Image()
image.set_from_stock('tryton-connect', gtk.ICON_SIZE_MENU)
imagemenuitem_connect.set_image(image)
imagemenuitem_connect.add_accelerator('activate', self.accel_group,
gtk.keysyms.O, gtk.gdk.CONTROL_MASK, gtk.ACCEL_VISIBLE)
imagemenuitem_connect.connect('activate', self.sig_login)
imagemenuitem_connect.set_accel_path('<tryton>/File/Connect')
menu_file.add(imagemenuitem_connect)
imagemenuitem_disconnect = gtk.ImageMenuItem(_('_Disconnect'))
@@ -256,9 +306,8 @@ class Main(object):
image = gtk.Image()
image.set_from_stock('tryton-log-out', gtk.ICON_SIZE_MENU)
imagemenuitem_close.set_image(image)
imagemenuitem_close.add_accelerator('activate', self.accel_group,
gtk.keysyms.Q, gtk.gdk.CONTROL_MASK, gtk.ACCEL_VISIBLE)
imagemenuitem_close.connect('activate', self.sig_close)
imagemenuitem_close.set_accel_path('<tryton>/File/Quit')
menu_file.add(imagemenuitem_close)
return menu_file
@@ -297,37 +346,32 @@ class Main(object):
image = gtk.Image()
image.set_from_stock('tryton-new', gtk.ICON_SIZE_MENU)
imagemenuitem_new.set_image(image)
imagemenuitem_new.add_accelerator('activate', self.accel_group,
gtk.keysyms.N, gtk.gdk.CONTROL_MASK, gtk.ACCEL_VISIBLE)
imagemenuitem_new.connect('activate', self._sig_child_call, 'but_new')
imagemenuitem_new.set_accel_path('<tryton>/Form/New')
menu_form.add(imagemenuitem_new)
imagemenuitem_save = gtk.ImageMenuItem(_('_Save'), self.accel_group)
image = gtk.Image()
image.set_from_stock('tryton-save', gtk.ICON_SIZE_MENU)
imagemenuitem_save.set_image(image)
imagemenuitem_save.add_accelerator('activate', self.accel_group,
gtk.keysyms.S, gtk.gdk.CONTROL_MASK, gtk.ACCEL_VISIBLE)
imagemenuitem_save.connect('activate', self._sig_child_call, 'but_save')
imagemenuitem_save.set_accel_path('<tryton>/Form/Save')
menu_form.add(imagemenuitem_save)
imagemenuitem_copy = gtk.ImageMenuItem(_('_Duplicate'), self.accel_group)
image = gtk.Image()
image.set_from_stock('tryton-copy', gtk.ICON_SIZE_MENU)
imagemenuitem_copy.set_image(image)
imagemenuitem_copy.add_accelerator('activate', self.accel_group,
gtk.keysyms.D, gtk.gdk.CONTROL_MASK|gtk.gdk.SHIFT_MASK,
gtk.ACCEL_VISIBLE)
imagemenuitem_copy.connect('activate', self._sig_child_call, 'but_copy')
imagemenuitem_copy.set_accel_path('<tryton>/Form/Duplicate')
menu_form.add(imagemenuitem_copy)
imagemenuitem_delete = gtk.ImageMenuItem(_('_Delete...'), self.accel_group)
image = gtk.Image()
image.set_from_stock('tryton-delete', gtk.ICON_SIZE_MENU)
imagemenuitem_delete.set_image(image)
imagemenuitem_delete.add_accelerator('activate', self.accel_group,
gtk.keysyms.D, gtk.gdk.CONTROL_MASK, gtk.ACCEL_VISIBLE)
imagemenuitem_delete.connect('activate', self._sig_child_call, 'but_remove')
imagemenuitem_delete.set_accel_path('<tryton>/Form/Delete')
menu_form.add(imagemenuitem_delete)
menu_form.add(gtk.SeparatorMenuItem())
@@ -336,45 +380,40 @@ class Main(object):
image = gtk.Image()
image.set_from_stock('tryton-find', gtk.ICON_SIZE_MENU)
imagemenuitem_search.set_image(image)
imagemenuitem_search.add_accelerator('activate', self.accel_group,
gtk.keysyms.F, gtk.gdk.CONTROL_MASK, gtk.ACCEL_VISIBLE)
imagemenuitem_search.connect('activate', self._sig_child_call, 'but_search')
imagemenuitem_search.set_accel_path('<tryton>/Form/Find')
menu_form.add(imagemenuitem_search)
imagemenuitem_next = gtk.ImageMenuItem(_('_Next'), self.accel_group)
image = gtk.Image()
image.set_from_stock('tryton-go-next', gtk.ICON_SIZE_MENU)
imagemenuitem_next.set_image(image)
imagemenuitem_next.add_accelerator('activate', self.accel_group,
gtk.keysyms.Page_Down, 0, gtk.ACCEL_VISIBLE)
imagemenuitem_next.connect('activate', self._sig_child_call, 'but_next')
imagemenuitem_next.set_accel_path('<tryton>/Form/Next')
menu_form.add(imagemenuitem_next)
imagemenuitem_previous = gtk.ImageMenuItem(_('_Previous'), self.accel_group)
image = gtk.Image()
image.set_from_stock('tryton-go-previous', gtk.ICON_SIZE_MENU)
imagemenuitem_previous.set_image(image)
imagemenuitem_previous.add_accelerator('activate', self.accel_group,
gtk.keysyms.Page_Up, 0, gtk.ACCEL_VISIBLE)
imagemenuitem_previous.connect('activate', self._sig_child_call, 'but_previous')
imagemenuitem_previous.set_accel_path('<tryton>/Form/Previous')
menu_form.add(imagemenuitem_previous)
imagemenuitem_switch = gtk.ImageMenuItem(_('_Switch View'), self.accel_group)
image = gtk.Image()
image.set_from_stock('tryton-fullscreen', gtk.ICON_SIZE_MENU)
imagemenuitem_switch.set_image(image)
imagemenuitem_switch.add_accelerator('activate', self.accel_group,
gtk.keysyms.L, gtk.gdk.CONTROL_MASK, gtk.ACCEL_VISIBLE)
imagemenuitem_switch.connect('activate', self._sig_child_call, 'but_switch')
imagemenuitem_switch.set_accel_path('<tryton>/Form/Switch View')
menu_form.add(imagemenuitem_switch)
imagemenuitem_menu = gtk.ImageMenuItem(_('_Menu'), self.accel_group)
image = gtk.Image()
image.set_from_stock('tryton-start-here', gtk.ICON_SIZE_MENU)
imagemenuitem_menu.set_image(image)
imagemenuitem_menu.add_accelerator('activate', self.accel_group,
gtk.keysyms.T, gtk.gdk.CONTROL_MASK, gtk.ACCEL_VISIBLE)
imagemenuitem_menu.connect('activate', self.sig_win_menu)
imagemenuitem_menu.set_accel_path('<tryton>/Form/Menu')
menu_form.add(imagemenuitem_menu)
menu_form.add(gtk.SeparatorMenuItem())
@@ -383,30 +422,26 @@ class Main(object):
image = gtk.Image()
image.set_from_stock('tryton-go-home', gtk.ICON_SIZE_MENU)
imagemenuitem_home.set_image(image)
imagemenuitem_home.add_accelerator('activate', self.accel_group,
gtk.keysyms.H, gtk.gdk.CONTROL_MASK, gtk.ACCEL_VISIBLE)
imagemenuitem_home.connect('activate', self.sig_home_new)
imagemenuitem_home.set_accel_path('<tryton>/Form/Home')
menu_form.add(imagemenuitem_home)
imagemenuitem_close = gtk.ImageMenuItem(_('_Close'), self.accel_group)
image = gtk.Image()
image.set_from_stock('tryton-close', gtk.ICON_SIZE_MENU)
imagemenuitem_close.set_image(image)
imagemenuitem_close.add_accelerator('activate', self.accel_group,
gtk.keysyms.W, gtk.gdk.CONTROL_MASK, gtk.ACCEL_VISIBLE)
imagemenuitem_close.connect('activate', self.sig_win_close)
imagemenuitem_close.set_accel_path('<tryton>/Form/Close')
menu_form.add(imagemenuitem_close)
imagemenuitem_win_prev = gtk.ImageMenuItem(_('_Previous Tab'), self.accel_group)
imagemenuitem_win_prev.add_accelerator('activate', self.accel_group,
gtk.keysyms.Page_Up, gtk.gdk.CONTROL_MASK, gtk.ACCEL_VISIBLE)
imagemenuitem_win_prev.connect('activate', self.sig_win_prev)
imagemenuitem_win_prev.set_accel_path('<tryton>/Form/Previous Tab')
menu_form.add(imagemenuitem_win_prev)
imagemenuitem_win_next = gtk.ImageMenuItem(_('_Next Tab'), self.accel_group)
imagemenuitem_win_next.add_accelerator('activate', self.accel_group,
gtk.keysyms.Page_Down, gtk.gdk.CONTROL_MASK, gtk.ACCEL_VISIBLE)
imagemenuitem_win_next.connect('activate', self.sig_win_next)
imagemenuitem_win_next.set_accel_path('<tryton>/Form/Next Tab')
menu_form.add(imagemenuitem_win_next)
menu_form.add(gtk.SeparatorMenuItem())
@@ -417,10 +452,9 @@ class Main(object):
imagemenuitem_goto_id = gtk.ImageMenuItem(_('_Go to Record ID...'),
self.accel_group)
imagemenuitem_win_next.add_accelerator('activate', self.accel_group,
gtk.keysyms.G, gtk.gdk.CONTROL_MASK, gtk.ACCEL_VISIBLE)
imagemenuitem_goto_id.connect('activate', self._sig_child_call,
'but_goto_id')
imagemenuitem_goto_id.set_accel_path('<tryton>/Form/Goto')
menu_form.add(imagemenuitem_goto_id)
menu_form.add(gtk.SeparatorMenuItem())
@@ -429,10 +463,9 @@ class Main(object):
image = gtk.Image()
image.set_from_stock('tryton-refresh', gtk.ICON_SIZE_MENU)
imagemenuitem_reload.set_image(image)
imagemenuitem_reload.add_accelerator('activate', self.accel_group,
gtk.keysyms.R, gtk.gdk.CONTROL_MASK, gtk.ACCEL_VISIBLE)
imagemenuitem_reload.connect('activate', self._sig_child_call,
'but_reload')
imagemenuitem_reload.set_accel_path('<tryton>/Form/Reload')
menu_form.add(imagemenuitem_reload)
menu_form.add(gtk.SeparatorMenuItem())
@@ -441,20 +474,18 @@ class Main(object):
image = gtk.Image()
image.set_from_stock('tryton-executable', gtk.ICON_SIZE_MENU)
imagemenuitem_action.set_image(image)
imagemenuitem_action.add_accelerator('activate', self.accel_group,
gtk.keysyms.E, gtk.gdk.CONTROL_MASK, gtk.ACCEL_VISIBLE)
imagemenuitem_action.connect('activate', self._sig_child_call,
'but_action')
imagemenuitem_action.set_accel_path('<tryton>/Form/Actions')
menu_form.add(imagemenuitem_action)
imagemenuitem_print = gtk.ImageMenuItem(_('_Print...'), self.accel_group)
image = gtk.Image()
image.set_from_stock('tryton-print', gtk.ICON_SIZE_MENU)
imagemenuitem_print.set_image(image)
imagemenuitem_print.add_accelerator('activate', self.accel_group,
gtk.keysyms.P, gtk.gdk.CONTROL_MASK, gtk.ACCEL_VISIBLE)
imagemenuitem_print.connect('activate', self._sig_child_call,
'but_print')
imagemenuitem_print.set_accel_path('<tryton>/Form/Print')
menu_form.add(imagemenuitem_print)
menu_form.add(gtk.SeparatorMenuItem())
@@ -1086,16 +1117,17 @@ class Main(object):
tryton.plugin.execute(datas, self.window)
@staticmethod
def sig_quit(widget):
def sig_quit(widget=None):
CONFIG.save()
if hasattr(gtk, 'accel_map_save'):
gtk.accel_map_save(os.path.join(get_home_dir(), '.trytonsc'))
gtk.main_quit()
def sig_close(self, widget):
if common.sur(_("Do you really want to quit?"), parent=self.window):
if not self.sig_logout(widget):
return False
CONFIG.save()
gtk.main_quit()
Main.sig_quit()
def sig_delete(self, widget, event):
if common.sur(_("Do you really want to quit?"), parent=self.window):
+5 -1
View File
@@ -1,7 +1,11 @@
#This file is part of Tryton. The COPYRIGHT file at the top level of this repository contains the full copyright notices and license terms.
#This file is part of Tryton. The COPYRIGHT file at the top level of
#this repository contains the full copyright notices and license terms.
import common
import os
import imp
import gettext
_ = gettext.gettext
PLUGINS_PATH = os.path.join(os.path.dirname(__file__), 'plugins')
MODULES = []
-8
View File
@@ -179,14 +179,6 @@ def setlang(lang=None, locale_dict=None):
except:
logging.getLogger('translate').info(
_('Unable to set locale %s') % lang2 + '.' + encoding)
else:
try:
if os.name == 'nt':
os.environ['LANG'] = ''
locale.setlocale(locale.LC_ALL, '')
except:
logging.getLogger('translate').warn(
_('Unable to unset locale'))
if os.path.isdir(locale_dir):
gettext.bindtextdomain(PACKAGE, locale_dir)