Clojure跷跷板应用程序:如何从#34; main"

时间:2016-01-20 06:08:12

标签: macos clojure seesaw

在我用clojure编写的独立应用程序中使用跷跷板创建gui,并在OSX下运行,我得到一个菜单栏标题" main"。这似乎是基于跷跷板的程序的默认值。我在任何可用的教程示例中都看到了它。这就是我的样子:

The offending menu title

我尝试重命名(-main)函数。上面的图像是在(-main)重命名为(-soulflyer)的情况下拍摄的,所以它不能从中选择标题。以下是代码片段:

(defn -soulflyer [& args]
  (invoke-later
   (let [f                (make-frame)
         details          (select f [:#details])
         image-pane       (select f [:#image])
         keyword-tree     (select f [:#tree])
8<---snip

请注意,这是从repl运行的,独立版本需要具有-main函数。

这是(制作框架)功能的一部分:

(frame
 :title "Keyword Explorer"
 :size [1400 :by 800]
 :menubar
 (menubar :items
          [(menu :text "File" :items [])
           (menu :text "Edit" :items [])])
 :content
8<---snip

所以:标题值只影响窗口中不在菜单栏中的标题。

有没有办法从clojure改变这个?

编辑:project.clj文件可能很有用(其余代码位于https://github.com/soulflyer/find-pics):

(defproject find-pics "0.1.0-SNAPSHOT"
  :description "Search for images containing specified keywords"
  :url "http://githube.com/soulflyer/find-pics"
  :license {:name "Eclipse Public License"
            :url "http://www.eclipse.org/legal/epl-v10.html"}
  :dependencies [[org.clojure/clojure "1.7.0"]
                 [seesaw "1.4.5"]
                 [image-lib "0.1.0-SNAPSHOT"]
                 [com.novemberain/monger "3.0.1"]
                 [org.clojure/tools.cli "0.3.3"]]
  :main find-pics.core
  :bin {:name "find-pics"
    :bin-path "~/bin"})

1 个答案:

答案 0 :(得分:3)

简短回答是,您应在:jvm-opts ["-Xdock:name=YOUR_APP_NAME"]文件中添加project.clj

Mac OS X中的Java应用程序有一个应用程序菜单。默认情况下,此应用程序菜单包含主类的全名作为标题。如果要更改此设置,可以像这样传递-Xdock:name VM参数。

java -Xdock:name=YOUR_APP_NAME ...

似乎将clojure函数编译成Java类。这就是应用程序菜单显示为main的原因,它与main函数名称相同。由于您无法更改功能名称,因此应将-Xdock:name=YOUR_APP_NAME添加到:jvm-opts

有关详细信息,请阅读以下文档:

OS X Integration for Java