void document_manager_session_reopen(DocumentManager *docmg) { gphpedit_debug(DEBUG_DOC_MANAGER); if (!docmg) return ; DocumentManagerDetails *docmgdet = DOCUMENT_MANAGER_GET_PRIVATE(docmg); int focus_tab=-1; gboolean focus_this_one = FALSE; PreferencesManager *prefmg = preferences_manager_new(); GSList *files = get_preferences_manager_session_files(prefmg); if (g_slist_length (files)==0) { //session file exists but is empty //add a new untitled document_manager_add_new_document(docmg, TAB_FILE, NULL, 0); } else { GSList *walk; gchar *filename; for(walk = files; walk!= NULL; walk = g_slist_next(walk)) { filename = (gchar *)walk->data; /* filename contains possibly: file:///blah\n *file:///blah\n phphelp:function\n *phphelp:function\n preview:function\n *preview:function\n */ filename = g_strdelimit (filename, "\n", 0); if (filename[0]=='*') { filename++; focus_this_one = TRUE; } if (g_str_has_prefix(filename, "phphelp:")){ filename += 8; document_manager_add_new_document(docmg, TAB_HELP, filename, 0); } else if (g_str_has_prefix(filename, "preview:")){ filename += 8; document_manager_add_new_document(docmg, TAB_PREVIEW, filename, 0); } else { if (filename){ document_manager_switch_to_file_or_open(docmg, filename, 0); } } if (focus_this_one && (docmgdet->current_document)) { GtkWidget *document_widget; g_object_get(docmgdet->current_document, "editor_widget", &document_widget, NULL); focus_tab = gtk_notebook_page_num(GTK_NOTEBOOK(main_window.notebook_editor), document_widget); } focus_this_one=FALSE; } } gtk_notebook_set_current_page(GTK_NOTEBOOK(main_window.notebook_editor), focus_tab); g_object_unref(prefmg); }
void document_manager_switch_to_file_or_open(DocumentManager *docmg, gchar *filename, gint line_number) { gphpedit_debug(DEBUG_DOC_MANAGER); if (!docmg) return ; DocumentManagerDetails *docmgdet = DOCUMENT_MANAGER_GET_PRIVATE(docmg); Document *document; GSList *walk; /* need to check if filename is local before adding to the list */ filename = g_strdup(filename); for (walk = docmgdet->editors; walk!=NULL; walk = g_slist_next(walk)) { document = walk->data; gchar *docfilename; GFile *file; g_object_get(document, "GFile", &file, NULL); docfilename = g_file_get_uri(file); gchar *filename_uri = filename_get_uri(filename); if (g_strcmp0(docfilename, filename_uri)==0) { GtkWidget *document_widget; g_object_get(document, "editor_widget", &document_widget, NULL); gtk_notebook_set_current_page( GTK_NOTEBOOK(main_window.notebook_editor), gtk_notebook_page_num(GTK_NOTEBOOK(main_window.notebook_editor), document_widget)); documentable_goto_line(DOCUMENTABLE(docmgdet->current_document), line_number); g_free(docfilename); return ; } g_free(filename_uri); g_free(docfilename); } document_manager_add_new_document(docmg, TAB_FILE, filename, line_number); register_file_opened(filename); g_free(filename); return ; }
void document_manager_get_document_preview(DocumentManager *docmg) { gphpedit_debug(DEBUG_DOC_MANAGER); if (!docmg) return ; DocumentManagerDetails *docmgdet = DOCUMENT_MANAGER_GET_PRIVATE(docmg); gchar *filename = documentable_get_filename(DOCUMENTABLE(docmgdet->current_document)); document_manager_add_new_document(docmg, TAB_PREVIEW, filename, 0); g_free(filename); }
void document_manager_get_context_help(DocumentManager *docmg) { gphpedit_debug(DEBUG_DOC_MANAGER); if (!docmg) return ; DocumentManagerDetails *docmgdet = DOCUMENT_MANAGER_GET_PRIVATE(docmg); gchar *buffer = documentable_get_current_selected_text(DOCUMENTABLE(docmgdet->current_document)); if (buffer){ document_manager_add_new_document(docmg, TAB_HELP, buffer, 0); } }
void on_new1_activate(GtkWidget *widget) { // Create a new untitled tab document_manager_add_new_document(main_window.docmg, TAB_FILE, NULL, 0); }