Browse Source

final push

tags/1.0.0
Chris Cromer 9 months ago
parent
commit
d42035e620
Signed by: Chris Cromer <chris@cromer.cl> GPG Key ID: 39CC813FF3C8708A
15 changed files with 2496 additions and 73 deletions
  1. +6
    -0
      data/ui/meson.build
  2. +337
    -0
      data/ui/staff.editor.ui
  3. +22
    -0
      data/ui/staff.gresource.xml
  4. +235
    -0
      data/ui/staff.list.ui
  5. +149
    -0
      data/ui/staff.specialties.ui
  6. +129
    -0
      data/ui/staff.specialty.editor.ui
  7. +105
    -1
      lib/db/guia.vala
  8. +8
    -0
      po/POTFILES
  9. +99
    -24
      po/es.po
  10. +99
    -24
      po/es_CL.po
  11. +98
    -23
      po/sernatur.pot
  12. +12
    -1
      src/main_window.vala
  13. +4
    -0
      src/meson.build
  14. +672
    -0
      src/staff_editor.vala
  15. +521
    -0
      src/staff_list.vala

+ 6
- 0
data/ui/meson.build View File

@@ -17,6 +17,12 @@ tourist_gresource = gnome.compile_resources('tourist_gresource',
c_name: meson.project_name() + '_resource_tourist',
export: true,
install_header: true)
staff_gresource = gnome.compile_resources('staff_gresource',
'staff.gresource.xml',
source_dir: '.',
c_name: meson.project_name() + '_resource_staff',
export: true,
install_header: true)
place_gresource = gnome.compile_resources('place_gresource',
'place.gresource.xml',
source_dir: '.',

+ 337
- 0
data/ui/staff.editor.ui View File

@@ -0,0 +1,337 @@
<?xml version="1.0" encoding="UTF-8"?>
<!-- Generated with glade 3.22.1

Copyright 2018-2019 Chris Cromer

Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:

1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.

2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.

3. Neither the name of the copyright holder nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission.

THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

-->
<interface domain="sernatur">
<requires lib="gtk+" version="3.20"/>
<template class="SernaturStaffEditor" parent="GtkApplicationWindow">
<property name="can_focus">False</property>
<property name="type">popup</property>
<property name="title" translatable="yes">Staff Editor</property>
<property name="modal">True</property>
<property name="window_position">center-on-parent</property>
<property name="destroy_with_parent">True</property>
<property name="type_hint">dialog</property>
<property name="skip_taskbar_hint">True</property>
<property name="skip_pager_hint">True</property>
<property name="show_menubar">False</property>
<child>
<placeholder/>
</child>
<child>
<object class="GtkGrid">
<property name="visible">True</property>
<property name="can_focus">False</property>
<child>
<object class="GtkLabel">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="halign">end</property>
<property name="margin_left">5</property>
<property name="margin_right">5</property>
<property name="margin_top">5</property>
<property name="margin_bottom">5</property>
<property name="label" translatable="yes">RUN</property>
</object>
<packing>
<property name="left_attach">0</property>
<property name="top_attach">0</property>
</packing>
</child>
<child>
<object class="GtkEntry" id="run">
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="margin_left">5</property>
<property name="margin_right">5</property>
<property name="margin_top">5</property>
<property name="margin_bottom">5</property>
<property name="hexpand">True</property>
<property name="max_length">50</property>
<property name="caps_lock_warning">False</property>
</object>
<packing>
<property name="left_attach">1</property>
<property name="top_attach">0</property>
</packing>
</child>
<child>
<object class="GtkLabel">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="halign">end</property>
<property name="margin_left">5</property>
<property name="margin_right">5</property>
<property name="margin_top">5</property>
<property name="margin_bottom">5</property>
<property name="label" translatable="yes">Name</property>
</object>
<packing>
<property name="left_attach">0</property>
<property name="top_attach">1</property>
</packing>
</child>
<child>
<object class="GtkLabel">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="halign">end</property>
<property name="margin_left">5</property>
<property name="margin_right">5</property>
<property name="margin_top">5</property>
<property name="margin_bottom">5</property>
<property name="label" translatable="yes">Street</property>
</object>
<packing>
<property name="left_attach">0</property>
<property name="top_attach">2</property>
</packing>
</child>
<child>
<object class="GtkLabel">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="halign">end</property>
<property name="margin_left">5</property>
<property name="margin_right">5</property>
<property name="margin_top">5</property>
<property name="margin_bottom">5</property>
<property name="label" translatable="yes">Region</property>
</object>
<packing>
<property name="left_attach">0</property>
<property name="top_attach">4</property>
</packing>
</child>
<child>
<object class="GtkEntry" id="guide_name">
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="margin_left">5</property>
<property name="margin_right">5</property>
<property name="margin_top">5</property>
<property name="margin_bottom">5</property>
<property name="hexpand">True</property>
<property name="max_length">50</property>
<property name="caps_lock_warning">False</property>
</object>
<packing>
<property name="left_attach">1</property>
<property name="top_attach">1</property>
</packing>
</child>
<child>
<object class="GtkEntry" id="street">
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="margin_left">5</property>
<property name="margin_right">5</property>
<property name="margin_top">5</property>
<property name="margin_bottom">5</property>
<property name="hexpand">True</property>
<property name="max_length">50</property>
<property name="caps_lock_warning">False</property>
</object>
<packing>
<property name="left_attach">1</property>
<property name="top_attach">2</property>
</packing>
</child>
<child>
<object class="GtkLabel">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="halign">end</property>
<property name="margin_left">5</property>
<property name="margin_right">5</property>
<property name="margin_top">5</property>
<property name="margin_bottom">5</property>
<property name="label" translatable="yes">City</property>
</object>
<packing>
<property name="left_attach">0</property>
<property name="top_attach">5</property>
</packing>
</child>
<child>
<object class="GtkComboBoxText" id="region">
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="focus_on_click">False</property>
<property name="margin_left">5</property>
<property name="margin_right">5</property>
<property name="margin_top">5</property>
<property name="margin_bottom">5</property>
<property name="hexpand">True</property>
<property name="has_entry">True</property>
<property name="popup_fixed_width">False</property>
<signal name="changed" handler="on_changed_combobox" swapped="no"/>
<child internal-child="entry">
<object class="GtkEntry">
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="tooltip_text" translatable="yes">Create a new region by typing here.</property>
<property name="hexpand">True</property>
<property name="max_length">50</property>
<property name="caps_lock_warning">False</property>
</object>
</child>
</object>
<packing>
<property name="left_attach">1</property>
<property name="top_attach">4</property>
</packing>
</child>
<child>
<object class="GtkComboBoxText" id="city">
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="focus_on_click">False</property>
<property name="margin_left">5</property>
<property name="margin_right">5</property>
<property name="margin_top">5</property>
<property name="margin_bottom">5</property>
<property name="hexpand">True</property>
<property name="has_entry">True</property>
<property name="popup_fixed_width">False</property>
<child internal-child="entry">
<object class="GtkEntry" id="city_entry">
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="tooltip_text" translatable="yes">Create a new city by typing here.</property>
<property name="hexpand">True</property>
<property name="max_length">50</property>
<property name="caps_lock_warning">False</property>
</object>
</child>
</object>
<packing>
<property name="left_attach">1</property>
<property name="top_attach">5</property>
</packing>
</child>
<child>
<object class="GtkBox">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="margin_left">5</property>
<property name="margin_right">5</property>
<property name="margin_top">5</property>
<property name="margin_bottom">5</property>
<property name="hexpand">True</property>
<property name="spacing">25</property>
<property name="homogeneous">True</property>
<child>
<object class="GtkButton" id="cancel">
<property name="label" translatable="yes">Cancel</property>
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="receives_default">True</property>
<property name="tooltip_text" translatable="yes">Cancel the modification of this guide.</property>
<property name="margin_left">5</property>
<property name="margin_right">5</property>
<property name="margin_top">5</property>
<property name="margin_bottom">5</property>
<signal name="clicked" handler="on_clicked_button" swapped="no"/>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">0</property>
</packing>
</child>
<child>
<object class="GtkButton" id="specialties">
<property name="label" translatable="yes">Specialties</property>
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="receives_default">True</property>
<property name="tooltip_text" translatable="yes">Add specialties to this guide.</property>
<property name="margin_left">5</property>
<property name="margin_right">5</property>
<property name="margin_top">5</property>
<property name="margin_bottom">5</property>
<signal name="clicked" handler="on_clicked_button" swapped="no"/>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">1</property>
</packing>
</child>
<child>
<object class="GtkButton" id="save">
<property name="label" translatable="yes">Save</property>
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="receives_default">True</property>
<property name="tooltip_text" translatable="yes">Save this guide.</property>
<property name="margin_left">5</property>
<property name="margin_right">5</property>
<property name="margin_top">5</property>
<property name="margin_bottom">5</property>
<signal name="clicked" handler="on_clicked_button" swapped="no"/>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">2</property>
</packing>
</child>
</object>
<packing>
<property name="left_attach">0</property>
<property name="top_attach">6</property>
<property name="width">2</property>
</packing>
</child>
<child>
<object class="GtkLabel">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="halign">end</property>
<property name="margin_left">5</property>
<property name="margin_right">5</property>
<property name="margin_top">5</property>
<property name="margin_bottom">5</property>
<property name="label" translatable="yes">Number</property>
</object>
<packing>
<property name="left_attach">0</property>
<property name="top_attach">3</property>
</packing>
</child>
<child>
<object class="GtkEntry" id="number">
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="margin_left">5</property>
<property name="margin_right">5</property>
<property name="margin_top">5</property>
<property name="margin_bottom">5</property>
<property name="hexpand">True</property>
<property name="max_length">10</property>
<property name="caps_lock_warning">False</property>
<property name="input_purpose">number</property>
</object>
<packing>
<property name="left_attach">1</property>
<property name="top_attach">3</property>
</packing>
</child>
</object>
</child>
</template>
</interface>

+ 22
- 0
data/ui/staff.gresource.xml View File

@@ -0,0 +1,22 @@
<?xml version="1.0" encoding="UTF-8"?>
<!--
~ Copyright 2018-2019 Chris Cromer
~
~ Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
~
~ 1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
~
~ 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.
~
~ 3. Neither the name of the copyright holder nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission.
~
~ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-->
<gresources>
<gresource prefix="/cl/cromer/ubb/sernatur">
<file preprocess="xml-stripblanks">staff.list.ui</file>
<file preprocess="xml-stripblanks">staff.editor.ui</file>
<file preprocess="xml-stripblanks">staff.specialties.ui</file>
<file preprocess="xml-stripblanks">staff.specialty.editor.ui</file>
</gresource>
</gresources>

+ 235
- 0
data/ui/staff.list.ui View File

@@ -0,0 +1,235 @@
<?xml version="1.0" encoding="UTF-8"?>
<!-- Generated with glade 3.22.1

Copyright 2018-2019 Chris Cromer

Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:

1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.

2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.

3. Neither the name of the copyright holder nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission.

THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

-->
<interface domain="sernatur">
<requires lib="gtk+" version="3.20"/>
<object class="GtkListStore" id="liststore1"/>
<template class="SernaturStaffList" parent="GtkApplicationWindow">
<property name="can_focus">False</property>
<property name="type">popup</property>
<property name="title" translatable="yes">Staff</property>
<property name="modal">True</property>
<property name="window_position">center-on-parent</property>
<property name="default_height">480</property>
<property name="destroy_with_parent">True</property>
<property name="type_hint">dialog</property>
<property name="skip_taskbar_hint">True</property>
<property name="skip_pager_hint">True</property>
<property name="show_menubar">False</property>
<child type="titlebar">
<placeholder/>
</child>
<child>
<object class="GtkGrid">
<property name="visible">True</property>
<property name="can_focus">True</property>
<child>
<object class="GtkScrolledWindow">
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="hexpand">True</property>
<property name="vexpand">True</property>
<property name="hscrollbar_policy">never</property>
<property name="shadow_type">in</property>
<child>
<object class="GtkTreeView" id="staff_tree">
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="hexpand">True</property>
<property name="vexpand">True</property>
<property name="hscroll_policy">natural</property>
<property name="vscroll_policy">natural</property>
<property name="model">liststore1</property>
<property name="fixed_height_mode">True</property>
<property name="enable_grid_lines">both</property>
<property name="enable_tree_lines">True</property>
<child internal-child="selection">
<object class="GtkTreeSelection" id="selection">
<property name="mode">multiple</property>
<signal name="changed" handler="on_changed_selection" swapped="no"/>
</object>
</child>
<child>
<object class="GtkTreeViewColumn" id="run">
<property name="sizing">fixed</property>
<property name="title" translatable="yes">RUN</property>
<property name="clickable">True</property>
<signal name="clicked" handler="on_clicked_column" swapped="no"/>
<child>
<object class="GtkCellRendererText"/>
<attributes>
<attribute name="markup">0</attribute>
</attributes>
</child>
</object>
</child>
<child>
<object class="GtkTreeViewColumn" id="guide_name">
<property name="sizing">fixed</property>
<property name="title" translatable="yes">Name</property>
<property name="clickable">True</property>
<signal name="clicked" handler="on_clicked_column" swapped="no"/>
<child>
<object class="GtkCellRendererText"/>
<attributes>
<attribute name="markup">1</attribute>
</attributes>
</child>
</object>
</child>
<child>
<object class="GtkTreeViewColumn" id="street">
<property name="sizing">fixed</property>
<property name="title" translatable="yes">Street</property>
<property name="clickable">True</property>
<signal name="clicked" handler="on_clicked_column" swapped="no"/>
<child>
<object class="GtkCellRendererText"/>
<attributes>
<attribute name="markup">2</attribute>
</attributes>
</child>
</object>
</child>
<child>
<object class="GtkTreeViewColumn" id="number">
<property name="sizing">fixed</property>
<property name="title" translatable="yes">Number</property>
<property name="clickable">True</property>
<signal name="clicked" handler="on_clicked_column" swapped="no"/>
<child>
<object class="GtkCellRendererText"/>
<attributes>
<attribute name="markup">3</attribute>
</attributes>
</child>
</object>
</child>
<child>
<object class="GtkTreeViewColumn" id="city">
<property name="sizing">fixed</property>
<property name="title" translatable="yes">City</property>
<property name="clickable">True</property>
<signal name="clicked" handler="on_clicked_column" swapped="no"/>
<child>
<object class="GtkCellRendererText"/>
<attributes>
<attribute name="markup">4</attribute>
</attributes>
</child>
</object>
</child>
<child>
<object class="GtkTreeViewColumn" id="region">
<property name="sizing">fixed</property>
<property name="title" translatable="yes">Region</property>
<property name="clickable">True</property>
<signal name="clicked" handler="on_clicked_column" swapped="no"/>
<child>
<object class="GtkCellRendererText"/>
<attributes>
<attribute name="markup">5</attribute>
</attributes>
</child>
</object>
</child>
</object>
</child>
</object>
<packing>
<property name="left_attach">0</property>
<property name="top_attach">0</property>
</packing>
</child>
<child>
<object class="GtkGrid">
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="margin_left">5</property>
<property name="margin_right">5</property>
<property name="margin_top">5</property>
<property name="margin_bottom">5</property>
<property name="hexpand">True</property>
<property name="column_spacing">25</property>
<property name="column_homogeneous">True</property>
<child>
<object class="GtkButton" id="edit_staff">
<property name="label" translatable="yes">Edit</property>
<property name="visible">True</property>
<property name="sensitive">False</property>
<property name="can_focus">True</property>
<property name="receives_default">True</property>
<property name="tooltip_text" translatable="yes">Edit selected staff member.</property>
<signal name="clicked" handler="on_clicked_button" swapped="no"/>
</object>
<packing>
<property name="left_attach">1</property>
<property name="top_attach">0</property>
</packing>
</child>
<child>
<object class="GtkButton" id="new_staff">
<property name="label" translatable="yes">New</property>
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="receives_default">True</property>
<property name="tooltip_text" translatable="yes">Create a new staff member.</property>
<signal name="clicked" handler="on_clicked_button" swapped="no"/>
</object>
<packing>
<property name="left_attach">0</property>
<property name="top_attach">0</property>
</packing>
</child>
<child>
<object class="GtkButton" id="delete_staff">
<property name="label" translatable="yes">Delete</property>
<property name="visible">True</property>
<property name="sensitive">False</property>
<property name="can_focus">True</property>
<property name="receives_default">True</property>
<property name="tooltip_text" translatable="yes">Delete selected staff member.</property>
<signal name="clicked" handler="on_clicked_button" swapped="no"/>
</object>
<packing>
<property name="left_attach">2</property>
<property name="top_attach">0</property>
</packing>
</child>
<child>
<object class="GtkButton" id="close_staff">
<property name="label" translatable="yes">Close</property>
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="receives_default">True</property>
<property name="tooltip_text" translatable="yes">Close this window.</property>
<signal name="clicked" handler="on_clicked_button" swapped="no"/>
</object>
<packing>
<property name="left_attach">3</property>
<property name="top_attach">0</property>
</packing>
</child>
</object>
<packing>
<property name="left_attach">0</property>
<property name="top_attach">1</property>
</packing>
</child>
</object>
</child>
</template>
</interface>

+ 149
- 0
data/ui/staff.specialties.ui View File

@@ -0,0 +1,149 @@
<?xml version="1.0" encoding="UTF-8"?>
<!-- Generated with glade 3.22.1

Copyright 2018-2019 Chris Cromer

Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:

1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.

2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.

3. Neither the name of the copyright holder nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission.

THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

-->
<interface domain="sernatur">
<requires lib="gtk+" version="3.20"/>
<object class="GtkListStore" id="liststore1"/>
<template class="SernaturTouristIllnesses" parent="GtkApplicationWindow">
<property name="can_focus">False</property>
<property name="type">popup</property>
<property name="title" translatable="yes">Illnesses</property>
<property name="modal">True</property>
<property name="window_position">center-on-parent</property>
<property name="default_height">480</property>
<property name="destroy_with_parent">True</property>
<property name="type_hint">dialog</property>
<property name="skip_taskbar_hint">True</property>
<property name="skip_pager_hint">True</property>
<property name="show_menubar">False</property>
<child type="titlebar">
<placeholder/>
</child>
<child>
<object class="GtkGrid">
<property name="visible">True</property>
<property name="can_focus">True</property>
<child>
<object class="GtkScrolledWindow">
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="hexpand">True</property>
<property name="vexpand">True</property>
<property name="hscrollbar_policy">never</property>
<property name="shadow_type">in</property>
<child>
<object class="GtkTreeView" id="illness_tree">
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="hexpand">True</property>
<property name="vexpand">True</property>
<property name="hscroll_policy">natural</property>
<property name="vscroll_policy">natural</property>
<property name="model">liststore1</property>
<property name="fixed_height_mode">True</property>
<property name="enable_grid_lines">both</property>
<property name="enable_tree_lines">True</property>
<child internal-child="selection">
<object class="GtkTreeSelection" id="selection">
<property name="mode">multiple</property>
<signal name="changed" handler="on_changed_selection" swapped="no"/>
</object>
</child>
<child>
<object class="GtkTreeViewColumn" id="illness">
<property name="sizing">fixed</property>
<property name="title" translatable="yes">Illness</property>
<property name="clickable">True</property>
<signal name="clicked" handler="on_clicked_column" swapped="no"/>
<child>
<object class="GtkCellRendererText"/>
<attributes>
<attribute name="markup">0</attribute>
</attributes>
</child>
</object>
</child>
</object>
</child>
</object>
<packing>
<property name="left_attach">0</property>
<property name="top_attach">0</property>
</packing>
</child>
<child>
<object class="GtkGrid">
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="margin_left">5</property>
<property name="margin_right">5</property>
<property name="margin_top">5</property>
<property name="margin_bottom">5</property>
<property name="hexpand">True</property>
<property name="column_spacing">25</property>
<property name="column_homogeneous">True</property>
<child>
<object class="GtkButton" id="add_illness">
<property name="label" translatable="yes">Add</property>
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="receives_default">True</property>
<property name="tooltip_text" translatable="yes">Add new illnesses.</property>
<signal name="clicked" handler="on_clicked_button" swapped="no"/>
</object>
<packing>
<property name="left_attach">0</property>
<property name="top_attach">0</property>
</packing>
</child>
<child>
<object class="GtkButton" id="close_illness">
<property name="label" translatable="yes">Close</property>
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="receives_default">True</property>
<property name="tooltip_text" translatable="yes">Close this window.</property>
<signal name="clicked" handler="on_clicked_button" swapped="no"/>
</object>
<packing>
<property name="left_attach">2</property>
<property name="top_attach">0</property>
</packing>
</child>
<child>
<object class="GtkButton" id="delete_illness">
<property name="label" translatable="yes">Delete</property>
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="receives_default">True</property>
<property name="tooltip_text" translatable="yes">Delete illnesses.</property>
<signal name="clicked" handler="on_clicked_button" swapped="no"/>
</object>
<packing>
<property name="left_attach">1</property>
<property name="top_attach">0</property>
</packing>
</child>
</object>
<packing>
<property name="left_attach">0</property>
<property name="top_attach">1</property>
</packing>
</child>
</object>
</child>
</template>
</interface>

+ 129
- 0
data/ui/staff.specialty.editor.ui View File

@@ -0,0 +1,129 @@
<?xml version="1.0" encoding="UTF-8"?>
<!-- Generated with glade 3.22.1

Copyright 2018-2019 Chris Cromer

Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:

1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.

2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.

3. Neither the name of the copyright holder nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission.

THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

-->
<interface domain="sernatur">
<requires lib="gtk+" version="3.20"/>
<template class="SernaturTouristIllnessEditor" parent="GtkApplicationWindow">
<property name="can_focus">False</property>
<property name="type">popup</property>
<property name="title" translatable="yes">Add Illness</property>
<property name="resizable">False</property>
<property name="modal">True</property>
<property name="window_position">center-on-parent</property>
<property name="destroy_with_parent">True</property>
<property name="type_hint">dialog</property>
<property name="skip_taskbar_hint">True</property>
<property name="skip_pager_hint">True</property>
<property name="show_menubar">False</property>
<child>
<placeholder/>
</child>
<child>
<object class="GtkGrid">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="margin_left">5</property>
<property name="margin_right">5</property>
<property name="margin_top">5</property>
<property name="margin_bottom">5</property>
<property name="row_spacing">5</property>
<property name="column_spacing">5</property>
<child>
<object class="GtkLabel">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="halign">end</property>
<property name="margin_left">5</property>
<property name="margin_right">5</property>
<property name="margin_top">5</property>
<property name="margin_bottom">5</property>
<property name="label" translatable="yes">Illness</property>
</object>
<packing>
<property name="left_attach">0</property>
<property name="top_attach">0</property>
</packing>
</child>
<child>
<object class="GtkBox" id="button_bar">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="margin_left">5</property>
<property name="margin_right">5</property>
<property name="margin_top">5</property>
<property name="margin_bottom">5</property>
<property name="hexpand">True</property>
<property name="spacing">25</property>
<property name="homogeneous">True</property>
<child>
<object class="GtkButton" id="close_illness">
<property name="label" translatable="yes">Close</property>
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="receives_default">True</property>
<property name="tooltip_text" translatable="yes">Close this window.</property>
<property name="margin_left">5</property>
<property name="margin_right">5</property>
<property name="margin_top">5</property>
<property name="margin_bottom">5</property>
<signal name="clicked" handler="on_clicked_button" swapped="no"/>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">0</property>
</packing>
</child>
<child>
<object class="GtkButton" id="add_illness">
<property name="label" translatable="yes">Add</property>
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="receives_default">True</property>
<property name="tooltip_text" translatable="yes">Save this place.</property>
<property name="margin_left">5</property>
<property name="margin_right">5</property>
<property name="margin_top">5</property>
<property name="margin_bottom">5</property>
<signal name="clicked" handler="on_clicked_button" swapped="no"/>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">1</property>
</packing>
</child>
</object>
<packing>
<property name="left_attach">0</property>
<property name="top_attach">1</property>
<property name="width">2</property>
</packing>
</child>
<child>
<object class="GtkComboBoxText" id="illness">
<property name="visible">True</property>
<property name="can_focus">False</property>
</object>
<packing>
<property name="left_attach">1</property>
<property name="top_attach">0</property>
</packing>
</child>
</object>
</child>
</template>
</interface>

+ 105
- 1
lib/db/guia.vala View File

@@ -62,8 +62,9 @@ namespace LibSernatur {
* Get all tuples and fields from database
* @param conn The database connection to use
* @return Returns a list of Guia
* @throws PostgresError If there is a problem with with escaping strings
*/
public static List<Guia> get_all_guias (Connection conn) {
public static List<Guia> get_all_guias (Connection conn) throws PostgresError {
var res = conn.db.exec ("
SELECT G.rut_guia, G.nombre_guia, G.calle, G.numero,
C.id_ciudad, C.nombre_ciudad,
@@ -109,6 +110,109 @@ JOIN region R ON (C.id_region = R.id_region)
}
return list;
}

/**
* Get a tuple and fields from database
* @param conn The database connection to use
* @return Returns a Guia
* @throws PostgresError If there is a problem with with escaping strings
*/
public static Guia? get_guia_by_run (Connection conn, string run) throws PostgresError {
var res = conn.db.exec ("
SELECT G.rut_guia, G.nombre_guia, G.calle, G.numero,
C.id_ciudad, C.nombre_ciudad,
R.id_region, R.nombre_region
FROM guia G
JOIN ciudad C ON (G.id_ciudad = C.id_ciudad)
JOIN region R ON (C.id_region = R.id_region)
WHERE rut_guia = '" + conn.escape (run) + "'
");
if (res.get_status () != ExecStatus.TUPLES_OK) {
#if DEBUG
error (conn.db.get_error_message ());
#else
warning (conn.db.get_error_message ());
return null;
#endif
}

var wra = new ResultWrapper (res);
Guia guia = null;
int n = res.get_n_tuples ();
for (int i = 0; i < n; i++) {
try {
guia = new Guia (wra.get_string_n (i, "rut_guia"),
wra.get_string_n (i, "nombre_guia"),
wra.get_string_n (i, "calle"),
wra.get_int_n (i, "numero"),
new Ciudad (wra.get_int_n (i, "id_ciudad"),
wra.get_string_n (i, "nombre_ciudad"),
new Region (wra.get_int_n (i, "id_region"),
wra.get_string_n (i, "nombre_region")
)
)
);
}
catch (Error e) {
#if DEBUG
error (e.message);
#else
warning (e.message);
#endif
}
}
return guia;
}

/**
* Insert a staff member in the database
* @param conn The database connection
* @param guia The staff member to insert
* @throws PostgresError Thrown if there is a problem with escaping strings
*/
public static void insert_illness (Connection conn, Guia guia) throws PostgresError {
var res = conn.db.exec ("
INSERT INTO guia
(rut_guia, nombre_guia, calle, numero, id_ciudad)
VALUES
(
'" + conn.escape (guia.rut_guia) + "',
'" + conn.escape (guia.nombre_guia) + "',
'" + conn.escape (guia.calle) + "',
" + guia.numero.to_string () + ",
" + guia.ciudad.id_ciudad.to_string () + "
)
");
if (res.get_status () != ExecStatus.COMMAND_OK) {
#if DEBUG
error (conn.db.get_error_message ());
#else
warning (conn.db.get_error_message ());
#endif
}
}

/**
* Delete a staff member in the database
* @param conn The database connection
* @param guia The staff member to delete
* @throws PostgresError Thrown if there is a problem with escaping strings
*/
public static void delete_staff (Connection conn, Guia guia) throws PostgresError {
var res = conn.db.exec ("
DELETE FROM guia
WHERE (
rut_guia = '" + conn.escape (guia.rut_guia) + "'
)
");
if (res.get_status () != ExecStatus.COMMAND_OK) {
#if DEBUG
error (conn.db.get_error_message ());
#else
warning (conn.db.get_error_message ());
#endif
}
}
}
}
}

+ 8
- 0
po/POTFILES View File

@@ -18,6 +18,10 @@ src/tourist_list.vala
src/tourist_editor.vala
src/tourist_illnesses.vala
src/tourist_illness_editor.vala
src/staff_list.vala
src/staff_editor.vala
#src/staff_specialties.vala
#src/staff_specialty_editor.vala
src/query_window.vala
data/ui/main.window.ui
data/ui/main.splash.ui
@@ -30,6 +34,10 @@ data/ui/tourist.list.ui
data/ui/tourist.editor.ui
data/ui/tourist.illnesses.ui
data/ui/tourist.illness.editor.ui
data/ui/staff.list.ui
data/ui/staff.editor.ui
data/ui/staff.specialties.ui
data/ui/staff.specialty.editor.ui
data/ui/place.editor.ui
data/ui/query.window.ui
data/ui/query.tree.ui

+ 99
- 24
po/es.po View File

@@ -7,8 +7,8 @@ msgid ""
msgstr ""
"Project-Id-Version: sernatur\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2019-01-21 00:47-0300\n"
"PO-Revision-Date: 2019-01-21 00:57-0300\n"
"POT-Creation-Date: 2019-01-21 03:25-0300\n"
"PO-Revision-Date: 2019-01-21 03:28-0300\n"
"Last-Translator: Chris Cromer <chris@cromer.cl>\n"
"Language-Team: none\n"
"Language: es\n"
@@ -93,16 +93,20 @@ msgstr ""
msgid "SERNATUR version: "
msgstr "Versión de SERNATUR: "

#: src/main_window.vala:227
#: src/main_window.vala:238
msgid "Error: Could not connect to the database!"
msgstr "Error: No se puede conectar al base de datos!"

#: src/main_window.vala:239 src/tour_list.vala:233 src/tour_editor.vala:231
#: src/main_window.vala:250 src/tour_list.vala:233 src/tour_editor.vala:231
#: src/tour_editor.vala:248 src/tour_editor.vala:280 src/tour_editor.vala:297
#: src/tour_editor.vala:329 src/tour_editor.vala:346
#: src/tour_assign_vehicle.vala:99 src/tourist_list.vala:206
#: src/tourist_editor.vala:99 src/tourist_editor.vala:112
#: src/tourist_editor.vala:128 src/tourist_editor.vala:141
#: src/staff_editor.vala:227 src/staff_editor.vala:240
#: src/staff_editor.vala:256 src/staff_editor.vala:269
#: src/staff_editor.vala:291 src/staff_editor.vala:308
#: src/staff_editor.vala:340 src/staff_editor.vala:357
msgid "Error"
msgstr "Error"

@@ -132,20 +136,20 @@ msgstr "Error: El nombre del tour no puede estar en blanco!"
msgid "Error: A tour named \"%s\" already exists!"
msgstr "Error: Un tour con el nombre \"%s\" ya existe!"

#: src/tour_editor.vala:276
#: src/tour_editor.vala:276 src/staff_editor.vala:287
msgid "Error: City name cannot be left blank!"
msgstr "Error: El nombre de la ciudad no puede estar en blanco!"

#: src/tour_editor.vala:293
#: src/tour_editor.vala:293 src/staff_editor.vala:304
#, c-format
msgid "Error: A city named \"%s\" already exists!"
msgstr "Error: Una ciudad con el nombre \"%s\" ya existe!"

#: src/tour_editor.vala:325
#: src/tour_editor.vala:325 src/staff_editor.vala:336
msgid "Error: Region name cannot be left blank!"
msgstr "Error: El nombre de la región no puede estar en blanco!"

#: src/tour_editor.vala:342
#: src/tour_editor.vala:342 src/staff_editor.vala:353
#, c-format
msgid "Error: A region named \"%s\" already exists!"
msgstr "Error: Una región con el nombre \"%s\" ya existe!"
@@ -175,7 +179,7 @@ msgstr ""
"Error: No se puede borrar la turista \"%s\" porque hay información asociado "
"con la turista!"

#: src/tourist_editor.vala:95
#: src/tourist_editor.vala:95 src/staff_editor.vala:223
msgid "Error: Tourist name cannot be left blank!"
msgstr "Error: El nombre de la turista no puede estar en blanco!"

@@ -183,7 +187,7 @@ msgstr "Error: El nombre de la turista no puede estar en blanco!"
msgid "Error: Tourist RUN cannot be left blank!"
msgstr "Error: El RUN de la turista no puede estar en blanco!"

#: src/tourist_editor.vala:124
#: src/tourist_editor.vala:124 src/staff_editor.vala:252
msgid "Error: The RUN entered is invalid!"
msgstr "Error: El RUN ingresado es invalido!"

@@ -201,6 +205,23 @@ msgid "Are you sure you wish to delete these illnesses from this tourist?"
msgstr ""
"¿Usted está seguro que quiere borrar estos enfermedades de esta turista?"

#: src/staff_list.vala:190
msgid "Are you sure you wish to delete this staff member?"
msgstr "¿Usted está seguro que quiere borrar esta guía?"

#: src/staff_list.vala:197
msgid "Are you sure you wish to delete these staff members?"
msgstr "¿Usted está seguro que quiere borrar estas guías?"

#: src/staff_editor.vala:236
msgid "Error: Staff member RUN cannot be left blank!"
msgstr "Error: El RUN de la guía no puede estar en blanco!"

#: src/staff_editor.vala:265
#, c-format
msgid "Error: A staff member with the RUN \"%s\" already exists!"
msgstr "Error: Una guía con el RUN \"%s\" ya existe!"

#: src/query_window.vala:290 data/ui/main.window.ui:105
msgid "(Q1) Regions with discounts"
msgstr "(Q1) Regiones sin descuentos"
@@ -229,7 +250,7 @@ msgstr "_Menú"
msgid "Tours"
msgstr "Tours"

#: data/ui/main.window.ui:61
#: data/ui/main.window.ui:61 data/ui/staff.list.ui:23
msgid "Staff"
msgstr "Empleados"

@@ -267,16 +288,19 @@ msgid "Minimum People"
msgstr "Mínima Personas"

#: data/ui/tour.list.ui:124 data/ui/tour.editor.ui:186
#: data/ui/staff.list.ui:124 data/ui/staff.editor.ui:161
#: data/ui/place.editor.ui:150
msgid "City"
msgstr "Ciudad"

#: data/ui/tour.list.ui:138 data/ui/tour.editor.ui:134
#: data/ui/staff.list.ui:138 data/ui/staff.editor.ui:111
#: data/ui/place.editor.ui:116
msgid "Region"
msgstr "Región"

#: data/ui/tour.list.ui:170 data/ui/tourist.list.ui:128
#: data/ui/staff.list.ui:170
msgid "Edit"
msgstr "Editar"

@@ -285,7 +309,7 @@ msgid "Edit selected tour."
msgstr "Editar el tour seleccionado."

#: data/ui/tour.list.ui:185 data/ui/tour.places.ui:212
#: data/ui/tourist.list.ui:143
#: data/ui/tourist.list.ui:143 data/ui/staff.list.ui:185
msgid "New"
msgstr "Nuevo"

@@ -294,7 +318,8 @@ msgid "Create a new tour."
msgstr "Crear un tour nuevo."

#: data/ui/tour.list.ui:199 data/ui/tourist.list.ui:157
#: data/ui/tourist.illnesses.ui:128
#: data/ui/tourist.illnesses.ui:128 data/ui/staff.list.ui:199
#: data/ui/staff.specialties.ui:128
msgid "Delete"
msgstr "Borrar"

@@ -304,13 +329,16 @@ msgstr "Borrar el tour seleccionado."

#: data/ui/tour.list.ui:214 data/ui/tour.places.ui:198
#: data/ui/tourist.list.ui:172 data/ui/tourist.illnesses.ui:114
#: data/ui/tourist.illness.editor.ui:73 data/ui/query.window.ui:66
#: data/ui/tourist.illness.editor.ui:73 data/ui/staff.list.ui:214
#: data/ui/staff.specialties.ui:114 data/ui/staff.specialty.editor.ui:73
#: data/ui/query.window.ui:66
msgid "Close"
msgstr "Cerrar"

#: data/ui/tour.list.ui:218 data/ui/tour.places.ui:202
#: data/ui/tourist.list.ui:176 data/ui/tourist.illnesses.ui:118
#: data/ui/tourist.illness.editor.ui:77
#: data/ui/tourist.illness.editor.ui:77 data/ui/staff.list.ui:218
#: data/ui/staff.specialties.ui:118 data/ui/staff.specialty.editor.ui:77
msgid "Close this window."
msgstr "Cerrar esta ventana."

@@ -318,17 +346,19 @@ msgstr "Cerrar esta ventana."
msgid "Tour Editor"
msgstr "Editor de Tour"

#: data/ui/tour.editor.ui:233 data/ui/place.editor.ui:197
#: data/ui/tour.editor.ui:233 data/ui/staff.editor.ui:185
#: data/ui/place.editor.ui:197
msgid "Create a new region by typing here."
msgstr "Crear una nueva región con escribir aquí."

#: data/ui/tour.editor.ui:261 data/ui/place.editor.ui:225
#: data/ui/tour.editor.ui:261 data/ui/staff.editor.ui:213
#: data/ui/place.editor.ui:225
msgid "Create a new city by typing here."
msgstr "Crear una nueva ciudad con escribir aquí."

#: data/ui/tour.editor.ui:286 data/ui/tour.place.editor.ui:149
#: data/ui/tour.assign.vehicle.ui:67 data/ui/tourist.editor.ui:131
#: data/ui/place.editor.ui:250
#: data/ui/staff.editor.ui:238 data/ui/place.editor.ui:250
msgid "Cancel"
msgstr "Cancelar"

@@ -354,7 +384,7 @@ msgstr "Asignar un vehículo a este tour."

#: data/ui/tour.editor.ui:343 data/ui/tour.place.editor.ui:168
#: data/ui/tour.assign.vehicle.ui:86 data/ui/tourist.editor.ui:169
#: data/ui/place.editor.ui:269
#: data/ui/staff.editor.ui:276 data/ui/place.editor.ui:269
msgid "Save"
msgstr "Guardar"

@@ -391,7 +421,8 @@ msgid "Departure Time"
msgstr "Hora de Salida"

#: data/ui/tour.places.ui:184 data/ui/tourist.illnesses.ui:100
#: data/ui/tourist.illness.editor.ui:92
#: data/ui/tourist.illness.editor.ui:92 data/ui/staff.specialties.ui:100
#: data/ui/staff.specialty.editor.ui:92
msgid "Add"
msgstr "Agregar"

@@ -424,7 +455,7 @@ msgid "Cancel the modification of this place."
msgstr "Cancelar la modificación de este lugar."

#: data/ui/tour.place.editor.ui:172 data/ui/tourist.illness.editor.ui:96
#: data/ui/place.editor.ui:273
#: data/ui/staff.specialty.editor.ui:96 data/ui/place.editor.ui:273
msgid "Save this place."
msgstr "Guardar este lugar."

@@ -520,10 +551,12 @@ msgid "The licence plate, make, year, and capacity of the vehicle."
msgstr "La patente, marca, año y capacidad del vehículo."

#: data/ui/tourist.list.ui:68 data/ui/tourist.editor.ui:60
#: data/ui/staff.list.ui:68 data/ui/staff.editor.ui:46
msgid "RUN"
msgstr "RUN"

#: data/ui/tourist.list.ui:82 data/ui/tourist.editor.ui:93
#: data/ui/staff.list.ui:82 data/ui/staff.editor.ui:79
msgid "Name"
msgstr "Nombre"

@@ -552,6 +585,7 @@ msgid "Cancel the modification of this tourist."
msgstr "Cancelar la modificación de esta turista."

#: data/ui/tourist.editor.ui:150 data/ui/tourist.illnesses.ui:23
#: data/ui/staff.specialties.ui:23
msgid "Illnesses"
msgstr "Enfermedades"

@@ -564,21 +598,62 @@ msgid "Save this tourist."
msgstr "Guardar esta turista."

#: data/ui/tourist.illnesses.ui:68 data/ui/tourist.illness.editor.ui:53
#: data/ui/staff.specialties.ui:68 data/ui/staff.specialty.editor.ui:53
msgid "Illness"
msgstr "Enfermedad"

#: data/ui/tourist.illnesses.ui:104
#: data/ui/tourist.illnesses.ui:104 data/ui/staff.specialties.ui:104
msgid "Add new illnesses."
msgstr "Agregar nuevo enfermedades."

#: data/ui/tourist.illnesses.ui:132
#: data/ui/tourist.illnesses.ui:132 data/ui/staff.specialties.ui:132
msgid "Delete illnesses."
msgstr "Borrar enfermedades."

#: data/ui/tourist.illness.editor.ui:22
#: data/ui/tourist.illness.editor.ui:22 data/ui/staff.specialty.editor.ui:22
msgid "Add Illness"
msgstr "Agregar Enfermedad"

#: data/ui/staff.list.ui:96 data/ui/staff.editor.ui:95
msgid "Street"
msgstr "Calle"

#: data/ui/staff.list.ui:110 data/ui/staff.editor.ui:309
msgid "Number"
msgstr "Numero"

#: data/ui/staff.list.ui:175
msgid "Edit selected staff member."
msgstr "Editar la guía seleccionada."

#: data/ui/staff.list.ui:189
msgid "Create a new staff member."
msgstr "Crear una guía nueva."

#: data/ui/staff.list.ui:204
msgid "Delete selected staff member."
msgstr "Borrar la guía seleccionada."

#: data/ui/staff.editor.ui:22
msgid "Staff Editor"
msgstr "Editor de Staff"

#: data/ui/staff.editor.ui:242
msgid "Cancel the modification of this guide."
msgstr "Cancelar la modificación de esta guia."

#: data/ui/staff.editor.ui:257
msgid "Specialties"
msgstr "Especialidades"

#: data/ui/staff.editor.ui:261
msgid "Add specialties to this guide."
msgstr "Agregar especialidades a este guia."

#: data/ui/staff.editor.ui:280
msgid "Save this guide."
msgstr "Guardar esta guia."

#: data/ui/place.editor.ui:27
msgid "Place Editor"
msgstr "Editor de Lugar"

+ 99
- 24
po/es_CL.po View File

@@ -7,8 +7,8 @@ msgid ""
msgstr ""
"Project-Id-Version: sernatur\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2019-01-21 00:47-0300\n"
"PO-Revision-Date: 2019-01-21 00:57-0300\n"
"POT-Creation-Date: 2019-01-21 03:25-0300\n"
"PO-Revision-Date: 2019-01-21 03:29-0300\n"
"Last-Translator: Chris Cromer <chris@cromer.cl>\n"
"Language-Team: none\n"
"Language: es\n"
@@ -93,16 +93,20 @@ msgstr ""
msgid "SERNATUR version: "
msgstr "Versión de SERNATUR: "

#: src/main_window.vala:227
#: src/main_window.vala:238
msgid "Error: Could not connect to the database!"
msgstr "Puta la wea: No se puede conectar al base de datos!"

#: src/main_window.vala:239 src/tour_list.vala:233 src/tour_editor.vala:231
#: src/main_window.vala:250 src/tour_list.vala:233 src/tour_editor.vala:231
#: src/tour_editor.vala:248 src/tour_editor.vala:280 src/tour_editor.vala:297
#: src/tour_editor.vala:329 src/tour_editor.vala:346
#: src/tour_assign_vehicle.vala:99 src/tourist_list.vala:206
#: src/tourist_editor.vala:99 src/tourist_editor.vala:112
#: src/tourist_editor.vala:128 src/tourist_editor.vala:141
#: src/staff_editor.vala:227 src/staff_editor.vala:240
#: src/staff_editor.vala:256 src/staff_editor.vala:269
#: src/staff_editor.vala:291 src/staff_editor.vala:308
#: src/staff_editor.vala:340 src/staff_editor.vala:357
msgid "Error"
msgstr "Puta la wea"

@@ -132,20 +136,20 @@ msgstr "Error: El nombre de la wea no puede estar en blanco!"
msgid "Error: A tour named \"%s\" already exists!"
msgstr "Error: Una wea con el nombre \"%s\" ya existe!"

#: src/tour_editor.vala:276
#: src/tour_editor.vala:276 src/staff_editor.vala:287
msgid "Error: City name cannot be left blank!"
msgstr "Error: El nombre de la wea no puede estar en blanco!"

#: src/tour_editor.vala:293
#: src/tour_editor.vala:293 src/staff_editor.vala:304
#, c-format
msgid "Error: A city named \"%s\" already exists!"
msgstr "Error: Una wea con el nombre \"%s\" ya existe!"

#: src/tour_editor.vala:325
#: src/tour_editor.vala:325 src/staff_editor.vala:336
msgid "Error: Region name cannot be left blank!"
msgstr "Error: El nombre de la wea no puede estar en blanco!"

#: src/tour_editor.vala:342
#: src/tour_editor.vala:342 src/staff_editor.vala:353
#, c-format
msgid "Error: A region named \"%s\" already exists!"
msgstr "Error: Una wea con el nombre \"%s\" ya existe!"
@@ -175,7 +179,7 @@ msgstr ""
"Error: No se puede borrar la turista \"%s\" porque hay información asociado "
"con la turista!"

#: src/tourist_editor.vala:95
#: src/tourist_editor.vala:95 src/staff_editor.vala:223
msgid "Error: Tourist name cannot be left blank!"
msgstr "Error: El nombre de la turista no puede estar en blanco!"

@@ -183,7 +187,7 @@ msgstr "Error: El nombre de la turista no puede estar en blanco!"
msgid "Error: Tourist RUN cannot be left blank!"
msgstr "Error: El RUN de la turista no puede estar en blanco!"

#: src/tourist_editor.vala:124
#: src/tourist_editor.vala:124 src/staff_editor.vala:252
msgid "Error: The RUN entered is invalid!"
msgstr "Error: El RUN ingresado es invalido!"

@@ -201,6 +205,23 @@ msgid "Are you sure you wish to delete these illnesses from this tourist?"
msgstr ""
"¿Usted está seguro que quiere borrar estos enfermedades de esta turista?"

#: src/staff_list.vala:190
msgid "Are you sure you wish to delete this staff member?"
msgstr "¿Usted está seguro que quiere borrar esta guía?"

#: src/staff_list.vala:197
msgid "Are you sure you wish to delete these staff members?"
msgstr "¿Usted está seguro que quiere borrar estas guías?"

#: src/staff_editor.vala:236
msgid "Error: Staff member RUN cannot be left blank!"
msgstr "Error: El RUN de la guía no puede estar en blanco!"

#: src/staff_editor.vala:265
#, c-format
msgid "Error: A staff member with the RUN \"%s\" already exists!"
msgstr "Error: Una guía con el RUN \"%s\" ya existe!"

#: src/query_window.vala:290 data/ui/main.window.ui:105
msgid "(Q1) Regions with discounts"
msgstr "(Q1) Regiones sin descuentos"
@@ -229,7 +250,7 @@ msgstr "_Menú"
msgid "Tours"
msgstr "Tours"

#: data/ui/main.window.ui:61
#: data/ui/main.window.ui:61 data/ui/staff.list.ui:23
msgid "Staff"
msgstr "Weones flojos"

@@ -267,16 +288,19 @@ msgid "Minimum People"
msgstr "Mínima de Weones"

#: data/ui/tour.list.ui:124 data/ui/tour.editor.ui:186
#: data/ui/staff.list.ui:124 data/ui/staff.editor.ui:161
#: data/ui/place.editor.ui:150
msgid "City"
msgstr "Ciudad"

#: data/ui/tour.list.ui:138 data/ui/tour.editor.ui:134
#: data/ui/staff.list.ui:138 data/ui/staff.editor.ui:111
#: data/ui/place.editor.ui:116
msgid "Region"
msgstr "Región"

#: data/ui/tour.list.ui:170 data/ui/tourist.list.ui:128
#: data/ui/staff.list.ui:170
msgid "Edit"
msgstr "Editar la wea"

@@ -285,7 +309,7 @@ msgid "Edit selected tour."
msgstr "Editar la wea seleccionado."

#: data/ui/tour.list.ui:185 data/ui/tour.places.ui:212
#: data/ui/tourist.list.ui:143
#: data/ui/tourist.list.ui:143 data/ui/staff.list.ui:185
msgid "New"
msgstr "Nueva wea"

@@ -294,7 +318,8 @@ msgid "Create a new tour."
msgstr "Crear una wea nueva."

#: data/ui/tour.list.ui:199 data/ui/tourist.list.ui:157
#: data/ui/tourist.illnesses.ui:128
#: data/ui/tourist.illnesses.ui:128 data/ui/staff.list.ui:199
#: data/ui/staff.specialties.ui:128
msgid "Delete"
msgstr "Borrar la wea"

@@ -304,13 +329,16 @@ msgstr "Borrar la wea seleccionado."

#: data/ui/tour.list.ui:214 data/ui/tour.places.ui:198
#: data/ui/tourist.list.ui:172 data/ui/tourist.illnesses.ui:114
#: data/ui/tourist.illness.editor.ui:73 data/ui/query.window.ui:66
#: data/ui/tourist.illness.editor.ui:73 data/ui/staff.list.ui:214
#: data/ui/staff.specialties.ui:114 data/ui/staff.specialty.editor.ui:73
#: data/ui/query.window.ui:66
msgid "Close"
msgstr "Cerrar la wea"

#: data/ui/tour.list.ui:218 data/ui/tour.places.ui:202
#: data/ui/tourist.list.ui:176 data/ui/tourist.illnesses.ui:118
#: data/ui/tourist.illness.editor.ui:77
#: data/ui/tourist.illness.editor.ui:77 data/ui/staff.list.ui:218
#: data/ui/staff.specialties.ui:118 data/ui/staff.specialty.editor.ui:77
msgid "Close this window."
msgstr "Cerrar la wea."

@@ -318,17 +346,19 @@ msgstr "Cerrar la wea."
msgid "Tour Editor"
msgstr "Editor de la Wea"

#: data/ui/tour.editor.ui:233 data/ui/place.editor.ui:197
#: data/ui/tour.editor.ui:233 data/ui/staff.editor.ui:185
#: data/ui/place.editor.ui:197
msgid "Create a new region by typing here."
msgstr "Crear una nueva wea con escribir aquí."

#: data/ui/tour.editor.ui:261 data/ui/place.editor.ui:225
#: data/ui/tour.editor.ui:261 data/ui/staff.editor.ui:213
#: data/ui/place.editor.ui:225
msgid "Create a new city by typing here."
msgstr "Crear una nueva wea con escribir aquí."

#: data/ui/tour.editor.ui:286 data/ui/tour.place.editor.ui:149
#: data/ui/tour.assign.vehicle.ui:67 data/ui/tourist.editor.ui:131
#: data/ui/place.editor.ui:250
#: data/ui/staff.editor.ui:238 data/ui/place.editor.ui:250
msgid "Cancel"
msgstr "Cancelar la wea"

@@ -354,7 +384,7 @@ msgstr "Asignar un vehículo a esta wea."

#: data/ui/tour.editor.ui:343 data/ui/tour.place.editor.ui:168
#: data/ui/tour.assign.vehicle.ui:86 data/ui/tourist.editor.ui:169
#: data/ui/place.editor.ui:269
#: data/ui/staff.editor.ui:276 data/ui/place.editor.ui:269
msgid "Save"
msgstr "Guardar la wea"

@@ -391,7 +421,8 @@ msgid "Departure Time"
msgstr "Hora de Salida"

#: data/ui/tour.places.ui:184 data/ui/tourist.illnesses.ui:100
#: data/ui/tourist.illness.editor.ui:92
#: data/ui/tourist.illness.editor.ui:92 data/ui/staff.specialties.ui:100
#: data/ui/staff.specialty.editor.ui:92
msgid "Add"
msgstr "Agregar una wea"

@@ -424,7 +455,7 @@ msgid "Cancel the modification of this place."
msgstr "Cancelar la modificación de esta wea."

#: data/ui/tour.place.editor.ui:172 data/ui/tourist.illness.editor.ui:96
#: data/ui/place.editor.ui:273
#: data/ui/staff.specialty.editor.ui:96 data/ui/place.editor.ui:273
msgid "Save this place."
msgstr "Guardar esta wea."

@@ -520,10 +551,12 @@ msgid "The licence plate, make, year, and capacity of the vehicle."
msgstr "La patente, marca, año y capacidad de la wea."

#: data/ui/tourist.list.ui:68 data/ui/tourist.editor.ui:60
#: data/ui/staff.list.ui:68 data/ui/staff.editor.ui:46
msgid "RUN"
msgstr "RUN"

#: data/ui/tourist.list.ui:82 data/ui/tourist.editor.ui:93
#: data/ui/staff.list.ui:82 data/ui/staff.editor.ui:79
msgid "Name"
msgstr "Nombre"

@@ -552,6 +585,7 @@ msgid "Cancel the modification of this tourist."
msgstr "Cancelar la modificación de esta turista."

#: data/ui/tourist.editor.ui:150 data/ui/tourist.illnesses.ui:23
#: data/ui/staff.specialties.ui:23
msgid "Illnesses"
msgstr "Enfermedades"

@@ -564,21 +598,62 @@ msgid "Save this tourist."
msgstr "Guardar esta turista."

#: data/ui/tourist.illnesses.ui:68 data/ui/tourist.illness.editor.ui:53
#: data/ui/staff.specialties.ui:68 data/ui/staff.specialty.editor.ui:53
msgid "Illness"
msgstr "Enfermedad"

#: data/ui/tourist.illnesses.ui:104
#: data/ui/tourist.illnesses.ui:104 data/ui/staff.specialties.ui:104
msgid "Add new illnesses."
msgstr "Agregar nuevo enfermedades."

#: data/ui/tourist.illnesses.ui:132
#: data/ui/tourist.illnesses.ui:132 data/ui/staff.specialties.ui:132
msgid "Delete illnesses."
msgstr "Borrar enfermedades."

#: data/ui/tourist.illness.editor.ui:22
#: data/ui/tourist.illness.editor.ui:22 data/ui/staff.specialty.editor.ui:22
msgid "Add Illness"
msgstr "Agregar Enfermedad"

#: data/ui/staff.list.ui:96 data/ui/staff.editor.ui:95
msgid "Street"
msgstr "Calle"

#: data/ui/staff.list.ui:110 data/ui/staff.editor.ui:309
msgid "Number"
msgstr "Numero"

#: data/ui/staff.list.ui:175
msgid "Edit selected staff member."
msgstr "Editar la guía seleccionada."

#: data/ui/staff.list.ui:189
msgid "Create a new staff member."
msgstr "Crear una guía nueva."

#: data/ui/staff.list.ui:204
msgid "Delete selected staff member."
msgstr "Borrar la guía seleccionada."

#: data/ui/staff.editor.ui:22
msgid "Staff Editor"
msgstr "Editor de Staff"

#: data/ui/staff.editor.ui:242
msgid "Cancel the modification of this guide."
msgstr "Cancelar la modificación de esta guia."

#: data/ui/staff.editor.ui:257
msgid "Specialties"
msgstr "Especialidades"

#: data/ui/staff.editor.ui:261
msgid "Add specialties to this guide."
msgstr "Agregar especialidades a este guia."

#: data/ui/staff.editor.ui:280
msgid "Save this guide."
msgstr "Guardar esta guia."

#: data/ui/place.editor.ui:27
msgid "Place Editor"
msgstr "Editor de la Wea"

+ 98
- 23
po/sernatur.pot View File

@@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: sernatur\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2019-01-21 00:47-0300\n"
"POT-Creation-Date: 2019-01-21 03:25-0300\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
@@ -88,16 +88,20 @@ msgstr ""
msgid "SERNATUR version: "
msgstr ""

#: src/main_window.vala:227
#: src/main_window.vala:238
msgid "Error: Could not connect to the database!"
msgstr ""

#: src/main_window.vala:239 src/tour_list.vala:233 src/tour_editor.vala:231
#: src/main_window.vala:250 src/tour_list.vala:233 src/tour_editor.vala:231
#: src/tour_editor.vala:248 src/tour_editor.vala:280 src/tour_editor.vala:297
#: src/tour_editor.vala:329 src/tour_editor.vala:346
#: src/tour_assign_vehicle.vala:99 src/tourist_list.vala:206
#: src/tourist_editor.vala:99 src/tourist_editor.vala:112
#: src/tourist_editor.vala:128 src/tourist_editor.vala:141
#: src/staff_editor.vala:227 src/staff_editor.vala:240
#: src/staff_editor.vala:256 src/staff_editor.vala:269
#: src/staff_editor.vala:291 src/staff_editor.vala:308
#: src/staff_editor.vala:340 src/staff_editor.vala:357
msgid "Error"
msgstr ""

@@ -125,20 +129,20 @@ msgstr ""
msgid "Error: A tour named \"%s\" already exists!"
msgstr ""

#: src/tour_editor.vala:276
#: src/tour_editor.vala:276 src/staff_editor.vala:287
msgid "Error: City name cannot be left blank!"
msgstr ""

#: src/tour_editor.vala:293
#: src/tour_editor.vala:293 src/staff_editor.vala:304
#, c-format
msgid "Error: A city named \"%s\" already exists!"
msgstr ""

#: src/tour_editor.vala:325
#: src/tour_editor.vala:325 src/staff_editor.vala:336
msgid "Error: Region name cannot be left blank!"
msgstr ""

#: src/tour_editor.vala:342
#: src/tour_editor.vala:342 src/staff_editor.vala:353
#, c-format
msgid "Error: A region named \"%s\" already exists!"
msgstr ""
@@ -166,7 +170,7 @@ msgid ""
"associated with them!"
msgstr ""

#: src/tourist_editor.vala:95
#: src/tourist_editor.vala:95 src/staff_editor.vala:223
msgid "Error: Tourist name cannot be left blank!"
msgstr ""

@@ -174,7 +178,7 @@ msgstr ""
msgid "Error: Tourist RUN cannot be left blank!"
msgstr ""

#: src/tourist_editor.vala:124
#: src/tourist_editor.vala:124 src/staff_editor.vala:252
msgid "Error: The RUN entered is invalid!"
msgstr ""

@@ -191,6 +195,23 @@ msgstr ""
msgid "Are you sure you wish to delete these illnesses from this tourist?"
msgstr ""

#: src/staff_list.vala:190
msgid "Are you sure you wish to delete this staff member?"
msgstr ""

#: src/staff_list.vala:197
msgid "Are you sure you wish to delete these staff members?"
msgstr ""

#: src/staff_editor.vala:236
msgid "Error: Staff member RUN cannot be left blank!"
msgstr ""

#: src/staff_editor.vala:265
#, c-format
msgid "Error: A staff member with the RUN \"%s\" already exists!"
msgstr ""

#: src/query_window.vala:290 data/ui/main.window.ui:105
msgid "(Q1) Regions with discounts"
msgstr ""
@@ -219,7 +240,7 @@ msgstr ""
msgid "Tours"
msgstr ""

#: data/ui/main.window.ui:61
#: data/ui/main.window.ui:61 data/ui/staff.list.ui:23
msgid "Staff"
msgstr ""

@@ -257,16 +278,19 @@ msgid "Minimum People"
msgstr ""

#: data/ui/tour.list.ui:124 data/ui/tour.editor.ui:186
#: data/ui/staff.list.ui:124 data/ui/staff.editor.ui:161
#: data/ui/place.editor.ui:150
msgid "City"
msgstr ""

#: data/ui/tour.list.ui:138 data/ui/tour.editor.ui:134
#: data/ui/staff.list.ui:138 data/ui/staff.editor.ui:111
#: data/ui/place.editor.ui:116
msgid "Region"
msgstr ""

#: data/ui/tour.list.ui:170 data/ui/tourist.list.ui:128
#: data/ui/staff.list.ui:170
msgid "Edit"
msgstr ""

@@ -275,7 +299,7 @@ msgid "Edit selected tour."
msgstr ""

#: data/ui/tour.list.ui:185 data/ui/tour.places.ui:212
#: data/ui/tourist.list.ui:143
#: data/ui/tourist.list.ui:143 data/ui/staff.list.ui:185
msgid "New"
msgstr ""

@@ -284,7 +308,8 @@ msgid "Create a new tour."
msgstr ""

#: data/ui/tour.list.ui:199 data/ui/tourist.list.ui:157
#: data/ui/tourist.illnesses.ui:128
#: data/ui/tourist.illnesses.ui:128 data/ui/staff.list.ui:199
#: data/ui/staff.specialties.ui:128
msgid "Delete"
msgstr ""

@@ -294,13 +319,16 @@ msgstr ""

#: data/ui/tour.list.ui:214 data/ui/tour.places.ui:198
#: data/ui/tourist.list.ui:172 data/ui/tourist.illnesses.ui:114
#: data/ui/tourist.illness.editor.ui:73 data/ui/query.window.ui:66
#: data/ui/tourist.illness.editor.ui:73 data/ui/staff.list.ui:214
#: data/ui/staff.specialties.ui:114 data/ui/staff.specialty.editor.ui:73
#: data/ui/query.window.ui:66
msgid "Close"
msgstr ""

#: data/ui/tour.list.ui:218 data/ui/tour.places.ui:202
#: data/ui/tourist.list.ui:176 data/ui/tourist.illnesses.ui:118
#: data/ui/tourist.illness.editor.ui:77
#: data/ui/tourist.illness.editor.ui:77 data/ui/staff.list.ui:218
#: data/ui/staff.specialties.ui:118 data/ui/staff.specialty.editor.ui:77
msgid "Close this window."
msgstr ""

@@ -308,17 +336,19 @@ msgstr ""
msgid "Tour Editor"
msgstr ""

#: data/ui/tour.editor.ui:233 data/ui/place.editor.ui:197
#: data/ui/tour.editor.ui:233 data/ui/staff.editor.ui:185
#: data/ui/place.editor.ui:197
msgid "Create a new region by typing here."
msgstr ""

#: data/ui/tour.editor.ui:261 data/ui/place.editor.ui:225
#: data/ui/tour.editor.ui:261 data/ui/staff.editor.ui:213
#: data/ui/place.editor.ui:225
msgid "Create a new city by typing here."
msgstr ""

#: data/ui/tour.editor.ui:286 data/ui/tour.place.editor.ui:149
#: data/ui/tour.assign.vehicle.ui:67 data/ui/tourist.editor.ui:131
#: data/ui/place.editor.ui:250
#: data/ui/staff.editor.ui:238 data/ui/place.editor.ui:250
msgid "Cancel"
msgstr ""

@@ -344,7 +374,7 @@ msgstr ""

#: data/ui/tour.editor.ui:343 data/ui/tour.place.editor.ui:168
#: data/ui/tour.assign.vehicle.ui:86 data/ui/tourist.editor.ui:169
#: data/ui/place.editor.ui:269
#: data/ui/staff.editor.ui:276 data/ui/place.editor.ui:269
msgid "Save"
msgstr ""

@@ -381,7 +411,8 @@ msgid "Departure Time"
msgstr ""

#: data/ui/tour.places.ui:184 data/ui/tourist.illnesses.ui:100
#: data/ui/tourist.illness.editor.ui:92
#: data/ui/tourist.illness.editor.ui:92 data/ui/staff.specialties.ui:100
#: data/ui/staff.specialty.editor.ui:92
msgid "Add"
msgstr ""

@@ -414,7 +445,7 @@ msgid "Cancel the modification of this place."
msgstr ""

#: data/ui/tour.place.editor.ui:172 data/ui/tourist.illness.editor.ui:96
#: data/ui/place.editor.ui:273
#: data/ui/staff.specialty.editor.ui:96 data/ui/place.editor.ui:273
msgid "Save this place."
msgstr ""

@@ -510,10 +541,12 @@ msgid "The licence plate, make, year, and capacity of the vehicle."
msgstr ""

#: data/ui/tourist.list.ui:68 data/ui/tourist.editor.ui:60
#: data/ui/staff.list.ui:68 data/ui/staff.editor.ui:46
msgid "RUN"
msgstr ""

#: data/ui/tourist.list.ui:82 data/ui/tourist.editor.ui:93
#: data/ui/staff.list.ui:82 data/ui/staff.editor.ui:79
msgid "Name"
msgstr ""

@@ -542,6 +575,7 @@ msgid "Cancel the modification of this tourist."
msgstr ""

#: data/ui/tourist.editor.ui:150 data/ui/tourist.illnesses.ui:23
#: data/ui/staff.specialties.ui:23
msgid "Illnesses"
msgstr ""

@@ -554,21 +588,62 @@ msgid "Save this tourist."
msgstr ""

#: data/ui/tourist.illnesses.ui:68 data/ui/tourist.illness.editor.ui:53
#: data/ui/staff.specialties.ui:68 data/ui/staff.specialty.editor.ui:53
msgid "Illness"
msgstr ""

#: data/ui/tourist.illnesses.ui:104
#: data/ui/tourist.illnesses.ui:104 data/ui/staff.specialties.ui:104
msgid "Add new illnesses."
msgstr ""

#: data/ui/tourist.illnesses.ui:132
#: data/ui/tourist.illnesses.ui:132 data/ui/staff.specialties.ui:132
msgid "Delete illnesses."
msgstr ""

#: data/ui/tourist.illness.editor.ui:22
#: data/ui/tourist.illness.editor.ui:22 data/ui/staff.specialty.editor.ui:22
msgid "Add Illness"
msgstr ""

#: data/ui/staff.list.ui:96 data/ui/staff.editor.ui:95
msgid "Street"
msgstr ""

#: data/ui/staff.list.ui:110 data/ui/staff.editor.ui:309
msgid "Number"
msgstr ""

#: data/ui/staff.list.ui:175
msgid "Edit selected staff member."
msgstr ""

#: data/ui/staff.list.ui:189
msgid "Create a new staff member."
msgstr ""

#: data/ui/staff.list.ui:204
msgid "Delete selected staff member."
msgstr ""

#: data/ui/staff.editor.ui:22
msgid "Staff Editor"
msgstr ""

#: data/ui/staff.editor.ui:242
msgid "Cancel the modification of this guide."
msgstr ""

#: data/ui/staff.editor.ui:257
msgid "Specialties"
msgstr ""

#: data/ui/staff.editor.ui:261
msgid "Add specialties to this guide."
msgstr ""

#: data/ui/staff.editor.ui:280
msgid "Save this guide."
msgstr ""

#: data/ui/place.editor.ui:27
msgid "Place Editor"
msgstr ""

+ 12
- 1
src/main_window.vala View File

@@ -38,6 +38,11 @@ namespace Sernatur {
*/
[GtkChild]
private Gtk.MenuItem tours;
/**
* The staff menu item
*/
[GtkChild]
private Gtk.MenuItem staff;
/**
* The tourists menu item
*/
@@ -135,7 +140,13 @@ namespace Sernatur {
tour_list.initialize ();
tour_list.show_all ();
}
if (menu_item == tourists) {
else if (menu_item == staff) {
var staff_list = new StaffList (application, conn);
staff_list.set_transient_for (this); // Set this window as the parent of the new window
staff_list.initialize ();
staff_list.show_all ();
}
else if (menu_item == tourists) {
var tourist_list = new TouristList (application, conn);
tourist_list.set_transient_for (this); // Set this window as the parent of the new window
tourist_list.initialize ();

+ 4
- 0
src/meson.build View File

@@ -25,6 +25,8 @@ vala_sources = files(
'tourist_editor.vala',
'tourist_illnesses.vala',
'tourist_illness_editor.vala',
'staff_list.vala',
'staff_editor.vala',
'place_editor.vala',
'queries.vala',
'query_window.vala')
@@ -33,6 +35,7 @@ sources = vala_sources
sources += main_gresource
sources += tour_gresource
sources += tourist_gresource
sources += staff_gresource
sources += place_gresource
sources += query_gresource
sources += config_data_file
@@ -41,6 +44,7 @@ vala_args = ['--vapidir=' + join_paths(meson.source_root(), 'vapi')]
vala_args += ['--gresources=' + join_paths(meson.source_root(), 'data/ui/main.gresource.xml')]
vala_args += ['--gresources=' + join_paths(meson.source_root(), 'data/ui/tour.gresource.xml')]
vala_args += ['--gresources=' + join_paths(meson.source_root(), 'data/ui/tourist.gresource.xml')]
vala_args += ['--gresources=' + join_paths(meson.source_root(), 'data/ui/staff.gresource.xml')]
vala_args += ['--gresources=' + join_paths(meson.source_root(), 'data/ui/place.gresource.xml')]
vala_args += ['--gresources=' + join_paths(meson.source_root(), 'data/ui/query.gresource.xml')]


+ 672
- 0
src/staff_editor.vala View File

@@ -0,0 +1,672 @@
/*
* Copyright 2018-2019 Chris Cromer
*
* Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
*
* 1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
*
* 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.
*
* 3. Neither the name of the copyright holder nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/

namespace Sernatur {
using LibSernatur.DB;
using LibSernatur.Misc;

/**
* The staff editor window class
*/
[GtkTemplate (ui = "/cl/cromer/ubb/sernatur/staff.editor.ui")]
public class StaffEditor : Gtk.ApplicationWindow {
/**
* The open database connection
*/
private Connection conn;
/**
* The staff to edit
*/
private Guia staff;
/**
* The city data stored in the list store
*/
private enum CityColumn {
/**
* The city name
*/
CITY_NAME,
/**
* The city object
*/
CITY,
/**
* The number of colums in this enum
*/
N_COLUMNS
}
/**
* The region data stored in the list store
*/
private enum RegionColumn {