summaryrefslogtreecommitdiff
path: root/src/gui_kde.cc
diff options
context:
space:
mode:
Diffstat (limited to 'src/gui_kde.cc')
-rw-r--r--src/gui_kde.cc670
1 files changed, 0 insertions, 670 deletions
diff --git a/src/gui_kde.cc b/src/gui_kde.cc
deleted file mode 100644
index 4b88e98d4..000000000
--- a/src/gui_kde.cc
+++ /dev/null
@@ -1,670 +0,0 @@
-/* vi:set ts=8 sts=4 sw=4:
- *
- * 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. (URL currently doesn't work...)
- *
- * $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>
-#include "gui_kde_wid.h"
-
-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 , QSTR(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, QSTR(menu->name));
- parent->widget->insertItem(QSTR(menu->name), me, (long)me, idx);
- }
- else
- {
- me = new QPopupMenu(vmw->menuBar(), QSTR(menu->name));
- vmw->menuBar()->insertItem(QSTR(menu->name), me, (long)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,
- (long)menu, // id
- true,
- QSTR(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(QSTR(menu->name), (long)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((long)menu);
- return;
- }
-#endif
- if (menu->parent)
- menu->parent->widget->removeItem((long)menu);
- if (menu->widget)
- 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
- */
-
-/*
- * Convert the Vim-style filter specification 's' to the KDE-style
- * filter specification.
- * Vim-style: {label}\t{pattern1};{pattern2}\n
- * KDE-style: {pattern1} {pattern2}|{label}\n
- *
- * The newly constructed filter is returned in allocated memory and
- * must be freed by the calling program.
- */
- static char *
-convert_filter(char_u *s)
-{
- char *res;
- unsigned i;
- unsigned pattern_len;
- char *filter_label;
- char *filter_pattern;
-
- // The conversion generates a string of equal length to the original
- // pattern, so allocate enough memory to hold the original string.
- res = new char[STRLEN(s) + 1];
- s = vim_strsave(s);
- if (res != NULL && s != NULL)
- {
- // Make sure the first byte is a NUL so that strcat()
- // will append at the beginning of the string.
- res[0] = '\0';
- filter_label = strtok((char *) s, "\t");
- while (filter_label != NULL)
- {
- filter_pattern = strtok( 0L, "\n");
- if (filter_pattern != NULL)
- {
- pattern_len = (unsigned) STRLEN(filter_pattern);
- for (i = 0; i < pattern_len; ++i)
- if (filter_pattern[i] == ';')
- filter_pattern[i] = ' ';
-
- strcat(res, filter_pattern);
- strcat(res, "|");
- strcat(res, filter_label);
- strcat(res, "\n");
- }
- filter_label = strtok(0L, "\t");
- }
- }
- if (s)
- vim_free(s);
- return res;
-}
-
-/*
- * 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;
-
- filt_glob = convert_filter(filter);
-
- gui_mch_mousehide(FALSE);
-
- QString s;
- if (!saving)
- s = KFileDialog::getOpenFileName(QSTR(initdir), QSTR(filt_glob),
- vmw, QSTR(title));
- else
- s = KFileDialog::getSaveFileName();
-
- if (filt_glob)
- delete filt_glob;
-
- 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 */
- int
-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)
-{
- gui_mch_mousehide(FALSE);
- VimDialog vd(type, title, message, buttons, def_but,textfield);
- int ret = vd.exec();
- return ret;
-}//}}}
-
-
-#endif /* FEAT_GUI_DIALOG */
-
-#if defined(FEAT_MENU) || defined(PROTO)
- void
-gui_mch_show_popupmenu(vimmenu_T *menu)//{{{
-{
- menu->widget->popup(QCursor::pos());
-}//}}}
-
-/* TODO: use mouse_pos */
-void
-gui_make_popup (char_u *pathname, int mouse_pos)//{{{
-{
- vimmenu_T *menu = gui_find_menu(pathname);
-
- if (menu != NULL)
- menu->widget->popup(QCursor::pos());
-}//}}}
-#endif
-
-
-
-/* Find and Replace implementations */
- void
-gui_mch_find_dialog(exarg_T *eap)//{{{
-{
- // char_u* entry_text;
- //int exact_word=FALSE;
- // entry_text = get_find_dialog_text(eap->arg,&exact_word);
-
- vmw->finddlg->setCaseSensitive(true);
-
- /* 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);
-
- vmw->finddlg->show();
-}//}}}
-
- 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);
-
- /* if (entry_text!=NULL)
- * {
- 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");
-}//}}}