def get_tool_bar(my): widget = Widget() trash_div = SpanWdg() # reset some global variables on load trash_div.add_behavior({ 'type': 'load', 'cbjs_action': 'spt.side_bar.trashed_items=[]; spt.side_bar.changed_views={}' }) trash_div.set_id('trash_me') trash_div.add(IconWdg('Trash', IconWdg.TRASH)) trash_div.add("TRASH!") trash_div.add_class("hand") trash_div.add_class("spt_side_bar_trash") trash_div.set_attr("SPT_ACCEPT_DROP", "manageSideBar") bvr = { "type": "click_up",\ 'cbjs_action': "alert('Drag and drop link or folder here to remove it.')"} trash_div.add_behavior(bvr) widget.add(trash_div) save_div = SpanWdg(css='med hand spt_side_bar_trash') save_div.add(IconWdg('Save Ordering', IconWdg.SAVE)) # FIXME: is_personal??? is_personal = 'false' bvr = { "type": "click_up",\ 'cbjs_action': "spt.side_bar.manage_section_action_cbk({'value':'save'},'%s',%s);" % (my.view, is_personal)} save_div.add_behavior(bvr) widget.add(save_div) return widget
def get_display(my): sobject = my.get_current_sobject() title = sobject.get_value("title") widget = Widget() widget.add(sobject.get_description()) if title == 'Debug': pop = PopupWdg("pref_help_%s" % title) hint = 'If set to [true], you can view the Debug Widget at the bottom left corner of your page.' icon_wdg = IconWdg(hint, IconWdg.HELP) widget.add(SpanWdg(icon_wdg, css='small')) widget.add(pop) elif title == 'Filter': pop = PopupWdg("pref_help_%s" % title) hint = 'If set to [multi], It generally applies to filters in the filter box for Artist Tab.' icon_wdg = IconWdg(hint, IconWdg.HELP) widget.add(SpanWdg(icon_wdg, css='small')) widget.add(pop) elif title == 'Quick Text': pop = PopupWdg("pref_help_%s" % title) hint = 'A list of | separated phrases a user can pick from to enter into the note area of Note Sheet.' icon_wdg = IconWdg(hint, IconWdg.HELP) widget.add(SpanWdg(icon_wdg, css='small')) widget.add(pop) return widget
def get_tool_bar(my): widget = Widget() trash_div = SpanWdg() trash_div.set_id('trash_me') trash_div.add(IconWdg('Trash', IconWdg.TRASH)) trash_div.add("TRASH!") trash_div.add_class("hand") trash_div.add_class("spt_side_bar_trash") trash_div.set_attr("SPT_ACCEPT_DROP", "manageSideBar") bvr = { "type": "click_up",\ 'cbjs_action': "alert('Drag and drop element name here to remove it.')"} trash_div.add_behavior(bvr) widget.add(trash_div) save_div = SpanWdg(css='med hand spt_side_bar_trash') save_div.add(IconWdg('Save', IconWdg.SAVE)) bvr = { "type": "click_up",\ 'cbjs_action': "spt.custom_project.manage_action_cbk({'value':'save'},'%s');" % my.view} save_div.add_behavior(bvr) widget.add(save_div) return widget
def init(self): self.layer = LayerWdg(self.xpos, self.ypos, self.display) if not self.width: self.shadowbox = ShadowBoxWdg(self.shad_name) else: self.shadowbox = ShadowBoxWdg(self.shad_name, self.width) # do not enable it for the Login page web = WebContainer.get_web() if self.shad_name and not web.is_IE(): BaseAppServer.add_onload_script("Move.drag('%s','%s')" \ %(self.shadowbox.get_name(), self.iframe_name)) div = DivWdg() from pyasm.widget import IconButtonWdg move_button = IconWdg(name='move me', icon=IconWdg.NAV) move_button.set_id("%s_handle" % (self.shad_name)) move_button.add_class('move') move_button.add_style('float: left') move_button.add_style('padding: 2px 0 0 6px') if not web.is_IE(): div.add(move_button) mbutton = IconButtonWdg(name='close window', icon=IconWdg.KILL) mbutton.set_class("moduleKillBtn") mbutton.add_event("onclick", self.layer.get_off_script()) div.add(mbutton) if self.nav_links: back_link = HtmlElement.href("<<", "javascript:history.back()") back_link.add_style("font-size", "1.4em") for_link = HtmlElement.href(">>", "javascript:history.forward()") for_link.add_style("font-size", "1.4em") div.add(SpanWdg(back_link, css='med')) div.add(SpanWdg(for_link, css='med')) self.shadowbox.set_header(div) # add button and title_wdg to shadow box if self.title_wdg: title_wdg = DivWdg() title_wdg.set_class("moduleTitle") title_wdg.add(self.title_wdg) self.shadowbox.set_title_wdg(title_wdg) self.layer.add(self.shadowbox) self._add_widget(self.layer)
def _get_loading_span(self): span = SpanWdg() span.add_style("display", "none") img = HtmlElement.img('/context/icons/common/loading.gif') img.add_style("height", "10px") msg_span = SpanWdg('loading') msg_span.set_class('small') span.add(msg_span) span.add(img) span.set_id(self.img_span_name) return span
def get_new_tab_wdg(my): widget = Widget() span = SpanWdg() swap = SwapDisplayWdg.get_triangle_wdg() title = SpanWdg("Tab Creation") span.add(swap) span.add(title) span.add_style("float: left") widget.add(span) widget.add(HtmlElement.br()) # add the tab selector div = DivWdg() SwapDisplayWdg.create_swap_title(title, swap, div) tab_text = TextWdg("tab") tab_text.set_persistence() span = SpanWdg(css="med") span.add("Tab: ") span.add(tab_text) div.add(span) # parent index_text = TextWdg("parent_tab") index_text.set_persistence() span = SpanWdg(css="med") span.add("Parent Tab: ") span.add(index_text) span.add( HintWdg( "Enter the name of the tab that this will fall under. Leave empty to put on the main tab" )) div.add(span) # index index_text = TextWdg("index") index_text.set_attr("size", "4") index_text.set_persistence() span = SpanWdg(css="med") span.add("Index: ") span.add(index_text) span.add( HintWdg("Enter the numeric location for this tab to be placed")) div.add(span) WebContainer.register_cmd("CreateTabCmd") button = IconSubmitWdg("Create Tab", IconWdg.CREATE, True) div.add(button) widget.add(div) return widget
def set_text_link(self, widget, div, image_link): '''override how the text link is drawn''' div.add_style('float', 'left') div.add_style('margin-left', '10px') filename = os.path.basename(image_link) if len(filename) > 40: filename = "%s..." % (filename[0:40]) span = SpanWdg(css='med') #href = HtmlElement.href(filename, image_link) href = SpanWdg(filename) href.add_color("color", "color") span.add(href) widget.add(span) span.add_tip('Right-click and choose [Save Link As..] to save to disk.')
def get_display(self): outer_div = DivWdg() outer_div.set_id('edit_instructions_{0}'.format(self.instructions_sobject.get_code())) # Get a list of the components the instructions are attached to attached_components = get_components_attached_to_instructions(self.instructions_sobject) component_div = DivWdg() title_span = SpanWdg() if attached_components: title_span.add('The following Components are attached to this Instructions Document:') component_div.add(title_span) component_list = HtmlElement.ul() for component in attached_components: li = HtmlElement.li() li.add('{0} ({1})'.format(component.get('name'), component.get_code())) component_list.add(li) component_div.add(component_list) else: title_span.add('Instructions are not currently attached to any Components') component_div.add(title_span) outer_div.add(component_div) outer_div.add(get_instructions_textarea_wdg(self.instructions_sobject)) submit_button = SubmitWdg('Submit Changes') submit_button.add_behavior(self.submit_button_behavior()) submit_button.add_style('display', 'block') outer_div.add(submit_button) return outer_div
def get_title(my): mode = my.get_option("mode") title = SpanWdg() #loader = LoaderButtonWdg() #loader.set_load_script( my.get_load_script() ) #return loader search_type = my.get_search_type() cb_name = '%s_%s' % (search_type, my.CB_NAME) master_cb = CheckboxWdg('master_control') master_cb.add_behavior({ 'type': 'click_up', 'propagate_evt': True, 'cbjs_action': ''' var inputs = spt.api.Utility.get_inputs(bvr.src_el.getParent('.spt_table'),'%s','.spt_latest_%s'); for (var i = 0; i < inputs.length; i++) inputs[i].checked = bvr.src_el.checked; ''' % (cb_name, mode) }) title.add(master_cb) if mode == "input": title.add("Receive") else: title.add("Deliver") return title
def get_frame_rate_section(self): section_span = SpanWdg() section_span.add('Frame Rate: ') frame_rate_select = SelectWdg('frame_rate_select') frame_rate_select.set_id('frame_rate_code') frame_rate_select.add_style('width', '153px') frame_rate_select.add_style('display', 'inline-block') frame_rate_select.add_empty_option() frame_rate_search = Search('twog/frame_rate') frame_rates = frame_rate_search.get_sobjects() for frame_rate in frame_rates: frame_rate_select.append_option(frame_rate.get_value('name'), frame_rate.get_code()) try: frame_rate_select.set_value(self.frame_rate_code) except AttributeError: pass section_span.add(frame_rate_select) return section_span
def get_prefs(self): div = DivWdg('Bar Size: ') self.bar_select = FilterSelectWdg('progress_bar_size') bar_sizes = [x * 2 + 1 for x in xrange(6)] self.bar_select.set_option('values', bar_sizes) self.bar_select.set_option('default', '3') div.add(self.bar_select) self.bar_select_value = self.bar_select.get_value() self.label_select = FilterSelectWdg('Label_Format') self.label_select_value = self.label_select.get_value() self.label_select.set_option('values', 'reg|small|abbr') self.label_select.set_option('default', 'reg') span = SpanWdg('Label Format: ', css='small') span.add(self.label_select) div.add(span) self.desc_checkbox = FilterCheckboxWdg("Show Description", \ 'Show Description: ', css='small') self.desc_checkbox_value = self.desc_checkbox.get_value() div.add(self.desc_checkbox) self.include_sub_task = FilterCheckboxWdg("include_sub_task", \ label="include sub tasks", css='small') self.include_sub_task_value = self.include_sub_task.is_checked() div.add(self.include_sub_task) return div
def get_related_wdg(my, aliases): div = DivWdg() div.add("<b>Related links</b>:  ") div.add_style("margin-top: 5px") div.add_style("margin-bottom: 5px") div.add_style("margin-left: 10px") titles = [ Common.get_display_title(x.replace("-", " ")) for x in aliases ] for alias, title in zip(aliases, titles): link_div = SpanWdg() div.add(link_div) link_div.add_color("background", "background") link_div.add(title) link_div.add_behavior({ 'type': 'click_up', 'cbjs_action': ''' spt.help.set_top(); spt.help.load_alias("%s"); ''' % alias }) link_div.add_class("spt_link") link_div.add_class("hand") return div
def _get_target_span(self): # get the target span search = Search(self.container_cls) self._order_search(search) groups = search.get_sobjects() if groups: self.container_sobj = groups[0] target_span = SpanWdg(css='med') group_table = Table(self.GROUP_TABLE_NAME, css='table') group_table.add_style('width', '30em') group_table.add_col(css='small') group_table.add_col(css='small') group_table.add_col() target_span.add(group_table) group_table.add_row_cell(search.get_search_type_obj()\ .get_description(), "heading") checkbox = CheckboxWdg() checkbox.set_option("onclick", \ "a=new Elements('container_ids');a.toggle_all(this);") group_table.add_row() group_table.add_cell(checkbox) col_name = group_table.get_next_col_name() toggle_control = HiddenRowToggleWdg(col_name=col_name, is_control=True, auto_index=True) group_table.add_cell(toggle_control) group_table.add_cell('MASTER CONTROL') remove_cmd = HiddenWdg(SObjectGroupCmd.REMOVE_CMD) self.add(remove_cmd) for group in groups: group_table.add_row() checkbox = CheckboxWdg("container_ids") checkbox.set_option("value", group.get_primary_key_value()) toggle = HiddenRowToggleWdg(col_name, auto_index=True) toggle.store_event() group_details = ItemInContainerWdg(group, self.item_sobj, self.item_cls, self.grouping_cls) # set the target content of the toggle toggle.set_static_content(group_details) group_table.add_cell(checkbox) group_table.add_cell(toggle, add_hidden_wdg=True) group_table.add_cell(group.get_description()) num_items = group_details.get_num_items() if num_items: td = group_table.add_cell("( %s )" % num_items, 'no_wrap') td.add_color(color) else: group_table.add_blank_cell() return target_span
def get_license_info_wdg(my): div = DivWdg() license = Environment.get_security().get_license() if my.first_error: return div #if not license.is_licensed(): # return div msg = DivWdg() div.add(msg) msg.add("The following describes the details of the installed license:<br/><br/>") info_wdg = DivWdg() div.add(info_wdg) info_wdg.add_style("margin: 10px 30px") info_wdg.add_style("font-size: 12px") version = license.get_data("tactic_version") if version: info_wdg.add("TACTIC Version: ") if version == "ALL": version = "ALL (Open Source)" info_wdg.add(version) info_wdg.add(HtmlElement.br(2)) company = license.get_data("company") info_wdg.add("Licensed To: ") if company.find("Southpaw EPL") != -1: company = SpanWdg("<a name='license'>Eclipse Public License v1.0</a> ") icon = IconWdg("EPL v1.0", IconWdg.ZOOM) company.add(icon) company.add_class("hand") company.add_behavior( { 'type': 'click_up', 'cbjs_action': ''' spt.help.load_alias("license") ''' } ) info_wdg.add(company) info_wdg.add(HtmlElement.br(2)) info_wdg.add("Max Users: ") info_wdg.add(license.get_data("max_users") ) info_wdg.add(HtmlElement.br(2)) info_wdg.add("Current Users: ") info_wdg.add(license.get_current_users() ) info_wdg.add(HtmlElement.br(2)) info_wdg.add("Expiry Date: ") expiry_date = license.get_data("expiry_date") if not expiry_date: expiry_date = "Permanent" info_wdg.add(expiry_date) info_wdg.add(HtmlElement.br(2)) return div
def get_display(self): #self.init() item_table = Table(css='minimal') item_table.add_style('margin-left', '30px') for item in self.items: item_table.add_row() space_td = item_table.add_blank_cell() item_td = item_table.add_cell(item.get_description()) item_td.set_attr("nowrap", "1") delete = IconSubmitWdg("Remove from group", \ "stock_stop-16.png",add_hidden=False) delete.add_event("onclick","document.form.remove_cmd.value=\ '%s|%s';document.form.submit();" \ % (self.group.get_primary_key_value(), item.get_primary_key_value()) ) del_span = SpanWdg(css='med') del_span.add(delete) item_table.add_cell(del_span) if not self.items: item_table.add_blank_cell() self.add(item_table) return super(ItemInContainerWdg, self).get_display()
def get_instantiation_wdg(my): setting = my.get_default_setting() default_instantiation = setting.get('instantiation') div = DivWdg() is_unchecked = True default_cb = None for value in my.get_instantiation_options(): name = my.get_element_name("instantiation") checkbox = CheckboxWdg(name) if value == default_instantiation: default_cb = checkbox checkbox.set_option("value", value) checkbox.set_persistence() if checkbox.is_checked(): is_unchecked = False checkbox.add_behavior({ 'type': 'click_up', 'propagate_evt': True, "cbjs_action": "spt.toggle_checkbox(bvr, '.spt_ui_options', '%s')" % name }) span = SpanWdg(checkbox, css='small') span.add(value) div.add(span) if is_unchecked: default_cb.set_checked() return div
def get_format_section(self): section_span = SpanWdg() section_span.add('Format: ') section_span.add(self.get_format_select_wdg()) return section_span
def get_display(my): if not my.columns: print my.options search_type = my.options.get("search_type") if search_type: my.set_columns_from_search_type(search_type) if not my.columns: my.columns = [] span = SpanWdg() my.column_select.set_option("values", my.columns) my.column_select.set_persist_on_submit() span.add(my.column_select) relations = [ "is", "is not", "contains", "does not contain", "is empty" ] my.relation_select.set_option("values", relations) my.relation_select.set_persist_on_submit() span.add(my.relation_select) my.value_text.set_persist_on_submit() span.add(my.value_text) return span
def add_file_behaviors(my, item_div, dirname, basename): item_div.add_class("spt_script_item") if not dirname: path = "///%s" % (basename) else: path = "%s/%s" % (dirname, basename) scripts = my.kwargs.get("scripts") script = scripts.get(path) if not script: item_div.add_style("background-color", "red") item_div.add_behavior({"type": "click_up", "cbjs_action" : '''spt.alert("Please remove leading / in this script path's Title attribute by using the Manage button.")'''}) item_div.add_attr("title", "Please remove special characters like / in this script path") return script_code = script.get("code") language = script.get("language") item_div.add_attr("spt_script_code", script_code) item_div.add_style("background", "transparent") if language: span = SpanWdg() span.add_style("font-size: 9px") span.add_style("opacity: 0.2") span.add(" <i>(%s)</i>" % language) item_div.add(span)
def get_notes_wdg(my): widget = Widget() div = DivWdg(css="filter_box") columns = ['code', 'description'] search_filter = SearchFilterWdg("note_search", columns=columns,\ has_persistence=False) div.add(search_filter) sequence_filter = SequenceFilterWdg() div.add(sequence_filter) context_select = FilterSelectWdg("discussion_context") context_select.set_option("setting", "notes_preprod_context") context_select.add_empty_option("-- Any Context --") span = SpanWdg(css="med") span.add("Notes Context: ") span.add(context_select) hint = HintWdg('Submission notes for each shot are also included here') span.add(hint) div.add(span) widget.add(div) # create a search search = Search("prod/shot") sequence_filter.alter_search(search) search_filter.alter_search(search) table = TableWdg("prod/shot", "preprod_notes") table.set_search(search) widget.add(table) return widget
def get_display(self): if not self.columns: print self.options search_type = self.options.get("search_type") if search_type: self.set_columns_from_search_type(search_type) if not self.columns: self.columns = [] span = SpanWdg() self.column_select.set_option("values", self.columns) self.column_select.set_persist_on_submit() span.add(self.column_select) relations = ["is", "is not", "contains", "does not contain", "is empty"] self.relation_select.set_option("values", relations) self.relation_select.set_persist_on_submit() span.add(self.relation_select) self.value_text.set_persist_on_submit() span.add(self.value_text) return span
def get_display(self): widget = Widget() if not self.select: return widget if not self.schema: Environment.add_warning("No schema defined") widget.add("No schema defined") return widget if not self.search_type: Environment.add_warning("HierarchicalFilterWdg: Cannot find current search_type") widget.add("Cannot find current search_type") return widget span = SpanWdg(css="med") parent_type = self.get_parent_type() if parent_type: parent_type_obj = SearchType.get(parent_type) span.add("%s: " % parent_type_obj.get_value("title")) # assume that there is a code in the parent self.select.add_empty_option("-- Select --") self.select.set_option("query", "%s|code|code" % self.parent_type) span.add(self.select) widget.add(span) return widget
def get_config_wdg(self): widget = Widget() search = Search("sthpw/widget_config") div = DivWdg(css="filter_box") span = SpanWdg(css="med") span.add("Search Type: ") select = FilterSelectWdg("config_search_type") select.add_empty_option("-- Select --") search_type_search = Search("sthpw/search_object") search_type_search.add_order_by("search_type") span.add(select) project = Project.get() project_type = project.get_base_type() filter = search.get_regex_filter("search_type", "login|task|note|timecard", "EQ") search_type_search.add_where(''' namespace = '%s' or namespace = '%s' or %s ''' % (project_type, project.get_code(), filter)) select.set_search_for_options(search_type_search, value_column='search_type') div.add(span) search_type_value = select.get_value() span = SpanWdg() view_text = TextWdg("view") view_text.set_persist_on_submit() span.add("View: ") span.add(view_text) div.add(span) widget.add(div) view = view_text.get_value() if view: search.add_filter("view", view) if search_type_value: search.add_filter("search_type", search_type_value) table = TableWdg("sthpw/widget_config") table.set_search(search) widget.add(table) return widget
def get_link_wdg(self, element_name, config, options): attributes = config.get_element_attributes(element_name) title = self._get_title(config, element_name) default_access = "view" path = options.get('path') security = Environment.get_security() if not security.check_access( "side_bar", element_name, "view", default=default_access): return # backwards compatibility?? #if not security.check_access("url", path, "view"): # return link_wdg = DivWdg(css="hand") link_wdg.add_style("padding-top: 4px") link_wdg.add_attr("spt_title", title) link_wdg.add_attr("spt_icon", attributes.get("icon")) link_wdg.add_class("spt_side_bar_link") link_wdg.add_attr("spt_view", config.get_view()) link_wdg.add_attr("spt_element_name", element_name) link_wdg.add_attr("spt_path", options['path']) # add the mouseover color change link_wdg.add_style("color: #292929") link_wdg.add_class("SPT_DTS") hover = link_wdg.get_color("background3", -10) link_wdg.add_event("onmouseover", "this.style.background='%s'" % hover) link_wdg.add_event("onmouseout", "this.style.background=''") link_wdg.add_class("spt_side_bar_element") link_wdg.add_looks("fnt_text") link_wdg.add_attr("spt_view", config.get_view()) # add an invisible drop widget drop_wdg = self.get_drop_wdg() drop_wdg.add_style("margin-top: -3px") link_wdg.add(drop_wdg) span = SpanWdg() span.add_class("spt_side_bar_title") # add an icon icon = attributes.get("icon") if icon: icon = icon.upper() from pyasm.widget import IconWdg try: span.add(IconWdg(title, eval("IconWdg.%s" % icon))) except: pass span.add(title) link_wdg.add(span) return link_wdg
def get_client_section(self): section_div = DivWdg() client_span = SpanWdg() client_span.add_style('display', 'inline-block') client_span.add('Client: ') client_span.add(self.get_client_select()) status_span = SpanWdg() status_span.add_style('display', 'inline-block') status_span.add('Status: ') status_span.add(self.get_status_select()) section_div.add(client_span) section_div.add(status_span) return section_div
def get_episode_input_wdg(self): section_span = SpanWdg() section_span.add_style('display', 'inline-block') section_span.add('Episode: ') section_span.add(self.get_text_input_wdg('episode', 400)) return section_span
def get_display(my): widget = Widget() div = DivWdg(css="filter_box") show_span = SpanWdg(css='med') show_span.add('Show All Types: ') checkbox = FilterCheckboxWdg('show_all_types') checkbox.set_persistence() show_span.add(checkbox) show_all_types = checkbox.get_value() div.add(show_span) span = SpanWdg(css="med") span.add("Search Type: ") select = SelectWdg("filter|search_type") select.add_empty_option("-- Select --") project = Project.get() project_type = project.get_base_type() search = Search("sthpw/search_object") if show_all_types: search.add_where(''' namespace = '%s' or namespace = '%s' or search_type in ('sthpw/task') ''' % (project_type, project.get_code())) else: # show only the custom ones search.add_filter('namespace', project.get_code()) search.add_order_by("title") sobjects = search.get_sobjects() select.set_sobjects_for_options(sobjects, "search_type", "title") #select.set_option("query", "sthpw/search_object|search_type|title") select.set_persistence() select.add_event("onchange", "document.form.submit()") search_type = select.get_value() span.add(select) div.add(span) # make sure the current selection exists try: SearchType.get(search_type) except SearchException, e: return div
def get_version_input_wdg(self): section_span = SpanWdg() section_span.add_style('display', 'inline-block') section_span.add('Version: ') section_span.add(self.get_text_input_wdg('version', 400)) return section_span
def get_po_number_section(self): section_span = SpanWdg() section_span.add_style('display', 'inline-block') section_span.add('PO #: ') section_span.add(self.get_text_input_wdg('po_number', 100)) return section_span
def get_video_aspect_ratio_section(self): section_span = SpanWdg() section_span.add_style('display', 'inline-block') section_span.add('Video Aspect Ratio: ') section_span.add(self.get_video_aspect_ratio_select_wdg()) return section_span