#include "FuncStatus.h"
+#include <boost/function.hpp>
+
#include <string>
#include <vector>
class LyXDataSocket;
class LyXServerSocket;
class FuncRequest;
+namespace lyx {
+struct RGBColor;
+}
/// GUI interaction
namespace lyx_gui {
/// return a suitable monospaced font name (called from non-gui context too !)
std::string const typewriter_font_name();
-/// parse command line and do basic initialisation
-void parse_init(int & argc, char * argv[]);
-
/**
* set up GUI parameters. At this point lyxrc may
* be used.
* Start the main event loop, after executing the given
* batch commands, and loading the given documents
*/
-void start(std::string const & batch, std::vector<std::string> const & files);
+int start(std::string const & batch, std::vector<std::string> const & files,
+ unsigned int width, unsigned int height, int posx, int posy,
+ bool maximize);
+
+/**
+ * Enter the main event loop (\sa LyX::exec2)
+ */
+int exec(int & argc, char * argv[]);
/**
* Synchronise all pending events.
void sync_events();
/**
- * quit running LyX
+ * Quit running LyX. This may either quit directly or record the exit status
+ * and only stop the event loop.
*/
-void exit();
+void exit(int);
/**
* return the status flag for a given action. This can be used to tell
*/
FuncStatus getStatus(FuncRequest const & ev);
+/**
+ * Given col, fills r, g, b in the range 0-255.
+ * The function returns true if successful.
+ * It returns false on failure and sets r, g, b to 0.
+ */
+bool getRGBColor(LColor_color col, lyx::RGBColor & rgbcol);
+
/** Eg, passing LColor::black returns "000000",
* passing LColor::white returns "ffffff".
*/
bool font_available(LyXFont const & font);
/**
- * add a callback for I/O read notification
+ * add a callback for socket read notification
+ * @param fd socket descriptor (file/socket/etc)
*/
-void set_read_callback(int fd, LyXComm * comm);
-void set_datasocket_callback(LyXDataSocket *);
-void set_serversocket_callback(LyXServerSocket *);
+void register_socket_callback(int fd, boost::function<void()> func);
/**
* remove a I/O read callback
- * @param fd file descriptor
+ * @param fd socket descriptor (file/socket/etc)
*/
-void remove_read_callback(int fd);
-void remove_datasocket_callback(LyXDataSocket *);
-void remove_serversocket_callback(LyXServerSocket *);
+void unregister_socket_callback(int fd);
} // namespace lyx_gui