lyx_mirror/src/frontends/qt4/qt_helpers.h

152 lines
4.3 KiB
C
Raw Normal View History

// -*- C++ -*-
/**
* \file qt_helpers.h
* This file is part of LyX, the document processor.
* Licence details can be found in the file COPYING.
*
* \author Dekel Tsur
* \author Richard Heck
*
* Full author contact details are available in file CREDITS.
*/
#ifndef QTHELPERS_H
#define QTHELPERS_H
#include "Length.h"
Make libQtCore a support library like boost and implement encoding conversion from/to the local 8bit encoding with it. Only the autotools build system is updated, scons and cmake users need to add qt4 cpp flags when compiling libsupport, and link libsupport against libQtCore. * src/frontends/qt4/qt_helpers.[Ch] (toqstr, qchar_to_ucs4, ucs4_to_qchar, ucs4_to_qstring, qstring_to_ucs4, fromqstr): Move these qstring conversion functions from here ... * src/support/qstring_helpers.[Ch] ... to these new files * src/support/docstring.[Ch] (from_local8bit): new conversion function from local 8bit encoding to ucs4 (to_local8bit): new conversion function from ucs4 to local 8bit encoding to ucs4 (to_local8bit_failure): exception that is thrown by to_local8bit if the argument cannot be converted to the local encoding * src/support/filename.C (FileName::toFilesystemEncoding): implement with the help of QFile * src/support/Makefile.am: Add new files, qt4 cpp flags and link against libQtCore * src/client/client.C: Convert commandline input from local encoding to ucs4. Convert stuff that is sent to to the server to utf8, because LyX interprets it as utf8 on the other end of the pipe. * src/lyx_main.C (LyX::exec): convert commandline input from local encoding to utf8 (LyX::init): ditto (LyX::easyParse): ditto * development/scons/scons_manifest.py: Add new files * config/qt4.m4: Define new variables QT4_CORE_INCLUDES, QT4_CORE_LDFLAGS and QT4_CORE_LIB git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@16257 a592a061-630c-0410-9148-cb99ea01b6c8
2006-12-12 20:19:46 +00:00
#include "support/qstring_helpers.h"
#include "support/strfwd.h"
#include <vector>
class QComboBox;
class QLineEdit;
class QCheckBox;
class QString;
class QWidget;
class LengthCombo;
namespace lyx {
namespace support { class FileFilterList; }
namespace frontend {
/// method to get a Length from widgets (LengthCombo)
std::string widgetsToLength(QLineEdit const * input, LengthCombo const * combo);
/// method to get a Length from widgets (QComboBox)
Length widgetsToLength(QLineEdit const * input, QComboBox const * combo);
//FIXME It would be nice if defaultUnit were a default argument
/// method to set widgets from a Length
void lengthToWidgets(QLineEdit * input, LengthCombo * combo,
Length const & len, Length::UNIT default_unit);
/// method to set widgets from a string
void lengthToWidgets(QLineEdit * input, LengthCombo * combo,
std::string const & len, Length::UNIT default_unit);
/// method to set widgets from a Length with optional "auto" if zero
void lengthAutoToWidgets(QLineEdit * input, LengthCombo * combo,
Length const & len, Length::UNIT defaultUnit);
/// colors a widget red if invalid
void setValid(QWidget * widget, bool valid);
} // namespace frontend
/**
* qt_ - i18nize string and convert to QString
*
* Use this in qt4/ instead of _()
*/
QString const qt_(char const * str, const char * comment = 0);
/**
* qt_ - i18nize string and convert to QString
*
* Use this in qt4/ instead of _()
*/
QString const qt_(std::string const & str);
///
typedef std::pair<docstring, std::string> LanguagePair;
/** If the caller is the character dialog, add "No change" and "Reset"
* to the vector.
*/
std::vector<LanguagePair> const getLanguageData(bool character_dlg);
/** Launch a file dialog and return the chosen file.
filename: a suggested filename.
title: the title of the dialog.
pattern: *.ps etc.
dir1 = (name, dir), dir2 = (name, dir): extra buttons on the dialog.
*/
docstring browseFile(docstring const & filename,
docstring const & title,
support::FileFilterList const & filters,
bool save = false,
docstring const & label1 = docstring(),
docstring const & dir1 = docstring(),
docstring const & label2 = docstring(),
docstring const & dir2 = docstring());
/** Wrapper around browseFile which tries to provide a filename
relative to relpath. If the relative path is of the form "foo.txt"
or "bar/foo.txt", then it is returned as relative. OTOH, if it is
of the form "../baz/foo.txt", an absolute path is returned. This is
intended to be useful for insets which encapsulate files/
*/
docstring browseRelFile(docstring const & filename,
docstring const & refpath,
docstring const & title,
support::FileFilterList const & filters,
bool save = false,
docstring const & label1 = docstring(),
docstring const & dir1 = docstring(),
docstring const & label2 = docstring(),
docstring const & dir2 = docstring());
/** Wrapper around browseFile which tries to provide a filename
* relative to the user or system directory. The dir, name and ext
* parameters have the same meaning as in the
* support::LibFileSearch function.
*/
docstring browseLibFile(docstring const & dir,
docstring const & name,
docstring const & ext,
docstring const & title,
support::FileFilterList const & filters);
/** Launch a file dialog and return the chosen directory.
pathname: a suggested pathname.
title: the title of the dialog.
dir1 = (name, dir), dir2 = (name, dir): extra buttons on the dialog.
*/
docstring browseDir(docstring const & pathname,
docstring const & title,
docstring const & label1 = docstring(),
docstring const & dir1 = docstring(),
docstring const & label2 = docstring(),
docstring const & dir2 = docstring());
/** Build filelists of all availabe bst/cls/sty-files. Done through
* kpsewhich and an external script, saved in *Files.lst.
*/
void rescanTexStyles();
/** Fill \c contents from one of the three texfiles.
* Each entry in the file list is returned as a name_with_path
*/
void getTexFileList(std::string const & filename, std::vector<std::string> & contents);
} // namespace lyx
#endif // QTHELPERS_H