Patrick von Reth | 28 Aug 02:16 2015
Picon

AW: [emerge/kde-4.14] bin: add nomysql option

That is exactly one of the scenarios where a simple Portage/PACKAGE_IGNORES entry would be sufficient. I see the value of options, but currently we support in some parts the exact same thing in two different solutions.

 

 

 

 


Von: Patrick Spendrin
Gesendet: 28 August 2015 00:22
An: kde-commits <at> kde.org
Betreff: [emerge/kde-4.14] bin: add nomysql option

 

 

Git commit 2e02f4fb024bdff040efac1aa104bfaa5f170dda by Patrick Spendrin.
Committed on 27/08/2015 at 19:06.
Pushed by sengels into branch 'kde-4.14'.

add nomysql option

M  +3    -0    bin/options.py

http://commits.kde.org/emerge/2e02f4fb024bdff040efac1aa104bfaa5f170dda

diff --git a/bin/options.py b/bin/options.py
index 550e39b..04f861a 100644
--- a/bin/options.py
+++ b/bin/options.py
<at> <at> -67,6 +67,9 <at> <at> class OptionsFeatures(OptionsBase):
         ## stick to the gcc 4.4.7 version
         self.legacyGCC = False
 
+        ## do not use mysql
+        self.nomysql = False
+
 ## options for the fetch action
 class OptionsFetch(OptionsBase):
     def __init__(self):

 

 

Jasem Mutlaq | 28 Aug 01:31 2015

[kstars/gsoc2015-ekos] kstars/ekos: Initial scoring logic

Git commit 829216c83b57787cf1487cdec28d36d34a55ad73 by Jasem Mutlaq.
Committed on 27/08/2015 at 23:31.
Pushed by mutlaqja into branch 'gsoc2015-ekos'.

Initial scoring logic

M  +295  -78   kstars/ekos/scheduler.cpp
M  +16   -22   kstars/ekos/scheduler.h
M  +26   -0    kstars/ekos/scheduler.ui
M  +41   -1    kstars/ekos/schedulerjob.cpp
M  +10   -1    kstars/ekos/schedulerjob.h

http://commits.kde.org/kstars/829216c83b57787cf1487cdec28d36d34a55ad73

diff --git a/kstars/ekos/scheduler.cpp b/kstars/ekos/scheduler.cpp
index b39a75d..3d85281 100644
--- a/kstars/ekos/scheduler.cpp
+++ b/kstars/ekos/scheduler.cpp
 <at>  <at>  -78,7 +78,7  <at>  <at>  Scheduler::Scheduler()
     connect(queueTable, SIGNAL(doubleClicked(QModelIndex)), this, SLOT(editJob(QModelIndex)));
     connect(queueTable, SIGNAL(itemSelectionChanged()), this, SLOT(resetJobEdit()));

