merge
This commit is contained in:
commit
f08c11bcb2
8 files changed
+45
-15
No files matched your search
@@ -1,4 +1,4 @@
|
||||
Version 2.0.0 - 2010-04-26
|
||||
Version 2.0.0 - 2011-04-26
|
||||
* Bug fixes (see mercurial logs for details)
|
||||
* Popup form dialog has 3 buttons (close, ok, new)
|
||||
* New UI layout
|
||||
|
||||
@@ -228,6 +228,12 @@ class Group(SignalEvent, list):
|
||||
self.append(record)
|
||||
else:
|
||||
self.insert(position, record)
|
||||
for record_rm in self.record_removed:
|
||||
if record_rm.id == record.id:
|
||||
self.record_removed.remove(record)
|
||||
for record_del in self.record_deleted:
|
||||
if record_del.id == record.id:
|
||||
self.record_deleted.remove(record)
|
||||
self.current_idx = position
|
||||
if modified:
|
||||
record.modified_fields.setdefault('id')
|
||||
|
||||
@@ -43,6 +43,12 @@ class ViewForm(ParserView):
|
||||
viewport.add(scroll)
|
||||
if isinstance(self.screen.window, gtk.Dialog):
|
||||
width, height = self.widget.size_request()
|
||||
if self.screen.window:
|
||||
parent = self.screen.window.get_transient_for()
|
||||
if parent:
|
||||
parent_width, parent_height = parent.get_size()
|
||||
width = min(parent_width - 40, width)
|
||||
height = min(parent_height - 80, height)
|
||||
vbox.set_size_request(width or -1, height or -1)
|
||||
vbox.pack_start(viewport, expand=True, fill=True)
|
||||
|
||||
|
||||
@@ -36,7 +36,7 @@ class Many2One(WidgetInterface):
|
||||
self.wid_text.connect('focus-out-event', lambda x, y: self._focus_out())
|
||||
self.wid_text.connect_after('changed', self.sig_changed)
|
||||
self.changed = True
|
||||
self.wid_text.connect_after('activate', self.sig_activate)
|
||||
self.wid_text.connect('activate', self.sig_activate)
|
||||
self.wid_text.connect_after('focus-out-event', self.sig_activate)
|
||||
self.focus_out = True
|
||||
self.widget.pack_start(self.wid_text, expand=True, fill=True)
|
||||
@@ -93,6 +93,8 @@ class Many2One(WidgetInterface):
|
||||
|
||||
self.focus_out = False
|
||||
if not value:
|
||||
if not key_press and not event:
|
||||
widget.emit_stop_by_name('activate')
|
||||
if not self._readonly and (self.wid_text.get_text() or \
|
||||
(self.field.get_state_attrs(
|
||||
self.record)['required']) and key_press):
|
||||
|
||||
@@ -44,3 +44,6 @@ class ViewGraph(ParserView):
|
||||
|
||||
def set_cursor(self, new=False, reset_view=True):
|
||||
pass
|
||||
|
||||
def get_fields(self):
|
||||
return []
|
||||
@@ -84,9 +84,18 @@ class AdaptModelGroup(gtk.GenericTreeModel):
|
||||
group = record_pos.group
|
||||
pos = group.index(record_pos) + offset
|
||||
if group is not record.group:
|
||||
prev_group = record.group
|
||||
record.group.remove(record, remove=True, force_remove=True)
|
||||
# Don't remove record from previous group
|
||||
# as the new parent will change the parent
|
||||
# This prevents concurrency conflict
|
||||
record.group.record_removed.remove(record)
|
||||
group.add(record)
|
||||
record.modified_fields.setdefault(record.parent_name or 'id')
|
||||
if not record.parent_name:
|
||||
record.modified_fields.setdefault(prev_group.parent_name)
|
||||
record.value[prev_group.parent_name] = False
|
||||
else:
|
||||
record.modified_fields.setdefault(record.parent_name)
|
||||
group.move(record, pos)
|
||||
|
||||
def move_before(self, record, path):
|
||||
@@ -740,6 +749,8 @@ class ViewList(ParserView):
|
||||
if model and iter_:
|
||||
record = model.get_value(iter_, 0)
|
||||
self.screen.current_record = record
|
||||
else:
|
||||
self.screen.current_record = None
|
||||
|
||||
elif tree_sel.get_mode() == gtk.SELECTION_MULTIPLE:
|
||||
model, paths = tree_sel.get_selected_rows()
|
||||
@@ -747,6 +758,8 @@ class ViewList(ParserView):
|
||||
iter_ = model.get_iter(paths[0])
|
||||
record = model.get_value(iter_, 0)
|
||||
self.screen.current_record = record
|
||||
else:
|
||||
self.screen.current_record = None
|
||||
|
||||
if hasattr(self.widget_tree, 'editable') \
|
||||
and self.widget_tree.editable \
|
||||
|
||||
+8
-8
@@ -177,15 +177,15 @@ class PySocket:
|
||||
+ (gzip_p and "1" or "0") + msg
|
||||
size = len(msg)
|
||||
|
||||
totalsent = 0
|
||||
while totalsent < size:
|
||||
if self.ssl:
|
||||
if self.ssl:
|
||||
totalsent = 0
|
||||
while totalsent < size:
|
||||
sent = self.ssl_sock.write(msg[totalsent:])
|
||||
else:
|
||||
sent = self.sock.send(msg[totalsent:])
|
||||
if sent == 0:
|
||||
raise RuntimeError, "socket connection broken"
|
||||
totalsent = totalsent + sent
|
||||
if sent == 0:
|
||||
raise RuntimeError, "socket connection broken"
|
||||
totalsent = totalsent + sent
|
||||
else:
|
||||
self.sock.sendall(msg)
|
||||
|
||||
def receive(self):
|
||||
buf = self.buffer
|
||||
|
||||
@@ -103,10 +103,10 @@ class Dialog(object):
|
||||
width, height = self.screen.screen_container.size_get()
|
||||
parent_width, parent_height = parent.get_size()
|
||||
dia_width, dia_height = self.dia.get_size()
|
||||
self.widget_width = max(min(parent_width - 20,
|
||||
max(dia_width, width + 20)), size[0])
|
||||
self.widget_height = max(min(parent_height - 60,
|
||||
height + dia_height + 20), size[1])
|
||||
self.widget_width = min(parent_width - 20,
|
||||
max(dia_width, width + 20, size[0]))
|
||||
self.widget_height = min(parent_height - 60,
|
||||
max(height + dia_height + 20, size[1]))
|
||||
self.dia.set_default_size(self.widget_width,
|
||||
self.widget_height)
|
||||
self.screen.widget.show()
|
||||
|
||||
Reference in new issue
Block a user