Browse Source

Renamed CompleteDialog to CompletionDialog and fixed a small issue.

merge-requests/365/head
eidheim 11 years ago
parent
commit
bfdbe6b3c8
  1. 13
      juci/selectiondialog.cc
  2. 6
      juci/selectiondialog.h
  3. 42
      juci/source.cc
  4. 2
      juci/source.h

13
juci/selectiondialog.cc

@ -61,7 +61,6 @@ void SelectionDialogBase::show() {
window->show_all(); window->show_all();
search_entry->show(); search_entry->show();
shown=true; shown=true;
row_in_entry=false;
} }
void SelectionDialogBase::hide() { void SelectionDialogBase::hide() {
@ -213,9 +212,9 @@ void SelectionDialog::show() {
list_view_text->set_cursor(list_view_text->get_model()->get_path(list_view_text->get_model()->children().begin())); list_view_text->set_cursor(list_view_text->get_model()->get_path(list_view_text->get_model()->children().begin()));
} }
CompleteDialog::CompleteDialog(Gtk::TextView& text_view) : SelectionDialogBase(text_view, true) {} CompletionDialog::CompletionDialog(Gtk::TextView& text_view) : SelectionDialogBase(text_view, true) {}
void CompleteDialog::show() { void CompletionDialog::show() {
SelectionDialogBase::show(); SelectionDialogBase::show();
show_offset=text_view.get_buffer()->get_insert()->get_iter().get_offset(); show_offset=text_view.get_buffer()->get_insert()->get_iter().get_offset();
@ -231,9 +230,11 @@ void CompleteDialog::show() {
search_entry->set_text(text); search_entry->set_text(text);
list_view_text->set_search_entry(*search_entry); list_view_text->set_search_entry(*search_entry);
} }
row_in_entry=false;
} }
void CompleteDialog::select(bool hide_window) { void CompletionDialog::select(bool hide_window) {
row_in_entry=true; row_in_entry=true;
auto selected=list_view_text->get_selected(); auto selected=list_view_text->get_selected();
std::pair<std::string, std::string> select; std::pair<std::string, std::string> select;
@ -261,7 +262,7 @@ void CompleteDialog::select(bool hide_window) {
} }
} }
bool CompleteDialog::on_key_release(GdkEventKey* key) { bool CompletionDialog::on_key_release(GdkEventKey* key) {
if(key->keyval==GDK_KEY_Down || key->keyval==GDK_KEY_Up) if(key->keyval==GDK_KEY_Down || key->keyval==GDK_KEY_Up)
return false; return false;
@ -279,7 +280,7 @@ bool CompleteDialog::on_key_release(GdkEventKey* key) {
return false; return false;
} }
bool CompleteDialog::on_key_press(GdkEventKey* key) { bool CompletionDialog::on_key_press(GdkEventKey* key) {
if((key->keyval>=GDK_KEY_0 && key->keyval<=GDK_KEY_9) || if((key->keyval>=GDK_KEY_0 && key->keyval<=GDK_KEY_9) ||
(key->keyval>=GDK_KEY_A && key->keyval<=GDK_KEY_Z) || (key->keyval>=GDK_KEY_A && key->keyval<=GDK_KEY_Z) ||
(key->keyval>=GDK_KEY_a && key->keyval<=GDK_KEY_z) || (key->keyval>=GDK_KEY_a && key->keyval<=GDK_KEY_z) ||

6
juci/selectiondialog.h

@ -20,8 +20,6 @@ protected:
virtual void resize(); virtual void resize();
virtual void cursor_changed(); virtual void cursor_changed();
bool row_in_entry;
Gtk::TextView& text_view; Gtk::TextView& text_view;
std::unique_ptr<Gtk::Window> window; std::unique_ptr<Gtk::Window> window;
std::unique_ptr<Gtk::ScrolledWindow> scrolled_window; std::unique_ptr<Gtk::ScrolledWindow> scrolled_window;
@ -40,9 +38,9 @@ public:
std::function<void(std::string selected)> on_select; std::function<void(std::string selected)> on_select;
}; };
class CompleteDialog : public SelectionDialogBase { class CompletionDialog : public SelectionDialogBase {
public: public:
CompleteDialog(Gtk::TextView& text_view); CompletionDialog(Gtk::TextView& text_view);
void show(); void show();
bool on_key_release(GdkEventKey* key); bool on_key_release(GdkEventKey* key);
bool on_key_press(GdkEventKey* key); bool on_key_press(GdkEventKey* key);

42
juci/source.cc

@ -547,32 +547,32 @@ bool Source::ClangViewParse::on_key_press_event(GdkEventKey* key) {
//// ClangViewAutocomplete /// //// ClangViewAutocomplete ///
////////////////////////////// //////////////////////////////
Source::ClangViewAutocomplete::ClangViewAutocomplete(const std::string& file_path, const std::string& project_path): Source::ClangViewAutocomplete::ClangViewAutocomplete(const std::string& file_path, const std::string& project_path):
Source::ClangViewParse(file_path, project_path), complete_dialog(*this), autocomplete_cancel_starting(false) { Source::ClangViewParse(file_path, project_path), completion_dialog(*this), autocomplete_cancel_starting(false) {
complete_dialog.on_hide=[this](){ completion_dialog.on_hide=[this](){
start_reparse(); start_reparse();
}; };
get_buffer()->signal_changed().connect([this](){ get_buffer()->signal_changed().connect([this](){
if(complete_dialog.shown) if(completion_dialog.shown)
delayed_reparse_connection.disconnect(); delayed_reparse_connection.disconnect();
start_autocomplete(); start_autocomplete();
}); });
get_buffer()->signal_mark_set().connect([this](const Gtk::TextBuffer::iterator& iterator, const Glib::RefPtr<Gtk::TextBuffer::Mark>& mark){ get_buffer()->signal_mark_set().connect([this](const Gtk::TextBuffer::iterator& iterator, const Glib::RefPtr<Gtk::TextBuffer::Mark>& mark){
if(mark->get_name()=="insert") { if(mark->get_name()=="insert") {
autocomplete_cancel_starting=true; autocomplete_cancel_starting=true;
if(complete_dialog.shown) { if(completion_dialog.shown) {
complete_dialog.hide(); completion_dialog.hide();
} }
} }
}); });
signal_scroll_event().connect([this](GdkEventScroll* event){ signal_scroll_event().connect([this](GdkEventScroll* event){
if(complete_dialog.shown) if(completion_dialog.shown)
complete_dialog.hide(); completion_dialog.hide();
return false; return false;
}, false); }, false);
signal_key_release_event().connect([this](GdkEventKey* key){ signal_key_release_event().connect([this](GdkEventKey* key){
if(complete_dialog.shown) { if(completion_dialog.shown) {
if(complete_dialog.on_key_release(key)) if(completion_dialog.on_key_release(key))
return true; return true;
} }
@ -582,16 +582,16 @@ Source::ClangViewParse(file_path, project_path), complete_dialog(*this), autocom
bool Source::ClangViewAutocomplete::on_key_press_event(GdkEventKey *key) { bool Source::ClangViewAutocomplete::on_key_press_event(GdkEventKey *key) {
last_keyval=key->keyval; last_keyval=key->keyval;
if(complete_dialog.shown) { if(completion_dialog.shown) {
if(complete_dialog.on_key_press(key)) if(completion_dialog.on_key_press(key))
return true; return true;
} }
return ClangViewParse::on_key_press_event(key); return ClangViewParse::on_key_press_event(key);
} }
bool Source::ClangViewAutocomplete::on_focus_out_event(GdkEventFocus* event) { bool Source::ClangViewAutocomplete::on_focus_out_event(GdkEventFocus* event) {
if(complete_dialog.shown) { if(completion_dialog.shown) {
complete_dialog.hide(); completion_dialog.hide();
} }
return Source::ClangViewParse::on_focus_out_event(event); return Source::ClangViewParse::on_focus_out_event(event);
@ -613,7 +613,7 @@ void Source::ClangViewAutocomplete::start_autocomplete() {
prefix_mutex.lock(); prefix_mutex.lock();
prefix=sm[3].str(); prefix=sm[3].str();
prefix_mutex.unlock(); prefix_mutex.unlock();
if((prefix.size()==0 || prefix[0]<'0' || prefix[0]>'9') && !autocomplete_starting && !complete_dialog.shown) { if((prefix.size()==0 || prefix[0]<'0' || prefix[0]>'9') && !autocomplete_starting && !completion_dialog.shown) {
autocomplete(); autocomplete();
} }
else if(last_keyval=='.' && autocomplete_starting) else if(last_keyval=='.' && autocomplete_starting)
@ -623,13 +623,13 @@ void Source::ClangViewAutocomplete::start_autocomplete() {
prefix_mutex.lock(); prefix_mutex.lock();
prefix=sm[3].str(); prefix=sm[3].str();
prefix_mutex.unlock(); prefix_mutex.unlock();
if((prefix.size()==0 || prefix[0]<'0' || prefix[0]>'9') && !autocomplete_starting && !complete_dialog.shown) { if((prefix.size()==0 || prefix[0]<'0' || prefix[0]>'9') && !autocomplete_starting && !completion_dialog.shown) {
autocomplete(); autocomplete();
} }
} }
else else
autocomplete_cancel_starting=true; autocomplete_cancel_starting=true;
if(autocomplete_starting || complete_dialog.shown) if(autocomplete_starting || completion_dialog.shown)
delayed_reparse_connection.disconnect(); delayed_reparse_connection.disconnect();
} }
} }
@ -644,12 +644,12 @@ void Source::ClangViewAutocomplete::autocomplete() {
autocomplete_done_connection=autocomplete_done.connect([this, ac_data](){ autocomplete_done_connection=autocomplete_done.connect([this, ac_data](){
autocomplete_starting=false; autocomplete_starting=false;
if(!autocomplete_cancel_starting) { if(!autocomplete_cancel_starting) {
if(complete_dialog.start_mark) if(completion_dialog.start_mark)
get_buffer()->delete_mark(complete_dialog.start_mark); get_buffer()->delete_mark(completion_dialog.start_mark);
auto start_iter=get_buffer()->get_insert()->get_iter(); auto start_iter=get_buffer()->get_insert()->get_iter();
for(size_t c=0;c<prefix.size();c++) for(size_t c=0;c<prefix.size();c++)
start_iter--; start_iter--;
complete_dialog.start_mark=get_buffer()->create_mark(start_iter); completion_dialog.start_mark=get_buffer()->create_mark(start_iter);
std::map<std::string, std::pair<std::string, std::string> > rows; std::map<std::string, std::pair<std::string, std::string> > rows;
for (auto &data : *ac_data) { for (auto &data : *ac_data) {
@ -673,8 +673,8 @@ void Source::ClangViewAutocomplete::autocomplete() {
if (rows.empty()) { if (rows.empty()) {
rows["No suggestions found..."] = std::pair<std::string, std::string>(); rows["No suggestions found..."] = std::pair<std::string, std::string>();
} }
complete_dialog.rows=std::move(rows); completion_dialog.rows=std::move(rows);
complete_dialog.show(); completion_dialog.show();
} }
else else
start_autocomplete(); start_autocomplete();

2
juci/source.h

@ -120,7 +120,7 @@ public:
private: private:
void start_autocomplete(); void start_autocomplete();
void autocomplete(); void autocomplete();
CompleteDialog complete_dialog; CompletionDialog completion_dialog;
std::vector<Source::AutoCompleteData> get_autocomplete_suggestions(int line_number, int column, std::map<std::string, std::string>& buffer_map); std::vector<Source::AutoCompleteData> get_autocomplete_suggestions(int line_number, int column, std::map<std::string, std::string>& buffer_map);
Glib::Dispatcher autocomplete_done; Glib::Dispatcher autocomplete_done;
sigc::connection autocomplete_done_connection; sigc::connection autocomplete_done_connection;

Loading…
Cancel
Save