diff --git a/Sources/GuiTools/MainWindows/MainWindows.cpp b/Sources/GuiTools/MainWindows/MainWindows.cpp index 38f29a2..41da3e4 100644 --- a/Sources/GuiTools/MainWindows/MainWindows.cpp +++ b/Sources/GuiTools/MainWindows/MainWindows.cpp @@ -72,11 +72,11 @@ MainWindows::MainWindows(void) : MsgBroadcast("Main Windows", EDN_CAT_GUI) // TreeView : gtk_box_pack_start(GTK_BOX(hbox), m_BufferView.GetMainWidget(), FALSE, TRUE, 1); - // Tex displayer : + // Text displayer : gtk_box_pack_start( GTK_BOX (hbox), m_CodeView.GetMainWidget(), TRUE, TRUE, 0); // Create the status bar - gtk_box_pack_end(GTK_BOX(vbox), m_StatusBar.GetWidget(), FALSE, FALSE, 0); + //gtk_box_pack_end(GTK_BOX(vbox), m_StatusBar.GetWidget(), FALSE, FALSE, 0); // recursive version of gtk_widget_show gtk_widget_show_all(m_mainWindow); diff --git a/Sources/ctags/CTagsManager.cpp b/Sources/ctags/CTagsManager.cpp index 244a85d..01b43dc 100644 --- a/Sources/ctags/CTagsManager.cpp +++ b/Sources/ctags/CTagsManager.cpp @@ -169,31 +169,49 @@ enum CTAGS_NUM_COLS }; -GtkTreeModel * CTagsManager::CreateAndFillModel(void) +void CTagsManager::cb_row (GtkTreeView *p_treeview, + GtkTreePath * p_path, + GtkTreeViewColumn * p_column, + gpointer data) { - GtkListStore * store; - GtkTreeIter iter; + EDN_DEBUG("event"); + CTagsManager * self = reinterpret_cast(data); - store = gtk_list_store_new(CTAGS_NUM_COLS, G_TYPE_STRING, G_TYPE_UINT); + gchar * p_file=NULL; + gint lineNumber; + GtkTreeIter iter; - // Append a row and fill in some data - for (int32_t iii=0; iiim_listStore), &iter, p_path)) + { + gtk_tree_model_get( GTK_TREE_MODEL(self->m_listStore), + &iter, + CTAGS_COL_FILE, &p_file, + CTAGS_COL_LINE_NUMBER, &lineNumber, + -1 ); + EDN_DEBUG("find : " << p_file << ":" << lineNumber); + for (int32_t iii = 0; iii < self->m_currentList.Size() ; iii++) { + if( self->m_currentList[iii].lineID == lineNumber + && strcmp(self->m_currentList[iii].filename, p_file)==0) + { + g_object_unref( GTK_TREE_MODEL(self->m_listStore)); + // Remove dialogue + gtk_widget_destroy(self->m_Dialog); + // Jump ... + self->JumpAtID(iii); + return; + } + } } - - return GTK_TREE_MODEL(store); } + + GtkWidget * CTagsManager::CreateViewAndModel(void) { - GtkCellRenderer * renderer; - GtkTreeModel * model; - GtkWidget * view; + GtkCellRenderer * renderer; + GtkWidget * view; view = gtk_tree_view_new(); // Column 1 @@ -214,11 +232,21 @@ GtkWidget * CTagsManager::CreateViewAndModel(void) "text", CTAGS_COL_LINE_NUMBER, NULL); - model = CreateAndFillModel(); + // Set data in the list : + GtkTreeIter iter; + m_listStore = gtk_list_store_new(CTAGS_NUM_COLS, G_TYPE_STRING, G_TYPE_UINT); + // Append a row and fill in some data + for (int32_t iii=0; iiiGetWidget())); // add writting area - GtkWidget *myContentArea = gtk_dialog_get_content_area( GTK_DIALOG(myDialog)); + GtkWidget *myContentArea = gtk_dialog_get_content_area( GTK_DIALOG(m_Dialog)); GtkWidget *listView = CreateViewAndModel(); gtk_box_pack_start(GTK_BOX(myContentArea), listView, TRUE, TRUE, 0); // Display it gtk_widget_show_all(myContentArea); - int32_t result = gtk_dialog_run(GTK_DIALOG(myDialog)); + int32_t result = gtk_dialog_run(GTK_DIALOG(m_Dialog)); // Get data from the gtk entry - result = 0; // remove warning - + if (result == GTK_RESPONSE_NO) { + g_object_unref(GTK_TREE_MODEL(m_listStore)); + // Remove dialogue + gtk_widget_destroy(m_Dialog); + } //GtkTreeIter *myIter; //gtk_tree_selection_get_selected(selection, &model, myIter); // Remove dialogue - gtk_widget_destroy(myDialog); + //gtk_widget_destroy(myDialog); return 0; } /* @@ -270,7 +301,7 @@ void BufferView::OnCtagsEventList(GtkWidget *menuitem, gpointer data) void CTagsManager::JumpAtID(int32_t selectID) { BufferManager *myBufferManager = BufferManager::getInstance(); - Edn::File myFile = m_currentList[0].filename; + Edn::File myFile = m_currentList[selectID].filename; EDN_INFO(" OPEN the TAG file Destination : " << myFile ); if (false == myBufferManager->Exist(myFile) ) { // need to open the file : @@ -292,7 +323,7 @@ void CTagsManager::JumpAtID(int32_t selectID) int32_t destLine = myBufferManager->Get(localId)->FindLine(pattern); SendMessage(EDN_MSG__CURRENT_GOTO_LINE, destLine); */ - SendMessage(EDN_MSG__CURRENT_GOTO_LINE, m_currentList[0].lineID); + SendMessage(EDN_MSG__CURRENT_GOTO_LINE, m_currentList[selectID].lineID - 1); } diff --git a/Sources/ctags/CTagsManager.h b/Sources/ctags/CTagsManager.h index c54e2c9..110ce1f 100644 --- a/Sources/ctags/CTagsManager.h +++ b/Sources/ctags/CTagsManager.h @@ -68,10 +68,14 @@ class CTagsManager: public Singleton, public MsgBroadcast Edn::VectorType m_historyList; Edn::VectorType m_currentList; void JumpAtID(int32_t selectID); - GtkTreeModel * CreateAndFillModel(void); GtkWidget * CreateViewAndModel(void); - - // TMP Val : + static void cb_row (GtkTreeView *p_treeview, + GtkTreePath * p_path, + GtkTreeViewColumn * p_column, + gpointer p_data); + // save data in the list : + GtkListStore * m_listStore; + GtkWidget * m_Dialog; }; #endif