2004-09-06 17:44:46 +00:00
|
|
|
/* vi:set ts=8 sts=4 sw=4:
|
2004-06-30 16:16:41 +00:00
|
|
|
*
|
|
|
|
* VIM - Vi IMproved by Bram Moolenaar
|
|
|
|
*
|
|
|
|
* Do ":help uganda" in Vim to read copying and usage conditions.
|
|
|
|
* Do ":help credits" in Vim to see a list of people who contributed.
|
|
|
|
*/
|
|
|
|
|
|
|
|
/*
|
|
|
|
* Porting to KDE(2) was done by
|
|
|
|
*
|
|
|
|
* (C) 2000 by Thomas Capricelli <orzel@freehackers.org>
|
|
|
|
*
|
|
|
|
* Please visit http://freehackers.org/kvim for other vim- or
|
|
|
|
* kde-related coding.
|
|
|
|
*
|
|
|
|
* $Id$
|
|
|
|
*
|
|
|
|
*/
|
|
|
|
#include <assert.h>
|
|
|
|
#include <errno.h>
|
|
|
|
#include <string.h>
|
|
|
|
#include <kmenubar.h>
|
|
|
|
#include <kfiledialog.h>
|
|
|
|
#include <kiconloader.h>
|
|
|
|
|
|
|
|
#include <qscrollbar.h>
|
|
|
|
#include <qcursor.h>
|
|
|
|
#include <qmessagebox.h>
|
|
|
|
#include <qiconset.h>
|
|
|
|
#include <qtextcodec.h>
|
2004-07-26 12:53:41 +00:00
|
|
|
#include "gui_kde_wid.h"
|
2004-06-30 16:16:41 +00:00
|
|
|
|
|
|
|
extern "C" {
|
|
|
|
#include "vim.h"
|
|
|
|
}
|
|
|
|
|
|
|
|
#undef dbf
|
|
|
|
#undef db
|
|
|
|
#undef mputs
|
|
|
|
|
|
|
|
#if 1
|
|
|
|
#define dbf( format, args... ) { printf( "%s" " : " format "\n" , __FUNCTION__ , ## args ); fflush(stdout); }
|
|
|
|
#define db() { printf( "%s\n", __FUNCTION__ );fflush(stdout); }
|
|
|
|
#else
|
|
|
|
#define dbf(format, args... )
|
|
|
|
#define db()
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
|
|
#ifdef FEAT_TOOLBAR
|
|
|
|
#ifndef FEAT_KDETOOLBAR
|
|
|
|
/*
|
|
|
|
* Icons used by the toolbar code.
|
|
|
|
*///{{{
|
|
|
|
#include "../pixmaps/tb_new.xpm"
|
|
|
|
#include "../pixmaps/tb_open.xpm"
|
|
|
|
#include "../pixmaps/tb_close.xpm"
|
|
|
|
#include "../pixmaps/tb_save.xpm"
|
|
|
|
#include "../pixmaps/tb_print.xpm"
|
|
|
|
#include "../pixmaps/tb_cut.xpm"
|
|
|
|
#include "../pixmaps/tb_copy.xpm"
|
|
|
|
#include "../pixmaps/tb_paste.xpm"
|
|
|
|
#include "../pixmaps/tb_find.xpm"
|
|
|
|
#include "../pixmaps/tb_find_next.xpm"
|
|
|
|
#include "../pixmaps/tb_find_prev.xpm"
|
|
|
|
#include "../pixmaps/tb_find_help.xpm"
|
|
|
|
#include "../pixmaps/tb_exit.xpm"
|
|
|
|
#include "../pixmaps/tb_undo.xpm"
|
|
|
|
#include "../pixmaps/tb_redo.xpm"
|
|
|
|
#include "../pixmaps/tb_help.xpm"
|
|
|
|
#include "../pixmaps/tb_macro.xpm"
|
|
|
|
#include "../pixmaps/tb_make.xpm"
|
|
|
|
#include "../pixmaps/tb_save_all.xpm"
|
|
|
|
#include "../pixmaps/tb_jump.xpm"
|
|
|
|
#include "../pixmaps/tb_ctags.xpm"
|
|
|
|
#include "../pixmaps/tb_load_session.xpm"
|
|
|
|
#include "../pixmaps/tb_save_session.xpm"
|
|
|
|
#include "../pixmaps/tb_new_session.xpm"
|
|
|
|
#include "../pixmaps/tb_blank.xpm"
|
|
|
|
#include "../pixmaps/tb_maximize.xpm"
|
|
|
|
#include "../pixmaps/tb_split.xpm"
|
|
|
|
#include "../pixmaps/tb_minimize.xpm"
|
|
|
|
#include "../pixmaps/tb_shell.xpm"
|
|
|
|
#include "../pixmaps/tb_replace.xpm"
|
|
|
|
#include "../pixmaps/tb_vsplit.xpm"
|
|
|
|
#include "../pixmaps/tb_maxwidth.xpm"
|
|
|
|
#include "../pixmaps/tb_minwidth.xpm"
|
|
|
|
//}}}
|
|
|
|
/*
|
|
|
|
* These are the pixmaps used for the default buttons.
|
|
|
|
* Order must exactly match toolbar_names[] in menu.c!
|
|
|
|
*///{{{
|
|
|
|
static char **(built_in_pixmaps[]) =
|
|
|
|
{
|
|
|
|
tb_new_xpm,
|
|
|
|
tb_open_xpm,
|
|
|
|
tb_save_xpm,
|
|
|
|
tb_undo_xpm,
|
|
|
|
tb_redo_xpm,
|
|
|
|
tb_cut_xpm,
|
|
|
|
tb_copy_xpm,
|
|
|
|
tb_paste_xpm,
|
|
|
|
tb_print_xpm,
|
|
|
|
tb_help_xpm,
|
|
|
|
tb_find_xpm,
|
|
|
|
tb_save_all_xpm,
|
|
|
|
tb_save_session_xpm,
|
|
|
|
tb_new_session_xpm,
|
|
|
|
tb_load_session_xpm,
|
|
|
|
tb_macro_xpm,
|
|
|
|
tb_replace_xpm,
|
|
|
|
tb_close_xpm,
|
|
|
|
tb_maximize_xpm,
|
|
|
|
tb_minimize_xpm,
|
|
|
|
tb_split_xpm,
|
|
|
|
tb_shell_xpm,
|
|
|
|
tb_find_prev_xpm,
|
|
|
|
tb_find_next_xpm,
|
|
|
|
tb_find_help_xpm,
|
|
|
|
tb_make_xpm,
|
|
|
|
tb_jump_xpm,
|
|
|
|
tb_ctags_xpm,
|
|
|
|
tb_vsplit_xpm,
|
|
|
|
tb_maxwidth_xpm,
|
|
|
|
tb_minwidth_xpm,
|
|
|
|
tb_exit_xpm
|
|
|
|
};//}}}
|
|
|
|
#else
|
|
|
|
const char *kdeicons[] = {
|
|
|
|
"filenew",
|
|
|
|
"fileopen",
|
|
|
|
"filesave",
|
|
|
|
"undo",
|
|
|
|
"redo",
|
|
|
|
"editcut",
|
|
|
|
"editcopy",
|
|
|
|
"editpaste",
|
|
|
|
"fileprint",
|
|
|
|
"contents2",
|
|
|
|
"filefind",
|
|
|
|
"save_all",
|
|
|
|
"fileexport",
|
|
|
|
"filenew",
|
|
|
|
"fileimport",
|
|
|
|
"run",
|
|
|
|
"edit",
|
|
|
|
"fileclose",
|
|
|
|
"",
|
|
|
|
"",
|
|
|
|
"split",
|
|
|
|
"openterm",
|
|
|
|
"previous",
|
|
|
|
"next",
|
|
|
|
"help",
|
|
|
|
"make",
|
|
|
|
"goto",
|
|
|
|
"run",
|
|
|
|
"vsplit",
|
|
|
|
"maxwidth",
|
|
|
|
"minwidth",
|
|
|
|
"quit"
|
|
|
|
};
|
|
|
|
#endif
|
|
|
|
/*
|
|
|
|
* creates a blank pixmap using tb_blank
|
|
|
|
*/
|
|
|
|
QPixmap
|
|
|
|
pixmap_create_from_xpm(char **xpm)//{{{
|
|
|
|
{
|
|
|
|
return(QPixmap((const char **)xpm));
|
|
|
|
}//}}}
|
|
|
|
|
|
|
|
/*
|
|
|
|
* creates a pixmap by using a built-in number
|
|
|
|
*/
|
|
|
|
QPixmap
|
|
|
|
pixmap_create_by_num(int pixmap_num)//{{{
|
|
|
|
{
|
|
|
|
#ifdef FEAT_KDETOOLBAR
|
|
|
|
if (pixmap_num >= 0 && (unsigned)pixmap_num < (sizeof(kdeicons)
|
|
|
|
/ sizeof(kdeicons[0])) - 1) {
|
|
|
|
|
|
|
|
KIconLoader *il = kapp->iconLoader(); //new KIconLoader();
|
|
|
|
QString icon;
|
|
|
|
icon=QString(kdeicons[pixmap_num]);
|
|
|
|
return il->loadIcon(icon,KIcon::MainToolbar);
|
|
|
|
}
|
|
|
|
return QPixmap();
|
|
|
|
#else
|
|
|
|
if (pixmap_num >= 0 && (unsigned)pixmap_num < (sizeof(built_in_pixmaps)
|
|
|
|
/ sizeof(built_in_pixmaps[0])) - 1)
|
|
|
|
return pixmap_create_from_xpm(built_in_pixmaps[pixmap_num]);
|
|
|
|
else return QPixmap();
|
|
|
|
#endif
|
|
|
|
}//}}}
|
|
|
|
|
|
|
|
/*
|
|
|
|
* Creates a pixmap by using the pixmap "name" found in 'runtimepath'/bitmaps/
|
|
|
|
*/
|
|
|
|
QPixmap
|
|
|
|
pixmap_create_by_dir(char_u *name)//{{{
|
|
|
|
{
|
|
|
|
char_u full_pathname[MAXPATHL + 1];
|
|
|
|
|
|
|
|
if (gui_find_bitmap(name, full_pathname, "xpm") == OK) {
|
|
|
|
return QPixmap((const char *)full_pathname);
|
|
|
|
}
|
|
|
|
else return QPixmap();
|
|
|
|
}//}}}
|
|
|
|
|
|
|
|
|
|
|
|
QPixmap
|
|
|
|
pixmap_create_from_file(char_u *file)
|
|
|
|
{
|
|
|
|
return QPixmap((const char*)file);
|
|
|
|
}
|
|
|
|
#endif
|
|
|
|
|
|
|
|
void
|
|
|
|
gui_mch_add_menu(vimmenu_T * menu, int idx)//{{{
|
|
|
|
{
|
|
|
|
#ifdef FEAT_MENU
|
|
|
|
QPopupMenu *me;
|
|
|
|
vimmenu_T *parent = menu->parent;
|
|
|
|
|
|
|
|
if (menu_is_popup(menu->name)) {
|
|
|
|
menu->widget = new QPopupMenu(vmw , (const char *) menu->name);
|
|
|
|
QObject::connect( menu->widget, SIGNAL(activated(int)), vmw, SLOT(menu_activated(int)) );
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
if (!menu_is_menubar(menu->name))
|
|
|
|
return;
|
|
|
|
|
|
|
|
if (parent) {
|
|
|
|
idx++; // for tearoffs to be first in menus
|
|
|
|
me = new QPopupMenu(parent->widget, (const char *) menu->name);
|
|
|
|
parent->widget->insertItem( QString((const char *)menu->name), me, (int)me, idx);
|
|
|
|
} else {
|
|
|
|
me = new QPopupMenu(vmw->menuBar() , (const char *) menu->name);
|
|
|
|
vmw->menuBar()->insertItem( QString((const char *)menu->name), me , (int) me, idx);
|
|
|
|
}
|
|
|
|
|
|
|
|
me->setCaption((const char*)( menu->dname ));
|
|
|
|
if (vmw->have_tearoff) me->insertTearOffHandle(0,0);
|
|
|
|
QObject::connect( me, SIGNAL(activated(int)), vmw, SLOT(menu_activated(int)) );
|
|
|
|
menu->widget = me;
|
|
|
|
#endif
|
|
|
|
}//}}}
|
|
|
|
|
|
|
|
|
|
|
|
void
|
|
|
|
gui_mch_add_menu_item(vimmenu_T * menu, int idx)//{{{
|
|
|
|
{
|
|
|
|
#ifdef FEAT_MENU
|
|
|
|
vimmenu_T *parent = menu->parent;
|
|
|
|
#ifdef FEAT_TOOLBAR
|
|
|
|
if (menu_is_toolbar(parent->name)) {
|
|
|
|
QPixmap pix;
|
|
|
|
if ( menu_is_separator(menu->name) )
|
|
|
|
{
|
|
|
|
vmw->toolBar()->insertSeparator();
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
if (menu->iconfile != NULL) {
|
|
|
|
pix = pixmap_create_from_file(menu->iconfile);
|
|
|
|
}
|
|
|
|
if (!menu->icon_builtin) {
|
|
|
|
pix = pixmap_create_by_dir(menu->name);
|
|
|
|
}
|
|
|
|
if (pix.isNull() && menu->iconidx >= 0) {
|
|
|
|
pix = pixmap_create_by_num(menu->iconidx);
|
|
|
|
}
|
|
|
|
#ifndef FEAT_KDETOOLBAR
|
|
|
|
if (pix.isNull()) {
|
|
|
|
pix = pixmap_create_from_xpm(tb_blank_xpm);
|
|
|
|
}
|
|
|
|
#endif
|
|
|
|
if (pix.isNull()) return; // failed
|
|
|
|
vmw->toolBar()->insertButton (
|
|
|
|
pix,
|
|
|
|
(int) menu , // id
|
|
|
|
true,
|
|
|
|
(char *) (menu->strings[MENU_INDEX_TIP]) , // tooltip or text
|
|
|
|
idx
|
|
|
|
);
|
|
|
|
menu->parent=parent;
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
#endif // FEAT_TOOLBAR
|
|
|
|
|
|
|
|
idx++;
|
|
|
|
if ( menu_is_separator(menu->name) ) {
|
|
|
|
parent->widget->insertSeparator();
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
parent->widget->insertItem(QString((const char *)menu->name), (int)menu, idx );
|
|
|
|
#endif
|
|
|
|
}//}}}
|
|
|
|
|
|
|
|
|
|
|
|
void
|
|
|
|
gui_mch_set_text_area_pos(int x, int y, int w, int h)//{{{
|
|
|
|
{
|
|
|
|
int X = 0;
|
|
|
|
int Y = 0;
|
|
|
|
if (vmw->menuBar()->isVisible() && vmw->menuBar()->isEnabled()
|
|
|
|
#if QT_VERSION>=300
|
|
|
|
&& !vmw->menuBar()->isTopLevelMenu()
|
|
|
|
#endif
|
|
|
|
)
|
|
|
|
Y += vmw->menuBar()->height();
|
|
|
|
#ifdef FEAT_TOOLBAR
|
|
|
|
if (vmw->toolBar()->isVisible() && vmw->toolBar()->isEnabled() &&
|
|
|
|
vmw->toolBar()->barPos()==KToolBar::Top)
|
|
|
|
Y += vmw->toolBar()->height();
|
|
|
|
|
|
|
|
if (vmw->toolBar()->isVisible() && vmw->toolBar()->isEnabled() &&
|
|
|
|
vmw->toolBar()->barPos()==KToolBar::Left)
|
|
|
|
X += vmw->toolBar()->width();
|
|
|
|
#endif // FEAT_TOOLBAR
|
|
|
|
|
|
|
|
gui.w->setGeometry(x+X,y+Y,w,h);
|
|
|
|
}//}}}
|
|
|
|
|
|
|
|
|
|
|
|
#if defined(FEAT_MENU) || defined(PROTO)
|
|
|
|
/*
|
|
|
|
* Enable or disable mnemonics for the toplevel menus.
|
|
|
|
*/
|
|
|
|
void
|
|
|
|
gui_gtk_set_mnemonics(int enable)//{{{ // TO BE REMOVED
|
|
|
|
{
|
|
|
|
}//}}}
|
|
|
|
|
|
|
|
void
|
|
|
|
toggle_tearoffs(vimmenu_T *menu, int enable)//{{{
|
|
|
|
{
|
|
|
|
while (menu != NULL) {
|
|
|
|
if (!menu_is_popup(menu->name)) {
|
|
|
|
if (menu->widget != 0) {
|
|
|
|
if (enable) menu->widget->insertTearOffHandle(0,0);
|
|
|
|
else menu->widget->removeItem(0);
|
|
|
|
}
|
|
|
|
toggle_tearoffs(menu->children, enable);
|
|
|
|
}
|
|
|
|
menu = menu->next;
|
|
|
|
}
|
|
|
|
}//}}}
|
|
|
|
|
|
|
|
void
|
|
|
|
gui_mch_toggle_tearoffs(int enable)//{{{
|
|
|
|
{
|
|
|
|
vmw->have_tearoff=enable;
|
|
|
|
toggle_tearoffs(root_menu, enable);
|
|
|
|
}//}}}
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
|
|
#if defined(FEAT_MENU) || defined(PROTO)
|
|
|
|
/*
|
|
|
|
* Destroy the machine specific menu widget.
|
|
|
|
*/
|
|
|
|
void
|
|
|
|
gui_mch_destroy_menu(vimmenu_T * menu)//{{{
|
|
|
|
{
|
|
|
|
#ifdef FEAT_TOOLBAR
|
|
|
|
if (menu->parent && menu_is_toolbar(menu->parent->name)) {
|
|
|
|
vmw->toolBar()->removeItem( (int) menu );
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
#endif
|
2004-09-06 17:44:46 +00:00
|
|
|
if (menu->parent)
|
|
|
|
menu->parent->widget->removeItem((int)menu);
|
|
|
|
if (menu->widget)
|
2004-06-30 16:16:41 +00:00
|
|
|
delete menu->widget;
|
|
|
|
menu->widget = 0;
|
|
|
|
}//}}}
|
|
|
|
#endif /* FEAT_MENU */
|
|
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
* Scrollbar stuff.
|
|
|
|
*/
|
|
|
|
|
|
|
|
void
|
|
|
|
gui_mch_set_scrollbar_thumb(scrollbar_T * sb, long val, long size, long max)//{{{
|
|
|
|
{
|
|
|
|
if (!sb->w) return;
|
|
|
|
|
|
|
|
sb->w->setRange(0, max+1-size);
|
|
|
|
sb->w->setValue(val);
|
|
|
|
|
|
|
|
sb->w->setLineStep(1);
|
|
|
|
sb->w->setPageStep(size);
|
|
|
|
}//}}}
|
|
|
|
|
|
|
|
void
|
|
|
|
gui_mch_set_scrollbar_pos(scrollbar_T * sb, int x, int y, int w, int h)//{{{
|
|
|
|
{
|
|
|
|
if (!sb->w) return;
|
|
|
|
//we add the menubar and toolbar height/width
|
|
|
|
int X = 0;
|
|
|
|
int Y = 0;
|
|
|
|
|
|
|
|
if (vmw->menuBar()->isVisible() && vmw->menuBar()->isEnabled()
|
|
|
|
#if QT_VERSION>=300
|
|
|
|
&& !vmw->menuBar()->isTopLevelMenu()
|
|
|
|
#endif
|
|
|
|
)
|
|
|
|
Y += vmw->menuBar()->height();
|
|
|
|
#ifdef FEAT_TOOLBAR
|
|
|
|
if (vmw->toolBar()->isVisible() && vmw->toolBar()->isEnabled() &&
|
|
|
|
vmw->toolBar()->barPos()==KToolBar::Top)
|
|
|
|
Y += vmw->toolBar()->height();
|
|
|
|
|
|
|
|
if (vmw->toolBar()->isVisible() && vmw->toolBar()->isEnabled() &&
|
|
|
|
vmw->toolBar()->barPos()==KToolBar::Left)
|
|
|
|
X += vmw->toolBar()->width();
|
|
|
|
#endif //FEAT_TOOLBAR
|
|
|
|
if (sb->w->orientation() == Qt::Vertical) {
|
|
|
|
bool leftscroll=gui.which_scrollbars[SBAR_LEFT];
|
|
|
|
bool rightscroll=gui.which_scrollbars[SBAR_RIGHT];
|
|
|
|
if (x<20) leftscroll=true;
|
|
|
|
else rightscroll=true;
|
|
|
|
if (x<20) sb->w->setGeometry(X,y+Y,w,h);
|
|
|
|
else sb->w->setGeometry(vmw->width()-w-1+X, y+Y,w,h);
|
|
|
|
} else {
|
|
|
|
sb->w->setGeometry(x+X,y+Y,w,h);
|
|
|
|
}
|
|
|
|
}//}}}
|
|
|
|
|
|
|
|
/* SBAR_VERT or SBAR_HORIZ */
|
|
|
|
void
|
|
|
|
gui_mch_create_scrollbar(scrollbar_T * sb, int orient)//{{{
|
|
|
|
{
|
|
|
|
sbpool->create(sb,orient);
|
|
|
|
if (orient==SBAR_VERT)
|
|
|
|
gui.scrollbar_width = sb->w->sizeHint().width();
|
|
|
|
else
|
|
|
|
gui.scrollbar_height = sb->w->sizeHint().height();
|
|
|
|
}//}}}
|
|
|
|
|
|
|
|
void
|
|
|
|
gui_mch_destroy_scrollbar(scrollbar_T * sb)//{{{
|
|
|
|
{
|
|
|
|
sbpool->destroy(sb);
|
|
|
|
}//}}}
|
|
|
|
|
|
|
|
#if defined(FEAT_BROWSE) || defined(PROTO)
|
|
|
|
/*
|
|
|
|
* Implementation of the file selector related stuff
|
|
|
|
*/
|
|
|
|
|
|
|
|
/*
|
|
|
|
* Put up a file requester.
|
|
|
|
* Returns the selected name in allocated memory, or NULL for Cancel.
|
|
|
|
* saving, select file to write
|
|
|
|
* title title for the window
|
|
|
|
* dflt default name
|
|
|
|
* ext not used (extension added)
|
|
|
|
* initdir initial directory, NULL for current dir
|
|
|
|
* filter not used (file name filter)
|
|
|
|
*/
|
|
|
|
/*ARGSUSED*/
|
|
|
|
char_u *
|
|
|
|
gui_mch_browse(int saving,//{{{
|
|
|
|
char_u * title,
|
|
|
|
char_u * dflt,
|
|
|
|
char_u * ext,
|
|
|
|
char_u * initdir,
|
|
|
|
char_u * filter)
|
|
|
|
{
|
|
|
|
char * filt_glob;
|
2004-09-06 17:44:46 +00:00
|
|
|
|
|
|
|
if (filter != (char_u *) 0x0 )
|
|
|
|
{
|
2004-06-30 16:16:41 +00:00
|
|
|
filter = vim_strsave(filter);
|
|
|
|
strtok((char *) filter, "(");
|
|
|
|
filt_glob = strtok(0L, ")");
|
2004-09-06 17:44:46 +00:00
|
|
|
}
|
|
|
|
else
|
2004-06-30 16:16:41 +00:00
|
|
|
filt_glob = (char *) filter;
|
2004-09-06 17:44:46 +00:00
|
|
|
|
2004-06-30 16:16:41 +00:00
|
|
|
gui_mch_mousehide(FALSE);
|
|
|
|
|
|
|
|
QString s;
|
2004-09-06 17:44:46 +00:00
|
|
|
if (!saving)
|
2004-06-30 16:16:41 +00:00
|
|
|
s = KFileDialog::getOpenFileName( (char *) initdir, (char *) filt_glob, vmw, (char *) title );
|
|
|
|
else
|
|
|
|
s = KFileDialog::getSaveFileName( );
|
2004-09-06 17:44:46 +00:00
|
|
|
|
2004-06-30 16:16:41 +00:00
|
|
|
if (filter)
|
|
|
|
vim_free(filter);
|
|
|
|
|
|
|
|
if (s.isNull())
|
|
|
|
return NULL;
|
|
|
|
QCString unistring = vmw->codec->fromUnicode(s);
|
|
|
|
char_u * s2 = (char_u *)(const char*)unistring;
|
|
|
|
if (s2)
|
|
|
|
s2 = vim_strsave( s2 );
|
|
|
|
|
|
|
|
return s2;
|
|
|
|
}//}}}
|
|
|
|
|
|
|
|
#endif /* FEAT_BROWSE */
|
|
|
|
|
|
|
|
#ifdef FEAT_GUI_DIALOG
|
|
|
|
|
|
|
|
/* ARGSUSED */
|
2004-09-06 17:44:46 +00:00
|
|
|
int
|
2004-06-30 16:16:41 +00:00
|
|
|
gui_mch_dialog(int type, /* type of dialog *///{{{
|
|
|
|
char_u * title, /* title of dialog */
|
|
|
|
char_u * message, /* message text */
|
|
|
|
char_u * buttons, /* names of buttons */
|
|
|
|
int def_but, /* default button */
|
|
|
|
char_u *textfield)
|
|
|
|
{
|
2004-09-06 17:44:46 +00:00
|
|
|
gui_mch_mousehide(FALSE);
|
|
|
|
VimDialog vd(type, title, message, buttons, def_but,textfield);
|
|
|
|
int ret = vd.exec();
|
|
|
|
return ret;
|
2004-06-30 16:16:41 +00:00
|
|
|
}//}}}
|
|
|
|
|
|
|
|
|
|
|
|
#endif /* FEAT_GUI_DIALOG */
|
|
|
|
|
|
|
|
#if defined(FEAT_MENU) || defined(PROTO)
|
2004-09-06 17:44:46 +00:00
|
|
|
void
|
2004-06-30 16:16:41 +00:00
|
|
|
gui_mch_show_popupmenu(vimmenu_T * menu)//{{{
|
|
|
|
{
|
2004-09-06 17:44:46 +00:00
|
|
|
menu->widget->popup(QCursor::pos());
|
2004-06-30 16:16:41 +00:00
|
|
|
}//}}}
|
|
|
|
|
|
|
|
void
|
2004-09-06 17:44:46 +00:00
|
|
|
gui_make_popup (char_u *pathname)//{{{
|
|
|
|
{
|
|
|
|
vimmenu_T *menu = gui_find_menu(pathname);
|
2004-06-30 16:16:41 +00:00
|
|
|
|
2004-09-06 17:44:46 +00:00
|
|
|
if (menu != NULL)
|
|
|
|
menu->widget->popup(QCursor::pos());
|
2004-06-30 16:16:41 +00:00
|
|
|
}//}}}
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/* Find and Replace implementations */
|
|
|
|
void
|
|
|
|
gui_mch_find_dialog(exarg_T * eap)//{{{
|
|
|
|
{
|
2004-09-06 17:44:46 +00:00
|
|
|
// char_u* entry_text;
|
|
|
|
//int exact_word=FALSE;
|
|
|
|
// entry_text = get_find_dialog_text(eap->arg,&exact_word);
|
2004-06-30 16:16:41 +00:00
|
|
|
|
2004-09-06 17:44:46 +00:00
|
|
|
vmw->finddlg->setCaseSensitive(true);
|
2004-06-30 16:16:41 +00:00
|
|
|
|
2004-09-06 17:44:46 +00:00
|
|
|
/* if (entry_text!=NULL) {
|
|
|
|
vmw->finddlg->setText(QString((char*)entry_text));
|
|
|
|
// exact match should go there, hopefully KDE old KEdFind/KEdReplace will be replaced in KDE 4 as pple wanted KDE 3's Find/Replace to be kept
|
|
|
|
}*/ // Don't use it, KDE keeps old search in memory and vim give \\Csearch, which is difficult to handle
|
|
|
|
// vim_free(entry_text);
|
2004-06-30 16:16:41 +00:00
|
|
|
|
2004-09-06 17:44:46 +00:00
|
|
|
vmw->finddlg->show();
|
2004-06-30 16:16:41 +00:00
|
|
|
}//}}}
|
|
|
|
|
|
|
|
void
|
|
|
|
gui_mch_replace_dialog(exarg_T * eap)//{{{
|
|
|
|
{
|
|
|
|
// char_u* entry_text;
|
|
|
|
//int exact_word=FALSE;
|
|
|
|
|
|
|
|
// entry_text = get_find_dialog_text(eap->arg,&exact_word);
|
|
|
|
|
2004-09-06 17:44:46 +00:00
|
|
|
/* if (entry_text!=NULL) {
|
2004-06-30 16:16:41 +00:00
|
|
|
vmw->repldlg->setText(QString((char*)entry_text));
|
|
|
|
// exact match should go there, hopefully KDE old KEdFind/KEdReplace will be replaced in KDE 4 as pple wanted KDE 3's Find/Replace to be kept
|
|
|
|
}*/
|
|
|
|
//vim_free(entry_text);
|
|
|
|
|
|
|
|
vmw->repldlg->show();
|
|
|
|
}//}}}
|
|
|
|
|
|
|
|
void
|
|
|
|
ex_helpfind(exarg_T *eap)//{{{
|
|
|
|
{
|
|
|
|
do_cmdline_cmd((char_u *)"emenu ToolBar.FindHelp");
|
|
|
|
}//}}}
|