-    connect(startB,SIGNAL(clicked()),this,SLOT(start()));
+    connect(startB,SIGNAL(clicked()),this,SLOT(toggleScheduler()));
     connect(queueSaveAsB,SIGNAL(clicked()),this,SLOT(save()));
     connect(queueLoadB,SIGNAL(clicked()),this,SLOT(load()));

 <at>  <at>  -136,7 +136,7  <at>  <at>  void Scheduler::selectObject()

 void Scheduler::selectFITS()
 {
-    fitsURL = QFileDialog::getOpenFileUrl(this, xi18n("Open FITS Image"), QString(), "FITS (*.fits *.fit)");
+    fitsURL = QFileDialog::getOpenFileUrl(this, xi18n("Open FITS Image"), QDir::homePath(), "FITS
(*.fits *.fit)");
     if (fitsURL.isEmpty())
         return;

 <at>  <at>  -156,7 +156,7  <at>  <at>  void Scheduler::selectFITS()

 void Scheduler::selectSequence()
 {
-    sequenceURL = QFileDialog::getOpenFileUrl(this, xi18n("Open Sequence Queue"), QString(),
xi18n("Ekos Sequence Queue (*.esq)"));
+    sequenceURL = QFileDialog::getOpenFileUrl(this, xi18n("Open Sequence Queue"), QDir::homePath(),
xi18n("Ekos Sequence Queue (*.esq)"));
     if (sequenceURL.isEmpty())
         return;

 <at>  <at>  -171,6 +171,12  <at>  <at>  void Scheduler::selectSequence()

 void Scheduler::addJob()
 {
+    if (state == SCHEDULER_RUNNIG)
+    {
+        appendLogText(xi18n("Cannot add or modify a job while the scheduler is running."));
+        return;
+    }
+
     if(nameEdit->text().isEmpty())
     {
         appendLogText(xi18n("Target name is required."));
 <at>  <at>  -231,7 +237,10  <at>  <at>  void Scheduler::addJob()
     if (nowConditionR->isChecked())
         job->setStartupCondition(SchedulerJob::START_NOW);
     else if (culminationConditionR->isChecked())
+    {
         job->setStartupCondition(SchedulerJob::START_CULMINATION);
+        job->setCulminationOffset(culminationOffset->value());
+    }
     else
     {
         job->setStartupCondition(SchedulerJob::START_AT);
 <at>  <at>  -331,15 +340,22  <at>  <at>  void Scheduler::addJob()
         resetJobEdit();
         appendLogText(xi18n("Job #%1 changes applied.", currentRow+1));
     }
+
+    startB->setEnabled(true);
 }

 void Scheduler::editJob(QModelIndex i)
 {
+    if (state == SCHEDULER_RUNNIG)
+    {
+        appendLogText(xi18n("Cannot add or modify a job while the scheduler is running."));
+        return;
+    }
+
     SchedulerJob *job = jobs.at(i.row());
     if (job == NULL)
         return;

-
     nameEdit->setText(job->getName());

     raBox->setText(job->getTargetCoords().ra0().toHMSString());
 <at>  <at>  -358,6 +374,7  <at>  <at>  void Scheduler::editJob(QModelIndex i)

         case SchedulerJob::START_CULMINATION:
             culminationConditionR->setChecked(true);
+            culminationOffset->setValue(job->getCulminationOffset());
             break;

         case SchedulerJob::START_AT:
 <at>  <at>  -447,20 +464,38  <at>  <at>  void Scheduler::removeJob()

 }

-void Scheduler::start()
+void Scheduler::toggleScheduler()
 {
-    // If running, stop it
-    if(state == SCHEDULER_RUNNIG)
-    {
-       disconnect(KStars::Instance()->data()->clock(), SIGNAL(timeAdvanced()), this, SLOT(checkJobStatus()));
-       disconnect(KStars::Instance()->data()->clock(), SIGNAL(timeAdvanced()), this, SLOT(evaluateJobs()));
+    if (state == SCHEDULER_RUNNIG)
+        stop();
+    else
+        start();
+}

-       state = SCHEDULER_ABORTED;
+void Scheduler::stop()
+{
+    if(state != SCHEDULER_RUNNIG)
+        return;

-        pi->stopAnimation();
-        startB->setText("Start Scheduler");
+    // TODO stop any running jobs!
+
+    disconnect(KStars::Instance()->data()->clock(), SIGNAL(timeAdvanced()), this, SLOT(checkStatus()));
+    //disconnect(KStars::Instance()->data()->clock(), SIGNAL(timeAdvanced()), this, SLOT(evaluateJobs()));
+
+    state = SCHEDULER_IDLE;
+    ekosState = EKOS_IDLE;
+    indiState = INDI_IDLE;
+
+    currentJob = NULL;
+
+     pi->stopAnimation();
+     startB->setText("Start Scheduler");
+}
+
+void Scheduler::start()
+{
+    if(state == SCHEDULER_RUNNIG)
         return;
-    }

     pi->startAnimation();

 <at>  <at>  -470,20 +505,82  <at>  <at>  void Scheduler::start()

     state = SCHEDULER_RUNNIG;

-    evaluateJobs();
+    connect(KStars::Instance()->data()->clock(), SIGNAL(timeAdvanced()), this, SLOT(checkStatus()));

 }

 void Scheduler::evaluateJobs()
 {
-    // First check if any jobs requires FITS solving
     foreach(SchedulerJob *job, jobs)
     {
-        if (job->getFITSFile().isEmpty() == false && job->getFITSState() == SchedulerJob::FITS_IDLE)
+        int score = 0;
+
+        // #1 Get current altitude & Moon separation
+        job->getTargetCoords().EquatorialToHorizontal(KStarsData::Instance()->lst(), KStarsData::Instance()->geo()->lat());
+        double currentAlt  = job->getTargetCoords().alt().Degrees();
+        double mSeparation = moon->angularDistanceTo(&(job->getTargetCoords())).Degrees();
+
+        // #2 Check startup conditions
+
+        // #2.1 Now?
+        switch (job->getStartingCondition())
         {
-            executeJob(job);
-            return;
+                case SchedulerJob::START_NOW:
+                    if (currentAlt < 0)
+                        score -= 1000;
+                    // If minimum altitude is specified
+                    else if (job->getMinAltitude() > 0)
+                    {
+                        // if current altitude is lower that's not good
+                        if (currentAlt < job->getMinAltitude())
+                            score -= 100;
+                        // Otherwise, adjust score and add current altitude to score weight
+                        else
+                            score += 100 + currentAlt;
+                    }
+                    // If no minimum altitude, then adjust altitude score to account for current target altitude
+                    else
+                        score += currentAlt;
+
+                    if (job->getMinMoonSeparation() > 0)
+                    {
+                        if (mSeparation < job->getMinMoonSeparation())
+                            score -= 100;
+                        else
+                            score += job->getMinMoonSeparation();
+                    }
+                    else
+                        score += job->getMinMoonSeparation();
+
+                    //score += getWeatherScore();
+
+                    job->setScore(score);
+
+                    break;
+
+
+                  case SchedulerJob::START_CULMINATION:
+                         //if (job->getTargetCoords().
+                        // Create sky object from sky point, get transit time
+                        // Check if it is in "dark area". Get Dawk/Dusk from AltVsTime tool. This will be our limit window.
+                        // Get culmination time minus user selectable offset and check if it is after dusk, if OK, then this is START TIME
+                        // Account for altitude & moon & weather as well in scoring
+                        // If current time very close to START TIME, then score += 500
+                        break;
+
+
+                 case SchedulerJob::START_AT:
+                        // Check if it is after dusk and before dawn
+                        // Account for altitude & moon & weather as well in scoring
+                        // If current time very close to START TIME, then score += 500
+                        break;
+
+
+
+
         }
+
+
     }
 }

 <at>  <at>  -492,12 +589,173  <at>  <at>  void Scheduler::executeJob(SchedulerJob *job)
 {
     currentJob = job;

-    connect(KStars::Instance()->data()->clock(), SIGNAL(timeAdvanced()), this, SLOT(checkJobStatus()));
+    connect(KStars::Instance()->data()->clock(), SIGNAL(timeAdvanced()), this, SLOT(checkStatus()));
     //disconnect(KStars::Instance()->data()->clock(), SIGNAL(timeAdvanced()), this, SLOT(evaluateJobs()));
 }

-void Scheduler::checkJobStatus()
+void Scheduler::checkStatus()
 {
+
+    // #1 Check if Ekos is started
+    switch (ekosState)
+    {
+        case EKOS_IDLE:
+        {
+        // Even if state is IDLE, check if Ekos is already started. If not, start it.
+        QDBusReply<int> isEkosStarted;
+        isEkosStarted = ekosInterface->call(QDBus::AutoDetect,"getEkosStartingStatus");
+        if (isEkosStarted.value() == EkosManager::STATUS_SUCCESS)
+        {
+            ekosState = EKOS_READY;
+            break;
+        }
+        else
+        {
+            ekosInterface->call(QDBus::AutoDetect,"start");
+            ekosState = EKOS_STARTING;
+            return;
+        }
+        }
+        break;
+
+
+        case EKOS_STARTING:
+        {
+            QDBusReply<int> isEkosStarted;
+            isEkosStarted = ekosInterface->call(QDBus::AutoDetect,"getEkosStartingStatus");
+            if(isEkosStarted.value()== EkosManager::STATUS_SUCCESS)
+            {
+                appendLogText(xi18n("Ekos started."));
+                ekosState = EKOS_READY;
+                break;
+            }
+            else if(isEkosStarted.value()== EkosManager::STATUS_ERROR)
+            {
+                appendLogText(xi18n("Ekos failed to start."));
+
+                stop();
+                // Stop scheduler
+
+                //currentJob->setState(SchedulerJob::ABORTED);
+                //terminateJob(currentJob);
+            }
+            return;
+        }
+
+        case EKOS_READY:
+        break;
+    }
+
+    // #2 Check if INDI devices are connected.
+    switch (indiState)
+    {
+        case INDI_IDLE:
+        {
+            // Even in idle state, we make sure that INDI is not already connected.
+            QDBusReply<int> isINDIConnected = ekosInterface->call(QDBus::AutoDetect,"getINDIConnectionStatus");
+            if (isINDIConnected.value()== EkosManager::STATUS_SUCCESS)
+            {
+                indiState = INDI_READY;
+                break;
+            }
+            else
+            {
+                ekosInterface->call(QDBus::AutoDetect,"connectDevices");
+                indiState = INDI_CONNECTING;
+                return;
+            }
+        }
+        break;
+
+        case INDI_CONNECTING:
+        {
+         QDBusReply<int> isINDIConnected = ekosInterface->call(QDBus::AutoDetect,"getINDIConnectionStatus");
+        if(isINDIConnected.value()== EkosManager::STATUS_SUCCESS)
+        {
+            appendLogText(xi18n("INDI devices connected."));
+            indiState = INDI_READY;
+            break;
+        }
+        else if(isINDIConnected.value()== EkosManager::STATUS_ERROR)
+        {
+            appendLogText(xi18n("INDI devices failed to connect. Check INDI control panel for details."));
+
+            stop();
+
+            // TODO deal with INDI connection error? Wait until user resolves it? stop scheduler?
+            //currentJob->setState(SchedulerJob::ABORTED);
+            //terminateJob(currentJob);
+            return;
+        }
+        else return;
+        }
+
+    case INDI_READY:
+        break;
+    }
+
+
+    // #3 Check for any FITS jobs
+    foreach(SchedulerJob *job, jobs)
+    {
+        if (job->getFITSFile().isEmpty() == false)
+        {
+            switch (job->getFITSState())
+            {
+                case SchedulerJob::FITS_IDLE:
+                    currentJob = job;
+                    startFITSSolving();
+                    return;
+
+                case SchedulerJob::FITS_SOLVING:
+                {
+                    QDBusReply<bool> isSolverComplete, isSolverSuccessful;
+                    isSolverComplete = alignInterface->call(QDBus::AutoDetect,"isSolverComplete");
+                    if(isSolverComplete.value())
+                    {
+                        isSolverSuccessful = alignInterface->call(QDBus::AutoDetect,"isSolverSuccessful");
+                        if (isSolverSuccessful.value())
+                        {
+                            getFITSAstrometryResults();
+                            currentJob = NULL;
+                            break;
+                        }
+                        else
+                        {
+
+                            currentJob->setFITSState(SchedulerJob::FITS_ERROR);
+                            stop();
+                            return;
+                        }
+                    }
+                    else
+                        // Still solver in progress, return
+                        return;
+                  }
+                  break;
+
+                case SchedulerJob::FITS_ERROR:
+                    // Stop scheduler?
+                    break;
+
+                case SchedulerJob::FITS_COMPLETE:
+                    break;
+            }
+        }
+    }
+
+
+    // #4 Now evaluate jobs and select the best candidate
+    if (currentJob == NULL)
+    {
+        evaluateJobs();
+        return;
+    }
+
+    appendLogText(xi18n("Testing Complete, stopping"));
+
+    stop();
+
 #if 0
     if(currentJob==NULL)
         return;
 <at>  <at>  -518,7 +776,7  <at>  <at>  void Scheduler::checkJobStatus()
     QDBusReply<bool> replyalign;
     QDBusReply<bool> replyalign2;
     QDBusReply<QString> replysequence;
-    QDBusReply<int> ekosIsStarted;
+
     QDBusReply<bool> replyguide;
     QDBusReply<bool> replyguide2;
     QDBusReply<bool> replyguide3;
 <at>  <at>  -804,13 +1062,6  <at>  <at>  void Scheduler::save()

 

-void Scheduler::connectDevices()
-{
-    QDBusReply<int> replyconnect = ekosInterface->call(QDBus::AutoDetect,"getINDIConnectionStatus");
-    if(replyconnect.value()!=2)
-        ekosInterface->call(QDBus::AutoDetect,"connectDevices");
-}
-
 void Scheduler::startSlew()
 {
    /* QList<QVariant> telescopeSLew;
 <at>  <at>  -917,75 +1168,41  <at>  <at>  void Scheduler::setGOTOMode(int mode)
     alignInterface->callWithArgumentList(QDBus::AutoDetect,"setGOTOMode",solveArgs);
 }

-void Scheduler::startSolving()
+void Scheduler::startFITSSolving()
 {
-    /*
+    currentJob->setFITSState(SchedulerJob::FITS_SOLVING);
+
     QList<QVariant> astrometryArgs;
     astrometryArgs.append(false);
     alignInterface->callWithArgumentList(QDBus::AutoDetect,"setSolverType",astrometryArgs);
     QList<QVariant> solveArgs;
-    solveArgs.append(currentFITSjob->getFITSPath());
+    solveArgs.append(currentJob->getFITSFile().path());
     solveArgs.append(false);
     setGOTOMode(2);
     alignInterface->callWithArgumentList(QDBus::AutoDetect,"startSovling",solveArgs);
-    currentFITSjob->setSolverState(SchedulerJob::SOLVING);
-    */

+    appendLogText(xi18n("Solving %1 ...", currentJob->getFITSFile().fileName()));
 }

 
-void Scheduler::getResults()
+void Scheduler::getFITSAstrometryResults()
 {
-    /*
+
     QDBusReply<QList<double>> results = alignInterface->call(QDBus::AutoDetect,"getSolutionResult");
-    currentFITSjob->setFitsRA(results.value().at(1)*0.067);
-    currentFITSjob->setNormalRA(results.value().at(1)*0.067);
-    currentFITSjob->setFitsDEC(results.value().at(2));
-    currentFITSjob->setNormalDEC(results.value().at(2));
-    currentFITSjob->getOb()->setRA(results.value().at(1)*0.067);
-    currentFITSjob->getOb()->setDec(results.value().at(2));
-    */
-}

+    dms ra(results.value().at(1));
+    dms de(results.value().at(2));

-/*void Scheduler::updateJobInfo(SchedulerJob *o)
-{
-    if(o->getState()==SchedulerJob::SLEWING)
-    {
-        schedulerQueueTable->setItem(o->getRowNumber(),tableCountCol+1,new QTableWidgetItem("Slewing"));
-    }
-    if(o->getState()==SchedulerJob::FOCUSING){
-        schedulerQueueTable->setItem(o->getRowNumber(),tableCountCol+1,new QTableWidgetItem("Focusing"));
-    }
-    if(o->getState()==SchedulerJob::ALIGNING){
-        schedulerQueueTable->setItem(o->getRowNumber(),tableCountCol+1,new QTableWidgetItem("Aligning"));
-    }
-    if(o->getState()==SchedulerJob::GUIDING){
-        appendLogText("Guiding");
-        schedulerQueueTable->setItem(o->getRowNumber(),tableCountCol+1,new QTableWidgetItem("Guiding"));
-    }
-    if(o->getState()==SchedulerJob::CAPTURING){
-        schedulerQueueTable->setItem(o->getRowNumber(),tableCountCol+1,new QTableWidgetItem("Capturing"));
-    }
-    if(o->getState()==SchedulerJob::CAPTURING_COMPLETE){
-        appendLogText("Completed");
-        schedulerQueueTable->setItem(o->getRowNumber(),tableCountCol+1,new QTableWidgetItem("Completed"));
-    }
-    if(o->getState()==SchedulerJob::ABORTED){
-        appendLogText("Job Aborted");
-        schedulerQueueTable->setItem(o->getRowNumber(),tableCountCol+1,new QTableWidgetItem("Aborted"));
-    }
-}*/
+    currentJob->setTargetCoords(ra, de);

-void Scheduler::startEkos()
-{
-    //Ekos Start
-    QDBusReply<int> ekosisstarted = ekosInterface->call(QDBus::AutoDetect,"getEkosStartingStatus");
-    if(ekosisstarted.value()!=2)
-        ekosInterface->call(QDBus::AutoDetect,"start");
+    currentJob->setFITSState(SchedulerJob::FITS_COMPLETE);

+    appendLogText(xi18n("%1 FITS solution results are RA: %2 DEC: %3", currentJob->getName(),
ra.toHMSString(), de.toDMSString()));
 }

+
+
+
 void Scheduler::stopINDI()
 {
    /* if(iterations==objects.length()){
diff --git a/kstars/ekos/scheduler.h b/kstars/ekos/scheduler.h
index 098b0f8..ccccbb3 100644
--- a/kstars/ekos/scheduler.h
+++ b/kstars/ekos/scheduler.h
 <at>  <at>  -48,10 +48,6  <at>  <at>  public:
      void clearLog();

      /**
-      *  <at> brief startEkos DBus call for starting ekos
-      */
-     void startEkos();
-     /**
       *  <at> brief updateJobInfo Updates the state cell of the current job
       *  <at> param o the current job that is being evaluated
       */
 <at>  <at>  -82,10 +78,6  <at>  <at>  public:
       *  <at> brief getNextAction Checking for the next appropiate action regarding the current state of the
scheduler  and execute it
       */
      void getNextAction();
-     /**
-      *  <at> brief connectDevices After ekos is started, we connect devices
-      */
-     void connectDevices();

      /**
       *  <at> brief stopindi Stoping the indi services
 <at>  <at>  -98,17 +90,20  <at>  <at>  public:

      /**
       *  <at> brief setGOTOMode set the GOTO mode for the solver
-      *  <at> param mode 1 for SlewToTarget, 2 for Nothing
+      *  <at> param mode 0 For Sync, 1 for SlewToTarget, 2 for Nothing
       */
      void setGOTOMode(int mode);
+
+     void startFITSSolving();
+     void getFITSAstrometryResults();
+
+
      /**
-      *  <at> brief startSolving start the solving process for the FITS job
-      */
-     void startSolving();
-     /**
-      *  <at> brief getResults After solver is completed, we get the object coordinates and construct the
SchedulerJob object
+      *  <at> brief start Start scheduler main loop and evaluate jobs and execute them accordingly
       */
-     void getResults();
+     void start();
+
+    void stop();

 public slots:

 <at>  <at>  -143,19 +138,17  <at>  <at>  public slots:
       */
      void removeJob();     

-     /**
-      *  <at> brief start Start scheduler main loop and evaluate jobs and execute them accordingly
-      */
-     void start();
-
+     void toggleScheduler();
      void save();
      void load();

+     void resetJobEdit();
+
      /**
       *  <at> brief checkJobStatus This will run each second until it is diconnected. Thus, it will decide the state of the
       * scheduler at the present moment making sure all the pending operations are resolved.
       */
-     void checkJobStatus();
+     void checkStatus();

 
 #if 0
 <at>  <at>  -205,7 +198,7  <at>  <at>  private:
          */
         void executeJob(SchedulerJob *value);

-        void resetJobEdit();
+

     Ekos::Scheduler *ui;

 <at>  <at>  -224,6 +217,7  <at>  <at>  private:
     QProgressIndicator *pi;

     QList<SchedulerJob *> jobs;
+    QList<SchedulerJob *> fitsJobs;
     SchedulerJob *currentJob;

     QUrl sequenceURL;
diff --git a/kstars/ekos/scheduler.ui b/kstars/ekos/scheduler.ui
index 431caa9..62da00f 100644
--- a/kstars/ekos/scheduler.ui
+++ b/kstars/ekos/scheduler.ui
 <at>  <at>  -406,6 +406,32  <at>  <at> 
             </property>
            </widget>
           </item>
+          <item>
+           <widget class="QLabel" name="label_9">
+            <property name="text">
+             <string>Offset:</string>
+            </property>
+           </widget>
+          </item>
+          <item>
+           <widget class="QSpinBox" name="culminationOffset">
+            <property name="toolTip">
+             <string>Offset in minutes to start imaging before culmination time.</string>
+            </property>
+            <property name="minimum">
+             <number>0</number>
+            </property>
+            <property name="maximum">
+             <number>240</number>
+            </property>
+            <property name="singleStep">
+             <number>10</number>
+            </property>
+            <property name="value">
+             <number>60</number>
+            </property>
+           </widget>
+          </item>
          </layout>
         </item>
         <item>
diff --git a/kstars/ekos/schedulerjob.cpp b/kstars/ekos/schedulerjob.cpp
index 02c7fa8..9291b7d 100644
--- a/kstars/ekos/schedulerjob.cpp
+++ b/kstars/ekos/schedulerjob.cpp
 <at>  <at>  -23,6 +23,8  <at>  <at>  SchedulerJob::SchedulerJob()
     minAltitude         = -1;
     minMoonSeparation   = -1;

+    culminationOffset   = 0;
+

 
     #if 0
 <at>  <at>  -56,7 +58,7  <at>  <at>  void SchedulerJob::setName(const QString &value)
 name = value;
 }

-const SkyPoint & SchedulerJob::getTargetCoords() const
+SkyPoint & SchedulerJob::getTargetCoords()
 {
     return targetCoords;
 }
 <at>  <at>  -202,7 +204,45  <at>  <at>  SchedulerJob::FITSStatus SchedulerJob::getFITSState() const
 void SchedulerJob::setFITSState(const FITSStatus &value)
 {
     fitsState = value;
+
+    switch (fitsState)
+    {
+        case FITS_SOLVING:
+            statusCell->setText(xi18n("Solving FITS"));
+            break;
+
+        case FITS_ERROR:
+            statusCell->setText(xi18n("Solver failed"));
+            break;
+
+        case FITS_COMPLETE:
+            statusCell->setText(xi18n("Solver completed"));
+            break;
+
+        default:
+        break;
+    }
 }
+int SchedulerJob::getScore() const
+{
+    return score;
+}
+
+void SchedulerJob::setScore(int value)
+{
+    score = value;
+}
+uint16_t SchedulerJob::getCulminationOffset() const
+{
+    return culminationOffset;
+}
+
+void SchedulerJob::setCulminationOffset(const uint16_t &value)
+{
+    culminationOffset = value;
+}
+
+

 

diff --git a/kstars/ekos/schedulerjob.h b/kstars/ekos/schedulerjob.h
index fab9116..c2b1acd 100644
--- a/kstars/ekos/schedulerjob.h
+++ b/kstars/ekos/schedulerjob.h
 <at>  <at>  -35,7 +35,7  <at>  <at>  public:
     void setName(const QString &value);

     void setTargetCoords(dms ra, dms dec);
-    const SkyPoint & getTargetCoords() const;
+    SkyPoint & getTargetCoords();

     StartupCondition getStartingCondition() const;
     void setStartupCondition(const StartupCondition &value);
 <at>  <at>  -83,6 +83,12  <at>  <at>  public:
     FITSStatus getFITSState() const;
     void setFITSState(const FITSStatus &value);

+    int getScore() const;
+    void setScore(int value);
+
+    uint16_t getCulminationOffset() const;
+    void setCulminationOffset(const uint16_t &value);
+
 private:

     QString name;
 <at>  <at>  -109,6 +115,9  <at>  <at>  private:

     QTableWidgetItem* statusCell;

+    int score;
+    uint16_t culminationOffset;
+

 };

Patrick Spendrin | 28 Aug 01:12 2015
Picon
Picon

[emerge/kde-4.14] portage/libs/runtime: make it possible to package the runtime even with other compilers

Git commit 01f38848c010404276056b3f97edf9c3add931fc by Patrick Spendrin.
Committed on 27/08/2015 at 23:12.
Pushed by sengels into branch 'kde-4.14'.

make it possible to package the runtime even with other compilers

M  +9    -5    portage/libs/runtime/runtime-multi.py

http://commits.kde.org/emerge/01f38848c010404276056b3f97edf9c3add931fc

diff --git a/portage/libs/runtime/runtime-multi.py b/portage/libs/runtime/runtime-multi.py
index 221f4c1..2b42105 100644
--- a/portage/libs/runtime/runtime-multi.py
+++ b/portage/libs/runtime/runtime-multi.py
 <at>  <at>  -51,16 +51,20  <at>  <at>  class Package( BinaryPackageBase ):
                 elif compiler.isMinGW_W64():
                     files.append('libgcc_s_seh-1.dll')
                     srcdir = os.path.join( self.rootdir, "mingw64", "bin" )
-                
-        elif compiler.isMSVC2010():
+
+        elif compiler.isMSVC():
             if os.environ["EMERGE_ARCHITECTURE"] == "x86" and os.environ["PROCESSOR_ARCHITECTURE"] == "AMD64":
                 srcdir = os.path.join( os.environ["SystemRoot"], "SysWOW64") 
             else:
-                srcdir = os.path.join( os.environ["SystemRoot"], "System32") 
-            files = [ "msvcr100%s.dll" % postfix, "msvcp100%s.dll" % postfix ]
+                srcdir = os.path.join( os.environ["SystemRoot"], "System32")
+
+            files = [
+                "msvcr%s%s.dll" % (compiler.getShortName()[2:], postfix),
+                "msvcp%s%s.dll" % (compiler.getShortName()[2:], postfix)
+            ]

         for file in files:
-            utils.copyFile( os.path.join( srcdir, file ), os.path.join( destdir, file ) ,False)
+            utils.copyFile( os.path.join( srcdir, file ), os.path.join( destdir, file ), False)

         # extract pthread package.
         if compiler.isMinGW_WXX() and compiler.getMinGWVersion() == "4.4.7":

Patrick Spendrin | 28 Aug 00:22 2015
Picon
Picon

[emerge/kde-4.14] /: add a minimal build for runtime

Git commit 01aeede642da9912bcd0a1dfcefa984846c17385 by Patrick Spendrin.
Committed on 27/08/2015 at 22:20.
Pushed by sengels into branch 'kde-4.14'.

add a minimal build for runtime

This only gives you kcmshell and some oxygen parts in kde-runtime
and restricts other packages like kde-workspace as well

M  +3    -0    bin/options.py
M  +9    -5    portage/kde/kde-runtime/kde-runtime-20110130.py
A  +138  -0    portage/kde/kde-runtime/minimal-kde-runtime.diff
M  +6    -3    portage/kde/kde-workspace/kde-workspace-20110130.py
A  +169  -0    portage/kde/kde-workspace/oxygen-only.diff
M  +6    -2    portage/kde/kdelibs/kdelibs-20110130.py
M  +4    -3    portage/kde/kdepim-runtime/kdepim-runtime-20101222.py

http://commits.kde.org/emerge/01aeede642da9912bcd0a1dfcefa984846c17385

diff --git a/bin/options.py b/bin/options.py
index 04f861a..79fbfe0 100644
--- a/bin/options.py
+++ b/bin/options.py
 <at>  <at>  -70,6 +70,9  <at>  <at>  class OptionsFeatures(OptionsBase):
         ## do not use mysql
         self.nomysql = False

+        ## build a minimal kde-runtime and a restricted kdepim-runtime build
+        self.runtimeMinimal = False
+
 ## options for the fetch action
 class OptionsFetch(OptionsBase):
     def __init__(self):
diff --git a/portage/kde/kde-runtime/kde-runtime-20110130.py b/portage/kde/kde-runtime/kde-runtime-20110130.py
index 5aaef69..a60a4db 100644
--- a/portage/kde/kde-runtime/kde-runtime-20110130.py
+++ b/portage/kde/kde-runtime/kde-runtime-20110130.py
 <at>  <at>  -8,17 +8,20  <at>  <at>  class subinfo(info.infoclass):
             self.targets[kd.kdeversion + ver] = "http://download.kde.org/stable/" + kd.kdeversion + ver +
"/src/" + self.package + "-" + kd.kdeversion + ver + ".tar.xz"
             self.targetInstSrc[kd.kdeversion + ver] = self.package + '-' + kd.kdeversion + ver
             self.targetDigestUrls[ kd.kdeversion + ver  ] = 'http://download.kde.org/stable/' + kd.kdeversion +
ver + '/src/' + self.package + '-' + kd.kdeversion + ver + '.tar.xz.sha1'
-        self.patchToApply["4.12.0"] = ("kde-runtime-4.12.0-20131219.diff", 1)
+        self.patchToApply["4.12.0"] = [("kde-runtime-4.12.0-20131219.diff", 1)]
+        if self.options.features.runtimeMinimal:
+            self.patchToApply['gitHEAD'] = [("minimal-kde-runtime.diff", 1)]

         self.shortDescription = 'Components for KDE applications required at runtime'
         self.defaultTarget = 'gitHEAD'

     def setDependencies( self ):
         self.dependencies['kde/kdelibs'] = 'default'
-        self.dependencies['kde/kactivities'] = 'default'
         self.dependencies['kde/oxygen-icons'] = 'default'
-        self.dependencies['win32libs/libssh'] = 'default'
-        self.dependencies['win32libs/gcrypt'] = 'default'
+        if not self.options.features.runtimeMinimal:
+            self.dependencies['kde/kactivities'] = 'default'
+            self.dependencies['win32libs/libssh'] = 'default'
+            self.dependencies['win32libs/gcrypt'] = 'default'
         self.dependencies['kde/kdepimlibs'] = 'default'
         if compiler.isMinGW_WXX():
             self.dependencies['win32libs/libbfd'] = 'default'
 <at>  <at>  -29,7 +32,8  <at>  <at>  class Package(CMakePackageBase):
     def __init__( self ):
         self.subinfo = subinfo()
         CMakePackageBase.__init__( self )
-        self.subinfo.options.configure.defines = "-DWITH_NepomukCore=OFF"
+        if not self.subinfo.options.features.nepomuk:
+            self.subinfo.options.configure.defines = "-DWITH_NepomukCore=OFF"

 if __name__ == '__main__':
     Package().execute()
diff --git a/portage/kde/kde-runtime/minimal-kde-runtime.diff b/portage/kde/kde-runtime/minimal-kde-runtime.diff
new file mode 100644
index 0000000..11fb90b
--- /dev/null
+++ b/portage/kde/kde-runtime/minimal-kde-runtime.diff
 <at>  <at>  -0,0 +1,138  <at>  <at> 
+diff --git a/CMakeLists.txt b/CMakeLists.txt
+index 1967a29..974e5d2 100644
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+ <at>  <at>  -51,12 +51,12  <at>  <at>  set_package_properties(QCA2 PROPERTIES DESCRIPTION "Support for remote plasma wi
+                        TYPE OPTIONAL
+                       )
+ 
+-find_package(LibGcrypt 1.5.0 REQUIRED QUIET)
+-set_package_properties(LibGcrypt PROPERTIES DESCRIPTION "Libgcrypt is a general purpose
cryptographic library based on the code from GnuPG."
+-                       URL "http://www.gnu.org/software/libgcrypt/"
+-                       TYPE REQUIRED
+-                       PURPOSE "kwalletd needs libgcrypt to perform PBKDF2-SHA512 hashing"
+-                      )
++#find_package(LibGcrypt 1.5.0 REQUIRED QUIET)
++#set_package_properties(LibGcrypt PROPERTIES DESCRIPTION "Libgcrypt is a general purpose
cryptographic library based on the code from GnuPG."
++#                       URL "http://www.gnu.org/software/libgcrypt/"
++#                       TYPE REQUIRED
++#                       PURPOSE "kwalletd needs libgcrypt to perform PBKDF2-SHA512 hashing"
++#                      )
+ # Build options
+ option(KDERUNTIME_BUILD_NEPOMUK "Build the Nepomuk KCM and kioslaves" FALSE)
+ 
+ <at>  <at>  -74,16 +74,16  <at>  <at>  include_directories (${CMAKE_SOURCE_DIR} ${CMAKE_CURRENT_BINARY_DIR} ${KDE4_INCL
+ add_subdirectory(cmake)
+ 
+ # Background processes
+-add_subdirectory(kpasswdserver)
+-add_subdirectory(kdontchangethehostname)
+-add_subdirectory(kglobalaccel)
+-add_subdirectory(knotify)
+-add_subdirectory(ktimezoned)
++#add_subdirectory(kpasswdserver)
++#add_subdirectory(kdontchangethehostname)
++#add_subdirectory(kglobalaccel)
++#add_subdirectory(knotify)
++#add_subdirectory(ktimezoned)
+ 
+ if(NOT WINCE)
+-add_subdirectory(kuiserver)
++#add_subdirectory(kuiserver)
+ endif(NOT WINCE)
+-add_subdirectory(kwalletd)
++#add_subdirectory(kwalletd)
+ 
+ if ( UNIX )
+    add_subdirectory(soliduiserver)
+ <at>  <at>  -98,22 +98,22  <at>  <at>  endif()
+ 
+ # Plugins/components required for basic utility
+ if ( NOT WINCE )
+-    add_subdirectory(kcontrol)
++#    add_subdirectory(kcontrol)
+ endif ( NOT WINCE )
+-add_subdirectory(kioslave)
+-add_subdirectory(kurifilter-plugins)
+-add_subdirectory(phonon)
+-add_subdirectory(kimgio)
+-macro_optional_add_subdirectory(renamedlgplugins)
++#add_subdirectory(kioslave)
++#add_subdirectory(kurifilter-plugins)
++#add_subdirectory(phonon)
++#add_subdirectory(kimgio)
++#macro_optional_add_subdirectory(renamedlgplugins)
+ 
+ # UI Helper applications
+-add_subdirectory(drkonqi)
++#add_subdirectory(drkonqi)
+ add_subdirectory(kcmshell)
+ add_subdirectory(kdebugdialog)
+-add_subdirectory(khelpcenter)
+-add_subdirectory(knetattach)
+-add_subdirectory(knewstuff)
+-macro_optional_add_subdirectory(keditfiletype)
++#add_subdirectory(khelpcenter)
++#add_subdirectory(knetattach)
++#add_subdirectory(knewstuff)
++#macro_optional_add_subdirectory(keditfiletype)
+ if ( UNIX )
+    add_subdirectory(kdesu)
+ endif ( UNIX )
+ <at>  <at>  -122,32 +122,32  <at>  <at>  endif ( UNIX )
+ if ( UNIX )
+    add_subdirectory(kdeeject)
+ endif ( UNIX )
+-add_subdirectory(kfile)
+-add_subdirectory(kiconfinder)
+-add_subdirectory(kioclient)
+-add_subdirectory(kioexec)
+-add_subdirectory(ktraderclient)
+-add_subdirectory(kreadconfig)
+-add_subdirectory(kmimetypefinder)
++#add_subdirectory(kfile)
++#add_subdirectory(kiconfinder)
++#add_subdirectory(kioclient)
++#add_subdirectory(kioexec)
++#add_subdirectory(ktraderclient)
++#add_subdirectory(kreadconfig)
++#add_subdirectory(kmimetypefinder)
+ if (Q_WS_X11)
+   add_subdirectory(kstart)
+ endif (Q_WS_X11)
+ add_subdirectory(kquitapp)
+-add_subdirectory(menu)
++#add_subdirectory(menu)
+ if ( NOT WINCE )
+-    add_subdirectory(plasma)
++#    add_subdirectory(plasma)
+ endif ( NOT WINCE )
+-add_subdirectory(solid-hardware)
++#add_subdirectory(solid-hardware)
+ 
+ # Platform-specific integration
+-add_subdirectory(platforms)
++#add_subdirectory(platforms)
+ 
+ # Default settings, content and config
+-add_subdirectory(l10n)
+-add_subdirectory(localization)
++#add_subdirectory(l10n)
++#add_subdirectory(localization)
+ if(NOT WINCE)
+-  add_subdirectory(kde-menu)
+-macro_optional_add_subdirectory(doc)
++#  add_subdirectory(kde-menu)
++#macro_optional_add_subdirectory(doc)
+ endif(NOT WINCE)
+ 
+ # Artwork
+ <at>  <at>  -158,7 +158,7  <at>  <at>  endif ( NOT WINCE )
+ 
+ # KDE integration for attica
+ if(LIBATTICA_FOUND)
+-  macro_optional_add_subdirectory(attica)
++#  macro_optional_add_subdirectory(attica)
+ endif(LIBATTICA_FOUND)
+ 
+ feature_summary(WHAT ALL INCLUDE_QUIET_PACKAGES FATAL_ON_MISSING_REQUIRED_PACKAGES)
diff --git a/portage/kde/kde-workspace/kde-workspace-20110130.py b/portage/kde/kde-workspace/kde-workspace-20110130.py
index 426c9c5..f3df024 100644
--- a/portage/kde/kde-workspace/kde-workspace-20110130.py
+++ b/portage/kde/kde-workspace/kde-workspace-20110130.py
 <at>  <at>  -9,15 +9,18  <at>  <at>  class subinfo(info.infoclass):
             self.targets[kd.kdeversion + ver] = "http://download.kde.org/stable/" + kd.kdeversion + ver +
"/src/" + self.package + "-" + kd.kdeversion + ver + ".tar.xz"
             self.targetInstSrc[kd.kdeversion + ver] = self.package + '-' + kd.kdeversion + ver
             self.targetDigestUrls[ kd.kdeversion + ver  ] = 'http://download.kde.org/stable/' + kd.kdeversion +
ver + '/src/' + self.package + '-' + kd.kdeversion + ver + '.tar.xz.sha1'
+        if self.options.features.runtimeMinimal:
+            self.patchToApply['gitHEAD'] = [("oxygen-only.diff", 1)]

         self.shortDescription = 'the KDE workspace including the oxygen style'
         self.defaultTarget = 'gitHEAD'

     def setDependencies( self ):
         self.dependencies['kde/kde-runtime'] = 'default'
-        self.dependencies['win32libs/freetype'] = 'default'
-        self.dependencies['win32libs/boost'] = 'default'
-        self.dependencies['kdesupport/akonadi'] = 'default'
+        if not self.options.features.runtimeMinimal:
+            self.dependencies['win32libs/freetype'] = 'default'
+            self.dependencies['win32libs/boost'] = 'default'
+            self.dependencies['kdesupport/akonadi'] = 'default'

 from Package.CMakePackageBase import *

diff --git a/portage/kde/kde-workspace/oxygen-only.diff b/portage/kde/kde-workspace/oxygen-only.diff
new file mode 100644
index 0000000..e4be7d5
--- /dev/null
+++ b/portage/kde/kde-workspace/oxygen-only.diff
 <at>  <at>  -0,0 +1,169  <at>  <at> 
+diff --git a/CMakeLists.txt b/CMakeLists.txt
+index 92e8b45..b779095 100644
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+ <at>  <at>  -20,12 +20,12  <at>  <at>  include(KDE4Defaults)
+ 
+ option(WITH_XINERAMA "Xinerama support for multi-headed X displays" ON)
+ 
+-find_package(Strigi)
++#find_package(Strigi)
+ 
+-set_package_properties(Strigi PROPERTIES DESCRIPTION "Desktop indexing and search support"
+-                       URL "http://strigi.sourceforge.net"
+-                       TYPE REQUIRED
+-                      )
++#set_package_properties(Strigi PROPERTIES DESCRIPTION "Desktop indexing and search support"
++#                       URL "http://strigi.sourceforge.net"
++#                       TYPE REQUIRED
++#                      )
+ 
+ find_package(ZLIB)
+ set_package_properties(ZLIB PROPERTIES DESCRIPTION "Support for gzip compressed files and data streams"
+ <at>  <at>  -33,30 +33,30  <at>  <at>  set_package_properties(ZLIB PROPERTIES DESCRIPTION "Support for gzip compressed
+                        TYPE REQUIRED
+                       )
+ 
+-find_package(KActivities 6.0.0 CONFIG)
+-set_package_properties(KActivities PROPERTIES DESCRIPTION "Interface library for the activity manager"
+-                       URL "https://projects.kde.org/kactivities"
+-                       TYPE REQUIRED
+-                      )
+-
+-find_package(DBusMenuQt 0.6.0)
+-set_package_properties(DBusMenuQt PROPERTIES DESCRIPTION "Support for notification area menus
via the DBusMenu protocol"
+-                       URL "https://launchpad.net/libdbusmenu-qt"
+-                       TYPE REQUIRED
+-                      )
+-
+-find_package(QImageBlitz)
+-set_package_properties(QImageBlitz PROPERTIES DESCRIPTION "An image effects library"
+-                       URL "http://sourceforge.net/projects/qimageblitz"
+-                       TYPE REQUIRED
+-                      )
+-
+-find_package(KDeclarative QUIET CONFIG)
+-set_package_properties(KDeclarative PROPERTIES DESCRIPTION "KDE Declarative (QML) support from kdelibs"
+-                       URL "http://www.kde.org"
+-                       TYPE REQUIRED
+-                       PURPOSE "Required for building ksmserver"
+-                      )
++#find_package(KActivities 6.0.0 CONFIG)
++#set_package_properties(KActivities PROPERTIES DESCRIPTION "Interface library for the activity manager"
++#                       URL "https://projects.kde.org/kactivities"
++#                       TYPE REQUIRED
++#                      )
++
++#find_package(DBusMenuQt 0.6.0)
++#set_package_properties(DBusMenuQt PROPERTIES DESCRIPTION "Support for notification area menus
via the DBusMenu protocol"
++#                       URL "https://launchpad.net/libdbusmenu-qt"
++#                       TYPE REQUIRED
++#                      )
++
++#find_package(QImageBlitz)
++#set_package_properties(QImageBlitz PROPERTIES DESCRIPTION "An image effects library"
++#                       URL "http://sourceforge.net/projects/qimageblitz"
++#                       TYPE REQUIRED
++#                      )
++
++#find_package(KDeclarative QUIET CONFIG)
++#set_package_properties(KDeclarative PROPERTIES DESCRIPTION "KDE Declarative (QML) support from kdelibs"
++#                       URL "http://www.kde.org"
++#                       TYPE REQUIRED
++#                       PURPOSE "Required for building ksmserver"
++#                      )
+ 
+ macro_optional_find_package(OpenGL)
+ set_package_properties(OpenGL PROPERTIES DESCRIPTION "The OpenGL libraries"
+ <at>  <at>  -216,7 +216,7  <at>  <at>  add_subdirectory(libs)
+ 
+ # system settings (kcontrol replacement)
+ if(${KDE_PLATFORM_PROFILE} STREQUAL "Desktop")
+-   macro_optional_add_subdirectory( systemsettings )
++#   macro_optional_add_subdirectory( systemsettings )
+ endif(${KDE_PLATFORM_PROFILE} STREQUAL "Desktop")
+ 
+ # core apps
+ <at>  <at>  -237,21 +237,21  <at>  <at>  if(NOT WIN32)
+ endif(NOT WIN32)
+ 
+ if(${KDE_PLATFORM_PROFILE} STREQUAL "Desktop")
+-   macro_optional_add_subdirectory(kcontrol)
+-   macro_optional_add_subdirectory(klipper)
+-   macro_optional_add_subdirectory(kmenuedit)
+-   macro_optional_add_subdirectory(krunner)
+-   macro_optional_add_subdirectory(solid-actions-kcm)
+-   macro_optional_add_subdirectory(kstartupconfig)
+-   macro_optional_add_subdirectory(freespacenotifier)
+-   macro_optional_add_subdirectory(kscreensaver)
+-   macro_optional_add_subdirectory(kinfocenter)
++#   macro_optional_add_subdirectory(kcontrol)
++#   macro_optional_add_subdirectory(klipper)
++#   macro_optional_add_subdirectory(kmenuedit)
++#   macro_optional_add_subdirectory(krunner)
++#   macro_optional_add_subdirectory(solid-actions-kcm)
++#   macro_optional_add_subdirectory(kstartupconfig)
++#   macro_optional_add_subdirectory(freespacenotifier)
++#   macro_optional_add_subdirectory(kscreensaver)
++#   macro_optional_add_subdirectory(kinfocenter)
+ 
+    # data
+-   macro_optional_add_subdirectory(doc)
++#   macro_optional_add_subdirectory(doc)
+ 
+    if (Q_WS_X11)
+-      macro_optional_add_subdirectory(ktouchpadenabler)
++#      macro_optional_add_subdirectory(ktouchpadenabler)
+    endif (Q_WS_X11)
+ 
+    if(NOT WIN32)
+ <at>  <at>  -271,11 +271,11  <at>  <at>  endif(${KDE_PLATFORM_PROFILE} STREQUAL "Desktop")
+ 
+ if(NOT WIN32)
+     # data
+-    macro_optional_add_subdirectory(cursors)
++#    macro_optional_add_subdirectory(cursors)
+ endif(NOT WIN32)
+ 
+-macro_optional_add_subdirectory(plasma)
+-macro_optional_add_subdirectory(statusnotifierwatcher)
++#macro_optional_add_subdirectory(plasma)
++#macro_optional_add_subdirectory(statusnotifierwatcher)
+ macro_optional_add_subdirectory(kstyles)
+ 
+ ########### install files ###############
+ <at>  <at>  -352,9 +352,9  <at>  <at>  install(FILES ${CMAKE_CURRENT_BINARY_DIR}/KDE4WorkspaceConfig.cmake
+               ${CMAKE_CURRENT_BINARY_DIR}/KDE4WorkspaceConfigVersion.cmake
+         DESTINATION ${_KDE4WorkspaceConfig_INSTALL_DIR})
+ 
+-install(EXPORT kdeworkspaceLibraryTargets 
+-        NAMESPACE ${KDE4WORKSPACE_TARGET_PREFIX}
+-        DESTINATION ${_KDE4WorkspaceConfig_INSTALL_DIR}
+-        FILE KDE4WorkspaceLibraryTargets.cmake )
++#install(EXPORT kdeworkspaceLibraryTargets 
++#        NAMESPACE ${KDE4WORKSPACE_TARGET_PREFIX}
++#        DESTINATION ${_KDE4WorkspaceConfig_INSTALL_DIR}
++#        FILE KDE4WorkspaceLibraryTargets.cmake )
+ 
+ 
+diff --git a/libs/CMakeLists.txt b/libs/CMakeLists.txt
+index c0576fe..da72cc7 100644
+--- a/libs/CMakeLists.txt
++++ b/libs/CMakeLists.txt
+ <at>  <at>  -1,11 +1,11  <at>  <at> 
+-add_subdirectory(kephal)
+-add_subdirectory(kworkspace)
++#add_subdirectory(kephal)
++#add_subdirectory(kworkspace)
+ add_subdirectory(oxygen)
+-add_subdirectory(plasmaclock)
++#add_subdirectory(plasmaclock)
+ 
+ if(${KDE_PLATFORM_PROFILE} STREQUAL "Desktop")
+-   add_subdirectory(kdm)
+-   add_subdirectory(plasmagenericshell)
++#   add_subdirectory(kdm)
++#   add_subdirectory(plasmagenericshell)
+    if(NOT WIN32)
+         add_subdirectory(taskmanager)
+    endif(NOT WIN32)
diff --git a/portage/kde/kdelibs/kdelibs-20110130.py b/portage/kde/kdelibs/kdelibs-20110130.py
index f1e48df..7de2fe1 100644
--- a/portage/kde/kdelibs/kdelibs-20110130.py
+++ b/portage/kde/kdelibs/kdelibs-20110130.py
 <at>  <at>  -30,7 +30,9  <at>  <at>  class subinfo(info.infoclass):
         self.dependencies['kdesupport/qca'] = 'default'
         self.dependencies['kdesupport/qimageblitz'] = 'default'
         self.dependencies['data/docbook-xsl'] = 'default'
-        self.dependencies['data/shared-desktop-ontologies'] = 'default'
+        if self.options.features.nepomuk:
+            self.dependencies['kdesupport/soprano'] = 'default'
+            self.dependencies['data/shared-desktop-ontologies'] = 'default'
         if self.options.features.phononBackend.vlc:
             self.runtimeDependencies['kdesupport/phonon-vlc'] = 'default'
         elif self.options.features.phononBackend.ds9:
 <at>  <at>  -64,7 +66,9  <at>  <at>  class Package(CMakePackageBase):
         if compiler.isMinGW():
           self.subinfo.options.configure.defines += " -DKDE_DISTRIBUTION_TEXT=\"MinGW %s\" " % compiler.getMinGWVersion()
         elif compiler.isMSVC():
-          self.subinfo.options.configure.defines = " -DKDE_DISTRIBUTION_TEXT=\"%s\" " % compiler.getVersion()
+          self.subinfo.options.configure.defines += " -DKDE_DISTRIBUTION_TEXT=\"%s\" " % compiler.getVersion()
+        if not self.subinfo.options.features.nepomuk:
+            self.subinfo.options.configure.defines += ""

     def install( self ):
         if not CMakePackageBase.install( self ):
diff --git a/portage/kde/kdepim-runtime/kdepim-runtime-20101222.py b/portage/kde/kdepim-runtime/kdepim-runtime-20101222.py
index 63af952..987fbd8 100644
--- a/portage/kde/kdepim-runtime/kdepim-runtime-20101222.py
+++ b/portage/kde/kdepim-runtime/kdepim-runtime-20101222.py
 <at>  <at>  -24,9 +24,10  <at>  <at>  class subinfo(info.infoclass):
         self.dependencies['kde/kdepimlibs'] = 'default'
         self.dependencies['kdesupport/grantlee'] = 'default'
         self.dependencies['win32libs/sqlite'] = 'default'
-        self.dependencies['extragear/libkolab'] = 'default'
-        self.dependencies['extragear/libkgapi'] = 'default'
-        self.dependencies['extragear/libkfbapi'] = 'default'
+        if not self.options.features.runtimeMinimal:
+            self.dependencies['extragear/libkolab'] = 'default'
+            self.dependencies['extragear/libkgapi'] = 'default'
+            self.dependencies['extragear/libkfbapi'] = 'default'
         self.shortDescription = "Extends the functionality of kdepim"

 from Package.CMakePackageBase import *

Patrick Spendrin | 28 Aug 00:22 2015
Picon
Picon

[emerge/kde-4.14] bin: add nomysql option

Git commit 2e02f4fb024bdff040efac1aa104bfaa5f170dda by Patrick Spendrin.
Committed on 27/08/2015 at 19:06.
Pushed by sengels into branch 'kde-4.14'.

add nomysql option

M  +3    -0    bin/options.py

http://commits.kde.org/emerge/2e02f4fb024bdff040efac1aa104bfaa5f170dda

diff --git a/bin/options.py b/bin/options.py
index 550e39b..04f861a 100644
--- a/bin/options.py
+++ b/bin/options.py
 <at>  <at>  -67,6 +67,9  <at>  <at>  class OptionsFeatures(OptionsBase):
         ## stick to the gcc 4.4.7 version
         self.legacyGCC = False

+        ## do not use mysql
+        self.nomysql = False
+
 ## options for the fetch action
 class OptionsFetch(OptionsBase):
     def __init__(self):

Patrick Spendrin | 28 Aug 00:22 2015
Picon
Picon

[emerge/kde-4.14] portage/kdesupport/akonadi: add nomysql option and update akonadi

Git commit 624b96010053012e30253cc6cd3df8ad7ce3bbf1 by Patrick Spendrin.
Committed on 27/08/2015 at 19:11.
Pushed by sengels into branch 'kde-4.14'.

add nomysql option and update akonadi

M  +4    -3    portage/kdesupport/akonadi/akonadi-1.7.90-20120704.py

http://commits.kde.org/emerge/624b96010053012e30253cc6cd3df8ad7ce3bbf1

diff --git a/portage/kdesupport/akonadi/akonadi-1.7.90-20120704.py b/portage/kdesupport/akonadi/akonadi-1.7.90-20120704.py
index c70dbb8..eaf6031 100644
--- a/portage/kdesupport/akonadi/akonadi-1.7.90-20120704.py
+++ b/portage/kdesupport/akonadi/akonadi-1.7.90-20120704.py
 <at>  <at>  -12,7 +12,8  <at>  <at>  class subinfo(info.infoclass):
         self.dependencies['libs/qt'] = 'default'
         self.dependencies['win32libs/sqlite'] = 'default'
         self.dependencies['win32libs/shared-mime-info'] = 'default'
-        self.dependencies['kdesupport/soprano'] = 'default'
+        if self.options.features.nepomuk:
+            self.dependencies['kdesupport/soprano'] = 'default'

     def setTargets( self ):
         baseurl = 'http://download.kde.org/stable/akonadi/src/akonadi-%s.tar.bz2'
 <at>  <at>  -38,7 +39,7  <at>  <at>  class subinfo(info.infoclass):

         self.svnTargets['gitHEAD'] = '[git]kde:akonadi.git'
         self.shortDescription = "a storage service for PIM data and meta data"
-        self.defaultTarget = '1.12.1'
+        self.defaultTarget = '1.13.0'

 from Package.CMakePackageBase import *

 <at>  <at>  -47,7 +48,7  <at>  <at>  class Package(CMakePackageBase):
         self.subinfo = subinfo()
         CMakePackageBase.__init__( self )
         self.subinfo.options.configure.defines = ""
-        if self.subinfo.options.features.akonadiBackendSqlite:
+        if self.subinfo.options.features.akonadiBackendSqlite or self.subinfo.options.features.nomysql:
             self.subinfo.options.configure.defines += (
                     " -DINSTALL_QSQLITE_IN_QT_PREFIX=TRUE"
                     " -DDATABASE_BACKEND=SQLITE " )

Patrick Spendrin | 28 Aug 00:22 2015
Picon
Picon

[emerge/kde-4.14] portage/libs/qt: add nomysql option to Qt

Git commit ead7e010172d29a070935bb6afb80c9cb14b720c by Patrick Spendrin.
Committed on 27/08/2015 at 19:10.
Pushed by sengels into branch 'kde-4.14'.

add nomysql option to Qt

M  +5    -4    portage/libs/qt/qt-all.py

http://commits.kde.org/emerge/ead7e010172d29a070935bb6afb80c9cb14b720c

diff --git a/portage/libs/qt/qt-all.py b/portage/libs/qt/qt-all.py
index a187480..55891c8 100644
--- a/portage/libs/qt/qt-all.py
+++ b/portage/libs/qt/qt-all.py
 <at>  <at>  -83,7 +83,8  <at>  <at>  class subinfo(info.infoclass):
         self.dependencies['win32libs/openssl'] = 'default'
         self.dependencies['win32libs/dbus'] = 'default'
         self.dependencies['win32libs/sqlite'] = 'default'
-        self.dependencies['binary/mysql-pkg'] = 'default'
+        if not self.options.features.nomysql:
+            self.dependencies['binary/mysql-pkg'] = 'default'

 class Package(QMakePackageBase):
     def __init__( self, **args ):
 <at>  <at>  -101,7 +102,7  <at>  <at>  class Package(QMakePackageBase):
         if self.subinfo.options.isActive("win32libs/dbus"):
             self.dbus = portage.getPackageInstance('win32libs', 'dbus')
         self.sqlite = portage.getPackageInstance('win32libs', 'sqlite')
-        if self.subinfo.options.isActive("binary/mysql-pkg"):
+        if self.subinfo.options.isActive("binary/mysql-pkg") and not self.subinfo.options.features.nomysql:
             self.mysql_server = portage.getPackageInstance('binary', 'mysql-pkg')

     def unpack( self ):
 <at>  <at>  -138,7 +139,7  <at>  <at>  class Package(QMakePackageBase):
             incdirs += " -I \"" + os.path.join( self.wcecompat.installDir(), "include" ) + "\""
             libdirs += " -L \"" + os.path.join( self.wcecompat.installDir(), "lib" ) + "\""

-        if self.subinfo.options.isActive("binary/mysql-pkg"):
+        if self.subinfo.options.isActive("binary/mysql-pkg") and not self.subinfo.options.features.nomysql:
             incdirs += " -I \"" + os.path.join( self.mysql_server.installDir(), "include" ) + "\""
             libdirs += " -L \"" + os.path.join( self.mysql_server.installDir(), "lib" ) + "\""
             libdirs += " -l libmysql "
 <at>  <at>  -146,7 +147,7  <at>  <at>  class Package(QMakePackageBase):
         configure = os.path.join( self.sourceDir(), "configure.exe" ).replace( "/", "\\" )
         command = r"echo %s | %s -opensource -prefix %s -platform %s " % ( userin, configure, self.installDir(),
self.platform )
         command += "-plugin-sql-odbc -system-sqlite "
-        if self.subinfo.options.isActive("binary/mysql-pkg"):
+        if self.subinfo.options.isActive("binary/mysql-pkg") and not self.subinfo.options.features.nomysql:
             command += "-plugin-sql-mysql "
         command += "-qt-style-windowsxp -qt-style-windowsvista "
         command += "-qt-libpng -qt-libjpeg -qt-libtiff "

Albert Astals Cid | 28 Aug 00:19 2015
Picon

[websites/windows-kde-org] /: Enable donation button

Git commit dc20d7ca3e7ff470e183cb3097895bb4d44bb148 by Albert Astals Cid.
Committed on 27/08/2015 at 22:19.
Pushed by aacid into branch 'master'.

Enable donation button

Acked by big patrick

M  +2    -0    site.inc

http://commits.kde.org/websites/windows-kde-org/dc20d7ca3e7ff470e183cb3097895bb4d44bb148

diff --git a/site.inc b/site.inc
index 6806332..047e83e 100644
--- a/site.inc
+++ b/site.inc
 <at>  <at>  -15,6 +15,8  <at>  <at>  $showedit = false;
 $rss_feed_link = "/rss.php";
 $rss_feed_title = "Latest KDE-Windows News";

+$site_showkdeevdonatebutton = true;
+
 $piwikSiteID = 3;
 $piwikEnabled = true;

Kevin Funk | 28 Aug 00:04 2015
Picon

[kio] src: Revert "Win: Hide console window for binaries in LIBEXEC"

Git commit e5ecb69ca6d78205131a8a7a4ca5c3d11f087f53 by Kevin Funk.
Committed on 27/08/2015 at 22:02.
Pushed by kfunk into branch 'master'.

Revert "Win: Hide console window for binaries in LIBEXEC"

See discussion on https://git.reviewboard.kde.org/r/124905,
apparently this needs to be tackled in a different way

This reverts commit 855e4889262af288851f6a6ec8d97e8ee37b91e2.

M  +1    -1    src/ioslaves/http/CMakeLists.txt
M  +2    -1    src/ioslaves/http/kcookiejar/CMakeLists.txt
M  +3    -1    src/kioexec/CMakeLists.txt
M  +2    -1    src/kioslave/CMakeLists.txt
M  +2    -1    src/kpac/CMakeLists.txt

http://commits.kde.org/kio/e5ecb69ca6d78205131a8a7a4ca5c3d11f087f53

diff --git a/src/ioslaves/http/CMakeLists.txt b/src/ioslaves/http/CMakeLists.txt
index 144119d..76a8e28 100644
--- a/src/ioslaves/http/CMakeLists.txt
+++ b/src/ioslaves/http/CMakeLists.txt
 <at>  <at>  -38,7 +38,7  <at>  <at>  set(kio_http_cache_cleaner_SRCS
    )

 
-add_executable(kio_http_cache_cleaner WIN32 ${kio_http_cache_cleaner_SRCS})
+add_executable(kio_http_cache_cleaner ${kio_http_cache_cleaner_SRCS})

 target_link_libraries(kio_http_cache_cleaner
    Qt5::DBus
diff --git a/src/ioslaves/http/kcookiejar/CMakeLists.txt b/src/ioslaves/http/kcookiejar/CMakeLists.txt
index 7d33c52..7b4778d 100644
--- a/src/ioslaves/http/kcookiejar/CMakeLists.txt
+++ b/src/ioslaves/http/kcookiejar/CMakeLists.txt
 <at>  <at>  -5,7 +5,8  <at>  <at>  set_source_files_properties(${kcookieserver_xml} PROPERTIES INCLUDE "kcookiejar_
 qt5_add_dbus_interfaces(kcookiejar_SRCS ${kcookieserver_xml})

 set(kcookiejar_SRCS ${kcookiejar_SRCS} main.cpp)
-add_executable(kcookiejar5 WIN32 ${kcookiejar_SRCS})
+add_executable( kcookiejar5 ${kcookiejar_SRCS})
+ecm_mark_nongui_executable(kcookiejar5)

 target_link_libraries( kcookiejar5
    Qt5::DBus
diff --git a/src/kioexec/CMakeLists.txt b/src/kioexec/CMakeLists.txt
index ef63d39..91284a3 100644
--- a/src/kioexec/CMakeLists.txt
+++ b/src/kioexec/CMakeLists.txt
 <at>  <at>  -1,7 +1,9  <at>  <at> 
-add_executable(kioexec WIN32 main.cpp)
+add_executable(kioexec main.cpp)

 configure_file(config-kioexec.h.cmake ${CMAKE_CURRENT_BINARY_DIR}/config-kioexec.h)

+ecm_mark_nongui_executable(kioexec)
+
 target_link_libraries(kioexec
     Qt5::Widgets
     KF5::I18n
diff --git a/src/kioslave/CMakeLists.txt b/src/kioslave/CMakeLists.txt
index 89c10c0..e02febd 100644
--- a/src/kioslave/CMakeLists.txt
+++ b/src/kioslave/CMakeLists.txt
 <at>  <at>  -1,4 +1,5  <at>  <at> 
-add_executable(kioslave WIN32 kioslave.cpp)
+add_executable(kioslave kioslave.cpp)
+ecm_mark_nongui_executable(kioslave)

 target_link_libraries(kioslave
    KF5::KIOCore
diff --git a/src/kpac/CMakeLists.txt b/src/kpac/CMakeLists.txt
index b8f5e17..fc59897 100644
--- a/src/kpac/CMakeLists.txt
+++ b/src/kpac/CMakeLists.txt
 <at>  <at>  -44,7 +44,8  <at>  <at>  endif()

 ########### next target ###############

-add_executable(kpac_dhcp_helper WIN32 kpac_dhcp_helper.c)
+add_executable(kpac_dhcp_helper kpac_dhcp_helper.c)
+ecm_mark_nongui_executable(kpac_dhcp_helper)

 if (HAVE_NSL_LIBRARY)
   # Assume Solaris

Friedrich W. H. Kossebau | 27 Aug 23:54 2015
Picon

[calligra/calligra/2.9] filters: Fix encoding of import filter source files for Applix* files

Git commit 15522107ac64ea63c59eaa226cd0cc03ec1edd98 by Friedrich W. H. Kossebau.
Committed on 27/08/2015 at 21:54.
Pushed by kossebau into branch 'calligra/2.9'.

Fix encoding of import filter source files for Applix* files

REVIEW: 124927

Thanks dfaure for review and testing

M  +98   -101  filters/sheets/applixspread/applixspreadimport.cc
M  +98   -101  filters/words/applixword/applixwordimport.cc

http://commits.kde.org/calligra/15522107ac64ea63c59eaa226cd0cc03ec1edd98

diff --git a/filters/sheets/applixspread/applixspreadimport.cc b/filters/sheets/applixspread/applixspreadimport.cc
index d3db02a..5fc912f 100644
--- a/filters/sheets/applixspread/applixspreadimport.cc
+++ b/filters/sheets/applixspread/applixspreadimport.cc
 <at>  <at>  -612,173 +612,170  <at>  <at>  APPLIXSPREADImport::specCharfind(QChar a, QChar b)
 {
     QChar chr;

-    if ((a == 'n') && (b == 'p')) chr = '�';
+    if ((a == 'n') && (b == 'p'))  chr = 0x00DF; // 'ß';

 
-    else if ((a == 'n') && (b == 'c')) chr = '�';
-    else if ((a == 'p') && (b == 'c')) chr = '�';
+    else if ((a == 'n') && (b == 'c'))  chr = 0x00D2; // 'Ò';
+    else if ((a == 'p') && (b == 'c'))  chr = 0x00F2; // 'ò';

-    else if ((a == 'n') && (b == 'd')) chr = '�';
-    else if ((a == 'p') && (b == 'd')) chr = '�';
+    else if ((a == 'n') && (b == 'd'))  chr = 0x00D3; // 'Ó';
+    else if ((a == 'p') && (b == 'd'))  chr = 0x00F3; // 'ó';

-    else if ((a == 'n') && (b == 'e')) chr = '�';
-    else if ((a == 'p') && (b == 'e')) chr = '�';
+    else if ((a == 'n') && (b == 'e'))  chr = 0x00D4; // 'Ô';
+    else if ((a == 'p') && (b == 'e'))  chr = 0x00F4; // 'ô';

-    else if ((a == 'n') && (b == 'f')) chr = '�';
-    else if ((a == 'p') && (b == 'f')) chr = '�';
+    else if ((a == 'n') && (b == 'f'))  chr = 0x00D5; // 'Õ';
+    else if ((a == 'p') && (b == 'f'))  chr = 0x00F5; // 'õ';

-    else if ((a == 'p') && (b == 'g')) chr = '�';
-    else if ((a == 'n') && (b == 'g')) chr = '�';
+    else if ((a == 'n') && (b == 'g'))  chr = 0x00D6; // 'Ö';
+    else if ((a == 'p') && (b == 'g'))  chr = 0x00F6; // 'ö';

 

-    else if ((a == 'n') && (b == 'j')) chr = '�';
-    else if ((a == 'p') && (b == 'j')) chr = '�';
+    else if ((a == 'n') && (b == 'j'))  chr = 0x00D9; // 'Ù';
+    else if ((a == 'p') && (b == 'j'))  chr = 0x00F9; // 'ù';

-    else if ((a == 'n') && (b == 'k')) chr = '�';
-    else if ((a == 'p') && (b == 'k')) chr = '�';
+    else if ((a == 'n') && (b == 'k'))  chr = 0x00DA; // 'Ú';
+    else if ((a == 'p') && (b == 'k'))  chr = 0x00FA; // 'ú';

-    else if ((a == 'n') && (b == 'l')) chr = '�';
-    else if ((a == 'p') && (b == 'l')) chr = '�';
+    else if ((a == 'n') && (b == 'l'))  chr = 0x00DB; // 'Û';
+    else if ((a == 'p') && (b == 'l'))  chr = 0x00FB; // 'û';

-    else if ((a == 'p') && (b == 'm')) chr = '�';
-    else if ((a == 'n') && (b == 'm')) chr = '�';
+    else if ((a == 'n') && (b == 'm'))  chr = 0x00DC; // 'Ü';
+    else if ((a == 'p') && (b == 'm'))  chr = 0x00FC; // 'ü';

 

-    else if ((a == 'm') && (b == 'a')) chr = '�';
-    else if ((a == 'o') && (b == 'a')) chr = '�';
+    else if ((a == 'm') && (b == 'a'))  chr = 0x00C0; // 'À';
+    else if ((a == 'o') && (b == 'a'))  chr = 0x00E0; // 'à';

-    else if ((a == 'm') && (b == 'b')) chr = '�';
-    else if ((a == 'o') && (b == 'b')) chr = '�';
+    else if ((a == 'm') && (b == 'b'))  chr = 0x00C1; // 'Á';
+    else if ((a == 'o') && (b == 'b'))  chr = 0x00E1; // 'á';

-    else if ((a == 'm') && (b == 'c')) chr = '�';
-    else if ((a == 'o') && (b == 'c')) chr = '�';
+    else if ((a == 'm') && (b == 'c'))  chr = 0x00C2; // 'Â';
+    else if ((a == 'o') && (b == 'c'))  chr = 0x00E2; // 'â';

-    else if ((a == 'm') && (b == 'd')) chr = '�';
-    else if ((a == 'o') && (b == 'd')) chr = '�';
+    else if ((a == 'm') && (b == 'd'))  chr = 0x00C3; // 'Ã';
+    else if ((a == 'o') && (b == 'd'))  chr = 0x00E3; // 'ã';

-    else if ((a == 'm') && (b == 'e')) chr = '�';
-    else if ((a == 'o') && (b == 'e')) chr = '�';
+    else if ((a == 'm') && (b == 'e'))  chr = 0x00C4; // 'Ä';
+    else if ((a == 'o') && (b == 'e'))  chr = 0x00E4; // 'ä';

-    else if ((a == 'm') && (b == 'f')) chr = '�';
-    else if ((a == 'o') && (b == 'f')) chr = '�';
+    else if ((a == 'm') && (b == 'f'))  chr = 0x00C5; // 'Å';
+    else if ((a == 'o') && (b == 'f'))  chr = 0x00E5; // 'å';

-    else if ((a == 'm') && (b == 'g')) chr = '�';
-    else if ((a == 'o') && (b == 'g')) chr = '�';
+    else if ((a == 'm') && (b == 'g'))  chr = 0x00C6; // 'Æ';
+    else if ((a == 'o') && (b == 'g'))  chr = 0x00E6; // 'æ';

 

-    else if ((a == 'm') && (b == 'i')) chr = '�';
-    else if ((a == 'o') && (b == 'i')) chr = '�';
+    else if ((a == 'm') && (b == 'i'))  chr = 0x00C8; // 'È';
+    else if ((a == 'o') && (b == 'i'))  chr = 0x00E8; // 'è';

-    else if ((a == 'm') && (b == 'j')) chr = '�';
-    else if ((a == 'o') && (b == 'j')) chr = '�';
+    else if ((a == 'm') && (b == 'j'))  chr = 0x00C9; // 'É';
+    else if ((a == 'o') && (b == 'j'))  chr = 0x00E9; // 'é';

-    else if ((a == 'm') && (b == 'k')) chr = '�';
-    else if ((a == 'o') && (b == 'k')) chr = '�';
+    else if ((a == 'm') && (b == 'k'))  chr = 0x00CA; // 'Ê';
+    else if ((a == 'o') && (b == 'k'))  chr = 0x00EA; // 'ê';

-    else if ((a == 'm') && (b == 'l')) chr = '�';
-    else if ((a == 'o') && (b == 'l')) chr = '�';
+    else if ((a == 'm') && (b == 'l'))  chr = 0x00CB; // 'Ë';
+    else if ((a == 'o') && (b == 'l'))  chr = 0x00EB; // 'ë';

 

+    else if ((a == 'm') && (b == 'm'))  chr = 0x00CC; // 'Ì';
+    else if ((a == 'o') && (b == 'm'))  chr = 0x00EC; // 'ì';

+    else if ((a == 'm') && (b == 'n'))  chr = 0x00CD; // 'Í';
+    else if ((a == 'o') && (b == 'n'))  chr = 0x00ED; // 'í';

+    else if ((a == 'm') && (b == 'o'))  chr = 0x00CE; // 'Î';
+    else if ((a == 'o') && (b == 'o'))  chr = 0x00EE; // 'î';

-    else if ((a == 'm') && (b == 'm')) chr = '�';
-    else if ((a == 'o') && (b == 'm')) chr = '�';
+    else if ((a == 'm') && (b == 'p'))  chr = 0x00CF; // 'Ï';
+    else if ((a == 'o') && (b == 'p'))  chr = 0x00EF; // 'ï';

-    else if ((a == 'm') && (b == 'n')) chr = '�';
-    else if ((a == 'o') && (b == 'n')) chr = '�';

-    else if ((a == 'm') && (b == 'o')) chr = '�';
-    else if ((a == 'o') && (b == 'o')) chr = '�';
+    else if ((a == 'n') && (b == 'b'))  chr = 0x00D1; // 'Ñ';
+    else if ((a == 'p') && (b == 'b'))  chr = 0x00F1; // 'ñ';

-    else if ((a == 'm') && (b == 'p')) chr = '�';
-    else if ((a == 'o') && (b == 'p')) chr = '�';

+    else if ((a == 'k') && (b == 'c'))  chr = 0x00A2; // '¢';
+    else if ((a == 'k') && (b == 'j'))  chr = 0x00A9; // '©';
+    else if ((a == 'l') && (b == 'f'))  chr = 0x00B5; // 'µ';
+    else if ((a == 'n') && (b == 'i'))  chr = 0x00D8; // 'Ø';
+    else if ((a == 'p') && (b == 'i'))  chr = 0x00F8; // 'ø';

-    else if ((a == 'n') && (b == 'b')) chr = '�';
-    else if ((a == 'p') && (b == 'b')) chr = '�';
+    else if ((a == 'l') && (b == 'j'))  chr = 0x00B9; // '¹';
+    else if ((a == 'l') && (b == 'c'))  chr = 0x00B2; // '²';
+    else if ((a == 'l') && (b == 'd'))  chr = 0x00B3; // '³';

+    else if ((a == 'l') && (b == 'm'))  chr = 0x0152; // 'Œ';
+    else if ((a == 'l') && (b == 'n'))  chr = 0x0153; // 'œ';
+    else if ((a == 'l') && (b == 'o'))  chr = 0x0178; // 'Ÿ';

-    else if ((a == 'k') && (b == 'c')) chr = '�';
-    else if ((a == 'k') && (b == 'j')) chr = '�';
-    else if ((a == 'l') && (b == 'f')) chr = '�';
-    else if ((a == 'n') && (b == 'i')) chr = '�';
-    else if ((a == 'p') && (b == 'i')) chr = '�';
+    else if ((a == 'l') && (b == 'a'))  chr = 0x00B0; // '°';

-    else if ((a == 'l') && (b == 'j')) chr = '�';
-    else if ((a == 'l') && (b == 'c')) chr = '�';
-    else if ((a == 'l') && (b == 'd')) chr = '�';
+    else if ((a == 'k') && (b == 'o'))  chr = 0x00AE; // '®';
+    else if ((a == 'k') && (b == 'h'))  chr = 0x00A7; // '§';
+    else if ((a == 'k') && (b == 'd'))  chr = 0x00A3; // '£';

-    else if ((a == 'l') && (b == 'm')) chr = '�';
-    else if ((a == 'l') && (b == 'n')) chr = '�';
-    else if ((a == 'l') && (b == 'o')) chr = '�';
+    else if ((a == 'p') && (b == 'a'))  chr = 0x00F0; // 'ð';
+    else if ((a == 'n') && (b == 'a'))  chr = 0x00D0; // 'Ð';

-    else if ((a == 'l') && (b == 'a')) chr = '�';
+    else if ((a == 'l') && (b == 'l'))  chr = 0x00BB; // '»';
+    else if ((a == 'k') && (b == 'l'))  chr = 0x00AB; // '«';

-    else if ((a == 'k') && (b == 'o')) chr = '�';
-    else if ((a == 'k') && (b == 'h')) chr = '�';
-    else if ((a == 'k') && (b == 'd')) chr = '�';
+    else if ((a == 'l') && (b == 'k'))  chr = 0x00BA; // 'º';

-    else if ((a == 'p') && (b == 'a')) chr = '�';
-    else if ((a == 'n') && (b == 'a')) chr = '�';
+    else if ((a == 'l') && (b == 'h'))  chr = 0x00B7; // '·';

-    else if ((a == 'l') && (b == 'l')) chr = '�';
-    else if ((a == 'k') && (b == 'l')) chr = '�';
+    else if ((a == 'k') && (b == 'b'))  chr = 0x00A1; // '¡';

-    else if ((a == 'l') && (b == 'k')) chr = '�';
+    else if ((a == 'k') && (b == 'e'))  chr = 0x20AC; // '€';

-    else if ((a == 'l') && (b == 'h')) chr = '�';
+    else if ((a == 'l') && (b == 'b'))  chr = 0x00B1; // '±';

-    else if ((a == 'k') && (b == 'b')) chr = '�';
+    else if ((a == 'l') && (b == 'p'))  chr = 0x00BF; // '¿';

-    else if ((a == 'k') && (b == 'e')) chr = '�';
+    else if ((a == 'k') && (b == 'f'))  chr = 0x00A5; // '¥';

-    else if ((a == 'l') && (b == 'b')) chr = '�';
+    else if ((a == 'p') && (b == 'o'))  chr = 0x00FE; // 'þ';
+    else if ((a == 'n') && (b == 'o'))  chr = 0x00DE; // 'Þ';

-    else if ((a == 'l') && (b == 'p')) chr = '�';
+    else if ((a == 'n') && (b == 'n'))  chr = 0x00DD; // 'Ý';
+    else if ((a == 'p') && (b == 'n'))  chr = 0x00FD; // 'ý';
+    else if ((a == 'p') && (b == 'p'))  chr = 0x00FF; // 'ÿ';

-    else if ((a == 'k') && (b == 'f')) chr = '�';
+    else if ((a == 'k') && (b == 'k'))  chr = 0x00AA; // 'ª';

-    else if ((a == 'p') && (b == 'o')) chr = '�';
-    else if ((a == 'n') && (b == 'o')) chr = '�';
+    else if ((a == 'k') && (b == 'm'))  chr = 0x00AC; // '¬';
+    else if ((a == 'p') && (b == 'h'))  chr = 0x00F7; // '÷';

-    else if ((a == 'n') && (b == 'n')) chr = '�';
-    else if ((a == 'p') && (b == 'n')) chr = '�';
-    else if ((a == 'p') && (b == 'p')) chr = '�';
+    else if ((a == 'k') && (b == 'g'))  chr = 0x007C; // '|';

-    else if ((a == 'k') && (b == 'k')) chr = '�';
+    else if ((a == 'l') && (b == 'e'))  chr = 0x0027; // '\'';

-    else if ((a == 'k') && (b == 'm')) chr = '�';
-    else if ((a == 'p') && (b == 'h')) chr = '�';
+    else if ((a == 'k') && (b == 'i'))  chr = 0x0161; // 'š';

-    else if ((a == 'k') && (b == 'g')) chr = '|';
+    else if ((a == 'k') && (b == 'n'))  chr = 0x00AD; // '­';

-    else if ((a == 'l') && (b == 'e')) chr = '\'';
+    else if ((a == 'k') && (b == 'p'))  chr = 0x00AF; // '¯';

-    else if ((a == 'k') && (b == 'i')) chr = '�';
+    else if ((a == 'l') && (b == 'g'))  chr = 0x00B6; // '¶';

-    else if ((a == 'k') && (b == 'n')) chr = '�';
+    else if ((a == 'l') && (b == 'i'))  chr = 0x017E; // 'ž';

-    else if ((a == 'k') && (b == 'p')) chr = '�';
+    else if ((a == 'm') && (b == 'h'))  chr = 0x00C7; // 'Ç';
+    else if ((a == 'o') && (b == 'h'))  chr = 0x00E7; // 'ç';

-    else if ((a == 'l') && (b == 'g')) chr = '�';
+    else if ((a == 'n') && (b == 'h'))  chr = 0x00D7; // '×';

-    else if ((a == 'l') && (b == 'i')) chr = '�';
+    else if ((a == 'k') && (b == 'a'))  chr = 0x0020; // ' ';

-    else if ((a == 'm') && (b == 'h')) chr = '�';
-    else if ((a == 'o') && (b == 'h')) chr = '�';
+    else if ((a == 'a') && (b == 'j'))  chr = 0x0021; // '!';

-    else if ((a == 'n') && (b == 'h')) chr = '�';
-
-    else if ((a == 'k') && (b == 'a')) chr = ' ';
-
-    else if ((a == 'a') && (b == 'j')) chr = '!';
-
-    else  chr = '#';
+    else  chr = 0x0023; // '#';

     return chr;
 }
diff --git a/filters/words/applixword/applixwordimport.cc b/filters/words/applixword/applixwordimport.cc
index c890cfa..38335eb 100644
--- a/filters/words/applixword/applixwordimport.cc
+++ b/filters/words/applixword/applixwordimport.cc
 <at>  <at>  -440,173 +440,170  <at>  <at>  APPLIXWORDImport::specCharfind(QChar a, QChar b) // TODO share this code with ap
 {
     QChar chr;

-    if ((a == 'n') && (b == 'p')) chr = '�';
+    if ((a == 'n') && (b == 'p'))  chr = 0x00DF; // 'ß';

 
-    else if ((a == 'n') && (b == 'c')) chr = '�';
-    else if ((a == 'p') && (b == 'c')) chr = '�';
+    else if ((a == 'n') && (b == 'c'))  chr = 0x00D2; // 'Ò';
+    else if ((a == 'p') && (b == 'c'))  chr = 0x00F2; // 'ò';

-    else if ((a == 'n') && (b == 'd')) chr = '�';
-    else if ((a == 'p') && (b == 'd')) chr = '�';
+    else if ((a == 'n') && (b == 'd'))  chr = 0x00D3; // 'Ó';
+    else if ((a == 'p') && (b == 'd'))  chr = 0x00F3; // 'ó';

-    else if ((a == 'n') && (b == 'e')) chr = '�';
-    else if ((a == 'p') && (b == 'e')) chr = '�';
+    else if ((a == 'n') && (b == 'e'))  chr = 0x00D4; // 'Ô';
+    else if ((a == 'p') && (b == 'e'))  chr = 0x00F4; // 'ô';

-    else if ((a == 'n') && (b == 'f')) chr = '�';
-    else if ((a == 'p') && (b == 'f')) chr = '�';
+    else if ((a == 'n') && (b == 'f'))  chr = 0x00D5; // 'Õ';
+    else if ((a == 'p') && (b == 'f'))  chr = 0x00F5; // 'õ';

-    else if ((a == 'p') && (b == 'g')) chr = '�';
-    else if ((a == 'n') && (b == 'g')) chr = '�';
+    else if ((a == 'n') && (b == 'g'))  chr = 0x00D6; // 'Ö';
+    else if ((a == 'p') && (b == 'g'))  chr = 0x00F6; // 'ö';

 

-    else if ((a == 'n') && (b == 'j')) chr = '�';
-    else if ((a == 'p') && (b == 'j')) chr = '�';
+    else if ((a == 'n') && (b == 'j'))  chr = 0x00D9; // 'Ù';
+    else if ((a == 'p') && (b == 'j'))  chr = 0x00F9; // 'ù';

-    else if ((a == 'n') && (b == 'k')) chr = '�';
-    else if ((a == 'p') && (b == 'k')) chr = '�';
+    else if ((a == 'n') && (b == 'k'))  chr = 0x00DA; // 'Ú';
+    else if ((a == 'p') && (b == 'k'))  chr = 0x00FA; // 'ú';

-    else if ((a == 'n') && (b == 'l')) chr = '�';
-    else if ((a == 'p') && (b == 'l')) chr = '�';
+    else if ((a == 'n') && (b == 'l'))  chr = 0x00DB; // 'Û';
+    else if ((a == 'p') && (b == 'l'))  chr = 0x00FB; // 'û';

-    else if ((a == 'p') && (b == 'm')) chr = '�';
-    else if ((a == 'n') && (b == 'm')) chr = '�';
+    else if ((a == 'n') && (b == 'm'))  chr = 0x00DC; // 'Ü';
+    else if ((a == 'p') && (b == 'm'))  chr = 0x00FC; // 'ü';

 

-    else if ((a == 'm') && (b == 'a')) chr = '�';
-    else if ((a == 'o') && (b == 'a')) chr = '�';
+    else if ((a == 'm') && (b == 'a'))  chr = 0x00C0; // 'À';
+    else if ((a == 'o') && (b == 'a'))  chr = 0x00E0; // 'à';

-    else if ((a == 'm') && (b == 'b')) chr = '�';
-    else if ((a == 'o') && (b == 'b')) chr = '�';
+    else if ((a == 'm') && (b == 'b'))  chr = 0x00C1; // 'Á';
+    else if ((a == 'o') && (b == 'b'))  chr = 0x00E1; // 'á';

-    else if ((a == 'm') && (b == 'c')) chr = '�';
-    else if ((a == 'o') && (b == 'c')) chr = '�';
+    else if ((a == 'm') && (b == 'c'))  chr = 0x00C2; // 'Â';
+    else if ((a == 'o') && (b == 'c'))  chr = 0x00E2; // 'â';

-    else if ((a == 'm') && (b == 'd')) chr = '�';
-    else if ((a == 'o') && (b == 'd')) chr = '�';
+    else if ((a == 'm') && (b == 'd'))  chr = 0x00C3; // 'Ã';
+    else if ((a == 'o') && (b == 'd'))  chr = 0x00E3; // 'ã';

-    else if ((a == 'm') && (b == 'e')) chr = '�';
-    else if ((a == 'o') && (b == 'e')) chr = '�';
+    else if ((a == 'm') && (b == 'e'))  chr = 0x00C4; // 'Ä';
+    else if ((a == 'o') && (b == 'e'))  chr = 0x00E4; // 'ä';

-    else if ((a == 'm') && (b == 'f')) chr = '�';
-    else if ((a == 'o') && (b == 'f')) chr = '�';
+    else if ((a == 'm') && (b == 'f'))  chr = 0x00C5; // 'Å';
+    else if ((a == 'o') && (b == 'f'))  chr = 0x00E5; // 'å';

-    else if ((a == 'm') && (b == 'g')) chr = '�';
-    else if ((a == 'o') && (b == 'g')) chr = '�';
+    else if ((a == 'm') && (b == 'g'))  chr = 0x00C6; // 'Æ';
+    else if ((a == 'o') && (b == 'g'))  chr = 0x00E6; // 'æ';

 

-    else if ((a == 'm') && (b == 'i')) chr = '�';
-    else if ((a == 'o') && (b == 'i')) chr = '�';
+    else if ((a == 'm') && (b == 'i'))  chr = 0x00C8; // 'È';
+    else if ((a == 'o') && (b == 'i'))  chr = 0x00E8; // 'è';

-    else if ((a == 'm') && (b == 'j')) chr = '�';
-    else if ((a == 'o') && (b == 'j')) chr = '�';
+    else if ((a == 'm') && (b == 'j'))  chr = 0x00C9; // 'É';
+    else if ((a == 'o') && (b == 'j'))  chr = 0x00E9; // 'é';

-    else if ((a == 'm') && (b == 'k')) chr = '�';
-    else if ((a == 'o') && (b == 'k')) chr = '�';
+    else if ((a == 'm') && (b == 'k'))  chr = 0x00CA; // 'Ê';
+    else if ((a == 'o') && (b == 'k'))  chr = 0x00EA; // 'ê';

-    else if ((a == 'm') && (b == 'l')) chr = '�';
-    else if ((a == 'o') && (b == 'l')) chr = '�';
+    else if ((a == 'm') && (b == 'l'))  chr = 0x00CB; // 'Ë';
+    else if ((a == 'o') && (b == 'l'))  chr = 0x00EB; // 'ë';

 

+    else if ((a == 'm') && (b == 'm'))  chr = 0x00CC; // 'Ì';
+    else if ((a == 'o') && (b == 'm'))  chr = 0x00EC; // 'ì';

+    else if ((a == 'm') && (b == 'n'))  chr = 0x00CD; // 'Í';
+    else if ((a == 'o') && (b == 'n'))  chr = 0x00ED; // 'í';

+    else if ((a == 'm') && (b == 'o'))  chr = 0x00CE; // 'Î';
+    else if ((a == 'o') && (b == 'o'))  chr = 0x00EE; // 'î';

-    else if ((a == 'm') && (b == 'm')) chr = '�';
-    else if ((a == 'o') && (b == 'm')) chr = '�';
+    else if ((a == 'm') && (b == 'p'))  chr = 0x00CF; // 'Ï';
+    else if ((a == 'o') && (b == 'p'))  chr = 0x00EF; // 'ï';

-    else if ((a == 'm') && (b == 'n')) chr = '�';
-    else if ((a == 'o') && (b == 'n')) chr = '�';

-    else if ((a == 'm') && (b == 'o')) chr = '�';
-    else if ((a == 'o') && (b == 'o')) chr = '�';
+    else if ((a == 'n') && (b == 'b'))  chr = 0x00D1; // 'Ñ';
+    else if ((a == 'p') && (b == 'b'))  chr = 0x00F1; // 'ñ';

-    else if ((a == 'm') && (b == 'p')) chr = '�';
-    else if ((a == 'o') && (b == 'p')) chr = '�';

+    else if ((a == 'k') && (b == 'c'))  chr = 0x00A2; // '¢';
+    else if ((a == 'k') && (b == 'j'))  chr = 0x00A9; // '©';
+    else if ((a == 'l') && (b == 'f'))  chr = 0x00B5; // 'µ';
+    else if ((a == 'n') && (b == 'i'))  chr = 0x00D8; // 'Ø';
+    else if ((a == 'p') && (b == 'i'))  chr = 0x00F8; // 'ø';

-    else if ((a == 'n') && (b == 'b')) chr = '�';
-    else if ((a == 'p') && (b == 'b')) chr = '�';
+    else if ((a == 'l') && (b == 'j'))  chr = 0x00B9; // '¹';
+    else if ((a == 'l') && (b == 'c'))  chr = 0x00B2; // '²';
+    else if ((a == 'l') && (b == 'd'))  chr = 0x00B3; // '³';

+    else if ((a == 'l') && (b == 'm'))  chr = 0x0152; // 'Œ';
+    else if ((a == 'l') && (b == 'n'))  chr = 0x0153; // 'œ';
+    else if ((a == 'l') && (b == 'o'))  chr = 0x0178; // 'Ÿ';

-    else if ((a == 'k') && (b == 'c')) chr = '�';
-    else if ((a == 'k') && (b == 'j')) chr = '�';
-    else if ((a == 'l') && (b == 'f')) chr = '�';
-    else if ((a == 'n') && (b == 'i')) chr = '�';
-    else if ((a == 'p') && (b == 'i')) chr = '�';
+    else if ((a == 'l') && (b == 'a'))  chr = 0x00B0; // '°';

-    else if ((a == 'l') && (b == 'j')) chr = '�';
-    else if ((a == 'l') && (b == 'c')) chr = '�';
-    else if ((a == 'l') && (b == 'd')) chr = '�';
+    else if ((a == 'k') && (b == 'o'))  chr = 0x00AE; // '®';
+    else if ((a == 'k') && (b == 'h'))  chr = 0x00A7; // '§';
+    else if ((a == 'k') && (b == 'd'))  chr = 0x00A3; // '£';

-    else if ((a == 'l') && (b == 'm')) chr = '�';
-    else if ((a == 'l') && (b == 'n')) chr = '�';
-    else if ((a == 'l') && (b == 'o')) chr = '�';
+    else if ((a == 'p') && (b == 'a'))  chr = 0x00F0; // 'ð';
+    else if ((a == 'n') && (b == 'a'))  chr = 0x00D0; // 'Ð';

-    else if ((a == 'l') && (b == 'a')) chr = '�';
+    else if ((a == 'l') && (b == 'l'))  chr = 0x00BB; // '»';
+    else if ((a == 'k') && (b == 'l'))  chr = 0x00AB; // '«';

-    else if ((a == 'k') && (b == 'o')) chr = '�';
-    else if ((a == 'k') && (b == 'h')) chr = '�';
-    else if ((a == 'k') && (b == 'd')) chr = '�';
+    else if ((a == 'l') && (b == 'k'))  chr = 0x00BA; // 'º';

-    else if ((a == 'p') && (b == 'a')) chr = '�';
-    else if ((a == 'n') && (b == 'a')) chr = '�';
+    else if ((a == 'l') && (b == 'h'))  chr = 0x00B7; // '·';

-    else if ((a == 'l') && (b == 'l')) chr = '�';
-    else if ((a == 'k') && (b == 'l')) chr = '�';
+    else if ((a == 'k') && (b == 'b'))  chr = 0x00A1; // '¡';

-    else if ((a == 'l') && (b == 'k')) chr = '�';
+    else if ((a == 'k') && (b == 'e'))  chr = 0x20AC; // '€';

-    else if ((a == 'l') && (b == 'h')) chr = '�';
+    else if ((a == 'l') && (b == 'b'))  chr = 0x00B1; // '±';

-    else if ((a == 'k') && (b == 'b')) chr = '�';
+    else if ((a == 'l') && (b == 'p'))  chr = 0x00BF; // '¿';

-    else if ((a == 'k') && (b == 'e')) chr = '�';
+    else if ((a == 'k') && (b == 'f'))  chr = 0x00A5; // '¥';

-    else if ((a == 'l') && (b == 'b')) chr = '�';
+    else if ((a == 'p') && (b == 'o'))  chr = 0x00FE; // 'þ';
+    else if ((a == 'n') && (b == 'o'))  chr = 0x00DE; // 'Þ';

-    else if ((a == 'l') && (b == 'p')) chr = '�';
+    else if ((a == 'n') && (b == 'n'))  chr = 0x00DD; // 'Ý';
+    else if ((a == 'p') && (b == 'n'))  chr = 0x00FD; // 'ý';
+    else if ((a == 'p') && (b == 'p'))  chr = 0x00FF; // 'ÿ';

-    else if ((a == 'k') && (b == 'f')) chr = '�';
+    else if ((a == 'k') && (b == 'k'))  chr = 0x00AA; // 'ª';

-    else if ((a == 'p') && (b == 'o')) chr = '�';
-    else if ((a == 'n') && (b == 'o')) chr = '�';
+    else if ((a == 'k') && (b == 'm'))  chr = 0x00AC; // '¬';
+    else if ((a == 'p') && (b == 'h'))  chr = 0x00F7; // '÷';

-    else if ((a == 'n') && (b == 'n')) chr = '�';
-    else if ((a == 'p') && (b == 'n')) chr = '�';
-    else if ((a == 'p') && (b == 'p')) chr = '�';
+    else if ((a == 'k') && (b == 'g'))  chr = 0x007C; // '|';

-    else if ((a == 'k') && (b == 'k')) chr = '�';
+    else if ((a == 'l') && (b == 'e'))  chr = 0x0027; // '\'';

-    else if ((a == 'k') && (b == 'm')) chr = '�';
-    else if ((a == 'p') && (b == 'h')) chr = '�';
+    else if ((a == 'k') && (b == 'i'))  chr = 0x0161; // 'š';

-    else if ((a == 'k') && (b == 'g')) chr = '|';
+    else if ((a == 'k') && (b == 'n'))  chr = 0x00AD; // '­';

-    else if ((a == 'l') && (b == 'e')) chr = '\'';
+    else if ((a == 'k') && (b == 'p'))  chr = 0x00AF; // '¯';

-    else if ((a == 'k') && (b == 'i')) chr = '�';
+    else if ((a == 'l') && (b == 'g'))  chr = 0x00B6; // '¶';

-    else if ((a == 'k') && (b == 'n')) chr = '�';
+    else if ((a == 'l') && (b == 'i'))  chr = 0x017E; // 'ž';

-    else if ((a == 'k') && (b == 'p')) chr = '�';
+    else if ((a == 'm') && (b == 'h'))  chr = 0x00C7; // 'Ç';
+    else if ((a == 'o') && (b == 'h'))  chr = 0x00E7; // 'ç';

-    else if ((a == 'l') && (b == 'g')) chr = '�';
+    else if ((a == 'n') && (b == 'h'))  chr = 0x00D7; // '×';

-    else if ((a == 'l') && (b == 'i')) chr = '�';
+    else if ((a == 'k') && (b == 'a'))  chr = 0x0020; // ' ';

-    else if ((a == 'm') && (b == 'h')) chr = '�';
-    else if ((a == 'o') && (b == 'h')) chr = '�';
+    else if ((a == 'a') && (b == 'j'))  chr = 0x0021; // '!';

-    else if ((a == 'n') && (b == 'h')) chr = '�';
-
-    else if ((a == 'k') && (b == 'a')) chr = ' ';
-
-    else if ((a == 'a') && (b == 'j')) chr = '!';
-
-    else  chr = '#';
+    else  chr = 0x0023; // '#';

     return chr;
 }

Ankit Wagadre | 27 Aug 23:42 2015
Picon

[labplot/gsoc2015-datapicker] src/backend/datapicker: hide segments on image file change

Git commit 21166e82e6ccff2ba3efcab911ef01f23ca8bbfe by Ankit Wagadre.
Committed on 27/08/2015 at 21:41.
Pushed by ankitw into branch 'gsoc2015-datapicker'.

hide segments on image file change

M  +3    -0    src/backend/datapicker/Image.cpp

http://commits.kde.org/labplot/21166e82e6ccff2ba3efcab911ef01f23ca8bbfe

diff --git a/src/backend/datapicker/Image.cpp b/src/backend/datapicker/Image.cpp
index dc66226..360b061 100644
--- a/src/backend/datapicker/Image.cpp
+++ b/src/backend/datapicker/Image.cpp
 <at>  <at>  -331,6 +331,9  <at>  <at>  void ImagePrivate::updateFileName() {
             q->initSceneParameters();
             fileName = address;
         }
+    } else {
+        //hide segments if they are visible
+        q->m_segments->setSegmentsVisible(false);
     }

     update();


Gmane