Merge branch 'master' of https://vcs.firestormviewer.org/phoenix-firestorm
commit
8ffa65d424
|
|
@ -736,9 +736,9 @@
|
|||
<key>archive</key>
|
||||
<map>
|
||||
<key>hash</key>
|
||||
<string>93db28a4c0185c054e705f7069830bcc</string>
|
||||
<string>8b79711b4fa914c16f1284939d55dcc1</string>
|
||||
<key>url</key>
|
||||
<string>https://3p.firestormviewer.org/colladadom-2.3.230021615-linux64-230021615.tar.bz2</string>
|
||||
<string>https://3p.firestormviewer.org/colladadom-2.3.230940029-linux64-230940029.tar.bz2</string>
|
||||
</map>
|
||||
<key>name</key>
|
||||
<string>linux64</string>
|
||||
|
|
@ -2056,9 +2056,9 @@
|
|||
<key>archive</key>
|
||||
<map>
|
||||
<key>hash</key>
|
||||
<string>a01304d63a12ad3d11bde52c47a3134b</string>
|
||||
<string>d72c6d8db827ce3d83c5703f519a2ac9</string>
|
||||
<key>url</key>
|
||||
<string>http://3p.firestormviewer.org/libxml2-2.10.3.230021454-linux64-230021454.tar.bz2</string>
|
||||
<string>http://3p.firestormviewer.org/libxml2-2.10.3.230940019-linux64-230940019.tar.bz2</string>
|
||||
</map>
|
||||
<key>name</key>
|
||||
<string>linux64</string>
|
||||
|
|
@ -3496,9 +3496,9 @@ Copyright (c) 2012, 2014, 2015, 2016 nghttp2 contributors</string>
|
|||
<key>archive</key>
|
||||
<map>
|
||||
<key>hash</key>
|
||||
<string>684de242071b78042c1837c15496d2b5</string>
|
||||
<string>71a9c7c03a2c26cdb21fa476de485d9c</string>
|
||||
<key>url</key>
|
||||
<string>http://3p.firestormviewer.org/xmlrpc_epi-0.54.2.230021554-linux64-230021554.tar.bz2</string>
|
||||
<string>http://3p.firestormviewer.org/xmlrpc_epi-0.54.2.230940042-linux64-230940042.tar.bz2</string>
|
||||
</map>
|
||||
<key>name</key>
|
||||
<string>linux64</string>
|
||||
|
|
|
|||
|
|
@ -1,13 +1,19 @@
|
|||
# -*- cmake -*-
|
||||
|
||||
include_guard()
|
||||
add_library(fs::discord INTERFACE IMPORTED)
|
||||
|
||||
include(Prebuilt)
|
||||
use_prebuilt_binary(discord-rpc)
|
||||
set(DISCORD_INCLUDE_DIRS ${LIBS_PREBUILT_DIR}/include/discord-rpc)
|
||||
|
||||
if (WINDOWS)
|
||||
set(DISCORD_LIBRARY discord-rpc)
|
||||
target_link_libraries(fs::discord INTERFACE discord-rpc)
|
||||
elseif (LINUX)
|
||||
set(DISCORD_LIBRARY discord-rpc)
|
||||
target_link_libraries(fs::discord INTERFACE discord-rpc)
|
||||
elseif (DARWIN)
|
||||
set(DISCORD_LIBRARY discord-rpc)
|
||||
target_link_libraries(fs::discord INTERFACE discord-rpc)
|
||||
endif (WINDOWS)
|
||||
|
||||
target_include_directories(fs::discord SYSTEM INTERFACE
|
||||
${AUTOBUILD_INSTALL_DIR}/include/discord-rpc
|
||||
)
|
||||
|
|
|
|||
|
|
@ -19,5 +19,3 @@ target_include_directories( fs::growl SYSTEM INTERFACE
|
|||
${AUTOBUILD_INSTALL_DIR}/include/Growl
|
||||
)
|
||||
endif (DARWIN OR WINDOWS) # <FS:Zi> no need to do these things on Linux
|
||||
|
||||
add_compile_definitions(HAS_GROWL)
|
||||
|
|
|
|||
|
|
@ -1,13 +1,9 @@
|
|||
# -*- cmake -*-
|
||||
set(CMAKE_VERBOSE_MAKEFILE ON) # <FS:Zi> remove this once things work
|
||||
|
||||
# <FS:ND> Try to find pulse header, if we got them we can use the linux volume catcher
|
||||
if (LINUX)
|
||||
include(GLIB)
|
||||
|
||||
include_directories( ${GLIB_INCLUDE_DIRS} )
|
||||
|
||||
foreach( PULSE_FILE pulse/introspect.h pulse/context.h pulse/subscribe.h pulse/glib-mainloop.h )
|
||||
foreach( PULSE_FILE pulse/introspect.h pulse/context.h pulse/subscribe.h )
|
||||
find_path( PULSE_FILE_${PULSE_FILE}_FOUND ${PULSE_FILE} NO_CACHE)
|
||||
if( NOT PULSE_FILE_${PULSE_FILE}_FOUND )
|
||||
message( "Looking for ${PULSE_FILE} ... not found")
|
||||
|
|
|
|||
|
|
@ -7,8 +7,6 @@ add_library( ll::tracy INTERFACE IMPORTED )
|
|||
set(USE_TRACY OFF CACHE BOOL "Use Tracy profiler.")
|
||||
|
||||
if (USE_TRACY)
|
||||
set(TRACY_INCLUDE_DIR ${LIBS_PREBUILT_DIR}/include/tracy)
|
||||
|
||||
use_prebuilt_binary(tracy)
|
||||
|
||||
target_include_directories( ll::tracy SYSTEM INTERFACE ${LIBS_PREBUILT_DIR}/include/tracy)
|
||||
|
|
|
|||
|
|
@ -534,7 +534,7 @@ void LLDiskCache::removeOldVFSFiles()
|
|||
}
|
||||
}
|
||||
|
||||
uintmax_t LLDiskCache::dirFileSize(const std::string dir)
|
||||
uintmax_t LLDiskCache::dirFileSize(const std::string& dir)
|
||||
{
|
||||
uintmax_t total_file_size = 0;
|
||||
|
||||
|
|
|
|||
|
|
@ -164,7 +164,7 @@ class LLDiskCache :
|
|||
* directory. Primarily used here to determine the directory size
|
||||
* before and after the cache purge
|
||||
*/
|
||||
uintmax_t dirFileSize(const std::string dir);
|
||||
uintmax_t dirFileSize(const std::string& dir);
|
||||
|
||||
/**
|
||||
* Utility function to convert an LLAssetType enum into a
|
||||
|
|
|
|||
|
|
@ -31,8 +31,6 @@ set(media_plugin_cef_HEADER_FILES
|
|||
volume_catcher.h
|
||||
)
|
||||
|
||||
if (NOT DISABLE_VOLUME_CATCHER) # <FS:Zi> disable volume catcher in cef with -DDISABLE_VOLUME_CATCHER=TRUE
|
||||
|
||||
add_compile_definitions(LL_VOLUME_CATCHER)
|
||||
|
||||
# Select which VolumeCatcher implementation to use
|
||||
|
|
@ -54,8 +52,6 @@ elseif (WINDOWS)
|
|||
list(APPEND media_plugin_cef_SOURCE_FILES windows_volume_catcher.cpp)
|
||||
endif (LINUX)
|
||||
|
||||
endif (NOT DISABLE_VOLUME_CATCHER)
|
||||
|
||||
list(APPEND media_plugin_cef_SOURCE_FILES ${media_plugin_cef_HEADER_FILES})
|
||||
|
||||
add_library(media_plugin_cef
|
||||
|
|
|
|||
|
|
@ -41,13 +41,11 @@
|
|||
|
||||
|
||||
extern "C" {
|
||||
#include <glib.h>
|
||||
#include <glib-object.h>
|
||||
|
||||
#include <pulse/introspect.h>
|
||||
#include <pulse/context.h>
|
||||
#include <pulse/subscribe.h>
|
||||
#include <pulse/glib-mainloop.h> // There's no special reason why we want the *glib* PA mainloop, but the generic polling implementation seems broken.
|
||||
|
||||
#include <pulse/mainloop.h>
|
||||
|
||||
#include "apr_pools.h"
|
||||
#include "apr_dso.h"
|
||||
|
|
@ -62,7 +60,6 @@ extern "C" {
|
|||
|
||||
#define LL_PA_SYM(REQUIRED, PASYM, RTN, ...) RTN (*ll##PASYM)(__VA_ARGS__) = NULL
|
||||
#include "linux_volume_catcher_pa_syms.inc"
|
||||
#include "linux_volume_catcher_paglib_syms.inc"
|
||||
#undef LL_PA_SYM
|
||||
|
||||
static bool sSymsGrabbed = false;
|
||||
|
|
@ -94,7 +91,6 @@ bool grab_pa_syms(std::string pulse_dso_name)
|
|||
INFOMSG("Found DSO: %s", pulse_dso_name.c_str());
|
||||
|
||||
#include "linux_volume_catcher_pa_syms.inc"
|
||||
#include "linux_volume_catcher_paglib_syms.inc"
|
||||
|
||||
if ( sSymPADSOHandle )
|
||||
{
|
||||
|
|
@ -141,7 +137,6 @@ void ungrab_pa_syms()
|
|||
// NULL-out all of the symbols we'd grabbed
|
||||
#define LL_PA_SYM(REQUIRED, PASYM, RTN, ...) do{ll##PASYM = NULL;}while(0)
|
||||
#include "linux_volume_catcher_pa_syms.inc"
|
||||
#include "linux_volume_catcher_paglib_syms.inc"
|
||||
#undef LL_PA_SYM
|
||||
|
||||
sSymsGrabbed = false;
|
||||
|
|
@ -178,7 +173,7 @@ public:
|
|||
std::set<U32> mSinkInputIndices;
|
||||
std::map<U32,U32> mSinkInputNumChannels;
|
||||
F32 mDesiredVolume;
|
||||
pa_glib_mainloop *mMainloop;
|
||||
pa_mainloop *mMainloop;
|
||||
pa_context *mPAContext;
|
||||
bool mConnected;
|
||||
bool mGotSyms;
|
||||
|
|
@ -210,18 +205,14 @@ void VolumeCatcherImpl::init()
|
|||
// bit fragile and (for our purposes) we'd rather simply not function
|
||||
// than crash
|
||||
|
||||
// we cheat and rely upon libpulse-mainloop-glib.so.0 to pull-in
|
||||
// libpulse.so.0 - this isn't a great assumption, and the two DSOs should
|
||||
// probably be loaded separately. Our Linux DSO framework needs refactoring,
|
||||
// we do this sort of thing a lot with practically identical logic...
|
||||
mGotSyms = loadsyms("libpulse-mainloop-glib.so.0");
|
||||
mGotSyms = loadsyms("libpulse.so.0");
|
||||
if (!mGotSyms) return;
|
||||
|
||||
mMainloop = llpa_glib_mainloop_new(g_main_context_default());
|
||||
mMainloop = llpa_mainloop_new();
|
||||
|
||||
if (mMainloop)
|
||||
{
|
||||
pa_mainloop_api *api = llpa_glib_mainloop_get_api(mMainloop);
|
||||
pa_mainloop_api *api = llpa_mainloop_get_api(mMainloop);
|
||||
|
||||
if (api)
|
||||
{
|
||||
|
|
@ -274,7 +265,7 @@ void VolumeCatcherImpl::cleanup()
|
|||
|
||||
if (mGotSyms && mMainloop)
|
||||
{
|
||||
llpa_glib_mainloop_free(mMainloop);
|
||||
llpa_mainloop_free(mMainloop);
|
||||
}
|
||||
mMainloop = NULL;
|
||||
}
|
||||
|
|
@ -295,8 +286,7 @@ void VolumeCatcherImpl::setVolume(F32 volume)
|
|||
|
||||
void VolumeCatcherImpl::pump()
|
||||
{
|
||||
gboolean may_block = FALSE;
|
||||
g_main_context_iteration(g_main_context_default(), may_block);
|
||||
return;
|
||||
}
|
||||
|
||||
void VolumeCatcherImpl::connected_okay()
|
||||
|
|
|
|||
|
|
@ -18,4 +18,8 @@ LL_PA_SYM(true, pa_proplist_new, pa_proplist*, void);
|
|||
LL_PA_SYM(true, pa_proplist_sets, int, pa_proplist *p, const char *key, const char *value);
|
||||
LL_PA_SYM(true, pa_sw_volume_from_linear, pa_volume_t, double v);
|
||||
|
||||
LL_PA_SYM(true, pa_mainloop_free, void, pa_mainloop* m);
|
||||
LL_PA_SYM(true, pa_mainloop_get_api, pa_mainloop_api*, pa_mainloop* m);
|
||||
LL_PA_SYM(true, pa_mainloop_new, pa_mainloop*, void);
|
||||
|
||||
// optional symbols to grab
|
||||
|
|
|
|||
|
|
@ -1,6 +1,9 @@
|
|||
// <FS:Zi> No longer needed
|
||||
/*
|
||||
// required symbols to grab
|
||||
LL_PA_SYM(true, pa_glib_mainloop_free, void, pa_glib_mainloop* g);
|
||||
LL_PA_SYM(true, pa_glib_mainloop_get_api, pa_mainloop_api*, pa_glib_mainloop* g);
|
||||
LL_PA_SYM(true, pa_glib_mainloop_new, pa_glib_mainloop *, GMainContext *c);
|
||||
|
||||
// optional symbols to grab
|
||||
*/
|
||||
|
|
|
|||
|
|
@ -2172,7 +2172,7 @@ if (WINDOWS)
|
|||
${CMAKE_CURRENT_SOURCE_DIR}/featuretable.txt
|
||||
${viewer_APPSETTINGS_FILES}
|
||||
${ARCH_PREBUILT_DIRS_RELEASE}/growl.dll
|
||||
${SHARED_LIB_STAGING_DIR}/Release/glod.dll # <FS:Beq> Restore GLOD build dependencies
|
||||
${SHARED_LIB_STAGING_DIR}/glod.dll # <FS:Beq> Restore GLOD build dependencies
|
||||
SLPlugin
|
||||
media_plugin_cef
|
||||
media_plugin_libvlc
|
||||
|
|
@ -2182,7 +2182,7 @@ if (WINDOWS)
|
|||
# <FS:Ansariel> Only copy OpenJPEG dll if needed
|
||||
if (NOT USE_KDU)
|
||||
list(APPEND COPY_INPUT_DEPENDENCIES
|
||||
${SHARED_LIB_STAGING_DIR}/Release/openjp2.dll
|
||||
${SHARED_LIB_STAGING_DIR}/openjp2.dll
|
||||
)
|
||||
endif (NOT USE_KDU)
|
||||
# </FS:Ansariel>
|
||||
|
|
@ -2385,27 +2385,24 @@ target_link_libraries(${VIEWER_BINARY_NAME}
|
|||
ll::tracy
|
||||
ll::icu4c
|
||||
fs::glod # <FS:Beq/> restore GLOD dependencies
|
||||
# fs::growl # <FS:Ansariel> Growl support <FS:Zi> added further down for win/mac only
|
||||
fs::discord # <FS:Ansariel> Discord support
|
||||
)
|
||||
|
||||
if( TARGET ll::intel_memops )
|
||||
target_link_libraries(${VIEWER_BINARY_NAME} ll::intel_memops )
|
||||
endif()
|
||||
|
||||
target_link_libraries(${VIEWER_BINARY_NAME} ${DISCORD_LIBRARY} )
|
||||
|
||||
if (USE_BUGSPLAT)
|
||||
target_link_libraries(${VIEWER_BINARY_NAME}
|
||||
${BUGSPLAT_LIBRARIES}
|
||||
)
|
||||
endif (USE_BUGSPLAT)
|
||||
|
||||
# <FS:Ansariel> Growl support
|
||||
if (WINDOWS OR DARWIN)
|
||||
target_link_libraries(${VIEWER_BINARY_NAME}
|
||||
fs::growl # <FS:Ansariel> Growl support
|
||||
${GROWL_LIBRARY}
|
||||
)
|
||||
target_link_libraries(${VIEWER_BINARY_NAME} fs::growl)
|
||||
endif (WINDOWS OR DARWIN)
|
||||
# </FS:Ansariel>
|
||||
|
||||
if( TARGET ll::nvapi )
|
||||
target_link_libraries(${VIEWER_BINARY_NAME} ll::nvapi )
|
||||
|
|
|
|||
|
|
@ -110,7 +110,6 @@ private:
|
|||
LLSD mResultsContent;
|
||||
LLUUID mQueryID;
|
||||
|
||||
FSFloaterSearch* mParent;
|
||||
LLSearchComboBox* mSearchComboBox;
|
||||
FSScrollListCtrl* mSearchResults;
|
||||
};
|
||||
|
|
@ -145,7 +144,6 @@ private:
|
|||
LLSD mResultsContent;
|
||||
LLUUID mQueryID;
|
||||
|
||||
FSFloaterSearch* mParent;
|
||||
LLSearchComboBox* mSearchComboBox;
|
||||
LLScrollListCtrl* mSearchResults;
|
||||
};
|
||||
|
|
@ -180,7 +178,6 @@ private:
|
|||
LLSD mResultsContent;
|
||||
LLUUID mQueryID;
|
||||
|
||||
FSFloaterSearch* mParent;
|
||||
LLSearchComboBox* mSearchComboBox;
|
||||
LLScrollListCtrl* mSearchResults;
|
||||
LLComboBox* mPlacesCategory;
|
||||
|
|
@ -214,7 +211,6 @@ private:
|
|||
LLSD mResultsContent;
|
||||
LLUUID mQueryID;
|
||||
|
||||
FSFloaterSearch* mParent;
|
||||
LLLineEditor* mPriceEditor;
|
||||
LLLineEditor* mAreaEditor;
|
||||
LLScrollListCtrl* mSearchResults;
|
||||
|
|
@ -250,7 +246,6 @@ private:
|
|||
LLSD mResultsContent;
|
||||
LLUUID mQueryID;
|
||||
|
||||
FSFloaterSearch* mParent;
|
||||
LLSearchComboBox* mSearchComboBox;
|
||||
LLScrollListCtrl* mSearchResults;
|
||||
LLComboBox* mClassifiedsCategory;
|
||||
|
|
@ -292,7 +287,6 @@ private:
|
|||
LLSD mResultsContent;
|
||||
LLUUID mQueryID;
|
||||
|
||||
FSFloaterSearch* mParent;
|
||||
LLSearchComboBox* mSearchComboBox;
|
||||
LLScrollListCtrl* mSearchResults;
|
||||
LLRadioGroup* mEventsMode;
|
||||
|
|
|
|||
|
|
@ -36,9 +36,7 @@
|
|||
#include "llviewerprecompiledheaders.h"
|
||||
#include "growlnotifierwin.h"
|
||||
|
||||
#ifdef HAS_GROWL
|
||||
#include "growl.h"
|
||||
#endif
|
||||
|
||||
#include "llviewercontrol.h"
|
||||
|
||||
|
|
@ -55,9 +53,7 @@ void __cdecl GrowlLogSink( char const *aMessage, int aLevel )
|
|||
GrowlNotifierWin::GrowlNotifierWin() :
|
||||
mApplicationName("")
|
||||
{
|
||||
#ifdef HAS_GROWL
|
||||
mGrowlImpl = NULL;
|
||||
#endif
|
||||
LL_INFOS("GrowlNotifierWin") << "Windows growl notifier initialized." << LL_ENDL;
|
||||
|
||||
#ifdef GROWL_HAS_LOG
|
||||
|
|
@ -69,20 +65,17 @@ GrowlNotifierWin::GrowlNotifierWin() :
|
|||
GrowlNotifierWin::~GrowlNotifierWin()
|
||||
{
|
||||
LL_INFOS("GrowlNotifierWin") << "Windows growl notifier destroyed." << LL_ENDL;
|
||||
#ifdef HAS_GROWL
|
||||
if (mGrowlImpl)
|
||||
{
|
||||
delete mGrowlImpl;
|
||||
mGrowlImpl = NULL;
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
||||
void GrowlNotifierWin::registerApplication(const std::string& application, const std::set<std::string>& notificationTypes)
|
||||
{
|
||||
mApplicationName = application;
|
||||
|
||||
#ifdef HAS_GROWL
|
||||
char **arr = (char**)malloc(sizeof(*arr) * notificationTypes.size());
|
||||
S32 i = 0;
|
||||
for (std::set<std::string>::const_iterator it = notificationTypes.begin(); it != notificationTypes.end(); ++it, ++i)
|
||||
|
|
@ -99,25 +92,18 @@ void GrowlNotifierWin::registerApplication(const std::string& application, const
|
|||
free(arr[i]);
|
||||
}
|
||||
free(arr);
|
||||
#endif
|
||||
}
|
||||
|
||||
void GrowlNotifierWin::showNotification(const std::string& notification_title, const std::string& notification_message,
|
||||
const std::string& notification_type)
|
||||
{
|
||||
#ifdef HAS_GROWL
|
||||
if (mGrowlImpl)
|
||||
{
|
||||
mGrowlImpl->Notify(notification_type.c_str(), notification_title.c_str(), notification_message.c_str());
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
||||
bool GrowlNotifierWin::isUsable()
|
||||
{
|
||||
#ifdef HAS_GROWL
|
||||
return (mGrowlImpl && mGrowlImpl->isConnected());
|
||||
#else
|
||||
return false;
|
||||
#endif
|
||||
}
|
||||
|
|
|
|||
|
|
@ -36,10 +36,7 @@
|
|||
#define GROWLNOTIFIERWIN_H
|
||||
|
||||
#include "growlnotifier.h"
|
||||
|
||||
#ifdef HAS_GROWL
|
||||
#include <growl++.hpp>
|
||||
#endif
|
||||
|
||||
class GrowlNotifierWin : public GrowlNotifier
|
||||
{
|
||||
|
|
@ -53,9 +50,7 @@ public:
|
|||
|
||||
private:
|
||||
std::string mApplicationName;
|
||||
#ifdef HAS_GROWL
|
||||
Growl* mGrowlImpl;
|
||||
#endif
|
||||
};
|
||||
|
||||
#endif // GROWLNOTIFIERWIN_H
|
||||
|
|
|
|||
|
|
@ -263,9 +263,7 @@ using namespace LL;
|
|||
#include "llcoproceduremanager.h"
|
||||
#include "llviewereventrecorder.h"
|
||||
|
||||
#if HAS_GROWL
|
||||
#include "growlmanager.h"
|
||||
#endif
|
||||
#include "fsavatarrenderpersistence.h"
|
||||
|
||||
// *FIX: These extern globals should be cleaned up.
|
||||
|
|
@ -2019,9 +2017,7 @@ bool LLAppViewer::cleanup()
|
|||
// workaround for DEV-35406 crash on shutdown
|
||||
LLEventPumps::instance().reset();
|
||||
|
||||
#if HAS_GROWL
|
||||
GrowlManager::destroyManager();
|
||||
#endif
|
||||
GrowlManager::destroyManager(); // <FS> Growl support
|
||||
|
||||
//dump scene loading monitor results
|
||||
if (LLSceneMonitor::instanceExists())
|
||||
|
|
|
|||
|
|
@ -81,7 +81,8 @@ static S32 bump_channel = -1;
|
|||
|
||||
// Enabled after changing LLViewerTexture::mNeedsCreateTexture to an
|
||||
// LLAtomicBool; this should work just fine, now. HB
|
||||
#define LL_BUMPLIST_MULTITHREADED 1
|
||||
// #define LL_BUMPLIST_MULTITHREADED 1 // <FS:Beq/> Enabling this causes issues on some machines
|
||||
#define LL_BUMPLIST_MULTITHREADED 0
|
||||
|
||||
|
||||
// static
|
||||
|
|
|
|||
|
|
@ -67,12 +67,14 @@
|
|||
|
||||
#include "llnotificationsutil.h" // <FS:Zi> detect and strip empty alpha layers from images on upload
|
||||
|
||||
const S32 PREVIEW_BORDER_WIDTH = 2;
|
||||
const S32 PREVIEW_RESIZE_HANDLE_SIZE = S32(RESIZE_HANDLE_WIDTH * OO_SQRT2) + PREVIEW_BORDER_WIDTH;
|
||||
const S32 PREVIEW_HPAD = PREVIEW_RESIZE_HANDLE_SIZE;
|
||||
const S32 PREVIEW_VPAD = -24 + 35; // yuk, hard coded
|
||||
const S32 PREF_BUTTON_HEIGHT = 16 + 7 + 16 + 35;
|
||||
const S32 PREVIEW_TEXTURE_HEIGHT = 320;
|
||||
// <FS:Zi> Make preview area position to be not hard-coded
|
||||
// const S32 PREVIEW_BORDER_WIDTH = 2;
|
||||
// const S32 PREVIEW_RESIZE_HANDLE_SIZE = S32(RESIZE_HANDLE_WIDTH * OO_SQRT2) + PREVIEW_BORDER_WIDTH;
|
||||
// const S32 PREVIEW_HPAD = PREVIEW_RESIZE_HANDLE_SIZE;
|
||||
// const S32 PREVIEW_VPAD = -24 + 35; // yuk, hard coded
|
||||
// const S32 PREF_BUTTON_HEIGHT = 16 + 7 + 16 + 35;
|
||||
// const S32 PREVIEW_TEXTURE_HEIGHT = 320;
|
||||
// </FS:Zi>
|
||||
|
||||
// <FS:Zi> detect and strip empty alpha layers from images on upload
|
||||
const U8 ALPHA_EMPTY_THRESHOLD = 253;
|
||||
|
|
@ -110,10 +112,13 @@ BOOL LLFloaterImagePreview::postBuild()
|
|||
}
|
||||
childSetCommitCallback("clothing_type_combo", onPreviewTypeCommit, this);
|
||||
|
||||
mPreviewRect.set(PREVIEW_HPAD,
|
||||
PREVIEW_TEXTURE_HEIGHT + PREVIEW_VPAD,
|
||||
getRect().getWidth() - PREVIEW_HPAD,
|
||||
PREVIEW_HPAD + PREF_BUTTON_HEIGHT + PREVIEW_HPAD);
|
||||
// <FS:Zi> Make preview area position to be not hard-coded
|
||||
// mPreviewRect.set(PREVIEW_HPAD,
|
||||
// PREVIEW_TEXTURE_HEIGHT + PREVIEW_VPAD,
|
||||
// getRect().getWidth() - PREVIEW_HPAD,
|
||||
// PREVIEW_HPAD + PREF_BUTTON_HEIGHT + PREVIEW_HPAD);
|
||||
mPreviewRect = getChildView("preview_area")->getRect();
|
||||
// </FS:Zi>
|
||||
mPreviewImageRect.set(0.f, 1.f, 1.f, 0.f);
|
||||
|
||||
getChildView("bad_image_text")->setVisible(FALSE);
|
||||
|
|
@ -178,9 +183,16 @@ BOOL LLFloaterImagePreview::postBuild()
|
|||
// getChild<LLUICtrl>("ok_btn")->setCommitCallback(boost::bind(&LLFloaterNameDesc::onBtnOK, this));
|
||||
getChild<LLUICtrl>("ok_btn")->setCommitCallback(boost::bind(&LLFloaterImagePreview::onBtnUpload, this));
|
||||
|
||||
getChild<LLUICtrl>("uploaded_size_text")->setTextArg("[X_RES]", llformat("%d", mRawImagep->getWidth()));
|
||||
getChild<LLUICtrl>("uploaded_size_text")->setTextArg("[Y_RES]", llformat("%d", mRawImagep->getHeight()));
|
||||
|
||||
mEmptyAlphaCheck = getChild<LLCheckBoxCtrl>("strip_alpha_check");
|
||||
|
||||
if (mRawImagep->getComponents() != 4)
|
||||
{
|
||||
return TRUE;
|
||||
getChild<LLUICtrl>("image_alpha_warning")->setVisible(false);
|
||||
getChild<LLUICtrl>("uploaded_size_text")->setTextArg("[ALPHA]", getString("no_alpha"));
|
||||
return true;
|
||||
}
|
||||
|
||||
U32 imageBytes = mRawImagep->getWidth() * mRawImagep->getHeight() * 4;
|
||||
|
|
@ -195,8 +207,6 @@ BOOL LLFloaterImagePreview::postBuild()
|
|||
}
|
||||
}
|
||||
|
||||
mEmptyAlphaCheck = getChild<LLCheckBoxCtrl>("strip_alpha_check");
|
||||
|
||||
if (emptyAlphaCount > (imageBytes / 4 * ALPHA_EMPTY_THRESHOLD_RATIO))
|
||||
{
|
||||
getChild<LLUICtrl>("image_alpha_warning")->setVisible(true);
|
||||
|
|
@ -209,6 +219,8 @@ BOOL LLFloaterImagePreview::postBuild()
|
|||
getChild<LLUICtrl>("image_alpha_warning")->setVisible(false);
|
||||
mEmptyAlphaCheck->setValue(false);
|
||||
}
|
||||
|
||||
getChild<LLUICtrl>("uploaded_size_text")->setTextArg("[ALPHA]", getString(mEmptyAlphaCheck->getValue() ? "no_alpha" : "with_alpha"));
|
||||
// </FS:Zi>
|
||||
return TRUE;
|
||||
}
|
||||
|
|
@ -216,7 +228,11 @@ BOOL LLFloaterImagePreview::postBuild()
|
|||
// <FS:Zi> detect and strip empty alpha layers from images on upload
|
||||
void LLFloaterImagePreview::emptyAlphaCheckboxCallback()
|
||||
{
|
||||
if (!mEmptyAlphaCheck->getValue())
|
||||
if (mEmptyAlphaCheck->getValue())
|
||||
{
|
||||
getChild<LLUICtrl>("uploaded_size_text")->setTextArg("[ALPHA]", getString("no_alpha"));
|
||||
}
|
||||
else
|
||||
{
|
||||
LLNotificationsUtil::add("ImageEmptyAlphaLayer", LLSD(), LLSD(), boost::bind(&LLFloaterImagePreview::imageEmptyAlphaCallback, this, _1, _2));
|
||||
}
|
||||
|
|
@ -232,6 +248,7 @@ bool LLFloaterImagePreview::imageEmptyAlphaCallback(const LLSD& notification, co
|
|||
mEmptyAlphaCheck->setValue(true);
|
||||
}
|
||||
|
||||
getChild<LLUICtrl>("uploaded_size_text")->setTextArg("[ALPHA]", getString(option == 0 ? "no_alpha" : "with_alpha"));
|
||||
return true;
|
||||
}
|
||||
|
||||
|
|
@ -407,24 +424,27 @@ void LLFloaterImagePreview::draw()
|
|||
// gGL.vertex2i(r.getWidth() - PREVIEW_HPAD, PREVIEW_TEXTURE_HEIGHT + PREVIEW_VPAD);
|
||||
//}
|
||||
//gGL.end();
|
||||
// </FS:Ansariel>
|
||||
|
||||
// <FS:Zi> Make preview area position to be not hard-coded
|
||||
gGL.begin( LLRender::TRIANGLES );
|
||||
{
|
||||
gGL.texCoord2f(mPreviewImageRect.mLeft, mPreviewImageRect.mTop);
|
||||
gGL.vertex2i(PREVIEW_HPAD, PREVIEW_TEXTURE_HEIGHT + PREVIEW_VPAD);
|
||||
gGL.vertex2i(mPreviewRect.mLeft, mPreviewRect.mTop);
|
||||
gGL.texCoord2f(mPreviewImageRect.mLeft, mPreviewImageRect.mBottom);
|
||||
gGL.vertex2i(PREVIEW_HPAD, PREVIEW_HPAD + PREF_BUTTON_HEIGHT + PREVIEW_HPAD);
|
||||
gGL.vertex2i(mPreviewRect.mLeft, mPreviewRect.mBottom);
|
||||
gGL.texCoord2f(mPreviewImageRect.mRight, mPreviewImageRect.mBottom);
|
||||
gGL.vertex2i(r.getWidth() - PREVIEW_HPAD, PREVIEW_HPAD + PREF_BUTTON_HEIGHT + PREVIEW_HPAD);
|
||||
gGL.vertex2i(mPreviewRect.mRight, mPreviewRect.mBottom);
|
||||
|
||||
gGL.texCoord2f(mPreviewImageRect.mLeft, mPreviewImageRect.mTop);
|
||||
gGL.vertex2i(PREVIEW_HPAD, PREVIEW_TEXTURE_HEIGHT + PREVIEW_VPAD);
|
||||
gGL.vertex2i(mPreviewRect.mLeft, mPreviewRect.mTop);
|
||||
gGL.texCoord2f(mPreviewImageRect.mRight, mPreviewImageRect.mBottom);
|
||||
gGL.vertex2i(r.getWidth() - PREVIEW_HPAD, PREVIEW_HPAD + PREF_BUTTON_HEIGHT + PREVIEW_HPAD);
|
||||
gGL.vertex2i(mPreviewRect.mRight, mPreviewRect.mBottom);
|
||||
gGL.texCoord2f(mPreviewImageRect.mRight, mPreviewImageRect.mTop);
|
||||
gGL.vertex2i(r.getWidth() - PREVIEW_HPAD, PREVIEW_TEXTURE_HEIGHT + PREVIEW_VPAD);
|
||||
gGL.vertex2i(mPreviewRect.mRight, mPreviewRect.mTop);
|
||||
}
|
||||
gGL.end();
|
||||
// </FS:Ansariel>
|
||||
// </FS:Zi>
|
||||
|
||||
gGL.getTexUnit(0)->unbind(LLTexUnit::TT_TEXTURE);
|
||||
|
||||
|
|
@ -458,24 +478,27 @@ void LLFloaterImagePreview::draw()
|
|||
// gGL.vertex2i(r.getWidth() - PREVIEW_HPAD, PREVIEW_TEXTURE_HEIGHT + PREVIEW_VPAD);
|
||||
//}
|
||||
//gGL.end();
|
||||
// </FS:Ansariel>
|
||||
|
||||
// <FS:Zi> Make preview area position to be not hard-coded
|
||||
gGL.begin( LLRender::TRIANGLES );
|
||||
{
|
||||
gGL.texCoord2f(0.f, 1.f);
|
||||
gGL.vertex2i(PREVIEW_HPAD, PREVIEW_TEXTURE_HEIGHT + PREVIEW_VPAD);
|
||||
gGL.vertex2i(mPreviewRect.mLeft, mPreviewRect.mTop);
|
||||
gGL.texCoord2f(0.f, 0.f);
|
||||
gGL.vertex2i(PREVIEW_HPAD, PREVIEW_HPAD + PREF_BUTTON_HEIGHT + PREVIEW_HPAD);
|
||||
gGL.vertex2i(mPreviewRect.mLeft, mPreviewRect.mBottom);
|
||||
gGL.texCoord2f(1.f, 0.f);
|
||||
gGL.vertex2i(r.getWidth() - PREVIEW_HPAD, PREVIEW_HPAD + PREF_BUTTON_HEIGHT + PREVIEW_HPAD);
|
||||
gGL.vertex2i(mPreviewRect.mRight, mPreviewRect.mBottom);
|
||||
|
||||
gGL.texCoord2f(1.f, 0.f);
|
||||
gGL.vertex2i(r.getWidth() - PREVIEW_HPAD, PREVIEW_HPAD + PREF_BUTTON_HEIGHT + PREVIEW_HPAD);
|
||||
gGL.texCoord2f(0.f, 1.f);
|
||||
gGL.vertex2i(PREVIEW_HPAD, PREVIEW_TEXTURE_HEIGHT + PREVIEW_VPAD);
|
||||
gGL.vertex2i(mPreviewRect.mLeft, mPreviewRect.mTop);
|
||||
gGL.texCoord2f(1.f, 0.f);
|
||||
gGL.vertex2i(mPreviewRect.mRight, mPreviewRect.mBottom);
|
||||
gGL.texCoord2f(1.f, 1.f);
|
||||
gGL.vertex2i(r.getWidth() - PREVIEW_HPAD, PREVIEW_TEXTURE_HEIGHT + PREVIEW_VPAD);
|
||||
gGL.vertex2i(mPreviewRect.mRight, mPreviewRect.mTop);
|
||||
}
|
||||
gGL.end();
|
||||
// </FS:Ansariel>
|
||||
// </FS:Zi>
|
||||
|
||||
gGL.getTexUnit(0)->unbind(LLTexUnit::TT_TEXTURE);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -225,9 +225,7 @@
|
|||
//#include "llfloaterimsession.h"
|
||||
#include "fsfloaterim.h"
|
||||
// </FS:Ansariel> [FS communication UI]
|
||||
#if HAS_GROWL
|
||||
#include "growlmanager.h"
|
||||
#endif
|
||||
|
||||
#include "fsassetblacklist.h"
|
||||
#include "fsavatarrenderpersistence.h"
|
||||
|
|
@ -662,10 +660,8 @@ bool idle_startup()
|
|||
//
|
||||
std::string lastGPU = gSavedSettings.getString("LastGPUString");
|
||||
std::string thisGPU = LLFeatureManager::getInstance()->getGPUString();
|
||||
|
||||
#if HAS_GROWL
|
||||
GrowlManager::initiateManager();
|
||||
#endif
|
||||
|
||||
GrowlManager::initiateManager(); // <FS> Growl support
|
||||
|
||||
// <FS:Ansariel> Store current font and skin for system info (FIRE-6806)
|
||||
gSavedSettings.setString("FSInternalFontSettingsFile", gSavedSettings.getString("FSFontSettingsFile"));
|
||||
|
|
|
|||
|
|
@ -1,5 +1,11 @@
|
|||
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
|
||||
<floater name="Image Preview" title="">
|
||||
<string name="with_alpha">
|
||||
mit Alpha
|
||||
</string>
|
||||
<string name="no_alpha">
|
||||
ohne Alpha
|
||||
</string>
|
||||
<text name="name_label">
|
||||
Name:
|
||||
</text>
|
||||
|
|
@ -29,8 +35,11 @@
|
|||
|
||||
Speichern Sie das Bild als 24 Bit Targa (.tga).
|
||||
</text>
|
||||
<text name="uploaded_size_text">
|
||||
Größe hochgeladen: [X_RES]x[Y_RES], [ALPHA]
|
||||
</text>
|
||||
<check_box label="Verlustfrei komprimieren" name="lossless_check" left_delta="-5"/>
|
||||
<check_box name="temp_check" label="Temporär (kostenlos)" tool_tip="Lädt das Bild temporär hoch, d.h. der Upload ist kostenlos. Im Gegenzug wird es nach einiger Zeit automatisch gelöscht." />
|
||||
<button label="Abbrechen" name="cancel_btn"/>
|
||||
<button label="Hochladen ([AMOUNT] L$)" name="ok_btn" width="146"/>
|
||||
<button label="Abbrechen" name="cancel_btn"/>
|
||||
</floater>
|
||||
|
|
|
|||
|
|
@ -140,8 +140,8 @@
|
|||
<menu_item_check label="Koordinaten" name="Coordinates"/>
|
||||
<menu_item_check label="Parzelleneigenschaften" name="Parcel Properties"/>
|
||||
<menu_item_check label="Menü „Erweitert“" name="Show Advanced Menu"/>
|
||||
<menu_item_check label="Grafikgeschwindigkeit verbessern..." name="Performance"/>
|
||||
</menu>
|
||||
<menu_item_check label="Grafikgeschwindigkeit verbessern..." name="Performance"/>
|
||||
<menu_item_call label="Nach Hause teleportieren" name="Teleport Home"/>
|
||||
<menu_item_call label="Diesen Ort als Zuhause festlegen" name="Set Home to Here"/>
|
||||
<menu label="Umgebung" name="Environment">
|
||||
|
|
|
|||
|
|
@ -7,6 +7,17 @@
|
|||
name="Image Preview"
|
||||
help_topic="image_preview"
|
||||
width="300">
|
||||
|
||||
<string
|
||||
name="with_alpha"
|
||||
value="with alpha"
|
||||
/>
|
||||
|
||||
<string
|
||||
name="no_alpha"
|
||||
value="no alpha"
|
||||
/>
|
||||
|
||||
<text
|
||||
type="string"
|
||||
length="1"
|
||||
|
|
@ -60,7 +71,7 @@
|
|||
height="18"
|
||||
label="Clothing Type"
|
||||
layout="topleft"
|
||||
left_delta="110"
|
||||
right="-10"
|
||||
name="clothing_type_combo"
|
||||
top_delta="-2"
|
||||
width="160">
|
||||
|
|
@ -106,23 +117,23 @@
|
|||
name="SculptedPrim" />
|
||||
</combo_box>
|
||||
|
||||
<panel
|
||||
<panel
|
||||
follows="left|right"
|
||||
height="32"
|
||||
height="24"
|
||||
layout="topleft"
|
||||
left="10"
|
||||
name="image_alpha_warning"
|
||||
right="-10"
|
||||
top_pad="4"
|
||||
visible="false">
|
||||
visible="true">
|
||||
|
||||
<icon
|
||||
<icon
|
||||
height="24"
|
||||
image_name="Popup_Caution"
|
||||
left="0"
|
||||
top="0"
|
||||
width="24"
|
||||
/>
|
||||
/>
|
||||
|
||||
<check_box
|
||||
follows="top|left|right"
|
||||
|
|
@ -133,14 +144,28 @@
|
|||
name="strip_alpha_check"
|
||||
right="-1"
|
||||
top_delta="10"
|
||||
/>
|
||||
/>
|
||||
|
||||
</panel>
|
||||
|
||||
<panel
|
||||
background_opaque="true"
|
||||
background_visible="true"
|
||||
bg_opaque_color="0 0 0 0.333"
|
||||
follows="top|left"
|
||||
height="239"
|
||||
layout="topleft"
|
||||
left="10"
|
||||
name="preview_area"
|
||||
right="-10"
|
||||
top_pad="4"
|
||||
/>
|
||||
|
||||
<text
|
||||
type="string"
|
||||
length="1"
|
||||
bottom="250"
|
||||
halign="center"
|
||||
height="45"
|
||||
word_wrap="true"
|
||||
follows="top|left"
|
||||
|
|
@ -151,6 +176,22 @@
|
|||
|
||||
Try saving image as 24 bit Targa (.tga).
|
||||
</text>
|
||||
|
||||
<text
|
||||
type="string"
|
||||
length="1"
|
||||
height="16"
|
||||
word_wrap="true"
|
||||
follows="top|left"
|
||||
halign="center"
|
||||
layout="topleft"
|
||||
left="10"
|
||||
name="uploaded_size_text"
|
||||
right="-10"
|
||||
top_pad="142">
|
||||
Uploaded Size: [X_RES]x[Y_RES], [ALPHA]
|
||||
</text>
|
||||
|
||||
<check_box
|
||||
enabled="false"
|
||||
initial_value="false"
|
||||
|
|
@ -158,50 +199,53 @@ Try saving image as 24 bit Targa (.tga).
|
|||
height="16"
|
||||
label="Use lossless compression"
|
||||
layout="topleft"
|
||||
left_delta="2"
|
||||
left_delta="-3"
|
||||
name="lossless_check"
|
||||
top_pad="162"
|
||||
top_pad="7"
|
||||
width="280" />
|
||||
<check_box
|
||||
control_name="TemporaryUpload"
|
||||
visible="false"
|
||||
visible="true"
|
||||
follows="bottom|left"
|
||||
height="16"
|
||||
initial_value="false"
|
||||
left_delta="155"
|
||||
left_delta="168"
|
||||
name="temp_check"
|
||||
width="280"
|
||||
label="Temporary (Free)"
|
||||
tool_tip="Sets the asset to be temporary, meaning its free, but in return, only good for a short time before it ceases to exist." />
|
||||
<button
|
||||
follows="bottom|right"
|
||||
height="20"
|
||||
label="Cancel"
|
||||
layout="topleft"
|
||||
left="165"
|
||||
name="cancel_btn"
|
||||
top="430"
|
||||
width="125" />
|
||||
<button
|
||||
follows="bottom|left"
|
||||
height="20"
|
||||
label="Upload (L$[AMOUNT])"
|
||||
layout="topleft"
|
||||
left_delta="-150"
|
||||
left="10"
|
||||
name="ok_btn"
|
||||
top_pad="4"
|
||||
width="130" />
|
||||
<button
|
||||
follows="bottom|right"
|
||||
height="20"
|
||||
label="Cancel"
|
||||
layout="topleft"
|
||||
name="cancel_btn"
|
||||
right="-10"
|
||||
top_delta="0"
|
||||
width="125" />
|
||||
width="130" />
|
||||
<text
|
||||
type="string"
|
||||
length="1"
|
||||
follows="left|top"
|
||||
halign="center"
|
||||
height="35"
|
||||
layout="topleft"
|
||||
left="10"
|
||||
mouse_opaque="false"
|
||||
right="-10"
|
||||
skip_link_underline="true"
|
||||
name="info_text"
|
||||
word_wrap="true"
|
||||
top_pad="10"
|
||||
width="270"/>
|
||||
top_pad="5"
|
||||
value="= upload fee information text goes here ="
|
||||
/>
|
||||
</floater>
|
||||
|
|
|
|||
|
|
@ -23,8 +23,11 @@
|
|||
|
||||
Essayez d'enregistrer l'image au format Targa 24 bits (.tga).
|
||||
</text>
|
||||
<text name="uploaded_size_text">
|
||||
Taille transférée : [X_RES]x[Y_RES], [ALPHA]
|
||||
</text>
|
||||
<check_box label="Utiliser une compression sans pertes" name="lossless_check"/>
|
||||
<check_box name="temp_check" label="Temporaire (Gratuit)" tool_tip="Défini l'envoi comme étant temporaire, celui-ci étant gratuit, mais disponible uniquement pour un temps limité avant qu'il ne cesse d'exister définitivement."/>
|
||||
<button label="Transferer (L$[AMOUNT])" name="ok_btn"/>
|
||||
<button label="Annuler" name="cancel_btn"/>
|
||||
<button label="Uploader ([AMOUNT] L$)" width="130" name="ok_btn"/>
|
||||
</floater>
|
||||
|
|
|
|||
|
|
@ -6,5 +6,18 @@
|
|||
<line_editor name="desc" width="230" />
|
||||
<button label="Jouer devant tout le monde" width="160" label_selected="Arrêter" name="Inworld" tool_tip="Jouer cette animation de façon à ce que les autres la voient"/>
|
||||
<button label="Jouer localement" width="160" label_selected="Arrêter" name="Locally" tool_tip="Jouer cette animation de façon à ce que vous soyez la seule personne à la voir"/>
|
||||
<button name="btn_expand" tool_tip="Développez pour voir des informations détaillées sur cette animation" />
|
||||
</panel>
|
||||
<panel name="advanced_info_panel">
|
||||
<text name="AdvancedStatsLeft">
|
||||
Priorité : [PRIORITY]
|
||||
Durée : [DURATION]s
|
||||
En boucle : [IS_LOOP]
|
||||
</text>
|
||||
<text name="AdvancedStatsRight">
|
||||
Entrée : [EASE_IN]s
|
||||
Sortie : [EASE_OUT]s
|
||||
Joints : [NUM_JOINTS]
|
||||
</text>
|
||||
</panel>
|
||||
</floater>
|
||||
|
|
|
|||
|
|
@ -152,17 +152,18 @@
|
|||
<check_box label="Sauvegarder les textures sur le disque dur au format PNG au lieu de TGA" tool_tip="Utilisé dans l'aperçu de texture et dans le menu contextuel de l'inventaire." name="FSTextureDefaultSaveAsFormat"/>
|
||||
<check_box label="Utiliser Ctrl+clic pour attraper et déplacer des objets" tool_tip="Quand coché, vous pourrez attraper et déplacer des objets en utilisant la souris et la touche Ctrl." name="FSEnableGrab"/>
|
||||
<check_box label="Déplacer les textures directement en maintenant Shift-Clic en mode construction" tool_tip="Activer cette option vous permettra de faire glisser la texture sur la face de l'objet en mode de construction" name="FSExperimentalDragTexture"/>
|
||||
<check_box label="Prévisualiser les animations sur son avatar pendant l'upload" tool_tip="Si activé, vous pouvez prévisualiser les animations sur votre propre avatar pendant le processus d'upload" name="FSUploadAnimationOnOwnAvatar"/>
|
||||
<check_box label="Prévisualiser les animations sur son avatar pendant le téléchargement sur le serveur" tool_tip="Si activé, vous pouvez prévisualiser les animations sur votre propre avatar pendant le téléchargement sur le serveur" name="FSUploadAnimationOnOwnAvatar"/>
|
||||
<check_box label="Toujours développer les informations détaillées de la prévisualisation de l'animation" tool_tip="Développer par défaut les informations détaillées sur l'animation dans le flotteur de l'aperçu de l'animation" name="FSAnimationPreviewExpanded"/>
|
||||
<check_box label="Active les informations détaillées pour les script" tool_tip="Activée, ajoute aux informations de base sur les scripts des détails utiles aux créateurs" name="FSScriptInfoExtended"/>
|
||||
</panel>
|
||||
<panel label="Chargements" name="UploadsTab">
|
||||
<text name="title">Dossiers de destination pour les chargements :</text>
|
||||
<text name="title_sounds">Sons</text>
|
||||
<text name="title_models">Modèles</text>
|
||||
<text name="upload_help">Pour changer le dossier de destinatio, cliquez droit dessus dans l'inventaire et sélectionnez
|
||||
<text name="title">Dossiers de destination pour les chargements :</text>
|
||||
<text name="title_sounds">Sons</text>
|
||||
<text name="title_models">Modèles</text>
|
||||
<text name="upload_help">Pour changer le dossier de destination, cliquez droit dessus dans l'inventaire et sélectionnez
|
||||
"Par défaut pour"
|
||||
</text>
|
||||
<button name="reset_default_folders" label="Réinitialiser les dossiers par défaut"/>
|
||||
</text>
|
||||
<button name="reset_default_folders" label="Réinitialiser les dossiers par défaut"/>
|
||||
</panel>
|
||||
</tab_container>
|
||||
</panel>
|
||||
|
|
|
|||
|
|
@ -1,5 +1,7 @@
|
|||
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
|
||||
<floater name="Image Preview">
|
||||
<string name="with_alpha" value="z alfą" />
|
||||
<string name="no_alpha" value="bez alfy" />
|
||||
<text name="name_label">
|
||||
Nazwa:
|
||||
</text>
|
||||
|
|
@ -29,8 +31,12 @@
|
|||
|
||||
Spróbuj zapisać obraz jako 24 bitową Targa (.tga).
|
||||
</text>
|
||||
<text name="uploaded_size_text">
|
||||
Przesłano: [X_RES]x[Y_RES], [ALPHA]
|
||||
</text>
|
||||
<check_box label="Kompresja bezstratna" name="lossless_check"/>
|
||||
<check_box name="temp_check" label="Tymczas. (darmowy)" tool_tip="Ustawia obraz na serwerze jako tymczasowy, a zatem jako darmowy, ale będzie on istnieć tylko przez krótki okres - po czym zostanie skasowany." />
|
||||
<button label="Anuluj" name="cancel_btn"/>
|
||||
<check_box left_delta="158" name="temp_check" label="Tymczas. (darmowy)" tool_tip="Ustawia obraz na serwerze jako tymczasowy, a zatem jako darmowy, ale będzie on istnieć tylko przez krótki okres - po czym zostanie skasowany." />
|
||||
<button label="Prześlij ([AMOUNT]L$)" name="ok_btn"/>
|
||||
<button label="Anuluj" name="cancel_btn"/>
|
||||
<text name="info_text" value="= tu pojawią się informacje o koszcie przesyłania =" />
|
||||
</floater>
|
||||
|
|
|
|||
|
|
@ -1,5 +1,7 @@
|
|||
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
|
||||
<floater name="Image Preview">
|
||||
<string name="with_alpha" value="с альфой"/>
|
||||
<string name="no_alpha" value="нет альфы"/>
|
||||
<text name="name_label">
|
||||
Название:
|
||||
</text>
|
||||
|
|
@ -28,7 +30,12 @@
|
|||
Невозможно прочитать изображение.
|
||||
Попробуйте сохранить изображение как 24-битный TGA-файл (Targa).
|
||||
</text>
|
||||
<text name="uploaded_size_text">
|
||||
Загруженный размер: [X_RES]x[Y_RES], [ALPHA]
|
||||
</text>
|
||||
<check_box label="Использовать сжатие без потерь" name="lossless_check"/>
|
||||
<check_box name="temp_check" label="Временно (бесплатно)" tool_tip="Устанавливает актив как временный, что означает, что он бесплатный, но взамен годится только в течение короткого времени, прежде чем он перестанет существовать."/>
|
||||
<button label="Отмена" name="cancel_btn"/>
|
||||
<button label="Загрузить (L$[AMOUNT])" name="ok_btn"/>
|
||||
<text name="info_text" value="= здесь будет текст информации о плате за загрузку ="/>
|
||||
</floater>
|
||||
|
|
|
|||
|
|
@ -75,6 +75,7 @@ def add_info(key, pkg, lines):
|
|||
# <FS:Ansariel> Only add as duplicate of the version is duplicate and the copyright string does not match
|
||||
#else:
|
||||
elif info[key][pkg] != '\n'.join(lines):
|
||||
print("key: %s - pkg: %s - line: %s" % (key, pkg, lines))
|
||||
# </FS:Ansariel>
|
||||
dups[key].add(pkg)
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue