本文整理匯總了Python中tactic.ui.input.TextInputWdg.add_class方法的典型用法代碼示例。如果您正苦於以下問題:Python TextInputWdg.add_class方法的具體用法?Python TextInputWdg.add_class怎麽用?Python TextInputWdg.add_class使用的例子?那麽, 這裏精選的方法代碼示例或許可以為您提供幫助。您也可以進一步了解該方法所在類tactic.ui.input.TextInputWdg
的用法示例。
在下文中一共展示了TextInputWdg.add_class方法的12個代碼示例,這些例子默認根據受歡迎程度排序。您可以為喜歡或者感覺有用的代碼點讚,您的評價將有助於係統推薦出更棒的Python代碼示例。
示例1: get_add_chat_wdg
# 需要導入模塊: from tactic.ui.input import TextInputWdg [as 別名]
# 或者: from tactic.ui.input.TextInputWdg import add_class [as 別名]
def get_add_chat_wdg(my):
div = DivWdg()
div.add_border()
div.add_style("padding: 20px")
div.add_class("spt_add_chat_top")
table = Table()
table.add_style("width: auto")
div.add(table)
table.add_row()
text = TextInputWdg(title="user", icon="USER_ADD")
table.add_cell(text)
text.add_class("spt_add_chat_user")
add_button = ActionButtonWdg(title="Start Chat")
table.add_cell(add_button)
add_button.add_behavior( {
'type': 'click_up',
'cbjs_action': '''
var top = bvr.src_el.getParent(".spt_add_chat_top");
var el = top.getElement(".spt_add_chat_user");
var user = el.value;
if (!user) {
alert("Specify a valid user to chat with");
return;
}
// new chat
var server = TacticServerStub.get();
var category = "chat";
var class_name = 'tactic.ui.app.ChatCmd';
var kwargs = {
users: [user]
}
server.execute_cmd(class_name, kwargs);
spt.panel.refresh(bvr.src_el);
'''
} )
return div
示例2: get_display
# 需要導入模塊: from tactic.ui.input import TextInputWdg [as 別名]
# 或者: from tactic.ui.input.TextInputWdg import add_class [as 別名]
def get_display(self):
top = self.top
self.set_as_panel(top)
top.add_class("spt_ingestion_top")
top.add_color("background", "background", -5)
self.data = {}
rules_div = DivWdg()
top.add(rules_div)
rules_div.add_style("padding: 10px")
rules_div.add("Rules: ")
rules_select = SelectWdg("rule_code")
rule_code = self.get_value('rule_code')
if rule_code:
rules_select.set_value(rule_code)
rules_select.set_option("query", "config/ingest_rule|code|title")
rules_select.add_empty_option("-- New --")
rules_div.add(rules_select)
rules_select.add_behavior( {
'type': 'change',
'cbjs_action': '''
var top = bvr.src_el.getParent(".spt_ingestion_top");
value = bvr.src_el.value;
var class_name = 'tactic.ui.tools.IngestionToolWdg';
spt.panel.load(top, class_name, {rule_code: value} );
'''
} )
rules_div.add("<hr/>")
# read from the database
if rule_code:
search = Search("config/ingest_rule")
search.add_filter("code", rule_code)
sobject = search.get_sobject()
else:
sobject = None
if sobject:
self.data = sobject.get_value("data")
if self.data:
self.data = jsonloads(self.data)
session_code = self.kwargs.get("session_code")
if session_code:
session = Search.get_by_code("config/ingest_session", session_code)
else:
if sobject:
session = sobject.get_related_sobject("config/ingest_session")
print("sobject: ", sobject.get_code(), sobject.get_value("spt_ingest_session_code"))
print("parent: ", session)
else:
session = None
if not session:
#session = SearchType.create("config/ingest_session")
#session.set_value("code", "session101")
#session.set_value("location", "local")
##session.set_value("base_dir", "C:")
top.add("No session defined!!!")
return top
rule = ""
filter = ""
ignore = ""
# get the base path
if sobject:
base_dir = sobject.get_value("base_dir")
else:
base_dir = ''
#else:
# base_dir = self.get_value("base_dir")
#if not base_dir:
# base_dir = ''
if sobject:
title = sobject.get_value("title")
else:
title = ''
if sobject:
code = sobject.get_value("code")
else:
code = ''
file_list = self.get_value("file_list")
scan_type = self.get_value("scan_type")
action_type = self.get_value("action_type")
rule = self.get_value("rule")
if not rule:
#.........這裏部分代碼省略.........
示例3: get_nav_wdg
# 需要導入模塊: from tactic.ui.input import TextInputWdg [as 別名]
# 或者: from tactic.ui.input.TextInputWdg import add_class [as 別名]
def get_nav_wdg(self):
#base_dir = self.kwargs.get("base_dir")
#location = self.kwargs.get("location")
base_dir = self.session.get_value("base_dir")
location = self.session.get_value("location")
nav_wdg = DivWdg()
nav_wdg.add("<b>Session 101 - Clean up self Crap</b><hr/>")
nav_wdg.add_style("margin-bottom: 10px")
nav_wdg.add_class("spt_file_nav")
nav_wdg.add_style("width: 575px")
nav_wdg.add_border()
nav_wdg.set_round_corners()
nav_wdg.add_style("padding: 5px")
button = ActionButtonWdg(title="Scan", tip="Scan for files in specified folder")
button.add_style("float: right")
button.add_style("margin-top: -5px")
nav_wdg.add(button)
from tactic.ui.input import TextInputWdg
title_wdg = "Session Title: "
nav_wdg.add(title_wdg)
text = TextInputWdg(name="title")
text.add_class("spt_title")
text.add_style("width: 300px")
nav_wdg.add(text)
nav_wdg.add("<br/><br/>")
folder_wdg = "Base folder of this session: "
nav_wdg.add(folder_wdg)
text = TextInputWdg(name="base_dir")
text.add_class("spt_base_dir")
text.add_style("width: 300px")
if base_dir:
text.set_value(base_dir)
nav_wdg.add(text)
# add a hidden paths variable
text = HiddenWdg("paths")
text.add_class("spt_paths")
nav_wdg.add(text)
nav_wdg.add("<br/>")
# add a hidden paths variable
select = SelectWdg("location")
if location:
select.set_value(location)
nav_wdg.add("<br/>")
nav_wdg.add("Folder is on ")
nav_wdg.add(select)
select.set_option("values", "local|server")
button.add_behavior( {
'type': 'click_up',
'cbjs_action': '''
var top = bvr.src_el.getParent(".spt_ingestion_top");
var nav = top.getElement(".spt_file_nav");
var nav_values = spt.api.Utility.get_input_values(nav,null,false);
var base_dir = nav_values.base_dir;
var location = nav_values.location;
spt.app_busy.show("Scanning", base_dir);
if (location == 'local') {
var applet = spt.Applet.get();
var paths = applet.list_dir(base_dir, 2);
var paths_el = nav.getElement(".spt_paths");
var js_paths = [];
for (var i = 0; i < paths.length; i++) {
var js_path = paths[i].replace(/\\\\/g,"/");
if (applet.is_dir(js_path) ) {
js_path = js_path + '/';
js_paths.push(js_path);
}
//if (i > 100) break;
else {
js_paths.push(js_path);
}
}
paths_el.value = js_paths.join("|");
}
//var nav_values = spt.api.Utility.get_input_values(nav,null,false);
//spt.panel.refresh(top, nav_values);
#.........這裏部分代碼省略.........
示例4: get_display
# 需要導入模塊: from tactic.ui.input import TextInputWdg [as 別名]
# 或者: from tactic.ui.input.TextInputWdg import add_class [as 別名]
def get_display(my):
top = my.top
top.add_class("spt_script_editor_top")
"""
top.add_class("SPT_CHANGE")
top.add_behavior( {
'type': 'load',
'cbjs_action': '''
register_change = function(bvr) {
var change_top = bvr.src_el.getParent(".SPT_CHANGE");
change_top.addClass("SPT_HAS_CHANGES");
change_top.update_change(change_top, bvr);
}
has_changes = function(bvr) {
var change_top = bvr.src_el.getParent(".SPT_CHANGE");
return change_top.hasClass("SPT_HAS_CHANGES");
}
bvr.src_el.update_change = function(top, bvr) {
change_el = top.getElement(".spt_change_element");
change_el.setStyle("display", "");
}
'''
} )
"""
change_div = DivWdg()
top.add(change_div)
#change_div.add("CHANGES!!!")
change_div.add_style("display: none")
change_div.add_class("spt_change_element");
top.add_class("spt_panel")
top.add_class("spt_js_editor")
top.add_attr("spt_class_name", Common.get_full_class_name(my) )
top.add_color("background", "background")
top.add_style("padding", "10px")
div = DivWdg()
top.add(div)
# if script_path
script_path = my.kwargs.get("script_path")
search_key = my.kwargs.get("search_key")
if script_path:
search = Search("config/custom_script")
dirname = os.path.dirname(script_path)
basename = os.path.basename(script_path)
search.add_filter("folder", dirname)
search.add_filter("title", basename)
script_sobj = search.get_sobject()
elif search_key:
script_sobj = Search.get_by_search_key(search_key)
else:
script_sobj = None
if script_sobj:
script_code = script_sobj.get_value("code")
script_folder = script_sobj.get_value("folder")
script_name = script_sobj.get_value("title")
script_value = script_sobj.get_value("script")
script_language = script_sobj.get_value("langauge")
else:
script_code = ''
script_folder = ''
script_name = ''
script_value = ''
editor = AceEditorWdg(custom_script=script_sobj)
my.editor_id = editor.get_editor_id()
if not Container.get_dict("JSLibraries", "spt_script_editor"):
div.add_behavior( {
'type': 'load',
'cbjs_action': my.get_onload_js()
} )
# create the insert button
help_button_wdg = DivWdg()
div.add(help_button_wdg)
help_button_wdg.add_style("float: right")
help_button = ActionButtonWdg(title="?", tip="Script Editor Help", size='s')
help_button_wdg.add(help_button)
#.........這裏部分代碼省略.........
示例5: get_display
# 需要導入模塊: from tactic.ui.input import TextInputWdg [as 別名]
# 或者: from tactic.ui.input.TextInputWdg import add_class [as 別名]
def get_display(my):
top = my.top
top.add_class("spt_sign_in_top")
top.add_color("background", "background")
top.add_style("padding: 30px")
top.add_style("width: 300px")
icon = IconWdg("Not signed in", IconWdg.WARNING)
top.add(icon)
top.add("You are not signed into Perforce.")
top.add("<br/>"*2)
table = Table()
top.add(table)
from tactic.ui.input import TextInputWdg, PasswordInputWdg
table.add_row()
td = table.add_cell("Port: ")
td.add_style("width: 75px")
text = TextInputWdg(name="port")
table.add_cell(text)
text.set_value("1666")
tr = table.add_row()
table.add_row_cell(" ")
table.add_row()
td = table.add_cell("Login: ")
td.add_style("width: 75px")
text = TextInputWdg(name="user")
table.add_cell(text)
user = Environment.get_user_name()
text.set_value(user)
table.add_row()
table.add_cell("Password: ")
text = PasswordInputWdg(name="password")
table.add_cell(text)
tr = table.add_row()
table.add_row_cell(" ")
tr = table.add_row()
table.add_cell("Workspace: ")
text = TextInputWdg(name="workspace")
table.add_cell(text)
text.add_class("spt_workspace")
top.add("<br/>"*2)
button = ActionButtonWdg(title="Sign In", icon=IconWdg.PUBLISH, size='medium')
top.add(button)
button.add_style("float: right")
button.add_behavior( {
'type': 'click_up',
'cbjs_action': '''
var top = bvr.src_el.getParent(".spt_sign_in_top");
var values = spt.api.get_input_values(top);
var port = values.port[0];
var user = values.user[0];
var password = values.password[0];
var client = values.workspace[0];
// login in user
spt.scm.port = port;
spt.scm.user = user;
spt.scm.password = password;
spt.scm.client = client;
// test the connection
var ping = spt.scm.ping();
if (ping != "OK") {
spt.scm.show_login();
return;
}
// TODO: get the workspaces and use this as a list
// For now, just fill it in with the first one
if (!client) {
var workspaces = spt.scm.get_workspaces();
if (workspaces.length > 0) {
#.........這裏部分代碼省略.........
示例6: get_display
# 需要導入模塊: from tactic.ui.input import TextInputWdg [as 別名]
# 或者: from tactic.ui.input.TextInputWdg import add_class [as 別名]
def get_display(my):
top = my.top
top.add_class("spt_script_editor_top")
"""
top.add_class("SPT_CHANGE")
top.add_behavior( {
'type': 'load',
'cbjs_action': '''
register_change = function(bvr) {
var change_top = bvr.src_el.getParent(".SPT_CHANGE");
change_top.addClass("SPT_HAS_CHANGES");
change_top.update_change(change_top, bvr);
}
has_changes = function(bvr) {
var change_top = bvr.src_el.getParent(".SPT_CHANGE");
return change_top.hasClass("SPT_HAS_CHANGES");
}
bvr.src_el.update_change = function(top, bvr) {
change_el = top.getElement(".spt_change_element");
change_el.setStyle("display", "");
}
'''
} )
"""
change_div = DivWdg()
top.add(change_div)
#change_div.add("CHANGES!!!")
change_div.add_style("display: none")
change_div.add_class("spt_change_element");
top.add_class("spt_panel")
top.add_class("spt_js_editor")
top.add_attr("spt_class_name", Common.get_full_class_name(my) )
top.add_color("background", "background")
top.add_style("padding", "10px")
div = DivWdg()
top.add(div)
# if script_path
script_path = my.kwargs.get("script_path")
search_key = my.kwargs.get("search_key")
if script_path:
search = Search("config/custom_script")
dirname = os.path.dirname(script_path)
basename = os.path.basename(script_path)
search.add_filter("folder", dirname)
search.add_filter("title", basename)
script_sobj = search.get_sobject()
elif search_key:
script_sobj = Search.get_by_search_key(search_key)
else:
script_sobj = None
if script_sobj:
script_code = script_sobj.get_value("code")
script_folder = script_sobj.get_value("folder")
script_name = script_sobj.get_value("title")
script_value = script_sobj.get_value("script")
script_language = script_sobj.get_value("language")
else:
script_code = ''
script_folder = ''
script_name = ''
script_value = ''
editor = AceEditorWdg(custom_script=script_sobj)
my.editor_id = editor.get_editor_id()
if not Container.get_dict("JSLibraries", "spt_script_editor"):
div.add_behavior( {
'type': 'load',
'cbjs_action': my.get_onload_js()
} )
# create the insert button
help_button_wdg = DivWdg()
div.add(help_button_wdg)
help_button_wdg.add_style("float: right")
help_button = ActionButtonWdg(title="?", tip="Script Editor Help", size='s')
help_button_wdg.add(help_button)
#.........這裏部分代碼省略.........
示例7: get_display
# 需要導入模塊: from tactic.ui.input import TextInputWdg [as 別名]
# 或者: from tactic.ui.input.TextInputWdg import add_class [as 別名]
def get_display(self):
top = self.top
top.add_color("background", "background")
top.add_class("spt_pipelines_top")
self.set_as_panel(top)
inner = DivWdg()
top.add(inner)
search_type = self.kwargs.get("search_type")
pipeline_code = self.kwargs.get("pipeline_code")
if search_type:
search = Search("sthpw/pipeline")
search.add_filter("search_type", search_type)
pipelines = search.get_sobjects()
else:
pipeline = Pipeline.get_by_code(pipeline_code)
if pipeline:
pipelines = [pipeline]
else:
pipelines = []
if not pipelines:
div = DivWdg()
inner.add(div)
inner.add_style("padding: 50px")
div.add_border()
div.add_color("color", "color3")
div.add_color("background", "background3")
div.add_style("width: 400px")
div.add_style("height: 100px")
div.add_style("padding: 30px")
icon = IconWdg("WARNING", IconWdg.WARNING)
div.add(icon)
div.add("<b>This Searchable Type does not have pipelines defined.</b>")
div.add("<br/>"*2)
div.add("<b style='padding-left: 35px'>Click Create to add one...</b>")
div.add("<br/>"*2)
button_div = DivWdg()
div.add(button_div)
button = ActionButtonWdg(title="Create", tip="Create pipeline")
button_div.add(button)
button.add_style("margin: auto")
button.add_behavior( {
'type': 'click_up',
'search_type': search_type,
'cbjs_action': '''
var server = TacticServerStub.get();
var cmd = 'tactic.ui.startup.PipelineCreateCbk';
var kwargs = {
search_type: bvr.search_type
}
server.execute_cmd(cmd, kwargs)
var top = bvr.src_el.getParent(".spt_pipelines_top");
spt.panel.refresh(top);
'''
} )
return top
# get the defalt task statuses
task_pipeline = Pipeline.get_by_code("task")
if task_pipeline:
statuses = task_pipeline.get_process_names()
else:
statuses = ['Pending', 'In Progress', 'Complete']
statuses_str = ",".join(statuses)
pipelines_div = DivWdg()
inner.add( pipelines_div )
pipelines_div.add_style("font-size: 12px")
pipelines_div.add_style("padding: 10px")
buttons_div = DivWdg()
pipelines_div.add(buttons_div)
#button = SingleButtonWdg( title="Save Pipelines", icon=IconWdg.SAVE )
button = ActionButtonWdg( title="Save" )
buttons_div.add(button)
button.add_behavior( {
'type': 'click_up',
'default_statuses': statuses_str,
'cbjs_action': '''
spt.app_busy.show("Saving Pipeline...")
setTimeout(function() {
#.........這裏部分代碼省略.........
示例8: get_file_mode_wdg
# 需要導入模塊: from tactic.ui.input import TextInputWdg [as 別名]
# 或者: from tactic.ui.input.TextInputWdg import add_class [as 別名]
def get_file_mode_wdg(self):
div = DivWdg()
div.add_style("margin-top: 15px")
div.add_style("margin-bottom: 15px")
div.add_class("spt_file_mode")
# drop folder
div.add("A writable folder is required. This is the folder that sync will drop the transacton file into. This folder should be common to all shares that need to have recieve the transactions.")
div.add("<br/>"*2)
# only valid for standalone
browser = WebContainer.get_web().get_browser()
if browser == 'Qt':
button = ActionButtonWdg(title="Browse")
div.add(button)
button.add_style("float: right")
button.add_behavior( {
'type': 'click_up',
'cbjs_action': '''
var applet = spt.Applet.get();
var files = applet.open_file_browser();
if (files.length == 0) {
return;
}
var dir = files[0];
if (!applet.is_dir(dir)) {
spt.alert("Please select a folder");
return;
}
var top = bvr.src_el.getParent(".spt_file_mode");
var folder_el = top.getElement(".spt_sync_folder");
folder_el.value = dir;
'''
} )
div.add("Sync Folder: ")
text = TextInputWdg(name="sync_folder")
text.add_class("spt_sync_folder")
text.add_style("width: 300px")
div.add(text)
#div.add("<br/>"*2)
#div.add("Set whether this transaction is plaintext, zipped or encrypted.")
div.add("<br/>"*3)
div.add("The transactions can be encrypted with an encryption ticket. All shares must set this to be the same value in order for the transaction to be appropriately encrypted and decrypted.")
div.add("<br/>"*2)
div.add("Encrypt Transactions? ")
checkbox = CheckboxWdg("is_encrypted")
div.add(checkbox)
checkbox.add_behavior( {
'type': 'click_up',
'cbjs_action': '''
var top = bvr.src_el.getParent(".spt_file_mode");
var el = top.getElement(".spt_encrypt");
if (el.getStyle("display") == "none") {
el.setStyle("display", "");
}
else {
el.setStyle("display", "none");
}
'''
} )
#div.add("Set whether this transaction is plaintext, zipped or encrypted.")
encrypt_div = DivWdg()
encrypt_div.add_class("spt_encrypt")
div.add(encrypt_div)
encrypt_div.add_style("display: none")
encrypt_div.add_style("padding: 30px 20px 30px 20px")
encrypt_div.add("Encryption Key: ")
text = TextWdg("encrypt_key")
text.add_style("width: 300px")
encrypt_div.add(text)
#div.add(self.get_ticket_wdg())
return div
示例9: get_display
# 需要導入模塊: from tactic.ui.input import TextInputWdg [as 別名]
# 或者: from tactic.ui.input.TextInputWdg import add_class [as 別名]
def get_display(self):
top = self.top
top.add_color("background", "background")
top.add_class("spt_columns_top")
self.set_as_panel(top)
top.add_style("padding: 10px")
search_type = self.kwargs.get("search_type")
search_type_obj = SearchType.get(search_type)
inner = DivWdg()
top.add(inner)
inner.add_style("width: 800px")
#text = TextWdg("search_type")
text = HiddenWdg("search_type")
inner.add(text)
text.set_value(search_type)
title_wdg = DivWdg()
inner.add(title_wdg)
title_wdg.add( search_type_obj.get_title() )
title_wdg.add(" <i style='font-size: 9px;opacity: 0.5'>(%s)</i>" % search_type)
title_wdg.add_style("padding: 5px")
title_wdg.add_color("background", "background3")
title_wdg.add_color("color", "color3")
title_wdg.add_style("margin: -10px -10px 10px -10px")
title_wdg.add_style("font-weight: bold")
shelf_wdg = DivWdg()
inner.add(shelf_wdg)
shelf_wdg.add_style("height: 35px")
button = ActionButtonWdg(title='Create', color="default", icon="BS_SAVE")
shelf_wdg.add(button)
shelf_wdg.add_style("float: right")
button.add_behavior( {
'type': 'click_up',
'search_type': search_type,
'cbjs_action': '''
var class_name = 'tactic.ui.startup.ColumnEditCbk';
var top = bvr.src_el.getParent(".spt_columns_top");
var elements = top.getElements(".spt_columns_element");
var values = [];
for (var i = 0; i < elements.length; i++ ) {
var data = spt.api.Utility.get_input_values(elements[i], null, false);
values.push(data)
}
var kwargs = {
search_type: bvr.search_type,
values: values
}
var server = TacticServerStub.get();
try {
server.execute_cmd(class_name, kwargs);
var names = [];
for (var i = 0; i < values.length; i++) {
var name = values[i].name;
name = name.strip();
if (name == '') { continue; }
names.push(name);
}
// Unless there is a table here, we should not do this.
// Better handled with a callback
//spt.table.add_columns(names)
// prevent grabbing all values, pass in a dummy one
spt.panel.refresh(top, {'refresh': true});
} catch(e) {
spt.alert(spt.exception.handler(e));
}
'''
} )
# add the headers
table = Table()
inner.add(table)
table.add_style("width: 100%")
tr = table.add_row()
tr.add_color("background", "background", -5)
th = table.add_header("Column Name")
th.add_style("width: 190px")
#.........這裏部分代碼省略.........
示例10: get_display
# 需要導入模塊: from tactic.ui.input import TextInputWdg [as 別名]
# 或者: from tactic.ui.input.TextInputWdg import add_class [as 別名]
def get_display(self):
search_type = self.kwargs.get("search_type")
div = self.top
div.add("List of Saved Searches: ")
div.add(HtmlElement.br(2))
div.add_style("margin: 20px")
div.add_style("width: 400px")
div.add_class("spt_saved_search_top")
try:
search = Search("config/widget_config")
search.add_op("begin")
search.add_filter("view", 'saved_search:%', op="like")
search.add_filter("category", 'search_filter')
search.add_op("or")
search.add_op("begin")
search.add_user_filter()
search.add_filter("login", "NULL", op="is", quoted=False)
search.add_op("or")
search.add_filter("search_type", search_type)
configs = search.get_sobjects()
except SearchException as e:
print("WARNING: ", e)
configs = []
except:
SearchWdg.clear_search_data(search_type)
raise
"""
from tactic.ui.panel import TableLayoutWdg
element_names = ['view','name','description','delete']
table = TableLayoutWdg(
search_type=search_type,
element_names=element_names,
search=search,
show_shelf=False,
show_border=False,
show_search_limit=False,
height="auto",
)
div.add(table)
"""
values = [x.get("view") for x in configs]
labels = [x.get("title") or x.get("view") for x in configs]
select = SelectWdg("saved_search")
div.add(select)
select.set_id("saved_search")
select.add_class("spt_saved_search_input")
select.add_empty_option("-- Select --")
select.set_option("values", values)
select.set_option("labels", labels)
retrieve_button = ActionButtonWdg(title="Load")
behavior = {
'type': 'click',
#'cbjs_action': 'spt.dg_table.retrieve_search_cbk(evt, bvr);'
'cbjs_action': '''
var top = bvr.src_el.getParent(".spt_saved_search_top")
var input = top.getElement(".spt_saved_search_input");
var value = input.value;
if (!value) {
spt.alert("Please select a saved search to load.");
return;
}
var popup = bvr.src_el.getParent(".spt_popup");
var activator = popup.activator;
var layout = activator.getElement(".spt_layout");
spt.table.set_layout(layout);
spt.table.load_search(value);
'''
}
retrieve_button.add_behavior( behavior )
retrieve_button.add_style("display: inline-block")
remove_button = ActionButtonWdg(title="Remove")
remove_button.add_behavior( {
'cbjs_action': '''
var top = bvr.src_el.getParent(".spt_saved_search_top")
var input = top.getElement(".spt_saved_search_input");
var value = input.value;
if (!value) {
spt.alert("Please select a saved search to remove.");
return;
}
spt.alert("Remove: " + value);
'''
} )
#.........這裏部分代碼省略.........
示例11: get_base_dir_wdg
# 需要導入模塊: from tactic.ui.input import TextInputWdg [as 別名]
# 或者: from tactic.ui.input.TextInputWdg import add_class [as 別名]
def get_base_dir_wdg(self):
div = DivWdg()
title = DivWdg()
div.add(title)
title.add("Sync Project Import: ")
title.add_style("font-size: 14px")
title.add_style("font-weight: bold")
div.add("<br/>")
base_dir = self.kwargs.get("base_dir")
is_local = False
if is_local:
button = ActionButtonWdg(title="Browse")
div.add(button)
button.add_style("float: right")
button.add_style("margin-top: -5px")
button.add_behavior( {
'type': 'click_up',
'cbjs_action': '''
var applet = spt.Applet.get();
var files = applet.open_file_browser();
if (!files.length) {
return;
}
var file = files[0];
var top = bvr.src_el.getParent(".spt_sync_import_top");
var el = top.getElement(".spt_sync_base_dir");
el.value = file;
'''
} )
div.add("Share Location: ")
text = TextInputWdg(name="base_dir")
div.add(text)
text.add_class("spt_sync_base_dir")
text.add_style("width: 300px")
if base_dir:
text.set_value(base_dir)
text.add_behavior( {
'type': 'blur',
'is_local': is_local,
'cbjs_action': '''
var top = bvr.src_el.getParent(".spt_sync_import_top");
var applet = spt.Applet.get();
var value = bvr.src_el.value;
var manifest_path = value + "/tactic.txt";
if (!value) {
return;
}
if (bvr.is_local) {
if (!applet.exists(value)) {
alert('Share folder does not exist.');
return;
}
if (!applet.exists(manifest_path)) {
alert('Cannot find manifest file.');
return;
}
var data = applet.read_file(manifest_path);
var json = JSON.parse(data);
data = JSON.stringify(json);
top.setAttribute("spt_data", data)
}
top.setAttribute("spt_base_dir", value)
spt.panel.refresh(top);
'''
} )
return div
示例12: get_upload_wdg
# 需要導入模塊: from tactic.ui.input import TextInputWdg [as 別名]
# 或者: from tactic.ui.input.TextInputWdg import add_class [as 別名]
#.........這裏部分代碼省略.........
else {
alert('Error: file object cannot be found.')
}
spt.app_busy.hide();'''%ticket
from tactic.ui.input import UploadButtonWdg
browse = UploadButtonWdg(name='new_csv_upload', title="Browse", tip="Click to choose a csv file",\
on_complete=on_complete, ticket=ticket)
browse.add_style('float: left')
msg.add(browse)
# this is now only used in the copy and paste Upload button for backward-compatibility
upload_wdg = SimpleUploadWdg(key=key, show_upload=False)
upload_wdg.add_style('display: none')
msg.add(upload_wdg)
msg.add("<br/>")
msg.add("<div style='margin: 30px; text-align: center'>-- OR --</div>")
msg.add("<b>Published URL: </b><br/>")
from tactic.ui.input import TextInputWdg
text = TextInputWdg(name="web_url")
text.add_style("width: 100%")
msg.add(text)
msg.add("<div style='margin: 30px; text-align: center'>-- OR --</div>")
msg.add("<b>Copy and Paste from a Spreadsheet: </b><br/>")
text = TextAreaWdg("data")
text.add_style('width: 100%')
text.add_style('height: 100px')
text.add_class("spt_import_cut_paste")
msg.add(text)
msg.add("<br/>"*3)
button = ActionButtonWdg(title="Parse")
button.add_style("margin: 5px auto")
msg.add(button)
button.add_behavior( {
'type': 'click_up',
'cbjs_action': '''
var top = bvr.src_el.getParent(".spt_import_top");
var el = top.getElement(".spt_import_cut_paste");
var value = el.value;
var csv = [];
// convert to a csv file!
lines = value.split("\\n");
for (var i = 0; i < lines.length; i++) {
if (lines[i] == '') {
continue;
}
var parts = lines[i].split("\\t");
var new_line = [];
for (var j = 0; j < parts.length; j++) {
if (parts[j] == '') {
new_line.push('');
}
else {
new_line.push('"'+parts[j]+'"');
}
}
new_line = new_line.join(",");
csv.push(new_line);
}
csv = csv.join("\\n")
/*
// FIXME: need to get a local temp directory
var applet = spt.Applet.get();
var path = spt.browser.os_is_Windows() ? "C:/sthpw/copy_n_paste.csv" : "/tmp/sthpw/copy_n_paste.csv";
applet.create_file(path, csv);
// upload the file
applet.upload_file(path)
applet.rmtree(path);
var top = bvr.src_el.getParent(".spt_import_csv");
var hidden = top.getElement(".spt_upload_hidden");
hidden.value = path;
var file_name = spt.path.get_basename(hidden.value);
file_name = spt.path.get_filesystem_name(file_name);
*/
var class_name = 'tactic.ui.widget.CsvImportWdg';
var values = spt.api.Utility.get_input_values('csv_import_main');
values['is_refresh'] = true;
//values['file_name'] = file_name;
values['data'] = csv;
var info = spt.panel.load('csv_import_main', class_name, {}, values);
'''
} )
return widget