summaryrefslogtreecommitdiff
Unidiff
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--noncore/apps/dagger/mainwindow.cpp61
1 files changed, 46 insertions, 15 deletions
diff --git a/noncore/apps/dagger/mainwindow.cpp b/noncore/apps/dagger/mainwindow.cpp
index e886bd8..3dd9eff 100644
--- a/noncore/apps/dagger/mainwindow.cpp
+++ b/noncore/apps/dagger/mainwindow.cpp
@@ -31,6 +31,7 @@ file; see the file COPYING. If not, write to the Free Software Foundation, Inc.,
31#include <qaction.h> 31#include <qaction.h>
32#include <qclipboard.h> 32#include <qclipboard.h>
33#include <qmenubar.h> 33#include <qmenubar.h>
34#include <qmessagebox.h>
34#include <qobjectlist.h> 35#include <qobjectlist.h>
35#include <qpopupmenu.h> 36#include <qpopupmenu.h>
36#include <qtimer.h> 37#include <qtimer.h>
@@ -687,27 +688,57 @@ void MainWindow::slotSearchResultClicked( const QString &key )
687 688
688void MainWindow::slotTextRefClicked( const QString &ref ) 689void MainWindow::slotTextRefClicked( const QString &ref )
689{ 690{
691//printf( "Ref clicked: '%s'\n", ref.latin1() );
692/*
693Ref clicked: 'type=Strongs value=G3482'
694Ref clicked: 'type=Strongs value=H07225'
695Ref clicked: 'type=morph class=x-Robinson:N-PRI value=N-PRI'
696Ref clicked: 'type=morph class=x-StrongsMorph:TH8804 value=TH8804'
697*/
690 //owarn << "Reference: " << ref << oendl; 698 //owarn << "Reference: " << ref << oendl;
691 if ( !ref.isNull() ) 699 if ( !ref.isNull() )
692 { 700 {
693 TextWidget *text = reinterpret_cast<TextWidget *>(m_tabs.currentWidget()); 701 TextWidget *text = reinterpret_cast<TextWidget *>(m_tabs.currentWidget());
694 if ( text ) 702 if ( text )
695 { 703 {
696 QString module; 704 // Parse type
697 QString key( ref ); 705 int pos = ref.find( "type=", 0, false ) + 5;
698 key.remove( 0, 2 ); 706 QString typeStr = ref.mid( pos, ref.find( ' ', pos ) - pos );
699 707
700 QChar book = ref.at( 1 ); 708 // Parse class (for morph. only)
701 // TODO- this is ugly, need better way to determine type of reference 709 QString classStr;
702 // take a look at SWModule::getRawEntry() 710 if ( typeStr == "morph" )
703 int keyValue = key.toInt(); 711 {
704 if ( book == 'H' && keyValue <= 8674 ) 712 pos = ref.find( "class=", 0, false ) + 5;
705 module = "StrongsHebrew"; 713 QString classStr = ref.mid( pos, ref.find( ' ', pos ) - pos );
706 else if ( book == 'G' && keyValue <= 5624 ) 714
707 module = "StrongsGreek"; 715 // TODO - need to strip 'x-' from beginning and ':key' at end?
708 716 }
709 if ( !module.isEmpty() ) 717
710 openModule( module, key ); 718 // Parse value
719 pos = ref.find( "value=", 0, false ) + 6;
720 QString valueStr = ref.mid( pos, ref.find( ' ', pos ) - pos );
721
722 if ( typeStr == "Strongs" )
723 {
724 //Determine if is a Hebrew or Greek reference
725 QString module;
726 if ( valueStr.at( 0 ) == 'H' )
727 module = "StrongsHebrew";
728 else
729 module = "StrongsGreek";
730
731 // Get key
732 QString key( valueStr );
733 key.remove( 0, 1 );
734 // Open reference
735 openModule( module, key );
736 }
737 else if ( typeStr == "morph" )
738 {
739 QMessageBox::information( this, tr( "Morphological Tags" ),
740 tr( "Morphological tag cross-referencing not implemented yet." ) );
741 }
711 } 742 }
712 } 743 }
713} 744}