commit artikulate for openSUSE:Factory
Hello community, here is the log from the commit of package artikulate for openSUSE:Factory checked in at 2014-03-30 07:54:13 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/artikulate (Old) and /work/SRC/openSUSE:Factory/.artikulate.new (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Package is "artikulate" Changes: -------- --- /work/SRC/openSUSE:Factory/artikulate/artikulate.changes 2014-03-18 17:16:46.000000000 +0100 +++ /work/SRC/openSUSE:Factory/.artikulate.new/artikulate.changes 2014-03-30 12:09:00.000000000 +0200 @@ -1,0 +2,14 @@ +Thu Mar 27 18:16:16 UTC 2014 - tittiatcoke@gmail.com + +- Update to 4.12.97 + * KDE 4.13 RC release + * See http://www.kde.org/announcements/announce-4.13-rc.php + +------------------------------------------------------------------- +Thu Mar 20 18:33:38 UTC 2014 - tittiatcoke@gmail.com + +- Update to 4.12.95 + * KDE 4.13 Beta 3 release + * See http://www.kde.org/announcements/announce-4.13-beta3.php + +------------------------------------------------------------------- Old: ---- artikulate-4.12.90.tar.xz New: ---- artikulate-4.12.97.tar.xz ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ artikulate.spec ++++++ --- /var/tmp/diff_new_pack.dtBcNP/_old 2014-03-30 12:09:03.000000000 +0200 +++ /var/tmp/diff_new_pack.dtBcNP/_new 2014-03-30 12:09:03.000000000 +0200 @@ -17,7 +17,7 @@ Name: artikulate -Version: 4.12.90 +Version: 4.12.97 Release: 0 Summary: Pronunciation Self-Teaching License: LGPL-3.0+ and GPL-2.0 and BSD-3-Clause @@ -26,10 +26,10 @@ Source0: %{name}-%{version}.tar.xz # PATCH-FIX-UPSTREAM icons.patch -- install icons to hicolor namespace Patch0: icons.patch -BuildRequires: libkde4-devel >= 4.10 BuildRequires: gstreamer-0_10-plugins-qt-devel -BuildRequires: xz +BuildRequires: libkde4-devel >= 4.10 BuildRequires: update-desktop-files +BuildRequires: xz # Runtime dep Requires: kqtquickcharts >= %{version} BuildRoot: %{_tmppath}/%{name}-%{version}-build @@ -48,15 +48,20 @@ %install %kde4_makeinstall -C build + rm %{buildroot}%{_kde4_libdir}/libartikulate*.so %suse_update_desktop_file %{name} X-KDE-Edu-Teaching %kde_post_install +%post -p /sbin/ldconfig + +%postun -p /sbin/ldconfig + %files %defattr(-,root,root) %doc COPYING* %{_kde4_bindir}/artikulate -%{_kde4_libdir}/liblearnerprofile.so -%{_kde4_libdir}/libartikulatecore.so +%{_kde4_libdir}/libartikulatelearnerprofile.so.* +%{_kde4_libdir}/libartikulatecore.so.* %{_kde4_appsdir}/artikulate/ %{_kde4_applicationsdir}/artikulate.desktop %{_kde4_htmldir}/en/artikulate/ @@ -65,5 +70,4 @@ %{_kde4_appsdir}/artikulateui.rc %{_kde4_iconsdir}/hicolor/*/*/artikulate*.* - %changelog ++++++ artikulate-4.12.90.tar.xz -> artikulate-4.12.97.tar.xz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/artikulate-4.12.90/Messages.sh new/artikulate-4.12.97/Messages.sh --- old/artikulate-4.12.90/Messages.sh 2014-03-12 05:40:44.000000000 +0100 +++ new/artikulate-4.12.97/Messages.sh 2014-03-24 09:57:50.000000000 +0100 @@ -1,6 +1,6 @@ #! /bin/sh -$EXTRACTRC `find src -name '*.rc'` >> rc.cpp -$EXTRACTRC `find src/ui -name *.ui` >> rc.cpp -$EXTRACTRC `find src -name '*.kcfg'` >> rc.cpp +$EXTRACTRC `find . -name '*.rc'` >> rc.cpp +$EXTRACTRC `find . -name *.ui` >> rc.cpp +$EXTRACTRC `find . -name '*.kcfg'` >> rc.cpp $EXTRACTRC --context="Language Title" --tag-group=none --tag=i18nTitle `find data/languages/ -name '*.xml'` >> rc.cpp -$XGETTEXT rc.cpp `find src/ -name \*.qml -or -name \*.cpp` -o $podir/artikulate.pot +$XGETTEXT rc.cpp `find . -name \*.qml -or -name \*.cpp` -o $podir/artikulate.pot diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/artikulate-4.12.90/artikulate.desktop new/artikulate-4.12.97/artikulate.desktop --- old/artikulate-4.12.90/artikulate.desktop 2014-03-12 05:40:44.000000000 +0100 +++ new/artikulate-4.12.97/artikulate.desktop 2014-03-24 09:57:50.000000000 +0100 @@ -7,6 +7,7 @@ GenericName=Artikulate Pronunciation Trainer GenericName[bs]=Artikulate vježba izgovora GenericName[ca]=Entrenador de la pronunciació Artikulate +GenericName[ca@valencia]=Entrenador de la pronunciació Artikulate GenericName[cs]=Artikulate - učitel výslovnosti GenericName[da]=Artikulate udtaletræning GenericName[de]=Artikulate-Aussprachetrainer @@ -16,7 +17,9 @@ GenericName[fr]=Programme Artikulate d'entraînement à la prononciation GenericName[gl]=Entrenador de pronuncia Artikulate GenericName[hu]=Artikulate kiejtés oktató +GenericName[ko]=Artikulate 발음 타이머 GenericName[mr]=आर्टिक्युलेट उच्चारण प्रशिक्षक +GenericName[nds]=Artikulate - Utspraak öven GenericName[nl]=Artikulate Trainingsprogramma voor uitspraak GenericName[pl]=Trener artykułowanej wymowy GenericName[pt]=Treino de Pronúncia Artikulate @@ -34,6 +37,7 @@ Name=Artikulate Name[bs]=Artikulate Name[ca]=Artikulate +Name[ca@valencia]=Artikulate Name[cs]=Artikulate Name[da]=Artikulate Name[de]=Artikulate @@ -43,7 +47,10 @@ Name[fr]=Artikulate Name[gl]=Artikulate Name[hu]=Artikulate +Name[it]=Artikulate +Name[ko]=Artikulate Name[mr]=आर्टिक्युलेट +Name[nds]=Artikulate Name[nl]=Artikulate Name[pl]=Artikulate Name[pt]=Artikulate Files old/artikulate-4.12.90/doc/editor-apply.png and new/artikulate-4.12.97/doc/editor-apply.png differ Files old/artikulate-4.12.90/doc/editor-cancel.png and new/artikulate-4.12.97/doc/editor-cancel.png differ Files old/artikulate-4.12.90/doc/editor-screenshot-editing-phrase.png and new/artikulate-4.12.97/doc/editor-screenshot-editing-phrase.png differ Files old/artikulate-4.12.90/doc/editor-screenshot-unit.png and new/artikulate-4.12.97/doc/editor-screenshot-unit.png differ Files old/artikulate-4.12.90/doc/editor-set-repository.png and new/artikulate-4.12.97/doc/editor-set-repository.png differ Files old/artikulate-4.12.90/doc/hi32-action-artikulate-expression.png and new/artikulate-4.12.97/doc/hi32-action-artikulate-expression.png differ Files old/artikulate-4.12.90/doc/hi32-action-artikulate-language.png and new/artikulate-4.12.97/doc/hi32-action-artikulate-language.png differ Files old/artikulate-4.12.90/doc/hi32-action-artikulate-paragraph.png and new/artikulate-4.12.97/doc/hi32-action-artikulate-paragraph.png differ Files old/artikulate-4.12.90/doc/hi32-action-artikulate-sentence.png and new/artikulate-4.12.97/doc/hi32-action-artikulate-sentence.png differ Files old/artikulate-4.12.90/doc/hi32-action-artikulate-word.png and new/artikulate-4.12.97/doc/hi32-action-artikulate-word.png differ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/artikulate-4.12.90/doc/index.docbook new/artikulate-4.12.97/doc/index.docbook --- old/artikulate-4.12.90/doc/index.docbook 2014-03-12 05:40:44.000000000 +0100 +++ new/artikulate-4.12.97/doc/index.docbook 2014-03-24 09:57:50.000000000 +0100 @@ -33,7 +33,7 @@ <copyright><year>2014</year><holder>The &artikulate; Developers</holder></copyright> -<date>2014-XX-XX</date> +<date>2014-03-15</date> <releaseinfo>0.3.0 &kde; 4.13</releaseinfo> <legalnotice>&FDLNotice;</legalnotice> @@ -53,7 +53,7 @@ <keyword>course</keyword> <keyword>unit</keyword> <keyword>phrase</keyword> -<keyword>user profile</keyword> +<keyword>learner profile</keyword> </keywordset> </bookinfo> @@ -61,17 +61,19 @@ <chapter id="introduction"> <title>Introduction</title> <para> -&artikulate; is a pronunciation trainer that helps improving and perfecting a learner's pronunciation skills for a foreign language. For this, it provides courses with native speaker recordings of the target language. The learner can select a set of phrases, record her/his own voice when speaking the phrases, and compare the results to the native speaker's recordings. +&artikulate; is a pronunciation trainer that helps improving and perfecting a learner's pronunciation skills for a foreign language. +For this, it provides courses with native speaker recordings of the target language for download. +The learner download courses for selected language, selects a group of phrases, starts to record her/his own voice when speaking the phrases himself/herself, and compares the results to the native speaker's recordings by listening to both. </para> <sect1 id="introduction-concept"> <title>The Learning Concept</title> <para> -The learning concept of this language learning is as follows. +The study concept of this language learning application is as follows. By repeating and comparing own recordings of spoken phrases to the recordings of (a representative set of) native speakers, a learner can <itemizedlist> - <listitem><para>identify weaknesses in speaking the foreign language and</para></listitem> - <listitem><para>adapt the pronunciation to follow the native speakers.</para></listitem> + <listitem><para>identify weaknesses when speaking the foreign language and</para></listitem> + <listitem><para>adapt the pronunciation to coincide with the native speaker's pronunciation.</para></listitem> </itemizedlist> For best learning outcome, specifically designed courses for every supported language are necessary. Those courses can concentrate on training special scenarios (like ordering food in a restaurant) but can also focus on learning how to pronounce difficult syllables and words of a particular language correctly. @@ -81,19 +83,20 @@ <sect1 id="introduction-first-steps"> <title>First Steps in &artikulate;</title> <para> -This chapter explains how to make the first steps in &artikulate;, especially how to create a learner profile, how to select a language and get the native speaker recordings, and how to start training. +This chapter explains how to make the first steps in &artikulate;, especially how to create a learner identity, how to select a language and how to get native speaker recordings to start training. </para> <sect2> -<title>1. Create a User Profile</title> +<title>1. Create a Learner Identity</title> <para> -For every learner, there has to be one user profile that collects the learning progress. -This allows multiple people to use &artikulate; on the same computer, each being able to have his/her private learning statistics. -To create a user profile, click on the <guilabel>New User</guilabel> button at the top left of the window, and then <guilabel>Create New Profile</guilabel>. -You can edit your name with the <guilabel>Edit</guilabel> button. +For every learner, there has to be one learner identity that saves the learning progress. +This also allows multiple people to use &artikulate; on the same computer, each being able to have his/her private learning goals. +To create a learner identity, click on the <guilabel>Create Learner Identity</guilabel> button (if starting &artikulate; for the first time) or otherwise the button with the name of the currently selected learner identity at the top left of the window. +In the opening dialog, then select <guilabel>Create New Learner Identity</guilabel>. +You can edit your name with the <guilabel>Edit</guilabel> button and set a picture if you like. </para> <screenshot> -<screeninfo>Create a user profile.</screeninfo> +<screeninfo>Create a learner identity.</screeninfo> <mediaobject> <imageobject> <imagedata fileref="first-steps-1-create-profile.png" format="PNG" /> @@ -105,9 +108,10 @@ <sect2> <title>2. Select a Language</title> <para> -Setting the learning language(s) of a learner is done in the <guilabel>Favorite Languages</guilabel> tab by clicking at any language you would like to learn. -The star will turn colored once it is selected. -Close the Learner Profile dialog by selecting your profile with <guilabel>Use Selected Profile</guilabel>. +Setting the training language(s) of a learner is done in the <guilabel>Favorite Languages</guilabel> tab by activating (clicking at) the languages. +The star symbol corresponding to each language will turn colored once it is selected. +Close the Learner Identity dialog by selecting your identity with <guilabel>Use Selected Identity</guilabel>. +Note that when downloading courses, the course language will automatically be activated for the currently selected learner identity. </para> <screenshot> <screeninfo>Set favorite languages.</screeninfo> @@ -122,14 +126,14 @@ <sect2> <title>3. Download a Language Course</title> <para> -For this guide assume that we would like to learn Polish and hence want to download a course for Polish. -You can download courses through <menuchoice><guimenu>File</guimenu> <guimenuitem>Download New Language Course</guimenuitem></menuchoice> or by clicking at the orange star at the top right. +For this tutorial, we assume that we would like to learn Polish and hence that we want to download a course for Polish. +You can download courses through <menuchoice><guimenu>File</guimenu> <guimenuitem>Download New Language Course</guimenuitem></menuchoice> or by clicking at the orange star at the top right. A download window will appear, listing the available languages provided by the &kde; Community. You can sort through them using the order by functions at the right. -Download the Polish course by clicking on <guilabel>Install</guilabel>. +We download the Polish course by clicking on <guilabel>Install</guilabel>. </para> <screenshot> -<screeninfo>Set favorite languages.</screeninfo> +<screeninfo>Download course.</screeninfo> <mediaobject> <imageobject> <imagedata fileref="first-steps-3-download-course.png" format="PNG" /> @@ -141,8 +145,8 @@ <sect2> <title>4. Start Training</title> <para> -Courses consist of multiple training units. -Select one of the training units that are available at the left panel, and then click on <guilabel>Start Training</guilabel>. +Courses consist of multiple training units, each usually grouping a set of phrases according to a scenario. +Select one of the training units available at the left panel, and then click on <guilabel>Start Training</guilabel>. </para> <screenshot> <screeninfo>Select unit and start training.</screeninfo> @@ -157,7 +161,7 @@ <sect2> <title>Finish Training / Statistics </title> <para> -After completing through all the phrases in a course, you'll be presented with the statistics screen. +After completing through all the phrases in a training unit, you will see a statistics screen for the completed training. You can see how many tries it took for the various types of phrases. The statistics screen is closed by click on the <guilabel>Finish Training</guilabel> button at the top right. </para> @@ -172,8 +176,8 @@ <title>The Training Screen</title> <para> The training view is the most important view in &artikulate;. -Whenever starting a training, this view is opened and will be present until the training of the selected training unit is finished or the learner stops the training. -In the center of this screen, there are controls for playing a native speaker recording, the text of the corresponding phrase and controls to record and playback the learner's own voice. +Whenever starting a training, this view is opened and will be presented until the training of the selected training unit is finished or the learner stops the training. +In the center of this screen, there are controls for playing a native speaker recording, the text of the corresponding phrase, and controls to record and playback the learner's own voice. When a learner judges to be done with training the pronunciation of the current phrase, by clicking <guilabel>OK</guilabel> the current phrase is marked as done and a next phrase is selected. Otherwise, when clicking on <guilabel>Retry Later</guilabel>, a next phrase is selected but the current phrase will be displayed later again. </para> @@ -182,19 +186,19 @@ For training the pronunciation of a current phrase, the learner shall first play the native speaker's recording by pressing at the <guilabel>Playback</guilabel> button at the left. The next step is to press on the <guilabel>Record</guilabel> button and read the presented phrase aloud. A further press on the <guilabel>Record</guilabel> button stops the recording and the recording can then be played with the corresponding <guilabel>Playback</guilabel> button. -By listening to both recordings, the user shall judge if the phrase was pronounced correctly or not. +By listening to both recordings, the learner shall judge if the phrase was pronounced correctly or not. If it was pronounced correctly, clicking on <guilabel>OK</guilabel> marks the phrase as learned and proceeds with the next phrase. Otherwise, if not yet satisfied with the recording, the learner either can retry recording by again clicking on <guilabel>Record</guilabel> or schedule the phrase for later training by clicking on <guilabel>Retry Later</guilabel>. </para> <para> -&artikulate; units are composed of a list of phrases of different lengths (words, expressions, sentences, and paragraphs). +&artikulate;'s units are composed of a list of phrases of different lengths (words, expressions, sentences, and paragraphs). A learner can see the current learning progress at the bottom when looking at <link linkend="screens-training-progressbar">the progress bar</link>. The progress bar also allows switching between phrases. </para> <para> -At any time the learner can choose to stop training by clicking at the <guilabel>Finish</guilabel> button. +At any time, the learner can choose to stop training by clicking at the <guilabel>Finish</guilabel> button. </para> <screenshot> @@ -258,7 +262,7 @@ <sect2 id="screens-training-progressbar"> <title>Progress Bar</title> <para> -The progress bar displays the learning progress in the current unit. +The progress bar displays the learning progress for the current unit. It consists of blocks representing the phrases in the current unit, whereas the color of a block explains the length of the phrase. You can hover over these blocks to see the phrases and click on them to switch the currently trained phrase. Dark elements are already trained, light ones are untrained. @@ -270,9 +274,7 @@ <imagedata fileref="screen-training-progressbar.png" format="PNG" /> </imageobject> <textobject> -<phrase> - The progress bar for the current unit. -</phrase> +<phrase>The progress bar for the current unit.</phrase> </textobject> </mediaobject> </screenshot> @@ -287,7 +289,200 @@ </itemizedlist> </para> </sect2> +</sect1> +</chapter> +<chapter> +<title>Editor</title> +<para> +The integrated course editor is an advanced tool for language course contributors that allows the creation and collaborative work on language courses for &artikulate;. +On the one hand it allows the creation of language courses and recording of the native speaker sound files. +On the hand, it enables work on so called <emphasis>skeletons</emphasis>, which are language course prototypes that allow easy and fast creation of new courses derived from a prototype. +The editor only edits files outside of the training course set, i.e., the set of courses downloaded in &artikulate;. +</para> + +<sect1> +<title>Overview</title> + +<sect2> +<title>Editor Notions</title> +<para> +For the course editor we use a specific set of terms, which is also used for the following descriptions. +</para> +<variablelist> +<varlistentry> + <term>Language:</term> + <listitem> + <para> + Languages are only available in &artikulate; if they are given by language specifications. + </para> + </listitem> +</varlistentry> +<varlistentry> + <term>Course:</term> + <listitem> + <para> + A course is associated to one language and contains a list of units. + </para> + </listitem> +</varlistentry> +<varlistentry> + <term>Unit:</term> + <listitem> + <para> + A unit consists of phrases that are "somehow" homogeneous. + E.g. those can be phrases spoken in a restaurant or phrases spoken at a conversation at the street by a tourist searching for the way. + </para> + </listitem> +</varlistentry> +<varlistentry> + <term>Course Skeletons:</term> + <listitem> + <para> + A course skeleton forms the prototype of a course. + This is, skeletons help to ease creation of courses in several languages as they state a set of units and phrases (in English) that then can be used as a blueprint to create a course in a new language. + Updates of course skeletons can also be imported into courses that are created from a skeleton. + </para> + </listitem> +</varlistentry> +<varlistentry> + <term>Phrases:</term> + <listitem> + <para> + Phrases are given by a text string and a recording by a native speaker. We differ phrases by their lengths. The following phrase lengths exists + <itemizedlist> + <listitem> + <para><inlinemediaobject><imageobject> + <imagedata fileref="hi32-action-artikulate-word.png" format="PNG"/></imageobject> + </inlinemediaobject> + word: a single word, letter, or number</para> + </listitem> + <listitem> + <para><inlinemediaobject><imageobject> + <imagedata fileref="hi32-action-artikulate-expression.png" format="PNG"/></imageobject> + </inlinemediaobject> + expression: an expression of several words that does not form a complete sentence</para> + </listitem> + <listitem> + <para><inlinemediaobject><imageobject> + <imagedata fileref="hi32-action-artikulate-sentence.png" format="PNG"/></imageobject> + </inlinemediaobject> + sentence: a complete sentence</para> + </listitem> + <listitem> + <para><inlinemediaobject><imageobject> + <imagedata fileref="hi32-action-artikulate-paragraph.png" format="PNG"/></imageobject> + </inlinemediaobject> + paragraph: several sentences (usually 2-3)</para> + </listitem> + </itemizedlist> + </para> + </listitem> +</varlistentry> +</variablelist> +<para> +A course is associated with a specific language, consists of different units and each unit is given by a sequence of phrases in different lengths. +</para> +</sect2> + +<sect2> +<title>Set Storage Folder/Course Repository</title> +<para> +The editor operates within a separate folder (in the following called <emphasis>repository</emphasis>, as it is recommended to be under some version control system). +In that folder, the editor searches for editable courses and skeleton files and also stores new files. +</para> +<para> +The course repository can be set in the configuration dialog. +It can be found at <menuchoice><guimenu>Settings</guimenu> <guimenuitem>Configure &artikulate;</guimenuitem></menuchoice> and the course settings are at the menu option <guilabel>Course Resources</guilabel>. +</para> +<screenshot> +<screeninfo>Set course repository for editor.</screeninfo> +<mediaobject> +<imageobject> +<imagedata fileref="editor-set-repository.png" format="PNG" /> +</imageobject> +<caption><para>Set course repository for editor.</para></caption> +</mediaobject> +</screenshot> +</sect2> +</sect1> + +<sect1> +<title>Edit a Course</title> +<para> +The editor can be started from the main menu with <menuchoice><guimenu>Mode</guimenu> <guimenuitem>Course Editor mode</guimenuitem></menuchoice>. +There you have the options to work on existing skeleton files or to create new courses or edit existing ones. +After selecting a language, you can open an existing course to edit it, or otherwise use <guilabel>New Course</guilabel> to create a new course for this language. +In either case, you will be presented the list of units of the course, where you can create new units or open existing ones for edit. +</para> + +<sect2> +<title>Edit a Unit</title> +<para> +When opening a unit for editing, you will see the list of its phrases (see below). +One line of this list contains the following information: +<orderedlist> + <listitem><para>edit button: open this phrase for edit</para></listitem> + <listitem><para>phrase type: icon that denotes the type of this phrase (e.g., word, expression)</para></listitem> + <listitem><para>edit state: a colored block that denotes the edit state of this phrase (red: unknown/no state set; orange: translated state; green: completed state)</para></listitem> + <listitem><para>the phrase</para></listitem> + <listitem><para>exclude button: if course derives from a course skeleton, this button allows excluding the phrase from the unit</para></listitem> +</orderedlist> +</para> +<screenshot> +<screeninfo>Editor View: list of phrases within a unit.</screeninfo> +<mediaobject> +<imageobject> +<imagedata fileref="editor-screenshot-unit.png" format="PNG" /> +</imageobject> +<caption><para>Editor View: list of phrases within a unit.</para></caption> +</mediaobject> +</screenshot> +</sect2> + +<sect2> +<title>Edit a Phrase</title> +<para> +When opening a phrase for editing, you will see the phrase editor as shown below. +This edit interface contains the following elements: +</para> +<itemizedlist> + <listitem><para>the phrase text as it will be shown in the trainer</para></listitem> + <listitem><para>the original phrase, if using a course skeleton</para></listitem> + <listitem><para>the edit state of the phrase</para></listitem> + <listitem><para>the type/length of the phrase</para></listitem> + <listitem><para>recording buttons for the native speaker recordings</para></listitem> + <listitem><para>buttons to denote interesting phonemes of the phrase (currently not used in training mode)</para></listitem> +</itemizedlist> +<para> +You can close the phrase editing interface with +<inlinemediaobject><imageobject> +<imagedata fileref="editor-apply.png" format="PNG"/></imageobject> +</inlinemediaobject> +to accept the changes you did, or with +<inlinemediaobject><imageobject> +<imagedata fileref="editor-cancel.png" format="PNG"/></imageobject> +</inlinemediaobject> +to discard your changes. +</para> +<screenshot> +<screeninfo>Editor View: editing view for a phrase.</screeninfo> +<mediaobject> +<imageobject> +<imagedata fileref="editor-screenshot-editing-phrase.png" format="PNG" /> +</imageobject> +<caption><para>Editor View: editing view for a phrase.</para></caption> +</mediaobject> +</screenshot> +</sect2> + +<sect2> +<title>Update from Course Prototype</title> +<para> +If the currently edited course derives from a skeleton, then the course can be updated from the latest version of the skeleton by using the button <guilabel>Update from Course Prototype</guilabel> at the top left of the screen. +This button is deactivated if the course is not derived from a course skeleton. +</para> +</sect2> </sect1> </chapter> Files old/artikulate-4.12.90/icons/hi32-action-artikulate-paragraph.png and new/artikulate-4.12.97/icons/hi32-action-artikulate-paragraph.png differ Files old/artikulate-4.12.90/icons/hisc-action-artikulate-paragraph.svgz and new/artikulate-4.12.97/icons/hisc-action-artikulate-paragraph.svgz differ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/artikulate-4.12.90/liblearnerprofile/src/CMakeLists.txt new/artikulate-4.12.97/liblearnerprofile/src/CMakeLists.txt --- old/artikulate-4.12.90/liblearnerprofile/src/CMakeLists.txt 2014-03-12 05:40:44.000000000 +0100 +++ new/artikulate-4.12.97/liblearnerprofile/src/CMakeLists.txt 2014-03-24 09:57:50.000000000 +0100 @@ -23,7 +23,7 @@ # THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ### -set( learnerprofile_LIB_SRCS +set(learnerprofile_LIB_SRCS learner.cpp learninggoal.cpp profilemanager.cpp @@ -32,14 +32,24 @@ models/learninggoalmodel.cpp ) -kde4_add_library( learnerprofile SHARED ${learnerprofile_LIB_SRCS} ) +kde4_add_library(artikulatelearnerprofile SHARED ${learnerprofile_LIB_SRCS}) target_link_libraries( - learnerprofile + artikulatelearnerprofile LINK_PRIVATE ${KDE4_KDECORE_LIBS} ${KDE4_KFILE_LIBS} ${QT_QTSQL_LIBRARY} ) -install( TARGETS learnerprofile ${INSTALL_TARGETS_DEFAULT_ARGS} ) +set_target_properties( + artikulatelearnerprofile + PROPERTIES + VERSION ${GENERIC_LIB_VERSION} + SOVERSION ${GENERIC_LIB_SOVERSION} +) + +install( + TARGETS artikulatelearnerprofile + ${INSTALL_TARGETS_DEFAULT_ARGS} +) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/artikulate-4.12.90/src/CMakeLists.txt new/artikulate-4.12.97/src/CMakeLists.txt --- old/artikulate-4.12.90/src/CMakeLists.txt 2014-03-12 05:40:44.000000000 +0100 +++ new/artikulate-4.12.97/src/CMakeLists.txt 2014-03-24 09:57:50.000000000 +0100 @@ -24,7 +24,7 @@ ### set(ARTIKULATE_VERSION_MAJOR 0) set(ARTIKULATE_VERSION_MINOR 2) -set(ARTIKULATE_VERSION_PATCH 90) +set(ARTIKULATE_VERSION_PATCH 95) find_package(KDeclarative REQUIRED) find_package(QtMobility COMPONENTS MultimediaKit QUIET) @@ -95,7 +95,7 @@ set( artikulateTargetLibs artikulatecore - learnerprofile + artikulatelearnerprofile ${KDECLARATIVE_LIBRARIES} ${KDE4_PLASMA_LIBS} ${KDE4_KIO_LIBS} @@ -151,10 +151,19 @@ kde4_add_library(artikulatecore SHARED ${artikulateCore_SRCS}) target_link_libraries(artikulatecore LINK_PRIVATE - learnerprofile + artikulatelearnerprofile ${artikulateCoreTargetLibs} ) -install(TARGETS artikulatecore ${INSTALL_TARGETS_DEFAULT_ARGS}) +set_target_properties( + artikulatecore + PROPERTIES + VERSION ${GENERIC_LIB_VERSION} + SOVERSION ${GENERIC_LIB_SOVERSION} +) +install( + TARGETS artikulatecore + DESTINATION ${INSTALL_TARGETS_DEFAULT_ARGS} +) install( FILES artikulate.knsrc DESTINATION ${CONFIG_INSTALL_DIR} ) # set the source code files from which Artikulate is compiled @@ -193,7 +202,7 @@ kde4_add_executable(artikulate ${artikulate_SRCS}) target_link_libraries(artikulate LINK_PRIVATE - learnerprofile + artikulatelearnerprofile ${artikulateTargetLibs} ) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/artikulate-4.12.90/src/core/course.cpp new/artikulate-4.12.97/src/core/course.cpp --- old/artikulate-4.12.90/src/core/course.cpp 2014-03-12 05:40:44.000000000 +0100 +++ new/artikulate-4.12.97/src/core/course.cpp 2014-03-24 09:57:50.000000000 +0100 @@ -295,7 +295,7 @@ void Course::sync() { if (!m_file.isValid() || m_file.isEmpty() || m_resource == 0) { - kWarning() << "No file path set, aborting sync operation."; + kError() << "Path" << m_file.toLocalFile() << "not valid, aborting sync operation."; return; } m_resource->sync(); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/artikulate-4.12.90/src/core/resourcemanager.cpp new/artikulate-4.12.97/src/core/resourcemanager.cpp --- old/artikulate-4.12.90/src/core/resourcemanager.cpp 2014-03-12 05:40:44.000000000 +0100 +++ new/artikulate-4.12.97/src/core/resourcemanager.cpp 2014-03-24 09:57:50.000000000 +0100 @@ -356,11 +356,17 @@ } } -void ResourceManager::newCourseDialog() +void ResourceManager::newCourseDialog(Language *language) { QPointer<NewCourseDialog> dialog = new NewCourseDialog(this); - if (dialog->exec() == QDialog::Accepted ) { + if (language != 0) { + dialog->setLanguage(language); + } + if (dialog->exec() == QDialog::Accepted) { + CourseResource *tempCourse = dialog->courseResource(); + tempCourse->setContributorResource(true); addCourseResource(dialog->courseResource()); + emit languageCoursesChanged(); } } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/artikulate-4.12.90/src/core/resourcemanager.h new/artikulate-4.12.97/src/core/resourcemanager.h --- old/artikulate-4.12.90/src/core/resourcemanager.h 2014-03-12 05:40:44.000000000 +0100 +++ new/artikulate-4.12.97/src/core/resourcemanager.h 2014-03-24 09:57:50.000000000 +0100 @@ -176,7 +176,7 @@ */ QList<SkeletonResource *> skeletonResources(); - Q_INVOKABLE void newCourseDialog(); + Q_INVOKABLE void newCourseDialog(Language* language = 0); signals: void languageResourceAdded(); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/artikulate-4.12.90/src/core/resources/courseresource.cpp new/artikulate-4.12.97/src/core/resources/courseresource.cpp --- old/artikulate-4.12.90/src/core/resources/courseresource.cpp 2014-03-12 05:40:44.000000000 +0100 +++ new/artikulate-4.12.97/src/core/resources/courseresource.cpp 2014-03-24 09:57:50.000000000 +0100 @@ -33,6 +33,8 @@ #include <QDomDocument> #include <QIODevice> #include <QFile> +#include <QFileInfo> +#include <QDir> #include <KDebug> @@ -226,6 +228,13 @@ root.appendChild(unitListElement); // write back to file + QFileInfo info(path().directory()); // create directories if necessary + if (!info.exists()) { + kDebug() << "create xml output file directory, not existing"; + QDir dir; + dir.mkpath(path().directory()); + } + //TODO port to KSaveFile QFile file; file.setFileName(path().toLocalFile()); @@ -310,16 +319,20 @@ return d->m_courseResource; } - if (!path().isLocalFile()) { - kWarning() << "Cannot open course file at " << path().toLocalFile() << ", aborting."; - return 0; + // if file does not exist, create new course + QFileInfo info(d->m_path.toLocalFile()); + if (!info.exists()) { + d->m_courseResource = new Course(this); + d->m_courseResource->setId(d->m_identifier); + d->m_courseResource->setTitle(d->m_title); + return d->m_courseResource; } + // load existing file QXmlSchema schema = loadXmlSchema("course"); if (!schema.isValid()) { return 0; } - QDomDocument document = loadDomDocument(path(), schema); if (document.isNull()) { kWarning() << "Could not parse document " << path().toLocalFile() << ", aborting."; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/artikulate-4.12.90/src/mainwindow.cpp new/artikulate-4.12.97/src/mainwindow.cpp --- old/artikulate-4.12.90/src/mainwindow.cpp 2014-03-12 05:40:44.000000000 +0100 +++ new/artikulate-4.12.97/src/mainwindow.cpp 2014-03-24 09:57:50.000000000 +0100 @@ -215,6 +215,10 @@ void MainWindow::updateTrainingPhraseFont() { QObject *phraseText = m_view->rootObject()->findChild<QObject*>("phraseText"); + if (!phraseText) { + kDebug() << "no phraseText context object found, aborting"; + return; + } QFont f = phraseText->property("font").value<QFont>(); phraseText->setProperty("font", Settings::trainingPhraseFont()); } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/artikulate-4.12.90/src/qml/Editor.qml new/artikulate-4.12.97/src/qml/Editor.qml --- old/artikulate-4.12.90/src/qml/Editor.qml 2014-03-12 05:40:44.000000000 +0100 +++ new/artikulate-4.12.97/src/qml/Editor.qml 2014-03-24 09:57:50.000000000 +0100 @@ -259,10 +259,13 @@ Text { anchors.verticalCenter: parent.verticalCenter text: i18n("<strong>Skeleton:</strong> %1", editor.currentCourseName) + font.pointSize: 1.5 * theme.defaultFont.pointSize } PlasmaComponents.ToolButton { // unselect-button for language anchors.verticalCenter: parent.verticalCenter iconSource: "go-up" + width: theme.mediumIconSize + height: theme.mediumIconSize flat: true enabled: editorProfile.course != null onClicked: { @@ -302,10 +305,6 @@ } Item { - anchors { - top: main.top - topMargin: 30 - } visible: editorProfile.course != null Column { @@ -364,7 +363,7 @@ visible: !globalResourceManager.isRepositoryManager() Text { text: i18n("No Course Repository Selected") - font.pointSize: 28 + font.pointSize: 1.5 * theme.defaultFont.pointSize } Text { text: i18n("Editor is only available when Artikulate works on a course data repository. Please see program settings.") diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/artikulate-4.12.90/src/qml/EditorSelector.qml new/artikulate-4.12.97/src/qml/EditorSelector.qml --- old/artikulate-4.12.90/src/qml/EditorSelector.qml 2014-03-12 05:40:44.000000000 +0100 +++ new/artikulate-4.12.97/src/qml/EditorSelector.qml 2014-03-24 09:57:50.000000000 +0100 @@ -82,7 +82,7 @@ Text { id: textSelectLanguage text: i18n("Select Course Language:") - font.pointSize: 20; + font.pointSize: 1.5 * theme.defaultFont.pointSize } LanguageSelector { id: languageSelector @@ -110,7 +110,7 @@ anchors.verticalCenter: parent.verticalCenter text: i18n("Language: ") iconSource: "go-up" - font.pointSize: 20; + font.pointSize: 1.5 * theme.defaultFont.pointSize onClicked: { unselect() } @@ -125,7 +125,7 @@ return i18n("unselected"); } } - font.pointSize: 20; + font.pointSize: 1.5 * theme.defaultFont.pointSize } } @@ -135,7 +135,7 @@ iconSource: "document-new" enabled: selectedLanguage != null onClicked: { - globalResourceManager.newCourseDialog(); + globalResourceManager.newCourseDialog(root.selectedLanguage); } } CourseSelector { @@ -158,7 +158,7 @@ Text { text: i18n("Select Skeleton:") - font.pointSize: 20; + font.pointSize: 1.5 * theme.defaultFont.pointSize } SkeletonSelector { id: skeletonSelector diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/artikulate-4.12.90/src/qml/UnitEditor.qml new/artikulate-4.12.97/src/qml/UnitEditor.qml --- old/artikulate-4.12.90/src/qml/UnitEditor.qml 2014-03-12 05:40:44.000000000 +0100 +++ new/artikulate-4.12.97/src/qml/UnitEditor.qml 2014-03-24 09:57:50.000000000 +0100 @@ -208,7 +208,6 @@ PlasmaComponents.ToolButton { id: addPhraseButton - anchors.top: unitBreadcrumb.bottom text: i18n("Add Phrase") iconSource: "document-new" enabled: root.unit != null && !root.editMode diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/artikulate-4.12.90/src/ui/newcoursedialog.cpp new/artikulate-4.12.97/src/ui/newcoursedialog.cpp --- old/artikulate-4.12.90/src/ui/newcoursedialog.cpp 2014-03-12 05:40:44.000000000 +0100 +++ new/artikulate-4.12.97/src/ui/newcoursedialog.cpp 2014-03-24 09:57:50.000000000 +0100 @@ -33,6 +33,7 @@ NewCourseDialog::NewCourseDialog(ResourceManager *m_resourceManager) : KDialog(0) + , m_fixedLanguage(0) , m_resourceManager(m_resourceManager) , m_createdCourse(0) { @@ -70,15 +71,24 @@ delete ui; } +void NewCourseDialog::setLanguage(Language *language) +{ + ui->language->setVisible(false); + ui->labelLanguage->setVisible(false); + m_fixedLanguage = language; +} + void NewCourseDialog::createCourse() { - // set language - Language * language = 0; - QString selectedLanguage = ui->language->itemData(ui->language->currentIndex()).toString(); - foreach (LanguageResource *resource, m_resourceManager->languageResources()) { - if (resource->identifier() == selectedLanguage) { - language = resource->language(); - break; + // set language from dialog if not set yet + Language * language = m_fixedLanguage; + if (!language) { + QString selectedLanguage = ui->language->itemData(ui->language->currentIndex()).toString(); + foreach (LanguageResource *resource, m_resourceManager->languageResources()) { + if (resource->identifier() == selectedLanguage) { + language = resource->language(); + break; + } } } @@ -90,18 +100,19 @@ .arg(language->id()); m_createdCourse = new CourseResource(m_resourceManager, KUrl::fromLocalFile(path)); + Q_ASSERT(m_createdCourse); Course *course = m_createdCourse->course(); + Q_ASSERT(course); course->setId(QUuid::createUuid().toString()); course->setTitle(ui->title->text()); course->setDescription(ui->description->toHtml()); + course->setFile(KUrl::fromLocalFile(path)); + course->setLanguage(language); // set skeleton QString skeletonId = ui->skeletonSelector->itemData(ui->skeletonSelector->currentIndex()).toString(); course->setForeignId(skeletonId); - - // check that language actually exists - Q_ASSERT(course->language()); } CourseResource * NewCourseDialog::courseResource() const diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/artikulate-4.12.90/src/ui/newcoursedialog.h new/artikulate-4.12.97/src/ui/newcoursedialog.h --- old/artikulate-4.12.90/src/ui/newcoursedialog.h 2014-03-12 05:40:44.000000000 +0100 +++ new/artikulate-4.12.97/src/ui/newcoursedialog.h 2014-03-24 09:57:50.000000000 +0100 @@ -26,6 +26,7 @@ class ResourceManager; class CourseResource; +class Language; class NewCourseDialog : public KDialog @@ -35,6 +36,7 @@ public: explicit NewCourseDialog(ResourceManager *resourceMgr); virtual ~NewCourseDialog(); + void setLanguage(Language *language); CourseResource * courseResource() const; public slots: @@ -42,6 +44,7 @@ private: Ui::NewCourseDialog *ui; + Language *m_fixedLanguage; ResourceManager *m_resourceManager; CourseResource *m_createdCourse; }; -- To unsubscribe, e-mail: opensuse-commit+unsubscribe@opensuse.org For additional commands, e-mail: opensuse-commit+help@opensuse.org
participants (1)
-
root@hilbert.suse.de