293 } |
293 } |
294 |
294 |
295 |
295 |
296 /* HTTP preview */ |
296 /* HTTP preview */ |
297 |
297 |
298 private val plain_text_prefix = "plain_text=" |
|
299 |
|
300 def open_preview(view: View, plain_text: Boolean): Unit = |
298 def open_preview(view: View, plain_text: Boolean): Unit = |
301 { |
299 { |
302 Document_Model.get(view.getBuffer) match { |
300 Document_Model.get(view.getBuffer) match { |
303 case Some(model) => |
301 case Some(model) => |
304 val name = model.node_name |
302 val url = Preview_Service.server_url(plain_text, model.node_name) |
305 val url = |
|
306 PIDE.plugin.http_server.url + "/" + Preview_Service.name + "?" + |
|
307 (if (plain_text) plain_text_prefix else "") + Url.encode(name.node) |
|
308 PIDE.editor.hyperlink_url(url).follow(view) |
303 PIDE.editor.hyperlink_url(url).follow(view) |
309 case _ => |
304 case _ => |
310 } |
305 } |
311 } |
306 } |
312 |
307 |
313 object Preview_Service extends HTTP.Service("preview") |
308 object Preview_Service extends HTTP.Service("preview") |
314 { |
309 { |
|
310 service => |
|
311 |
|
312 private val plain_text_prefix = "plain_text=" |
|
313 |
|
314 def server_url(plain_text: Boolean, node_name: Document.Node.Name): String = |
|
315 PIDE.plugin.http_server.url + "/" + service.name + "?" + |
|
316 (if (plain_text) plain_text_prefix else "") + Url.encode(node_name.node) |
|
317 |
315 def apply(request: HTTP.Request): Option[HTTP.Response] = |
318 def apply(request: HTTP.Request): Option[HTTP.Response] = |
316 for { |
319 for { |
317 query <- request.decode_query |
320 query <- request.decode_query |
318 name = Library.perhaps_unprefix(plain_text_prefix, query) |
321 name = Library.perhaps_unprefix(plain_text_prefix, query) |
319 model <- get(PIDE.resources.node_name(name)) |
322 model <- get(PIDE.resources.node_name(name)) |