[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[paparazzi-commits] [4185] allow to select XML files in subdirectories
From: |
Pascal Brisset |
Subject: |
[paparazzi-commits] [4185] allow to select XML files in subdirectories |
Date: |
Fri, 18 Sep 2009 14:27:06 +0000 |
Revision: 4185
http://svn.sv.gnu.org/viewvc/?view=rev&root=paparazzi&revision=4185
Author: hecto
Date: 2009-09-18 14:27:05 +0000 (Fri, 18 Sep 2009)
Log Message:
-----------
allow to select XML files in subdirectories
Modified Paths:
--------------
paparazzi3/trunk/sw/supervision/pc_aircraft.ml
paparazzi3/trunk/sw/supervision/pc_common.ml
Modified: paparazzi3/trunk/sw/supervision/pc_aircraft.ml
===================================================================
--- paparazzi3/trunk/sw/supervision/pc_aircraft.ml 2009-09-18 14:26:12 UTC
(rev 4184)
+++ paparazzi3/trunk/sw/supervision/pc_aircraft.ml 2009-09-18 14:27:05 UTC
(rev 4185)
@@ -98,11 +98,11 @@
| _ -> failwith "Internal error: gcs_or_edit"
let ac_files = fun gui ->
- ["airframe", gui#label_airframe, gui#button_browse_airframe,
gui#button_edit_airframe, edit, false;
- "flight_plan", gui#label_flight_plan, gui#button_browse_flight_plan,
gui#button_edit_flight_plan, gcs_or_edit, false;
- "settings", gui#label_settings, gui#button_browse_settings,
gui#button_edit_settings, edit, true;
- "radio", gui#label_radio, gui#button_browse_radio, gui#button_edit_radio,
edit, false;
- "telemetry", gui#label_telemetry, gui#button_browse_telemetry,
gui#button_edit_telemetry, edit, false]
+ ["airframe", "airframes", gui#label_airframe, gui#button_browse_airframe,
gui#button_edit_airframe, edit, false;
+ "flight_plan", "flight_plans", gui#label_flight_plan,
gui#button_browse_flight_plan, gui#button_edit_flight_plan, gcs_or_edit, false;
+ "settings", "settings", gui#label_settings, gui#button_browse_settings,
gui#button_edit_settings, edit, true;
+ "radio", "radios", gui#label_radio, gui#button_browse_radio,
gui#button_edit_radio, edit, false;
+ "telemetry", "telemetry", gui#label_telemetry, gui#button_browse_telemetry,
gui#button_edit_telemetry, edit, false]
(* Awful but easier *)
@@ -169,7 +169,7 @@
let value = fun a ->
try (ExtXml.attrib aircraft a) with _ -> Xml.attrib sample a in
List.iter
- (fun (a, label, _, _, _, _) -> label#set_text (value a))
+ (fun (a, _subdir, label, _, _, _, _) -> label#set_text (value a))
(ac_files gui);
let ac_id = ExtXml.attrib aircraft "ac_id"
and gui_color = ExtXml.attrib_or_default aircraft "gui_color" "white" in
@@ -241,7 +241,7 @@
ignore(gui#entry_ac_id#connect#changed ~callback:(fun () -> save_callback
gui ac_combo ()));
(* Conf *)
- List.iter (fun (name, label, button_browse, button_edit, editor, multiple) ->
+ List.iter (fun (name, subdir, label, button_browse, button_edit, editor,
multiple) ->
let callback = fun _ ->
let rel_files = Str.split regexp_space label#text in
let abs_files = List.map (Filename.concat Utils.conf_dir) rel_files in
@@ -250,9 +250,7 @@
editor arg in
ignore (button_edit#connect#clicked ~callback);
let callback = fun _ ->
- let subdir = Filename.dirname (first_word label#text) in
- let cb = fun selected ->
- let names = List.map (fun name -> subdir//name) selected in
+ let cb = fun names ->
let names = String.concat " " names in
label#set_text names;
save_callback gui ac_combo ()
Modified: paparazzi3/trunk/sw/supervision/pc_common.ml
===================================================================
--- paparazzi3/trunk/sw/supervision/pc_common.ml 2009-09-18 14:26:12 UTC
(rev 4184)
+++ paparazzi3/trunk/sw/supervision/pc_common.ml 2009-09-18 14:27:05 UTC
(rev 4185)
@@ -60,6 +60,16 @@
let io_watch_out = Glib.Io.add_watch [`IN; `HUP] cb channel_out in
pid, channel_out, com_stdout, io_watch_out
+let strip_prefix = fun dir file ->
+ let n = String.length dir in
+ if not (String.length file > n && String.sub file 0 n = dir) then begin
+ let msg = sprintf "Selected file '%s' should be in '%s'" file dir in
+ GToolbox.message_box ~title:"Error" msg;
+ raise Exit
+ end else
+ String.sub file (n+1) (String.length file - n - 1)
+
+
let choose_xml_file = fun ?(multiple = false) title subdir cb ->
let dir = conf_dir // subdir in
let dialog = GWindow.file_chooser_dialog ~action:`OPEN ~title () in
@@ -72,10 +82,10 @@
| `OPEN, _ when multiple ->
let names = dialog#get_filenames in
dialog#destroy ();
- cb (List.map Filename.basename names)
+ cb (List.map (fun f -> subdir // strip_prefix dir f) names)
| `OPEN, Some name ->
dialog#destroy ();
- cb [Filename.basename name]
+ cb [subdir // strip_prefix dir name]
| _ -> dialog#destroy ()
end
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [paparazzi-commits] [4185] allow to select XML files in subdirectories,
Pascal Brisset <=