Fix place selecton on LDS ords

svn: r6273
This commit is contained in:
Don Allingham 2006-04-05 21:30:27 +00:00
parent a6acc06720
commit 455bedf69f
4 changed files with 213 additions and 195 deletions

View File

@ -1,4 +1,7 @@
2006-04-05 Don Allingham <don@gramps-project.org> 2006-04-05 Don Allingham <don@gramps-project.org>
* src/Editors/_EditLdsOrd.py: save place information
* src/GrampsWidgets.py: select default value in menu
* src/BaseDoc.py: pylint
* src/DisplayTabs.py: handle temple not set for LdsOrd * src/DisplayTabs.py: handle temple not set for LdsOrd
* src/RelLib/_LdsOrd.py: unserialize returns self * src/RelLib/_LdsOrd.py: unserialize returns self
* src/RelLib/_LdsOrdBase.py: variable name change * src/RelLib/_LdsOrdBase.py: variable name change

View File

@ -91,9 +91,9 @@ log = logging.getLogger(".BaseDoc")
# #
#------------------------------------------------------------------------- #-------------------------------------------------------------------------
try: try:
from xml.sax import make_parser,handler,SAXParseException from xml.sax import make_parser, handler, SAXParseException
except: except:
from _xmlplus.sax import make_parser,handler,SAXParseException from _xmlplus.sax import make_parser, handler, SAXParseException
#------------------------------------------------------------------------- #-------------------------------------------------------------------------
# #
@ -140,10 +140,10 @@ def cnv2color(text):
converts a hex value in the form of #XXXXXX into a tuple of integers converts a hex value in the form of #XXXXXX into a tuple of integers
representing the RGB values representing the RGB values
""" """
c0 = int(text[1:3],16) c0 = int(text[1:3], 16)
c1 = int(text[3:5],16) c1 = int(text[3:5], 16)
c2 = int(text[5:7],16) c2 = int(text[5:7], 16)
return (c0,c1,c2) return (c0, c1, c2)
#------------------------------------------------------------------------ #------------------------------------------------------------------------
# #
@ -155,7 +155,7 @@ class PaperStyle:
Defines the dimensions of a sheet of paper. All dimensions are in Defines the dimensions of a sheet of paper. All dimensions are in
centimeters. centimeters.
""" """
def __init__(self,name,height,width): def __init__(self, name, height, width):
""" """
Creates a new paper style with. Creates a new paper style with.
@ -176,7 +176,7 @@ class PaperStyle:
"Returns the page orientation (PAPER_PORTRAIT or PAPER_LANDSCAPE)" "Returns the page orientation (PAPER_PORTRAIT or PAPER_LANDSCAPE)"
return self.orientation return self.orientation
def set_orientation(self,val): def set_orientation(self, val):
""" """
Sets the page orientation. Sets the page orientation.
@ -189,7 +189,7 @@ class PaperStyle:
"Returns the page height in cm" "Returns the page height in cm"
return self.height return self.height
def set_height(self,height): def set_height(self, height):
"Sets the page height in cm" "Sets the page height in cm"
self.height = height self.height = height
@ -197,7 +197,7 @@ class PaperStyle:
"Returns the page width in cm" "Returns the page width in cm"
return self.width return self.width
def set_width(self,width): def set_width(self, width):
"Sets the page width in cm" "Sets the page width in cm"
self.width = width self.width = width
@ -245,10 +245,11 @@ class FontStyle:
self.size = 12 self.size = 12
self.italic = 0 self.italic = 0
self.bold = 0 self.bold = 0
self.color = (0,0,0) self.color = (0, 0, 0)
self.under = 0 self.under = 0
def set(self,face=None,size=None,italic=None,bold=None,underline=None,color=None): def set(self, face=None, size=None, italic=None, bold=None,
underline=None, color=None):
""" """
Sets font characteristics. Sets font characteristics.
@ -274,7 +275,7 @@ class FontStyle:
if color != None: if color != None:
self.set_color(color) self.set_color(color)
def set_italic(self,val): def set_italic(self, val):
"0 disables italics, 1 enables italics" "0 disables italics, 1 enables italics"
self.italic = val self.italic = val
@ -282,7 +283,7 @@ class FontStyle:
"1 indicates use italics" "1 indicates use italics"
return self.italic return self.italic
def set_bold(self,val): def set_bold(self, val):
"0 disables bold face, 1 enables bold face" "0 disables bold face, 1 enables bold face"
self.bold = val self.bold = val
@ -290,7 +291,7 @@ class FontStyle:
"1 indicates use bold face" "1 indicates use bold face"
return self.bold return self.bold
def set_color(self,val): def set_color(self, val):
"sets the color using an RGB color tuple" "sets the color using an RGB color tuple"
self.color = val self.color = val
@ -298,7 +299,7 @@ class FontStyle:
"Returns an RGB color tuple" "Returns an RGB color tuple"
return self.color return self.color
def set_size(self,val): def set_size(self, val):
"sets font size in points" "sets font size in points"
self.size = val self.size = val
@ -306,7 +307,7 @@ class FontStyle:
"returns font size in points" "returns font size in points"
return self.size return self.size
def set_type_face(self,val): def set_type_face(self, val):
"sets the font face type" "sets the font face type"
self.face = val self.face = val
@ -314,7 +315,7 @@ class FontStyle:
"returns the font face type" "returns the font face type"
return self.face return self.face
def set_underline(self,val): def set_underline(self, val):
"1 enables underlining" "1 enables underlining"
self.under = val self.under = val
@ -334,7 +335,7 @@ class TableStyle:
number of columns, and the width of each column as a percentage of the number of columns, and the width of each column as a percentage of the
width of the table. width of the table.
""" """
def __init__(self,obj=None): def __init__(self, obj=None):
""" """
Creates a new TableStyle object, with the values initialized to Creates a new TableStyle object, with the values initialized to
empty, with allocating space for up to 100 columns. empty, with allocating space for up to 100 columns.
@ -351,7 +352,7 @@ class TableStyle:
self.columns = 0 self.columns = 0
self.colwid = [ 0 ] * 100 self.colwid = [ 0 ] * 100
def set_width(self,width): def set_width(self, width):
""" """
Sets the width of the table in terms of percent of the available Sets the width of the table in terms of percent of the available
width width
@ -364,7 +365,7 @@ class TableStyle:
""" """
return self.width return self.width
def set_columns(self,columns): def set_columns(self, columns):
""" """
Sets the number of columns. Sets the number of columns.
@ -378,16 +379,16 @@ class TableStyle:
""" """
return self.columns return self.columns
def set_column_widths(self, list): def set_column_widths(self, clist):
""" """
Sets the width of all the columns at once, taking the percentages Sets the width of all the columns at once, taking the percentages
from the passed list. from the passed list.
""" """
self.columns = len(list) self.columns = len(clist)
for i in range(self.columns): for i in range(self.columns):
self.colwid[i] = list[i] self.colwid[i] = clist[i]
def set_column_width(self,index,width): def set_column_width(self, index, width):
""" """
Sets the width of a specified column to the specified width. Sets the width of a specified column to the specified width.
@ -396,7 +397,7 @@ class TableStyle:
""" """
self.colwid[index] = width self.colwid[index] = width
def get_column_width(self,index): def get_column_width(self, index):
""" """
Returns the column width of the specified column as a percentage of Returns the column width of the specified column as a percentage of
the entire table width. the entire table width.
@ -415,7 +416,7 @@ class TableCellStyle:
Defines the style of a particular table cell. Characteristics are: Defines the style of a particular table cell. Characteristics are:
right border, left border, top border, bottom border, and padding. right border, left border, top border, bottom border, and padding.
""" """
def __init__(self,obj=None): def __init__(self, obj=None):
""" """
Creates a new TableCellStyle instance. Creates a new TableCellStyle instance.
@ -437,11 +438,11 @@ class TableCellStyle:
self.padding = 0 self.padding = 0
self.longlist = 0 self.longlist = 0
def set_padding(self,val): def set_padding(self, val):
"Returns the cell padding in centimeters" "Returns the cell padding in centimeters"
self.padding = val self.padding = val
def set_right_border(self,val): def set_right_border(self, val):
""" """
Defines if a right border in used Defines if a right border in used
@ -449,7 +450,7 @@ class TableCellStyle:
""" """
self.rborder = val self.rborder = val
def set_left_border(self,val): def set_left_border(self, val):
""" """
Defines if a left border in used Defines if a left border in used
@ -457,7 +458,7 @@ class TableCellStyle:
""" """
self.lborder = val self.lborder = val
def set_top_border(self,val): def set_top_border(self, val):
""" """
Defines if a top border in used Defines if a top border in used
@ -465,7 +466,7 @@ class TableCellStyle:
""" """
self.tborder = val self.tborder = val
def set_bottom_border(self,val): def set_bottom_border(self, val):
""" """
Defines if a bottom border in used Defines if a bottom border in used
@ -473,7 +474,7 @@ class TableCellStyle:
""" """
self.bborder = val self.bborder = val
def set_longlist(self,val): def set_longlist(self, val):
self.longlist = val self.longlist = val
def get_padding(self): def get_padding(self):
@ -512,7 +513,7 @@ class ParagraphStyle:
right border, left border, padding, and background color. right border, left border, padding, and background color.
""" """
def __init__(self,source=None): def __init__(self, source=None):
""" """
@param source: if not None, then the ParagraphStyle is created @param source: if not None, then the ParagraphStyle is created
using the values of the source instead of the default values. using the values of the source instead of the default values.
@ -550,16 +551,16 @@ class ParagraphStyle:
self.bgcolor = (255,255,255) self.bgcolor = (255,255,255)
self.description = "" self.description = ""
def set_description(self,text): def set_description(self, text):
self.description = text self.description = text
def get_description(self): def get_description(self):
return self.description return self.description
def set(self,rmargin=None,lmargin=None,first_indent=None, def set(self, rmargin=None, lmargin=None, first_indent=None,
tmargin=None,bmargin=None,align=None, tmargin=None, bmargin=None, align=None,
tborder=None,bborder=None,rborder=None,lborder=None,pad=None, tborder=None, bborder=None, rborder=None, lborder=None,
bgcolor=None,font=None): pad=None, bgcolor=None, font=None):
""" """
Allows the values of the object to be set. Allows the values of the object to be set.
@ -604,7 +605,7 @@ class ParagraphStyle:
if bmargin != None: if bmargin != None:
self.set_bottom_margin(bmargin) self.set_bottom_margin(bmargin)
def set_header_level(self,level): def set_header_level(self, level):
""" """
Sets the header level for the paragraph. This is useful for Sets the header level for the paragraph. This is useful for
numbered paragraphs. A value of 1 indicates a header level numbered paragraphs. A value of 1 indicates a header level
@ -617,7 +618,7 @@ class ParagraphStyle:
"Returns the header level of the paragraph" "Returns the header level of the paragraph"
return self.level return self.level
def set_font(self,font): def set_font(self, font):
""" """
Sets the font style of the paragraph. Sets the font style of the paragraph.
@ -629,7 +630,7 @@ class ParagraphStyle:
"Returns the FontStyle of the paragraph" "Returns the FontStyle of the paragraph"
return self.font return self.font
def set_padding(self,val): def set_padding(self, val):
""" """
Sets the paragraph padding in centimeters Sets the paragraph padding in centimeters
@ -641,7 +642,7 @@ class ParagraphStyle:
"""Returns a the padding of the paragraph""" """Returns a the padding of the paragraph"""
return self.pad return self.pad
def set_top_border(self,val): def set_top_border(self, val):
""" """
Sets the presence or absence of top border. Sets the presence or absence of top border.
@ -654,7 +655,7 @@ class ParagraphStyle:
"Returns 1 if a top border is specified" "Returns 1 if a top border is specified"
return self.top_border return self.top_border
def set_bottom_border(self,val): def set_bottom_border(self, val):
""" """
Sets the presence or absence of bottom border. Sets the presence or absence of bottom border.
@ -667,7 +668,7 @@ class ParagraphStyle:
"Returns 1 if a bottom border is specified" "Returns 1 if a bottom border is specified"
return self.bottom_border return self.bottom_border
def set_left_border(self,val): def set_left_border(self, val):
""" """
Sets the presence or absence of left border. Sets the presence or absence of left border.
@ -680,7 +681,7 @@ class ParagraphStyle:
"Returns 1 if a left border is specified" "Returns 1 if a left border is specified"
return self.left_border return self.left_border
def set_right_border(self,val): def set_right_border(self ,val):
""" """
Sets the presence or absence of rigth border. Sets the presence or absence of rigth border.
@ -700,7 +701,7 @@ class ParagraphStyle:
""" """
return self.bgcolor return self.bgcolor
def set_background_color(self,color): def set_background_color(self, color):
""" """
Sets the background color of the paragraph. Sets the background color of the paragraph.
@ -709,7 +710,7 @@ class ParagraphStyle:
""" """
self.bgcolor = color self.bgcolor = color
def set_alignment(self,align): def set_alignment(self, align):
""" """
Sets the paragraph alignment. Sets the paragraph alignment.
@ -737,23 +738,23 @@ class ParagraphStyle:
return "justify" return "justify"
return "unknown" return "unknown"
def set_left_margin(self,value): def set_left_margin(self, value):
"sets the left indent in centimeters" "sets the left indent in centimeters"
self.lmargin = value self.lmargin = value
def set_right_margin(self,value): def set_right_margin(self, value):
"sets the right indent in centimeters" "sets the right indent in centimeters"
self.rmargin = value self.rmargin = value
def set_first_indent(self,value): def set_first_indent(self, value):
"sets the first line indent in centimeters" "sets the first line indent in centimeters"
self.first_indent = value self.first_indent = value
def set_top_margin(self,value): def set_top_margin(self, value):
"sets the space above paragraph in centimeters" "sets the space above paragraph in centimeters"
self.tmargin = value self.tmargin = value
def set_bottom_margin(self,value): def set_bottom_margin(self, value):
"sets the space below paragraph in centimeters" "sets the space below paragraph in centimeters"
self.bmargin = value self.bmargin = value
@ -789,7 +790,7 @@ class StyleSheetList:
styles are loaded from a specified XML file if it exists. styles are loaded from a specified XML file if it exists.
""" """
def __init__(self,file,defstyle): def __init__(self, filename, defstyle):
""" """
Creates a new StyleSheetList from the specified default style and Creates a new StyleSheetList from the specified default style and
any other styles that may be defined in the specified file. any other styles that may be defined in the specified file.
@ -799,10 +800,10 @@ class StyleSheetList:
""" """
defstyle.set_name('default') defstyle.set_name('default')
self.map = { "default" : defstyle } self.map = { "default" : defstyle }
self.file = os.path.join(const.home_dir,file) self.file = os.path.join(const.home_dir,filename)
self.parse() self.parse()
def delete_style_sheet(self,name): def delete_style_sheet(self, name):
""" """
Removes a style from the list. Since each style must have a Removes a style from the list. Since each style must have a
unique name, the name is used to delete the stylesheet. unique name, the name is used to delete the stylesheet.
@ -817,7 +818,7 @@ class StyleSheetList:
""" """
return self.map return self.map
def get_style_sheet(self,name): def get_style_sheet(self, name):
""" """
Returns the StyleSheet associated with the name Returns the StyleSheet associated with the name
@ -829,7 +830,7 @@ class StyleSheetList:
"Returns a list of all the style names in the StyleSheetList" "Returns a list of all the style names in the StyleSheetList"
return self.map.keys() return self.map.keys()
def set_style_sheet(self,name,style): def set_style_sheet(self, name, style):
""" """
Adds or replaces a StyleSheet in the StyleSheetList. The Adds or replaces a StyleSheet in the StyleSheetList. The
default style may not be replaced. default style may not be replaced.
@ -924,7 +925,7 @@ class StyleSheet:
style = obj.style_list[style_name] style = obj.style_list[style_name]
self.style_list[style_name] = ParagraphStyle(style) self.style_list[style_name] = ParagraphStyle(style)
def set_name(self,name): def set_name(self, name):
self.name = name self.name = name
def get_name(self): def get_name(self):
@ -934,7 +935,7 @@ class StyleSheet:
"Removes all paragraph styles from the StyleSheet" "Removes all paragraph styles from the StyleSheet"
self.style_list = {} self.style_list = {}
def add_style(self,name,style): def add_style(self, name, style):
""" """
Adds a paragraph style to the style sheet. Adds a paragraph style to the style sheet.
@ -951,7 +952,7 @@ class StyleSheet:
"Returns the paragraph name/ParagraphStyle map" "Returns the paragraph name/ParagraphStyle map"
return self.style_list return self.style_list
def get_style(self,name): def get_style(self, name):
""" """
Returns the ParagraphStyle associated with the name Returns the ParagraphStyle associated with the name
@ -969,7 +970,7 @@ class SheetParser(handler.ContentHandler):
SAX parsing class for the StyleSheetList XML file. SAX parsing class for the StyleSheetList XML file.
""" """
def __init__(self,sheetlist): def __init__(self, sheetlist):
""" """
Creates a SheetParser class that populates the passed StyleSheetList Creates a SheetParser class that populates the passed StyleSheetList
class. class.
@ -984,7 +985,7 @@ class SheetParser(handler.ContentHandler):
self.sname = None self.sname = None
self.pname = None self.pname = None
def startElement(self,tag,attrs): def startElement(self, tag, attrs):
""" """
Overridden class that handles the start of a XML element Overridden class that handles the start of a XML element
""" """
@ -1022,7 +1023,7 @@ class SheetParser(handler.ContentHandler):
self.p = ParagraphStyle() self.p = ParagraphStyle()
self.pname = attrs['name'] self.pname = attrs['name']
def endElement(self,tag): def endElement(self, tag):
"Overridden class that handles the start of a XML element" "Overridden class that handles the start of a XML element"
if tag == "style": if tag == "style":
self.p.set_font(self.f) self.p.set_font(self.f)
@ -1036,7 +1037,7 @@ class SheetParser(handler.ContentHandler):
# #
#------------------------------------------------------------------------ #------------------------------------------------------------------------
class GraphicsStyle: class GraphicsStyle:
def __init__(self,obj=None): def __init__(self, obj=None):
if obj: if obj:
self.height = obj.height self.height = obj.height
self.width = obj.width self.width = obj.width
@ -1058,7 +1059,7 @@ class GraphicsStyle:
self.fill_color = (255,255,255) self.fill_color = (255,255,255)
self.lstyle = SOLID self.lstyle = SOLID
def set_line_width(self,val): def set_line_width(self, val):
self.lwidth = val self.lwidth = val
def get_line_width(self): def get_line_width(self):
@ -1067,29 +1068,29 @@ class GraphicsStyle:
def get_line_style(self): def get_line_style(self):
return self.lstyle return self.lstyle
def set_line_style(self,val): def set_line_style(self, val):
self.lstyle = val self.lstyle = val
def set_height(self,val): def set_height(self, val):
self.height = val self.height = val
def set_width(self,val): def set_width(self, val):
self.width = val self.width = val
def set_paragraph_style(self,val): def set_paragraph_style(self, val):
self.para_name = val self.para_name = val
def set_shadow(self,val,space=0.2): def set_shadow(self, val, space=0.2):
self.shadow = val self.shadow = val
self.shadow_space = space self.shadow_space = space
def get_shadow_space(self): def get_shadow_space(self):
return self.shadow_space return self.shadow_space
def set_color(self,val): def set_color(self, val):
self.color = val self.color = val
def set_fill_color(self,val): def set_fill_color(self, val):
self.fill_color = val self.fill_color = val
def get_height(self): def get_height(self):
@ -1121,7 +1122,8 @@ class BaseDoc:
such as OpenOffice, AbiWord, and LaTeX are derived from this base such as OpenOffice, AbiWord, and LaTeX are derived from this base
class, providing a common interface to all document generators. class, providing a common interface to all document generators.
""" """
def __init__(self,styles,paper_type,template,orientation=PAPER_PORTRAIT): def __init__(self, styles, paper_type ,template,
orientation=PAPER_PORTRAIT):
""" """
Creates a BaseDoc instance, which provides a document generation Creates a BaseDoc instance, which provides a document generation
interface. This class should never be instantiated directly, but interface. This class should never be instantiated directly, but
@ -1175,7 +1177,7 @@ class BaseDoc:
def end_page(self): def end_page(self):
pass pass
def print_requested (self): def print_requested(self):
self.print_req = 1 self.print_req = 1
def set_owner(self,owner): def set_owner(self,owner):
@ -1186,7 +1188,7 @@ class BaseDoc:
""" """
self.owner = owner self.owner = owner
def add_media_object(self,name,align,w_cm,h_cm): def add_media_object(self, name, align, w_cm, h_cm):
""" """
Adds a photo of the specified width (in centimeters) Adds a photo of the specified width (in centimeters)
@ -1228,7 +1230,7 @@ class BaseDoc:
"Returns the owner name" "Returns the owner name"
self.name = name self.name = name
def set_title(self,name): def set_title(self, name):
""" """
Sets the title of the document. Sets the title of the document.
@ -1236,16 +1238,16 @@ class BaseDoc:
""" """
self.title = name self.title = name
def add_draw_style(self,name,style): def add_draw_style(self, name, style):
self.draw_styles[name] = GraphicsStyle(style) self.draw_styles[name] = GraphicsStyle(style)
def get_draw_style(self,name): def get_draw_style(self, name):
return self.draw_styles[name] return self.draw_styles[name]
def get_style(self,name): def get_style(self, name):
return self.style_list[name] return self.style_list[name]
def add_table_style(self,name,style): def add_table_style(self, name, style):
""" """
Adds the TableStyle with the specfied name. Adds the TableStyle with the specfied name.
@ -1254,7 +1256,7 @@ class BaseDoc:
""" """
self.table_styles[name] = TableStyle(style) self.table_styles[name] = TableStyle(style)
def add_cell_style(self,name,style): def add_cell_style(self, name, style):
""" """
Adds the TableCellStyle with the specfied name. Adds the TableCellStyle with the specfied name.
@ -1263,7 +1265,7 @@ class BaseDoc:
""" """
self.cell_styles[name] = TableCellStyle(style) self.cell_styles[name] = TableCellStyle(style)
def open(self,filename): def open(self, filename):
""" """
Opens the document. Opens the document.
@ -1275,7 +1277,7 @@ class BaseDoc:
"Closes the document" "Closes the document"
pass pass
def string_width(self,fontstyle,text): def string_width(self, fontstyle, text):
"Determine the width need for text in given font" "Determine the width need for text in given font"
return FontScale.string_width(fontstyle,text) return FontScale.string_width(fontstyle,text)
@ -1299,7 +1301,7 @@ class BaseDoc:
def end_superscript(self): def end_superscript(self):
pass pass
def start_listing(self,style_name): def start_listing(self, style_name):
""" """
Starts a new listing block, using the specified style name. Starts a new listing block, using the specified style name.
@ -1310,7 +1312,7 @@ class BaseDoc:
def end_listing(self): def end_listing(self):
pass pass
def start_paragraph(self,style_name,leader=None): def start_paragraph(self, style_name, leader=None):
""" """
Starts a new paragraph, using the specified style name. Starts a new paragraph, using the specified style name.
@ -1325,7 +1327,7 @@ class BaseDoc:
"Ends the current parsgraph" "Ends the current parsgraph"
pass pass
def start_table(self,name,style_name): def start_table(self, name, style_name):
""" """
Starts a new table. Starts a new table.
@ -1346,7 +1348,7 @@ class BaseDoc:
"Ends the current row on the current table" "Ends the current row on the current table"
pass pass
def start_cell(self,style_name,span=1): def start_cell(self, style_name, span=1):
""" """
Starts a new table cell, using the paragraph style specified. Starts a new table cell, using the paragraph style specified.
@ -1363,7 +1365,7 @@ class BaseDoc:
"Creates a horizontal line" "Creates a horizontal line"
pass pass
def write_note(self,text,format,style_name): def write_note(self, text, format, style_name):
""" """
Writes the note's text and take care of paragraphs, Writes the note's text and take care of paragraphs,
depending on the format. depending on the format.
@ -1374,7 +1376,7 @@ class BaseDoc:
""" """
pass pass
def write_text(self,text): def write_text(self, text):
""" """
Writes the text in the current paragraph. Should only be used after a Writes the text in the current paragraph. Should only be used after a
start_paragraph and before an end_paragraph. start_paragraph and before an end_paragraph.
@ -1383,7 +1385,7 @@ class BaseDoc:
""" """
pass pass
def write_cmdstr(self,text): def write_cmdstr(self, text):
""" """
Writes the text in the current paragraph. Should only be used after a Writes the text in the current paragraph. Should only be used after a
start_paragraph and before an end_paragraph. start_paragraph and before an end_paragraph.
@ -1392,35 +1394,35 @@ class BaseDoc:
""" """
pass pass
def draw_arc(self,style,x1,y1,x2,y2,angle,extent): def draw_arc(self, style, x1, y1, x2, y2, angle, extent):
pass pass
def draw_path(self,style,path): def draw_path(self, style, path):
pass pass
def draw_box(self,style,text,x,y): def draw_box(self, style, text, x, y):
pass pass
def write_at(self,style,text,x,y): def write_at(self, style, text, x, y):
pass pass
def draw_bar(self,style,x1,y1,x2,y2): def draw_bar(self, style, x1, y1, x2, y2):
pass pass
def draw_text(self,style,text,x1,y1): def draw_text(self, style, text, x1, y1):
pass pass
def center_text(self,style,text,x1,y1): def center_text(self, style, text, x1, y1):
pass pass
def rotate_text(self,style,text,x,y,angle): def rotate_text(self, style, text, x, y, angle):
pass pass
def draw_line(self,style,x1,y1,x2,y2): def draw_line(self, style, x1, y1, x2, y2):
pass pass
def draw_wedge(self, style, centerx, centery, radius, start_angle, def draw_wedge(self, style, centerx, centery, radius, start_angle,
end_angle, short_radius=0): end_angle, short_radius=0):
assert(self.init_called) assert(self.init_called)
while end_angle < start_angle: while end_angle < start_angle:
@ -1437,7 +1439,7 @@ class BaseDoc:
angle = sangle angle = sangle
if short_radius == 0: if short_radius == 0:
p.append((centerx,centery)) p.append((centerx, centery))
else: else:
origx = (centerx + cos(angle)*short_radius) origx = (centerx + cos(angle)*short_radius)
origy = (centery + sin(angle)*short_radius) origy = (centery + sin(angle)*short_radius)
@ -1446,24 +1448,24 @@ class BaseDoc:
while angle<eangle: while angle<eangle:
x = centerx + cos(angle)*radius x = centerx + cos(angle)*radius
y = centery + sin(angle)*radius y = centery + sin(angle)*radius
p.append((x,y)) p.append((x, y))
angle = angle+radiansdelta angle = angle+radiansdelta
x = centerx + cos(eangle)*radius x = centerx + cos(eangle)*radius
y = centery + sin(eangle)*radius y = centery + sin(eangle)*radius
p.append((x,y)) p.append((x, y))
if short_radius: if short_radius:
x = centerx + cos(eangle)*short_radius x = centerx + cos(eangle)*short_radius
y = centery + sin(eangle)*short_radius y = centery + sin(eangle)*short_radius
p.append((x,y)) p.append((x, y))
angle = eangle angle = eangle
while angle>=sangle: while angle>=sangle:
x = centerx + cos(angle)*short_radius x = centerx + cos(angle)*short_radius
y = centery + sin(angle)*short_radius y = centery + sin(angle)*short_radius
p.append((x,y)) p.append((x, y))
angle = angle-radiansdelta angle = angle-radiansdelta
self.draw_path(style,p) self.draw_path(style, p)
delta = (eangle - sangle)/2.0 delta = (eangle - sangle)/2.0
rad = short_radius + (radius-short_radius)/2.0 rad = short_radius + (radius-short_radius)/2.0
@ -1471,13 +1473,13 @@ class BaseDoc:
return ( (centerx + cos(sangle+delta) * rad), return ( (centerx + cos(sangle+delta) * rad),
(centery + sin(sangle+delta) * rad)) (centery + sin(sangle+delta) * rad))
def start_path(self,style,x,y): def start_path(self, style, x, y):
pass pass
def line_to(self,x,y): def line_to(self, x, y):
pass pass
def arc_to(self,x,y,angle,extent): def arc_to(self, x, y, angle, extent):
pass pass
def end_path(self): def end_path(self):

