Remove gtk/atk dependency by using fltk instead.
parent
ea32c0fba2
commit
cc5f95c229
|
|
@ -3,6 +3,62 @@
|
|||
<map>
|
||||
<key>installables</key>
|
||||
<map>
|
||||
<key>glib</key>
|
||||
<map>
|
||||
<key>copyright</key>
|
||||
<string>Copyright (C) glib project</string>
|
||||
<key>license</key>
|
||||
<string>LGPL</string>
|
||||
<key>license_file</key>
|
||||
<string>LICENSES/glib.txt</string>
|
||||
<key>name</key>
|
||||
<string>glib</string>
|
||||
<key>platforms</key>
|
||||
<map>
|
||||
<key>linux64</key>
|
||||
<map>
|
||||
<key>archive</key>
|
||||
<map>
|
||||
<key>hash</key>
|
||||
<string>9c93ba8b8af97fc8379f77de77e1540a</string>
|
||||
<key>url</key>
|
||||
<string>http://3p.firestormviewer.org/glib-2.48.0.202301938-linux64-202301938.tar.bz2</string>
|
||||
</map>
|
||||
<key>name</key>
|
||||
<string>linux</string>
|
||||
</map>
|
||||
</map>
|
||||
<key>version</key>
|
||||
<string>2.48.0</string>
|
||||
</map>
|
||||
<key>fltk</key>
|
||||
<map>
|
||||
<key>copyright</key>
|
||||
<string>Copyright (C) fltk project</string>
|
||||
<key>license</key>
|
||||
<string>LGPL/fltk</string>
|
||||
<key>license_file</key>
|
||||
<string>LICENSES/fltk.txt</string>
|
||||
<key>name</key>
|
||||
<string>fltk</string>
|
||||
<key>platforms</key>
|
||||
<map>
|
||||
<key>linux64</key>
|
||||
<map>
|
||||
<key>archive</key>
|
||||
<map>
|
||||
<key>hash</key>
|
||||
<string>81fe1e927e4fe3c5e5f15ce6219ca883</string>
|
||||
<key>url</key>
|
||||
<string>http://3p.firestormviewer.org/fltk-1.3.5.202282121-linux64-202282121.tar.bz2</string>
|
||||
</map>
|
||||
<key>name</key>
|
||||
<string>linux</string>
|
||||
</map>
|
||||
</map>
|
||||
<key>version</key>
|
||||
<string>1.3.5</string>
|
||||
</map>
|
||||
<key>jemalloc</key>
|
||||
<map>
|
||||
<key>copyright</key>
|
||||
|
|
@ -1603,46 +1659,6 @@
|
|||
<key>version</key>
|
||||
<string>0.10.6.314267</string>
|
||||
</map>
|
||||
<key>gtk-atk-pango-glib</key>
|
||||
<map>
|
||||
<key>copyright</key>
|
||||
<string>Copyright (various, see sources)</string>
|
||||
<key>license</key>
|
||||
<string>lgpl</string>
|
||||
<key>license_file</key>
|
||||
<string>LICENSES/gtk-atk-pango-glib.txt</string>
|
||||
<key>name</key>
|
||||
<string>gtk-atk-pango-glib</string>
|
||||
<key>platforms</key>
|
||||
<map>
|
||||
<key>linux</key>
|
||||
<map>
|
||||
<key>archive</key>
|
||||
<map>
|
||||
<key>hash</key>
|
||||
<string>fb047d496c32cc3b9f99793ee6ebb1e3</string>
|
||||
<key>url</key>
|
||||
<string>http://3p.firestormviewer.org/gtk_atk_pango_glib-2.1-linux-180871647.tar.bz2</string>
|
||||
</map>
|
||||
<key>name</key>
|
||||
<string>linux</string>
|
||||
</map>
|
||||
<key>linux64</key>
|
||||
<map>
|
||||
<key>archive</key>
|
||||
<map>
|
||||
<key>hash</key>
|
||||
<string>d918d894430c1d1d869b9f2e06570c65</string>
|
||||
<key>url</key>
|
||||
<string>http://3p.firestormviewer.org/gtk_atk_pango_glib-2.1-linux64-180841902.tar.bz2</string>
|
||||
</map>
|
||||
<key>name</key>
|
||||
<string>linux64</string>
|
||||
</map>
|
||||
</map>
|
||||
<key>version</key>
|
||||
<string>2.1</string>
|
||||
</map>
|
||||
<key>havok-source</key>
|
||||
<map>
|
||||
<key>copyright</key>
|
||||
|
|
|
|||
|
|
@ -239,16 +239,9 @@ elseif(LINUX)
|
|||
# have to deal with
|
||||
if (NOT USESYSTEMLIBS)
|
||||
set(release_files
|
||||
#libapr-1.so.0
|
||||
#libaprutil-1.so.0
|
||||
libatk-1.0.so
|
||||
#libdb-5.1.so
|
||||
${EXPAT_COPY}
|
||||
#libfreetype.so.6.6.2
|
||||
#libfreetype.so.6
|
||||
#libGLOD.so
|
||||
libgmodule-2.0.so
|
||||
libgobject-2.0.so
|
||||
libhunspell-1.3.so.0.0.0
|
||||
libopenal.so
|
||||
#libopenjpeg.so
|
||||
|
|
|
|||
|
|
@ -1,29 +1,32 @@
|
|||
# -*- cmake -*-
|
||||
include(Prebuilt)
|
||||
include(GLIB)
|
||||
|
||||
if (USESYSTEMLIBS)
|
||||
include(FindPkgConfig)
|
||||
if( GLIB_FOUND )
|
||||
if (USESYSTEMLIBS)
|
||||
include(FindPkgConfig)
|
||||
|
||||
pkg_check_modules(DBUSGLIB REQUIRED dbus-glib-1)
|
||||
pkg_check_modules(DBUSGLIB REQUIRED dbus-glib-1)
|
||||
|
||||
elseif (LINUX)
|
||||
use_prebuilt_binary(dbus_glib)
|
||||
set(DBUSGLIB_FOUND ON FORCE BOOL)
|
||||
set(DBUSGLIB_INCLUDE_DIRS
|
||||
${LIBS_PREBUILT_DIR}/include/dbus
|
||||
)
|
||||
# We don't need to explicitly link against dbus-glib itself, because
|
||||
# the viewer probes for the system's copy at runtime.
|
||||
set(DBUSGLIB_LIBRARIES
|
||||
gobject-2.0
|
||||
glib-2.0
|
||||
)
|
||||
endif (USESYSTEMLIBS)
|
||||
elseif (LINUX)
|
||||
use_prebuilt_binary(dbus_glib)
|
||||
set(DBUSGLIB_FOUND ON FORCE BOOL)
|
||||
set(DBUSGLIB_INCLUDE_DIRS
|
||||
${LIBS_PREBUILT_DIR}/include/dbus
|
||||
)
|
||||
# We don't need to explicitly link against dbus-glib itself, because
|
||||
# the viewer probes for the system's copy at runtime.
|
||||
set(DBUSGLIB_LIBRARIES
|
||||
gobject-2.0
|
||||
glib-2.0
|
||||
)
|
||||
endif (USESYSTEMLIBS)
|
||||
|
||||
if (DBUSGLIB_FOUND)
|
||||
set(DBUSGLIB ON CACHE BOOL "Build with dbus-glib message bus support.")
|
||||
endif (DBUSGLIB_FOUND)
|
||||
if (DBUSGLIB_FOUND)
|
||||
set(DBUSGLIB ON CACHE BOOL "Build with dbus-glib message bus support.")
|
||||
endif (DBUSGLIB_FOUND)
|
||||
|
||||
if (DBUSGLIB)
|
||||
add_definitions(-DLL_DBUS_ENABLED=1)
|
||||
endif (DBUSGLIB)
|
||||
if (DBUSGLIB)
|
||||
add_definitions(-DLL_DBUS_ENABLED=1)
|
||||
endif (DBUSGLIB)
|
||||
endif()
|
||||
|
|
|
|||
|
|
@ -0,0 +1,11 @@
|
|||
|
||||
include(Prebuilt)
|
||||
|
||||
if( LINUX )
|
||||
use_prebuilt_binary(glib)
|
||||
set(GLIB_FOUND ON CACHE BOOL "Build against glib 2")
|
||||
set(GLIB_INCLUDE_DIRS ${LIBS_PREBUILT_DIR}/include/glib-2.0 ${LIBS_PREBUILT_DIR}/lib/release/glib-2.0/include )
|
||||
set(GLIB_LIBRARIES libgobject-2.0.a libglib-2.0.a libffi.a libpcre.a)
|
||||
|
||||
add_definitions(-DLL_GLIB=1)
|
||||
endif()
|
||||
|
|
@ -5,23 +5,29 @@ include(FreeType)
|
|||
if (USESYSTEMLIBS)
|
||||
include(FindPkgConfig)
|
||||
|
||||
if( NOT GTK_VERSION )
|
||||
set( GTK_VERSION 2.0 )
|
||||
endif()
|
||||
if (LINUX)
|
||||
set(PKGCONFIG_PACKAGES
|
||||
atk
|
||||
cairo
|
||||
gdk-2.0
|
||||
gdk-${GTK_VERSION}
|
||||
gdk-pixbuf-2.0
|
||||
glib-2.0
|
||||
gmodule-2.0
|
||||
gtk+-2.0
|
||||
gtk+-${GTK_VERSION}
|
||||
gthread-2.0
|
||||
libpng
|
||||
pango
|
||||
pangoft2
|
||||
pangox
|
||||
pangoxft
|
||||
sdl
|
||||
sdl2
|
||||
)
|
||||
if( GTK_VERSION LESS "3.0" )
|
||||
LIST( APPEND PKGCONFIG_PACKAGES pangoxft )
|
||||
else()
|
||||
add_definitions( -DGTK_DISABLE_DEPRECATED)
|
||||
endif()
|
||||
endif (LINUX)
|
||||
|
||||
foreach(pkg ${PKGCONFIG_PACKAGES})
|
||||
|
|
@ -31,29 +37,16 @@ if (USESYSTEMLIBS)
|
|||
list(APPEND UI_LIBRARIES ${${pkg}_LIBRARIES})
|
||||
add_definitions(${${pkg}_CFLAGS_OTHERS})
|
||||
endforeach(pkg)
|
||||
list(APPEND UI_LIBRARIES X11)
|
||||
else (USESYSTEMLIBS)
|
||||
if (LINUX)
|
||||
use_prebuilt_binary(gtk-atk-pango-glib)
|
||||
use_prebuilt_binary(fltk)
|
||||
endif (LINUX)
|
||||
|
||||
if (LINUX)
|
||||
set(UI_LIB_NAMES
|
||||
libfltk.a
|
||||
freetype
|
||||
atk-1.0
|
||||
gdk-x11-2.0
|
||||
gdk_pixbuf-2.0
|
||||
glib-2.0
|
||||
gmodule-2.0
|
||||
gobject-2.0
|
||||
gthread-2.0
|
||||
gtk-x11-2.0
|
||||
pango-1.0
|
||||
pangoft2-1.0
|
||||
pangox-1.0
|
||||
#pangoxft-1.0
|
||||
gio-2.0
|
||||
pangocairo-1.0
|
||||
ffi
|
||||
)
|
||||
|
||||
foreach(libname ${UI_LIB_NAMES})
|
||||
|
|
@ -80,5 +73,5 @@ else (USESYSTEMLIBS)
|
|||
endif (USESYSTEMLIBS)
|
||||
|
||||
if (LINUX)
|
||||
add_definitions(-DLL_GTK=1 -DLL_X11=1)
|
||||
add_definitions(-DLL_X11=1 -DLL_FLTK=1)
|
||||
endif (LINUX)
|
||||
|
|
|
|||
|
|
@ -40,6 +40,7 @@
|
|||
|
||||
#if LL_GTK
|
||||
# include "gtk/gtk.h"
|
||||
#error "Direct use of GTK is deprecated"
|
||||
#endif // LL_GTK
|
||||
|
||||
#define MAX_LOADSTRING 100
|
||||
|
|
|
|||
|
|
@ -43,6 +43,7 @@
|
|||
#if LL_GTK
|
||||
extern "C" {
|
||||
# include "gtk/gtk.h"
|
||||
#error "Direct use of GTK is deprecated"
|
||||
}
|
||||
#include <locale.h>
|
||||
#endif // LL_GTK
|
||||
|
|
|
|||
|
|
@ -27,15 +27,17 @@
|
|||
#ifndef LL_LLAPPVIEWERLINUX_H
|
||||
#define LL_LLAPPVIEWERLINUX_H
|
||||
|
||||
#ifdef LL_GLIB
|
||||
extern "C" {
|
||||
# include <glib.h>
|
||||
}
|
||||
|
||||
#if LL_DBUS_ENABLED
|
||||
extern "C" {
|
||||
# include <glib-object.h>
|
||||
# include <dbus/dbus-glib.h>
|
||||
#endif
|
||||
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
#ifndef LL_LLAPPVIEWER_H
|
||||
|
|
@ -70,7 +72,7 @@ protected:
|
|||
virtual bool sendURLToOtherInstance(const std::string& url);
|
||||
};
|
||||
|
||||
#if LL_DBUS_ENABLED
|
||||
#if LL_DBUS_ENABLED && LL_GLIB
|
||||
typedef struct
|
||||
{
|
||||
GObject parent;
|
||||
|
|
|
|||
|
|
@ -41,6 +41,11 @@
|
|||
# include "llfilepicker.h"
|
||||
#endif
|
||||
|
||||
#ifdef LL_FLTK
|
||||
#include "FL/Fl.H"
|
||||
#include "FL/Fl_Native_File_Chooser.H"
|
||||
#endif
|
||||
|
||||
//
|
||||
// Globals
|
||||
//
|
||||
|
|
@ -193,32 +198,41 @@ LLDirPicker::LLDirPicker() :
|
|||
mFileName(NULL),
|
||||
mLocked(false)
|
||||
{
|
||||
#ifndef LL_FLTK
|
||||
mFilePicker = new LLFilePicker();
|
||||
#endif
|
||||
|
||||
reset();
|
||||
}
|
||||
|
||||
LLDirPicker::~LLDirPicker()
|
||||
{
|
||||
#ifndef LL_FLTK
|
||||
delete mFilePicker;
|
||||
#endif
|
||||
}
|
||||
|
||||
|
||||
void LLDirPicker::reset()
|
||||
{
|
||||
#ifndef LL_FLTK
|
||||
if (mFilePicker)
|
||||
mFilePicker->reset();
|
||||
mFilePicker->reset();
|
||||
#else
|
||||
mDir = "";
|
||||
#endif
|
||||
}
|
||||
|
||||
BOOL LLDirPicker::getDir(std::string* filename, bool blocking)
|
||||
{
|
||||
reset();
|
||||
|
||||
// if local file browsing is turned off, return without opening dialog
|
||||
if ( check_local_file_access_enabled() == false )
|
||||
{
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
#ifndef LL_FLTK
|
||||
#if !LL_MESA_HEADLESS
|
||||
|
||||
if (mFilePicker)
|
||||
|
|
@ -237,15 +251,38 @@ BOOL LLDirPicker::getDir(std::string* filename, bool blocking)
|
|||
#endif // !LL_MESA_HEADLESS
|
||||
|
||||
return FALSE;
|
||||
#else
|
||||
Fl_Native_File_Chooser flDlg;
|
||||
flDlg.title("Pick a dir");
|
||||
flDlg.type(Fl_Native_File_Chooser::BROWSE_DIRECTORY );
|
||||
|
||||
int res = flDlg.show();
|
||||
if( res == 0 )
|
||||
{
|
||||
char const *pDir = flDlg.filename(0);
|
||||
if( pDir )
|
||||
mDir = pDir;
|
||||
}
|
||||
else if( res == -1 )
|
||||
{
|
||||
LL_WARNS() << "FLTK failed: " << flDlg.errmsg() << LL_ENDL;
|
||||
}
|
||||
|
||||
return !mDir.empty();
|
||||
#endif
|
||||
}
|
||||
|
||||
std::string LLDirPicker::getDirName()
|
||||
{
|
||||
#ifndef LL_FLTK
|
||||
if (mFilePicker)
|
||||
{
|
||||
return mFilePicker->getFirstFile();
|
||||
}
|
||||
return "";
|
||||
#else
|
||||
return mDir;
|
||||
#endif
|
||||
}
|
||||
|
||||
#else // not implemented
|
||||
|
|
|
|||
|
|
@ -80,7 +80,7 @@ private:
|
|||
|
||||
#if LL_LINUX || LL_DARWIN
|
||||
// On Linux we just implement LLDirPicker on top of LLFilePicker
|
||||
LLFilePicker *mFilePicker;
|
||||
// LLFilePicker *mFilePicker;
|
||||
#endif
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -36,10 +36,16 @@
|
|||
#include "llviewercontrol.h"
|
||||
#include "llwindow.h" // beforeDialog()
|
||||
|
||||
#undef LL_GTK
|
||||
#if LL_SDL
|
||||
#include "llwindowsdl.h" // for some X/GTK utils to help with filepickers
|
||||
#endif // LL_SDL
|
||||
|
||||
#ifdef LL_FLTK
|
||||
#include "FL/Fl.H"
|
||||
#include "FL/Fl_Native_File_Chooser.H"
|
||||
#endif
|
||||
|
||||
#if LL_LINUX
|
||||
#include "llhttpconstants.h" // file picker uses some of thes constants on Linux
|
||||
#endif
|
||||
|
|
@ -1566,12 +1572,79 @@ BOOL LLFilePicker::getMultipleOpenFiles( ELoadFilter filter, bool blocking)
|
|||
return rtn;
|
||||
}
|
||||
|
||||
#elif LL_FLTK
|
||||
BOOL LLFilePicker::getSaveFile( ESaveFilter filter, const std::string& filename, bool blocking )
|
||||
{
|
||||
return openFileDialog( filter, blocking, eSaveFile );
|
||||
}
|
||||
|
||||
BOOL LLFilePicker::getOpenFile( ELoadFilter filter, bool blocking )
|
||||
{
|
||||
return openFileDialog( filter, blocking, eOpenFile );
|
||||
}
|
||||
|
||||
BOOL LLFilePicker::getMultipleOpenFiles( ELoadFilter filter, bool blocking)
|
||||
{
|
||||
return openFileDialog( filter, blocking, eOpenMultiple );
|
||||
}
|
||||
|
||||
void setupFilter( Fl_Native_File_Chooser &chooser, LLFilePicker::ESaveFilter filter )
|
||||
{
|
||||
}
|
||||
|
||||
void setupFilter( Fl_Native_File_Chooser &chooser, LLFilePicker::ELoadFilter filter )
|
||||
{
|
||||
}
|
||||
|
||||
bool LLFilePicker::openFileDialog( int32_t filter, bool blocking, EType aType )
|
||||
{
|
||||
if ( check_local_file_access_enabled() == false )
|
||||
return false;
|
||||
|
||||
reset();
|
||||
Fl_Native_File_Chooser::Type flType = Fl_Native_File_Chooser::BROWSE_FILE;
|
||||
|
||||
if( aType == eOpenMultiple )
|
||||
flType = Fl_Native_File_Chooser::BROWSE_MULTI_FILE;
|
||||
else if( aType == eSaveFile )
|
||||
flType = Fl_Native_File_Chooser::BROWSE_SAVE_FILE;
|
||||
|
||||
Fl_Native_File_Chooser flDlg;
|
||||
flDlg.title("Pick a file");
|
||||
flDlg.type( flType );
|
||||
|
||||
if( aType == eSaveFile )
|
||||
setupFilter( flDlg, (ESaveFilter) filter );
|
||||
else
|
||||
setupFilter( flDlg, (ELoadFilter) filter );
|
||||
|
||||
int res = flDlg.show();
|
||||
if( res == 0 )
|
||||
{
|
||||
int32_t count = flDlg.count();
|
||||
if( count < 0 )
|
||||
count = 0;
|
||||
for( int32_t i = 0; i < count; ++i )
|
||||
{
|
||||
char const *pFile = flDlg.filename(i);
|
||||
if( pFile && strlen(pFile) > 0 )
|
||||
mFiles.push_back( pFile );
|
||||
}
|
||||
}
|
||||
else if( res == -1 )
|
||||
{
|
||||
LL_WARNS() << "FLTK failed: " << flDlg.errmsg() << LL_ENDL;
|
||||
}
|
||||
|
||||
return mFiles.empty()?FALSE:TRUE;
|
||||
}
|
||||
|
||||
# else // LL_GTK
|
||||
|
||||
// Hacky stubs designed to facilitate fake getSaveFile and getOpenFile with
|
||||
// static results, when we don't have a real filepicker.
|
||||
|
||||
BOOL LLFilePicker::getSaveFile( ESaveFilter filter, const std::string& filename )
|
||||
BOOL LLFilePicker::getSaveFile( ESaveFilter filter, const std::string& filename, bool blocking )
|
||||
{
|
||||
// if local file browsing is turned off, return without opening dialog
|
||||
// (Even though this is a stub, I think we still should not return anything at all)
|
||||
|
|
@ -1634,7 +1707,7 @@ BOOL LLFilePicker::getMultipleOpenFiles( ELoadFilter filter, bool blocking)
|
|||
|
||||
#else // not implemented
|
||||
|
||||
BOOL LLFilePicker::getSaveFile( ESaveFilter filter, const std::string& filename )
|
||||
BOOL LLFilePicker::getSaveFile( ESaveFilter filter, const std::string& filename, bool blockin )
|
||||
{
|
||||
reset();
|
||||
return FALSE;
|
||||
|
|
|
|||
|
|
@ -33,6 +33,12 @@
|
|||
#ifndef LL_LLFILEPICKER_H
|
||||
#define LL_LLFILEPICKER_H
|
||||
|
||||
#if LL_FLTK
|
||||
#if LL_GTK
|
||||
#undef LL_GTK
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#include "stdtypes.h"
|
||||
|
||||
#if LL_DARWIN
|
||||
|
|
@ -58,12 +64,13 @@ extern "C" {
|
|||
// mostly for Linux, possible on others
|
||||
#if LL_GTK
|
||||
# include "gtk/gtk.h"
|
||||
#error "Direct use of GTK is deprecated"
|
||||
#endif // LL_GTK
|
||||
}
|
||||
|
||||
class LLFilePicker
|
||||
{
|
||||
#ifdef LL_GTK
|
||||
#if LL_GTK
|
||||
friend class LLDirPicker;
|
||||
friend void chooser_responder(GtkWidget *, gint, gpointer);
|
||||
#endif // LL_GTK
|
||||
|
|
@ -187,7 +194,14 @@ private:
|
|||
// we also remember the extension of the last added file.
|
||||
std::string mCurrentExtension;
|
||||
#endif
|
||||
|
||||
#if LL_FLTK
|
||||
enum EType
|
||||
{
|
||||
eSaveFile, eOpenFile, eOpenMultiple
|
||||
};
|
||||
bool openFileDialog( int32_t filter, bool blocking, EType aType );
|
||||
#endif
|
||||
|
||||
std::vector<std::string> mFiles;
|
||||
S32 mCurrentFile;
|
||||
bool mLocked;
|
||||
|
|
|
|||
Loading…
Reference in New Issue