You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
kvirc/src/modules/theme/libkvitheme.cpp

194 lines
5.0 KiB

///////////////////////////////////////////////////////////////////////////////
//
// File : libkvitheme.cpp
// Created on Sat 30 Dec 2006 14:54:56 by Szymon Stefanek
//
// This toolbar is part of the KVirc irc client distribution
// Copyright (C) 2006 Szymon Stefanek (pragma at kvirc dot net)
//
// This program is FREE software. You can redistribute it and/or
// modify it under the terms of the GNU General Public License
// as published by the Free Software Foundation; either version 2
// of the License, or (at your opinion) any later version.
//
// This program is distributed in the HOPE that it will be USEFUL,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
// See the GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with this program. If not, write to the Free Software Foundation,
// Inc. ,51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
//
///////////////////////////////////////////////////////////////////////////////
#include "kvi_module.h"
#include "kvi_locale.h"
#include "kvi_qstring.h"
#include "kvi_parameterlist.h"
#include "kvi_cmdformatter.h"
#include "kvi_qstring.h"
#include "kvi_error.h"
#include "kvi_out.h"
#include "kvi_iconmanager.h"
#include "kvi_mirccntrl.h"
#include "kvi_config.h"
#include "kvi_sourcesdate.h"
#include "kvi_fileutils.h"
#include "kvi_filedialog.h"
#include "managementdialog.h"
#include "themefunctions.h"
#include <tqfileinfo.h>
TQRect g_rectManagementDialogGeometry(0,0,0,0);
/*
@doc: theme.install
@type:
command
@title:
theme.install
@short:
Shows the theme theme management editor
@syntax:
theme.install <package_path:string>
@description:
Attempts to install the themes in the package specified by <package_path>.
*/
static bool theme_kvs_cmd_install(KviKvsModuleCommandCall * c)
{
TQString szThemePackFile;
KVSM_PARAMETERS_BEGIN(c)
KVSM_PARAMETER("package_path",KVS_PT_STRING,0,szThemePackFile)
KVSM_PARAMETERS_END(c)
TQString szError;
if(!KviThemeFunctions::installThemePackage(szThemePackFile,szError))
{
c->error(__tr2qs_ctx("Error installing theme package: %Q","theme"),&szError);
return false;
}
return true;
}
/*
@doc: theme.screenshot
@type:
command
@title:
theme.screenshot
@short:
Makes a screenshot of the KVIrc window
@syntax:
theme.screenshot [file_name_path:string]
@description:
Makes a screenshot of the KVIrc main window
and saves it in the specified file. If [file_name_path]
is not specified then a save file dialog is shown.
*/
static bool theme_kvs_cmd_screenshot(KviKvsModuleCommandCall * c)
{
TQString szFileName;
KVSM_PARAMETERS_BEGIN(c)
KVSM_PARAMETER("file_name_path",KVS_PT_STRING,KVS_PF_OPTIONAL,szFileName)
KVSM_PARAMETERS_END(c)
KviFileUtils::adjustFilePath(szFileName);
TQString szTmp;
c->enterBlockingSection();
bool bResult = KviFileDialog::askForSaveFileName(szTmp,__tr2qs_ctx("Choose a file to save the screenshot to","theme"),szFileName,"*.png");
if(!c->leaveBlockingSection())return false; // need to stop immediately
if(!bResult)return true;
szFileName = szTmp;
if(szFileName.isEmpty())return true; // done
KviFileUtils::adjustFilePath(szFileName);
if(TQFileInfo(szFileName).extension(false)!="png")
szFileName+=".png";
TQString szError;
if(!KviThemeFunctions::makeKVIrcScreenshot(szFileName))
{
c->error(__tr2qs_ctx("Error making screenshot","theme")); // FIXME: a nicer error ?
return false;
}
return true;
}
/*
@doc: theme.dialog
@type:
command
@title:
theme.dialog
@short:
Shows the theme theme management editor
@syntax:
theme.dialog
@description:
Shows the theme theme management editor
*/
static bool theme_kvs_cmd_dialog(KviKvsModuleCommandCall * c)
{
KviThemeManagementDialog::display();
return true;
}
static bool theme_module_init(KviModule *m)
{
KVSM_REGISTER_SIMPLE_COMMAND(m,"dialog",theme_kvs_cmd_dialog);
KVSM_REGISTER_SIMPLE_COMMAND(m,"install",theme_kvs_cmd_install);
KVSM_REGISTER_SIMPLE_COMMAND(m,"screenshot",theme_kvs_cmd_screenshot);
TQString szBuf;
m->getDefaultConfigFileName(szBuf);
KviConfig cfg(szBuf,KviConfig::Read);
g_rectManagementDialogGeometry = cfg.readRectEntry("EditorGeometry",TQRect(10,10,390,440));
return true;
}
static bool theme_module_cleanup(KviModule *m)
{
KviThemeManagementDialog::cleanup();
TQString szBuf;
m->getDefaultConfigFileName(szBuf);
KviConfig cfg(szBuf,KviConfig::Write);
cfg.writeEntry("EditorGeometry",g_rectManagementDialogGeometry);
return true;
}
static bool theme_module_can_unload(KviModule * m)
{
return (!KviThemeManagementDialog::instance());
}
KVIRC_MODULE(
"theme", // module name
"1.0.0", // module version
"Copyright (C) 2006 Szymon Stefanek (pragma at kvirc dot net)", // author & (C)
"Theme management functions",
theme_module_init,
theme_module_can_unload,
0,
theme_module_cleanup
)