View File

@ -215,6 +215,19 @@ class EditLdsOrd(EditSecondary):
Called when the OK button is pressed. Gets data from the Called when the OK button is pressed. Gets data from the
form and updates the Attribute data structure. form and updates the Attribute data structure.
""" """
(need_new, handle) = self.place_field.get_place_info()
if need_new:
place_obj = RelLib.Place()
place_obj.set_title(handle)
trans = self.db.transaction_begin()
self.db.add_place(place_obj,trans)
self.db.transaction_commit(trans,_("Add Place"))
self.obj.set_place_handle(place_obj.get_handle())
else:
self.obj.set_place_handle(handle)
print self.obj.get_place_handle()
if self.callback: if self.callback:
self.callback(self.obj) self.callback(self.obj)
self.close_window(obj) self.close_window(obj)

View File

@ -38,12 +38,12 @@ import DateHandler
import DateEdit import DateEdit
import const import const
_lock_path = os.path.join(const.image_dir,'stock_lock.png') _lock_path = os.path.join(const.image_dir, 'stock_lock.png')
_lock_open_path = os.path.join(const.image_dir,'stock_lock-open.png') _lock_open_path = os.path.join(const.image_dir, 'stock_lock-open.png')
class LinkLabel(gtk.EventBox): class LinkLabel(gtk.EventBox):
def __init__(self,label,func,handle): def __init__(self, label, func, handle):
gtk.EventBox.__init__(self) gtk.EventBox.__init__(self)
self.orig_text = cgi.escape(label[0]) self.orig_text = cgi.escape(label[0])
self.gender = label[1] self.gender = label[1]
@ -53,23 +53,23 @@ class LinkLabel(gtk.EventBox):
self.label = gtk.Label(text) self.label = gtk.Label(text)
self.label.set_use_markup(True) self.label.set_use_markup(True)
self.label.set_alignment(0,0.5) self.label.set_alignment(0, 0.5)
self.add(self.label) self.add(self.label)
self.set_visible_window(False) self.set_visible_window(False)
self.connect('button-press-event',func,handle) self.connect('button-press-event', func, handle)
self.connect('enter-notify-event',self.enter_text,handle) self.connect('enter-notify-event', self.enter_text, handle)
self.connect('leave-notify-event',self.leave_text,handle) self.connect('leave-notify-event', self.leave_text, handle)
def enter_text(self,obj,event,handle): def enter_text(self, obj, event, handle):
text = '<span foreground="blue" underline="single">%s</span>' % self.orig_text text = '<span foreground="blue" underline="single">%s</span>' % self.orig_text
if self.gender: if self.gender:
text += u" %s" % self.gender text += u" %s" % self.gender
self.label.set_text(text) self.label.set_text(text)
self.label.set_use_markup(True) self.label.set_use_markup(True)
def leave_text(self,obj,event,handle): def leave_text(self, obj, event, handle):
text = '<span underline="single">%s</span>' % self.orig_text text = '<span underline="single">%s</span>' % self.orig_text
if self.gender: if self.gender:
text += u" %s" % self.gender text += u" %s" % self.gender
@ -78,16 +78,16 @@ class LinkLabel(gtk.EventBox):
class IconButton(gtk.EventBox): class IconButton(gtk.EventBox):
def __init__(self,func,handle,icon=gtk.STOCK_EDIT,size=gtk.ICON_SIZE_MENU): def __init__(self, func, handle, icon=gtk.STOCK_EDIT, size=gtk.ICON_SIZE_MENU):
gtk.EventBox.__init__(self) gtk.EventBox.__init__(self)
image = gtk.Image() image = gtk.Image()
image.set_from_stock(icon,size) image.set_from_stock(icon, size)
image.show() image.show()
self.add(image) self.add(image)
self.show() self.show()
if func: if func:
self.connect('button-press-event',func,handle) self.connect('button-press-event', func, handle)
class WarnButton(gtk.EventBox): class WarnButton(gtk.EventBox):
def __init__(self): def __init__(self):
@ -96,9 +96,9 @@ class WarnButton(gtk.EventBox):
# Some versions of FreeBSD don't seem to have STOCK_INFO # Some versions of FreeBSD don't seem to have STOCK_INFO
try: try:
image.set_from_stock(gtk.STOCK_INFO,gtk.ICON_SIZE_MENU) image.set_from_stock(gtk.STOCK_INFO, gtk.ICON_SIZE_MENU)
except: except:
image.set_from_stock(gtk.STOCK_DIALOG_INFO,gtk.ICON_SIZE_MENU) image.set_from_stock(gtk.STOCK_DIALOG_INFO, gtk.ICON_SIZE_MENU)
image.show() image.show()
self.add(image) self.add(image)
@ -106,57 +106,57 @@ class WarnButton(gtk.EventBox):
self.func = None self.func = None
self.hide() self.hide()
def on_clicked(self,func): def on_clicked(self, func):
self.connect('button-press-event',self._button_press) self.connect('button-press-event', self._button_press)
self.func = func self.func = func
def _button_press(self,obj,event): def _button_press(self, obj, event):
if event.type == gtk.gdk.BUTTON_PRESS and event.button == 1: if event.type == gtk.gdk.BUTTON_PRESS and event.button == 1:
self.func(obj) self.func(obj)
class SimpleButton(gtk.Button): class SimpleButton(gtk.Button):
def __init__(self,image,func): def __init__(self, image, func):
gtk.Button.__init__(self) gtk.Button.__init__(self)
self.set_relief(gtk.RELIEF_NONE) self.set_relief(gtk.RELIEF_NONE)
self.add(gtk.image_new_from_stock(image,gtk.ICON_SIZE_BUTTON)) self.add(gtk.image_new_from_stock(image, gtk.ICON_SIZE_BUTTON))
self.connect('clicked',func) self.connect('clicked', func)
self.show() self.show()
class LinkBox(gtk.HBox): class LinkBox(gtk.HBox):
def __init__(self,link,button): def __init__(self, link, button):
gtk.HBox.__init__(self) gtk.HBox.__init__(self)
self.set_spacing(6) self.set_spacing(6)
self.pack_start(link,False) self.pack_start(link, False)
self.pack_start(button,False) self.pack_start(button, False)
self.show() self.show()
class EditLabel(gtk.HBox): class EditLabel(gtk.HBox):
def __init__(self,text): def __init__(self, text):
gtk.HBox.__init__(self) gtk.HBox.__init__(self)
label = BasicLabel(text) label = BasicLabel(text)
self.pack_start(label,False) self.pack_start(label, False)
self.pack_start(gtk.image_new_from_stock(gtk.STOCK_EDIT, self.pack_start(gtk.image_new_from_stock(gtk.STOCK_EDIT,
gtk.ICON_SIZE_MENU),False) gtk.ICON_SIZE_MENU), False)
self.set_spacing(4) self.set_spacing(4)
# self.tooltip = gtk.Tooltips() # self.tooltip = gtk.Tooltips()
# self.tooltip.set_tip(label,_('Click in the cell to change the value')) # self.tooltip.set_tip(label, _('Click in the cell to change the value'))
# self.tooltip.enable() # self.tooltip.enable()
self.show_all() self.show_all()
class BasicLabel(gtk.Label): class BasicLabel(gtk.Label):
def __init__(self,text): def __init__(self, text):
gtk.Label.__init__(self,text) gtk.Label.__init__(self, text)
self.set_alignment(0,0.5) self.set_alignment(0, 0.5)
self.show() self.show()
class MarkupLabel(gtk.Label): class MarkupLabel(gtk.Label):
def __init__(self,text): def __init__(self, text):
gtk.Label.__init__(self,text) gtk.Label.__init__(self, text)
self.set_alignment(0,0.5) self.set_alignment(0, 0.5)
self.set_use_markup(True) self.set_use_markup(True)
self.show() self.show()
@ -192,73 +192,73 @@ class IntEdit(gtk.Entry):
class TypeCellRenderer(gtk.CellRendererCombo): class TypeCellRenderer(gtk.CellRendererCombo):
def __init__(self,values): def __init__(self, values):
gtk.CellRendererCombo.__init__(self) gtk.CellRendererCombo.__init__(self)
model = gtk.ListStore(str,int) model = gtk.ListStore(str, int)
for key in values: for key in values:
model.append(row=[values[key],key]) model.append(row=[values[key], key])
self.set_property('editable',True) self.set_property('editable', True)
self.set_property('model',model) self.set_property('model', model)
self.set_property('text-column',0) self.set_property('text-column', 0)
class PrivacyButton: class PrivacyButton:
def __init__(self,button,obj,readonly=False): def __init__(self, button, obj, readonly=False):
self.button = button self.button = button
self.button.connect('toggled',self._on_toggle) self.button.connect('toggled', self._on_toggle)
self.tooltips = gtk.Tooltips() self.tooltips = gtk.Tooltips()
self.obj = obj self.obj = obj
self.set_active(obj.get_privacy()) self.set_active(obj.get_privacy())
self.button.set_sensitive(not readonly) self.button.set_sensitive(not readonly)
def set_sensitive(self,val): def set_sensitive(self, val):
self.button.set_sensitive(val) self.button.set_sensitive(val)
def set_active(self,val): def set_active(self, val):
self.button.set_active(val) self.button.set_active(val)
self._on_toggle(self.button) self._on_toggle(self.button)
def get_active(self): def get_active(self):
return self.button.get_active() return self.button.get_active()
def _on_toggle(self,obj): def _on_toggle(self, obj):
child = obj.child child = obj.child
if child: if child:
obj.remove(child) obj.remove(child)
image = gtk.Image() image = gtk.Image()
if obj.get_active(): if obj.get_active():
# image.set_from_icon_name('stock_lock',gtk.ICON_SIZE_MENU) # image.set_from_icon_name('stock_lock', gtk.ICON_SIZE_MENU)
image.set_from_file(_lock_path) image.set_from_file(_lock_path)
self.tooltips.set_tip(obj,_('Record is private')) self.tooltips.set_tip(obj, _('Record is private'))
self.obj.set_privacy(True) self.obj.set_privacy(True)
else: else:
# image.set_from_icon_name('stock_lock-open',gtk.ICON_SIZE_MENU) # image.set_from_icon_name('stock_lock-open', gtk.ICON_SIZE_MENU)
image.set_from_file(_lock_open_path) image.set_from_file(_lock_open_path)
self.tooltips.set_tip(obj,_('Record is public')) self.tooltips.set_tip(obj, _('Record is public'))
self.obj.set_privacy(False) self.obj.set_privacy(False)
image.show() image.show()
obj.add(image) obj.add(image)
class MonitoredCheckbox: class MonitoredCheckbox:
def __init__(self,obj,button,set_val,get_val,on_toggle=None): def __init__(self, obj, button, set_val, get_val, on_toggle=None):
self.button = button self.button = button
self.button.connect('toggled',self._on_toggle) self.button.connect('toggled', self._on_toggle)
self.on_toggle = on_toggle self.on_toggle = on_toggle
self.obj = obj self.obj = obj
self.set_val = set_val self.set_val = set_val
self.get_val = get_val self.get_val = get_val
self.obj.set_active(get_val()) self.obj.set_active(get_val())
def _on_toggle(self,obj): def _on_toggle(self, obj):
self.set_val(obj.get_active()) self.set_val(obj.get_active())
if self.on_toggle: if self.on_toggle:
self.on_toggle(self.get_val()) self.on_toggle(self.get_val())
class MonitoredEntry: class MonitoredEntry:
def __init__(self,obj,set_val,get_val,read_only=False, def __init__(self, obj, set_val, get_val, read_only=False,
autolist=None, changed=None): autolist=None, changed=None):
self.obj = obj self.obj = obj
self.set_val = set_val self.set_val = set_val
@ -273,21 +273,21 @@ class MonitoredEntry:
if autolist: if autolist:
AutoComp.fill_entry(obj,autolist) AutoComp.fill_entry(obj,autolist)
def connect(self,signal,callback): def connect(self, signal, callback):
self.obj.connect(signal,callback) self.obj.connect(signal, callback)
def _on_change(self,obj): def _on_change(self, obj):
self.set_val(unicode(obj.get_text())) self.set_val(unicode(obj.get_text()))
if self.changed: if self.changed:
self.changed(obj) self.changed(obj)
def force_value(self,value): def force_value(self, value):
self.obj.set_text(value) self.obj.set_text(value)
def get_value(self,value): def get_value(self, value):
return unicode(self.obj.get_text()) return unicode(self.obj.get_text())
def enable(self,value): def enable(self, value):
self.obj.set_sensitive(value) self.obj.set_sensitive(value)
self.obj.set_editable(value) self.obj.set_editable(value)
@ -300,7 +300,7 @@ class MonitoredEntry:
class MonitoredText: class MonitoredText:
def __init__(self,obj,set_val,get_val,read_only=False): def __init__(self, obj, set_val, get_val, read_only=False):
self.buf = obj.get_buffer() self.buf = obj.get_buffer()
self.set_val = set_val self.set_val = set_val
self.get_val = get_val self.get_val = get_val
@ -310,13 +310,13 @@ class MonitoredText:
self.buf.connect('changed', self.on_change) self.buf.connect('changed', self.on_change)
obj.set_editable(not read_only) obj.set_editable(not read_only)
def on_change(self,obj): def on_change(self, obj):
s,e = self.buf.get_bounds() s, e = self.buf.get_bounds()
self.set_val(unicode(self.buf.get_text(s,e,False))) self.set_val(unicode(self.buf.get_text(s, e, False)))
class MonitoredType: class MonitoredType:
def __init__(self,obj,set_val,get_val,mapping,custom,readonly=False, def __init__(self, obj, set_val, get_val, mapping, custom, readonly=False,
custom_values=None): custom_values=None):
self.set_val = set_val self.set_val = set_val
self.get_val = get_val self.get_val = get_val
@ -345,46 +345,46 @@ class MonitoredType:
class MonitoredMenu: class MonitoredMenu:
def __init__(self,obj,set_val,get_val,mapping,readonly=False,changed=None): def __init__(self, obj, set_val, get_val, mapping, readonly=False, changed=None):
self.set_val = set_val self.set_val = set_val
self.get_val = get_val self.get_val = get_val
self.changed = changed self.changed = changed
self.obj = obj self.obj = obj
self.model = gtk.ListStore(str,int) self.model = gtk.ListStore(str, int)
self.data = {} self.data = {}
index = 0 index = 0
for t,v in mapping: for t, v in mapping:
self.model.append(row=[t,v]) self.model.append(row=[t, v])
self.data[v] = index self.data[v] = index
index += 1 index += 1
self.obj.set_model(self.model) self.obj.set_model(self.model)
self.obj.set_active(self.data[get_val()]) self.obj.set_active(self.data[get_val()])
self.obj.connect('changed',self.on_change) self.obj.connect('changed', self.on_change)
self.obj.set_sensitive(not readonly) self.obj.set_sensitive(not readonly)
def force(self,value): def force(self, value):
self.obj.set_active(value) self.obj.set_active(value)
def change_menu(self, mapping): def change_menu(self, mapping):
self.model = gtk.ListStore(str,int) self.model = gtk.ListStore(str, int)
for t,v in mapping: for t, v in mapping:
self.model.append(row=[t,v]) self.model.append(row=[t, v])
self.obj.set_model(self.model) self.obj.set_model(self.model)
self.obj.set_active(0) self.obj.set_active(0)
def on_change(self, obj): def on_change(self, obj):
print "ON CHANGE" print "ON CHANGE"
self.set_val(self.model.get_value(obj.get_active_iter(),1)) self.set_val(self.model.get_value(obj.get_active_iter(), 1))
if self.changed: if self.changed:
print "CALL" print "CALL"
self.changed() self.changed()
class MonitoredStrMenu: class MonitoredStrMenu:
def __init__(self,obj,set_val,get_val,mapping,readonly=False): def __init__(self, obj, set_val, get_val, mapping, readonly=False):
self.set_val = set_val self.set_val = set_val
self.get_val = get_val self.get_val = get_val
@ -401,16 +401,16 @@ class MonitoredStrMenu:
default = get_val() default = get_val()
active = 0 active = 0
for t,v in mapping: for t, v in mapping:
self.model.append(row=[v]) self.model.append(row=[v])
self.data.append(t) self.data.append(t)
if v == default:
active = index
index += 1 index += 1
if t == default:
active = index
self.obj.set_model(self.model) self.obj.set_model(self.model)
self.obj.set_active(active) self.obj.set_active(active)
self.obj.connect('changed',self.on_change) self.obj.connect('changed', self.on_change)
self.obj.set_sensitive(not readonly) self.obj.set_sensitive(not readonly)
def on_change(self, obj): def on_change(self, obj):
@ -418,7 +418,7 @@ class MonitoredStrMenu:
class MonitoredDate: class MonitoredDate:
def __init__(self,field,button,value,window, readonly=False): def __init__(self, field, button, value, window, readonly=False):
self.date = value self.date = value
self.date_check = DateEdit.DateEdit( self.date_check = DateEdit.DateEdit(
self.date, field, button, window) self.date, field, button, window)
@ -445,7 +445,7 @@ class PlaceEntry:
self.obj.set_editable(True) self.obj.set_editable(True)
store = gtk.ListStore(str) store = gtk.ListStore(str)
foo = [ (locale.strxfrm(self.places[v]),v) \ foo = [ (locale.strxfrm(self.places[v]), v) \
for v in self.places.keys()] for v in self.places.keys()]
foo.sort() foo.sort()
for val in foo: for val in foo:
@ -462,8 +462,8 @@ class PlaceEntry:
if text: if text:
for key in self.places.keys(): for key in self.places.keys():
if text == self.places[key]: if text == self.places[key]:
return (False,key) return (False, key)
return (True,text) return (True, text)
else: else:
return (False,u"") return (False, u"")