2017-02-24 36 views
2

我们需要创建一个文本编辑器类型的应用程序,可以同时打开多个文本窗口LiveCode开发人员如何模拟标准模板中的多个打开的文档?

窗口应该都使用相同的堆栈布局。

是否可以多次打开一个堆栈就好像堆栈是模板或“文具”?

如果是这样,那么我们就可以注入empty文本对OpenStack的文本字段创建使用堆栈作为模板的新空白文本编辑器文件。

如果用户想打开一个现有的文本文件,然后我们就可以put URL "file://xyz.txt" into field "Text Editor" of stack "the new text editor window"

这将是概念上像这是不可改变的“文具”文档中的旧的Mac经典的想法,但是当用户双击上Finder中的文档将在新窗口中打开,并称为“无标题#1”。

我们似乎记得曾经有一个LiveCode中的设置将子堆栈保存为“模板”,以便它可以用来显示多个相同的窗口。

谷歌搜索,并通过LiveCode UI和词典搜索,我们发现的唯一的事情后, templateStack

如果我们使用templateStack那么我们将不得不以编程方式生成整个堆栈,这就背离了LiveCode的简单编程范例。

我们正在接近这个错误吗?

LiveCode开发人员如何模拟标准模板中的多个打开文档?

,我们遇到的唯一workaroud是创造一个亚组为模板,保持模板隐藏,然后当我们需要一个新的文本编辑器窗口中,我们将需要:

  1. 创建一个新的完全空栈
  2. 对于模板栈每个项目...
    • 在新的文本编辑器窗口中创建一个重复的项目。

我们是在错误的轨道上?

回答

3

您可以使用“克隆”,如下所示。 (这不是'模拟',而是使用模板堆栈的一种方法。)

local templatePath="/Users/admin/myTemplates" 

on mouseUp 
    lock screen 
    -- clone from file 
    put templatePath & "/mytemplate.livecode" into longPath 
    clone stack longPath 
    -- # or clone from an open stack: 
    -- clone stack "mytemplate" 
    put 1 into J 
    repeat while there is a stack ("copy_"&J) 
     add 1 to J 
    end repeat 
    put ("copy_"&J) into newName 
    set name of it to newName -- named but not yet saved! 
    set title of stack newName to (newName & " (not yet saved)") 
    go stack newName 
    put URL ("file:" & templatePath & "/myNew.txt") into fld "mainEdit" 
    unlock screen 
end mouseUp 
+0

谢谢你的想法。我们不知道'clone'命令。我们还没有运行你的代码示例,但这个概念似乎很清楚。 – Tacitus

+0

我们可能会调整它并试图在项目中使用现有的子包,但是从中可以制作出“克隆”。 除非有人提出更好的方法,否则我们会在几天后回来并将您的答案标记为首选解决方案。 谢谢你的帮助! – Tacitus

+0

后续行动:上述方法似乎是完成任务的方法。 LiveCode编辑器会询问您是否想要将每个克隆堆栈保存到主堆栈中,当您尝试关闭每个堆栈时,以及如果保存主堆栈,还会保存当前打开的子堆栈克隆。所以在开发过程中要注意这种问题,但是当您保存为独立应用程序时,不会发出这种烦人的警告。 – Tacitus

相关问题