Как отобразить вращающийся NSProgressIndicator другим цветом?

Хотя есть много хороших объяснений выше, я пропускаю практический способ разделения шаблонов на заголовок и тело. Моя главная задача - избегать перекомпиляции всех пользователей шаблонов, когда я меняю свое определение. Все экземпляры шаблонов в корпусе шаблона не являются жизнеспособным решением для меня, поскольку автор шаблона может не знать всех, если его использование и пользователь шаблона могут не иметь права его модифицировать. Я принял следующий подход, который также работает и для более старых компиляторов (gcc 4.3.4, aCC A.03.13).

Для каждого использования шаблона в его собственном файле заголовка (сгенерированном из модели UML) имеется typedef, , Его тело содержит экземпляр (который заканчивается в библиотеке, которая связана в конце). Каждый пользователь шаблона включает этот файл заголовка и использует typedef.

Схематический пример:

MyTemplate.h:

#ifndef MyTemplate_h
#define MyTemplate_h 1

template <class T>
class MyTemplate
{
public:
  MyTemplate(const T& rt);
  void dump();
  T t;
};

#endif

MyTemplate.cpp:

#include "MyTemplate.h"
#include <iostream>

template <class T>
MyTemplate<T>::MyTemplate(const T& rt)
: t(rt)
{
}

template <class T>
void MyTemplate<T>::dump()
{
  cerr << t << endl;
}

MyInstantiatedTemplate.h:

#ifndef MyInstantiatedTemplate_h
#define MyInstantiatedTemplate_h 1
#include "MyTemplate.h"

typedef MyTemplate< int > MyInstantiatedTemplate;

#endif

MyInstantiatedTemplate.cpp:

#include "MyTemplate.cpp"

template class MyTemplate< int >;

main.cpp:

#include "MyInstantiatedTemplate.h"

int main()
{
  MyInstantiatedTemplate m(100);
  m.dump();
  return 0;
}

Таким образом, нужно будет перекомпилировать только экземпляры шаблонов, не всех пользователей шаблонов (и зависимостей).

22
задан Glorfindel 26 February 2019 в 05:01
поделиться

3 ответа

Я на самом деле реализовал клоны вращающегося NSProgressIndicator, который мог бы удовлетворить Вашим потребностям. Они могут быть привлечены в любом размере и в любом цвете. Каждый - подкласс NSView, который может использоваться на OS X 10.4, и другой подкласс CALayer, который может использоваться в находящемся в CoreAnimation проекте. Код находится на GitHub (и находящийся в NSView версия и находящийся в CoreAnimation версия), и существует сообщение с некоторыми снимками экрана на моем блоге.

20
ответ дан Daniel Trebbien 26 February 2019 в 05:01
поделиться
  • 1
    " я использую SimpleAdapter и даю моим объектам коллекции способность возвратить представление себя как List<? расширяет Map< Строка? > > для SimpleAdapter' s constructor" - который включает большое копирование данных, процессорное время уничтожения и генерация мусора. Это может или не может иметь значения ни для какого данного приложения. – CommonsWare 30 March 2010 в 14:53

Я видел некоторые сторонние платформы управления стиля HUD, которые включают стиль панели NSProgressIndicator, но к сожалению я не помню когда-либо видеть счетчик. Если Вы не можете найти способ заставить это делать то, что Вы хотите, , эта страница может генерировать анимированный gif, который мог бы быть полезным для того, чтобы сделать Ваше собственное.

0
ответ дан Marc Charbonneau 26 February 2019 в 05:01
поделиться

Не уверенный, если это работало бы правильно с NSProgressIndicator, но Вы могли бы попытаться использовать Базовый фильтр Изображения для инвертирования дисплея представления индикатора хода выполнения. Необходимо было бы сделать слой представления поддержанным и затем добавить CIFilter к фильтрам его слоя. Можно быть в состоянии сделать это все в инспекторе эффектов в Интерфейсном Разработчике, иначе Вы могли также просто сделать это в коде.

15
ответ дан Brian Webster 26 February 2019 в 05:01
поделиться
  • 1
    Эй Богатый. Мне также нравится подход наличия агностика UI туда, где данные прибывают из, и код курсоров в UI выглядит ужасным мне также, но я могу найти несколько причин, почему они необходимы. Во-первых, они - самый эффективный способ связать данные с вещами как ListViews. Во-вторых, для преобразования в набор необходимо выполнить итерации по курсору линейно, O (n), создать один объект на строку что Вы wouldn' t в курсоре и GC должен будет собрать тех в какой-то момент, но самое главное, Вы загружаете свой весь набор в памяти. Курсоры только содержат текущую строку. – palako 14 October 2010 в 03:53
Другие вопросы по тегам:

Похожие вопросы: