class HyperLinkDialog extends this.OS.GUI.BasicDialog constructor: () -> super "HyperLinkDialog", HyperLinkDialog.scheme main: () -> super.main() txtText = @find "txtText" txtLink = @find "txtLink" if @data and @data.data txtText.value = @data.data.text txtLink.value = @data.data.link $(txtText).prop('disabled', @data.data.readonly) @find("btnCancel").onbtclick = (e) => @quit() @find("btnOk").onbtclick = (e) => data = text: txtText.value, link: txtLink.value, readonly: @data.data.readonly, action: @data.data.action @handle data if @handle @quit() HyperLinkDialog.scheme = """ """ class FormatDialog extends this.OS.GUI.BasicDialog constructor: () -> super "FormatDialog", FormatDialog.scheme main: () -> super.main() @ui = aligment: left:@find("swleft"), right:@find("swright"), center:@find("swcenter"), justify:@find("swjustify") spacing: left: @find("spnleft"), right: @find("spnright"), top: @find("spntop"), bottom: @find("spnbottom"), lineheight: @find("spnlheight") padding: left: @find("pspnleft"), right: @find("pspnright"), top: @find("pspntop"), bottom: @find("pspnbottom"), style: bold: @find("swbold"), italic: @find("switalic"), underline: @find("swunderline"), color: @find("txtcolor"), bgcolor: @find("bgcolor") font: family: @find("lstfont"), size: @find("spnfsize") formats: @find("lstformats") @initStyleObject() @preview = ($(@find "preview").find "p")[0] $(@preview) .css "padding", "0" .css "margin", "0" @initUIEvent() #@previewStyle() initStyleObject: ()-> # init the format object @currentStyle = aligment: @_api.switcher("left", "right", "center", "justify"), spacing: left:0 top:0, right:0, bottom:0, lineheight: 0 padding: left:0 top:0, right:0, bottom:0 style: bold:false, italic: false, underline: false, color: undefined, bgcolor: undefined font: family: undefined, size: 12 initUIEvent: () -> set = (e, o, k ,f) => @ui[o][k][e] = (r) => v = r v = f r if f @currentStyle[o][k] = v @previewStyle() for k,v of @ui.aligment set "onswchange", "aligment", k, ((e) => e.data) for k,v of @ui.spacing set "onvaluechange", "spacing", k, ((e) => e.data) for k,v of @ui.padding set "onvaluechange", "padding", k, ((e) => e.data) for k,v of @ui.style set "onswchange", "style", k, ((e) => e.data) if k isnt "color" and k isnt "bgcolor" set "onvaluechange", "font", "size" $(@ui.style.color).click (e) => @openDialog "ColorPickerDialog" .then (d) => @currentStyle.style.color = d @previewStyle() $(@ui.style.bgcolor).click (e) => @openDialog "ColorPickerDialog" .then (d) => @currentStyle.style.bgcolor = d @previewStyle() #font @ui.font.family.data = @data.data.fonts if @data.data and @data.data.fonts set "onlistselect", "font", "family", ( (e) => e.data.item.data) #format list @ui.formats.selected = -1 @ui.formats.data = @data.data.formats if @data.data and @data.data.formats @ui.formats.onlistselect = (e) => @fromODFStyleFormat e.data.item.data @ui.formats.selected = 0 (@find "btok").onbtclick = (e) => @saveCurrentStyle() (@find "btx").onbtclick = (e) => @quit() (@find "bt-clone").onbtclick = (e) => @clone() clone: ()-> selected = @ui.formats.selectedItem return unless selected selected = selected.data @openDialog "PromptDialog", { title: __("Clone style: {0}", selected.text), label: __("New style name:") } .then (d) => return @notify __("Abort: no style name is specified") unless d and d.trim() isnt "" newstyle = @parent.editorSession.cloneParagraphStyle selected.name, d @ui.formats.push { text:d, name: newstyle } @ui.formats.selected = (@ui.formats.data.length - 1) @notify __("New style: {0} added", newstyle) saveCurrentStyle: () -> selected = @ui.formats.selectedItem return unless selected selected = selected.data odfs = "style:paragraph-properties": "fo:margin-top": @currentStyle.spacing.top + "mm" "fo:margin-left": @currentStyle.spacing.left + "mm" "fo:margin-bottom": @currentStyle.spacing.bottom + "mm" "fo:margin-right": @currentStyle.spacing.right + "mm" "fo:padding-top": @currentStyle.padding.top + "mm" "fo:padding-left": @currentStyle.padding.left + "mm" "fo:padding-bottom": @currentStyle.padding.bottom + "mm" "fo:padding-right": @currentStyle.padding.right + "mm" "fo:line-height": if @currentStyle.spacing.lineheight > 0 then @currentStyle.spacing.lineheight + "mm" else "normal" "fo:text-align": @currentStyle.aligment.selected || "left" "style:text-properties": "fo:font-weight": if @currentStyle.style.bold then "bold" else "normal" "fo:font-style": if @currentStyle.style.italic then "italic" else "normal" "style:text-underline-style": if @currentStyle.style.underline then "solid" else "none" "fo:font-size": @currentStyle.font.size + "pt" "fo:font-name": @currentStyle.font.family.text "fo:color": if @currentStyle.style.color then @currentStyle.style.color.hex else "#000000" "fo:background-color": if @currentStyle.style.bgcolor then @currentStyle.style.bgcolor.hex else "transparent" @parent.editorSession.updateParagraphStyle selected.name, odfs @notify __("Paragraph format [{0}] is saved", selected.text) fromODFStyleFormat: (odfs) -> @initStyleObject() cssUnits = new core.CSSUnits() findFont = (name) => items = @ui.font.family.data item = v for v in items when v.text is name return undefined unless item return item # spacing style = @parent.editorSession.getParagraphStyleAttributes(odfs.name)['style:paragraph-properties'] if style @currentStyle.spacing.top = cssUnits.convertMeasure(style['fo:margin-top'], 'mm') || 0 @currentStyle.spacing.left = cssUnits.convertMeasure(style['fo:margin-left'], 'mm') || 0 @currentStyle.spacing.right = cssUnits.convertMeasure(style['fo:margin-right'], 'mm') || 0 @currentStyle.spacing.bottom = cssUnits.convertMeasure(style['fo:margin-bottom'], 'mm') || 0 @currentStyle.padding.top = cssUnits.convertMeasure(style['fo:padding-top'], 'mm') || 0 @currentStyle.padding.left = cssUnits.convertMeasure(style['fo:padding-left'], 'mm') || 0 @currentStyle.padding.right = cssUnits.convertMeasure(style['fo:padding-right'], 'mm') || 0 @currentStyle.padding.bottom = cssUnits.convertMeasure(style['fo:padding-bottom'], 'mm') || 0 @currentStyle.spacing.lineheight = cssUnits.convertMeasure(style['fo:line-height'], 'mm') || 4.2 # 1em = 4,2175176mm @currentStyle.aligment[style['fo:text-align']] = true if style['fo:text-align'] style = @parent.editorSession.getParagraphStyleAttributes(odfs.name)['style:text-properties'] if style @currentStyle.style.bold = style['fo:font-weight'] is 'bold' @currentStyle.style.italic = style['fo:font-style'] is 'italic' @currentStyle.style.underline = true if style['style:text-underline-style'] and style['style:text-underline-style'] isnt 'none' @currentStyle.font.size = parseFloat style['fo:font-size'] @currentStyle.font.family = findFont style['style:font-name'] @currentStyle.style.color = { hex: style['fo:color'] } if style['fo:color'] @currentStyle.style.bgcolor = { hex: style['fo:background-color'] } if style['fo:background-color'] @previewStyle() previewStyle: () -> #console.log "previewing" # reset ui @ui.aligment.left.swon = @currentStyle.aligment.left @ui.aligment.right.swon = @currentStyle.aligment.right @ui.aligment.center.swon = @currentStyle.aligment.center @ui.aligment.justify.swon = @currentStyle.aligment.justify @ui.spacing.left.value = @currentStyle.spacing.left @ui.spacing.right.value = @currentStyle.spacing.right @ui.spacing.top.value = @currentStyle.spacing.top @ui.spacing.bottom.value = @currentStyle.spacing.bottom @ui.spacing.lineheight.value = @currentStyle.spacing.lineheight @ui.padding.left.value = @currentStyle.padding.left @ui.padding.right.value = @currentStyle.padding.right @ui.padding.top.value = @currentStyle.padding.top @ui.padding.bottom.value = @currentStyle.padding.bottom @ui.style.bold.swon = @currentStyle.style.bold @ui.style.italic.swon = @currentStyle.style.italic @ui.style.underline.swon = @currentStyle.style.underline @ui.font.size.value = @currentStyle.font.size #console.log @currentStyle if @currentStyle.font.family items = @ui.font.family.data item = i for v, i in items when v.text is @currentStyle.font.family.text @ui.font.family.selected = item if item >= 0 $(@ui.style.color).css "background-color", if @currentStyle.style.color then @currentStyle.style.color.hex else "#000000" $(@ui.style.bgcolor).css "background-color", if @currentStyle.style.bgcolor then @currentStyle.style.bgcolor.hex else "transparent" # set the preview css el = $ @preview el.css "text-align", if @currentStyle.aligment.selected then @currentStyle.aligment.selected else "left" el.css "margin-left", @currentStyle.spacing.left + "mm" el.css "margin-right", @currentStyle.spacing.right + "mm" el.css "margin-top", @currentStyle.spacing.top + "mm" el.css "margin-bottom", @currentStyle.spacing.bottom + "mm" el.css "padding-left", @currentStyle.padding.left + "mm" el.css "padding-right", @currentStyle.padding.right + "mm" el.css "padding-top", @currentStyle.padding.top + "mm" el.css "padding-bottom", @currentStyle.padding.bottom + "mm" el .css "font-weight", "normal" .css "font-style", "normal" .css "text-decoration", "none" .css "line-height", "normal" el.css "font-weight", "bold" if @currentStyle.style.bold el.css "font-style", "italic" if @currentStyle.style.italic el.css "text-decoration", "underline" if @currentStyle.style.underline el.css "color", if @currentStyle.style.color then @currentStyle.style.color.hex else "#000000" el.css "background-color", if @currentStyle.style.bgcolor then @currentStyle.style.bgcolor.hex else "transparent" el.css "font-size", @currentStyle.font.size + "pt" el.css "font-family", @currentStyle.font.family.name if @currentStyle.font.family el.css "line-height", @currentStyle.spacing.lineheight + "mm" if @currentStyle.spacing.lineheight > 0 FormatDialog.scheme = """ Lorem ipsum dolor sit amet, consectetur adipiscing elit. Fusce laoreet diam vestibulum massa malesuada quis dignissim libero blandit. Duis sit amet volutpat nisl. """
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Fusce laoreet diam vestibulum massa malesuada quis dignissim libero blandit. Duis sit amet volutpat nisl.